--- language: - es - en license: gemma base_model: google/gemma-4-E4B-it tags: - gemma4 - multimodal - vision - cybersecurity - latin-america - spanish - gguf - lora pipeline_tag: image-text-to-text --- # VectraYX Vision VectraYX Vision is a Vision-Language Model (VLM) for **technical cybersecurity in Spanish**, fine-tuned from Gemma 4 E4B-it using LoRA on a 99k-example multimodal corpus. ## Quick Start ### Ollama ```bash git clone https://huggingface.co/jsantillana/vectrayx-vision cd vectrayx-vision ollama create vectrayx-vision -f Modelfile ollama run vectrayx-vision "¿Qué es un CVE?" ``` **Text-only chat is verified working this way** (coherent Spanish output through `ollama run`/`/api/chat`). **Image understanding through Ollama is not yet verified** -- the multimodal projector loads (`FROM` used twice in the Modelfile: once for the main model, once for `vectrayx-vision-mmproj-f16.gguf`) and Ollama does encode attached images into extra prompt tokens, but the model responded "no puedo ver ninguna imagen" on a test image instead of reading it, most likely because this model's custom Gemma-4-style chat template places the `<|image|>` marker in a way Ollama's native image-attachment path doesn't reproduce correctly. **For image input today, use llama.cpp directly with `--jinja` (see below) rather than Ollama.** This will be updated once resolved. ### llama.cpp / LM Studio Download `vectrayx-vision-Q4_K_M.gguf` and `vectrayx-vision-mmproj-f16.gguf` from this repo (~5.3 GB + mmproj). Use `--jinja` so llama.cpp renders this model's custom chat template correctly (verified working, including image input): ```bash llama-cli -m vectrayx-vision-Q4_K_M.gguf --mmproj vectrayx-vision-mmproj-f16.gguf \ --jinja -p "Analyze this CVE: CVE-2024-1234" -n 512 ``` ### Transformers ```python from transformers import AutoProcessor, AutoModelForImageTextToText import torch model = AutoModelForImageTextToText.from_pretrained( "jsantillana/vectrayx-vision", torch_dtype=torch.bfloat16, device_map="auto" ) processor = AutoProcessor.from_pretrained("jsantillana/vectrayx-vision") ``` ## Model Details | Field | Value | |---|---| | Base model | google/gemma-4-E4B-it | | Architecture | Gemma4ForConditionalGeneration | | Parameters | ~4B | | Context length | 131,072 tokens | | Fine-tuning | LoRA r=32, alpha=64, 3 epochs | | Languages | Spanish (LATAM), English | | Modalities | Text + Vision | ## Training Data **99,175 training records** in `{messages, image_path}` format: | Split | Records | Description | |---|---:|---| | Vision QA | 76,655 | (synthetic PIL image, question/answer) pairs across 10 domains | | Nano SFT replay | 22,520 | Text-only cybersec ES — prevents catastrophic forgetting | ### Vision QA Domains | Domain | Records | |---|---:| | offense (exploits, web, payloads) | 31,521 | | re (reverse engineering, IDA, Ghidra) | 15,788 | | soc (SIEM, logs, threat intel) | 15,303 | | asm (x86/x64, NASM, kernel) | 5,730 | | forensics (Volatility, DFIR) | 2,254 | | arch (RISC-V, computer architecture) | 1,973 | | icpc (Codeforces, algorithms) | 1,302 | | latam (ES tech blogs, OWASP) | 1,264 | | debugging (x64dbg, WinDbg) | 927 | | crypto (applied cryptography) | 593 | Images are synthetic PIL renders (not real screenshots) using 19 templates: `ida_disasm`, `ghidra_decomp`, `gdb_session`, `siem_dashboard`, `wireshark_packets`, `cve_card`, `terminal_ansi`, and more. ## Benchmarks Evaluated with the VectraYX-Vision harness (SageMaker ml.g5.xlarge): | Benchmark | Score | Description | |---|---|---| | B1 CVE-QA | **0.820** | CVE analysis in Spanish | | B2 Classification | **0.420** | Threat classification | | B3 Commands | **0.590** | Technical command generation | | B4 Tool-use | **0.553** | Native function calling | | B5 Conversational ES | **1.000** | Spanish conversational fluency | | LATAM | **0.947** | Regional LATAM Spanish (slang, acronyms, code-switching) | ## Files | File | Size | Description | |---|---|---| | `model-0000{1-4}-of-00004.safetensors` | ~15 GB total | Full bf16 weights | | `vectrayx-vision-Q4_K_M.gguf` | 5.3 GB | Q4_K_M quantized for local inference | ## About VectraYX VectraYX is an open-weights model family optimized for Latin American Spanish, focused on technical cybersecurity and threat analysis. - [VectraYX Nano](https://huggingface.co/jsantillana/vectrayx-nano) — 130M text model - **VectraYX Vision** — this model (4B, multimodal)