CommunityImagengithub.com

wshobson/vision-sft

Ajuste fino supervisado de modelos de lenguaje y visión (VLM) con datos de imagen+texto. Útil para adaptar un VLM a un dominio visual o tarea, configurar LoRA con torre de visión congelada, o depurar un afinamiento que entrena pero no aprende.

¿Qué es vision-sft?

Este skill especializa el ajuste fino supervisado (SFT) para modelos de lenguaje y visión (VLM), asumiendo que `finetuning-method-selection` ya ha determinado que los datos son demostraciones de imagen+texto y la base es un VLM (no solo texto). Proporciona recetas para congelar la torre de visión y el proyector, aplicando LoRA solo en el LLM (rango 8-16, alfa 16-32) como configuración predeterminada. Explica cuándo descongelar capas de visión (solo para cambios drásticos de dominio visual), cómo ajustar la tasa de aprendizaje (5-10 veces menor para la torre de visión) y advierte sobre dos asesinos silenciosos: desajuste de tokens de imagen y presupuesto de resolución `min_pixels`/`max_pixels`. Cubre aspectos específicos de Unsloth (como `UnslothVisionDataCollator` y la regla de no descongelar capas de visión con `fast_inference=True`) y remite a referencias detalladas para collators, validación y preparación de datasets. Su salida es una configuración de adaptador validada que `llm-finetuning-training-engineer` consume directamente para generar scripts ejecutables.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/wshobson/agents/tree/main/plugins/llm-finetuning/skills/vision-sft

Installed? Explore more Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

SFT de Visión-Lenguaje

Este skill asume que finetuning-method-selection ya ha determinado que la forma de los datos es demostraciones de imagen+texto (no pares de preferencia ni señales de recompensa verificables), y que la base es un modelo de lenguaje y visión (VLM), no solo de texto. lora-qlora-recipes cubre la receta LoRA/QLoRA solo texto que este skill especializa para la torre de visión y el proyector; lee ese skill primero si los fundamentos de LoRA (rango, alfa, módulos objetivo) no te son familiares.

Entrada: un dataset de imagen+texto y un modelo base VLM ya seleccionado del catálogo de modelos. Formato de salida: una configuración de adaptador validada —qué componentes están congelados, módulos objetivo de LoRA y un presupuesto de min_pixels/max_pixels— que llm-finetuning-training-engineer consume directamente al generar un script ejecutable.

Referencia Rápida

SituaciónValor por Defecto
Adaptar comportamiento en imágenes familiaresTorre+proyector congelados, LoRA r=8-16, α=16-32
Cambio de dominio visualDescongelar las últimas 6 capas ViT, LR de visión 5-10x menor
No cabe en bf16 con el rango objetivoQLoRA — solo torre de visión congelada
fast_inference=Truefinetune_vision_layers=False
Pérdida normal, evaluación no mejoraRevisar primero los Dos Asesinos Silenciosos abajo

La Receta de Consenso

Congela la torre de visión y el proyector. Coloca LoRA solo en el LLM, en todas las capas lineales (la misma lista de objetivos de atención + MLP que en SFT solo texto —ver lora-qlora-recipes—), con r=8-16, α=16-32. Esta es la configuración predeterminada establecida para adaptar el comportamiento de un VLM sin alterar su forma de ver.

  • La torre de visión y el proyector se mantienen congelados por defecto. Ya codifican una representación visual general; reentrenarlos rara vez es necesario y añade riesgo sin añadir capacidad para la mayoría de las tareas.
  • El rango de LoRA es menor que el valor por defecto general para solo texto (r=8-16 aquí frente a r=16-32 para SFT solo texto) porque el adaptador solo-LLM está adaptando el comportamiento, no inyectando nuevo conocimiento visual.
  • QLoRA solo se permite con la torre de visión congelada. Cuantizar la base mientras se descongelan y entrenan capas de visión no es compatible y es inestable —trata esto como una regla de emparejamiento estricta, no ajustable. Si la torre de visión necesita descongelarse, abandona QLoRA y usa bf16 LoRA en su lugar.
# congelar torre + proyector; LoRA solo en LLM
for name, param in model.named_parameters():
    if "vision_tower" in name or "projector" in name:
        param.requires_grad = False

target_modules = [
    "q_proj", "k_proj", "v_proj", "o_proj",
    "gate_proj", "up_proj", "down_proj",
]  # solo LLM, todas lineales — r=8-16, alpha=16-32

Cuándo Descongelar

Descongelar capas de visión es una escalada deliberada, no una decisión predeterminada —recurre a ello solo cuando el cambio de dominio sea visual, no textual.

  • Descongela solo para cambios de dominio visual. Si la tarea es enseñar nuevo comportamiento en imágenes que la torre ya entiende (gráficos, fotos cotidianas), la receta con torre congelada es suficiente. Descongela cuando el dominio visual en sí mismo sea desconocido para la torre —imágenes satelitales, exploraciones médicas, diagramas técnicos densos— y la receta con torre congelada se estanque.
  • Las últimas 6 capas ViT es el punto óptimo. Descongelar las últimas seis capas del transformador de visión (no toda la torre) midió +1.7pt en DocVQA con un costo de entrenamiento ~1.75x sobre la línea base congelada. Trata seis capas como el límite que vale la pena pagar; ir más allá gasta cómputo sin un resultado equivalente.
  • La LR de visión debe ser 5-10x menor que la LR del LLM cuando está descongelada. La representación preentrenada de la torre de visión es más frágil que el adaptador del LLM; usar la misma LR para ambas corre el riesgo de sobrescribir la representación visual más rápido de lo que el adaptador del LLM puede compensar.
  • Un rango alto de LoRA en la capa de incrustación de parches (patch embedding) corre el riesgo de NaN. Si la capa de incrustación de parches está en el conjunto descongelado, mantén su rango bajo y vigila de cerca la pérdida en pasos tempranos —es uno de los lugares más frágiles para aplicar LoRA en un VLM.

Los Dos Asesinos Silenciosos

Ambos producen una ejecución que entrena sin errores y sin aprendizaje: la curva de pérdida se ve normal, el modelo no mejora y ninguno lanza una excepción —ambos necesitan una verificación explícita previa al entrenamiento, no solo un registro de entrenamiento limpio.

  • Desajuste de etiqueta/recuento de imágenes. Cada token marcador de imagen en el texto con plantilla debe mapear 1:1 a un elemento multimedia realmente pasado al collator. Un desajuste (un marcador sin imagen adjunta o con dos imágenes; o una imagen sin marcador) no genera error en la mayoría de los collators —desalinea silenciosamente imagen y texto, y el modelo "entrena pero no aprende nada". Valida el mapeo 1:1 de marcador a multimedia antes de comenzar el entrenamiento, en cada ejemplo, no solo en una muestra. Detalle completo de la lista de verificación: references/collators-and-pitfalls.md.
  • Presupuesto de resolución min_pixels/max_pixels. Este par es el hiperparámetro más importante para calidad y memoria en SFT de VLM —más que el rango, alfa o LR. Un valor demasiado bajo reduce la resolución de las imágenes por debajo de lo que la tarea necesita (el texto pequeño en documentos se vuelve ilegible aunque el entrenamiento "tenga éxito"); demasiado alto supera el presupuesto de memoria de activaciones o fuerza un tamaño de lote demasiado pequeño para entrenar de manera estable. Ajústalo deliberadamente por dataset, no lo dejes en el valor predeterminado del framework.

Aspectos Específicos de Unsloth

  • UnslothVisionDataCollator es el collator que Unsloth espera para SFT de VLM —maneja la alineación de etiquetas de imagen y el contrato del procesador por arquitectura descrito en references/collators-and-pitfalls.md. No sustituyas un collator solo texto para datos VLM.
  • finetune_vision_layers=False es obligatorio cuando fast_inference=True. vLLM no puede servir adaptadores LoRA en capas de visión, por lo que una configuración de inferencia rápida que también descongele capas de visión falla en el momento de servir incluso si el entrenamiento tiene éxito. Si la receta requiere descongelar las últimas 6 capas ViT (ver Cuándo Descongelar arriba), la inferencia rápida queda descartada para esa ejecución —elige uno u otro, no ambos.

Elección del Modelo

La elección del VLM base está fuera del alcance de este skill —se encuentra en un solo lugar, el catálogo de modelos en finetuning-method-selection's references/model-catalog.md. Este skill y sus referencias describen recetas solo por familia de arquitectura, nunca recomendando un modelo sobre otro.

El aprendizaje por refuerzo en VLM (VLM-GRPO) es solo de referencia en este plugin —las herramientas fragmentadas y los modos de fallo por manipulación de recompensa específicos de VLM-RL se cubren en grpo-rlvr-training, no aquí. El alcance de este skill se detiene en el ajuste fino supervisado.

Modos de Falla

El error recurrente en todas las secciones anteriores es tratar una curva de pérdida limpia como prueba de que la ejecución es saludable. Una curva de aspecto normal es consistente tanto con una ejecución que funciona como con cualquiera de los asesinos silenciosos, ya que el modelo entrena con algo en cualquier caso —simplemente no con la señal alineada de imagen-texto cuando hay un asesino presente. Una puntuación de evaluación plana junto a una curva de pérdida normal significa volver a ejecutar la lista de verificación en references/collators-and-pitfalls.md antes de tocar cualquier hiperparámetro.

Referencias

  • references/collators-and-pitfalls.md — tabla de collators por arquitectura, ejemplos de formato de dataset con marcadores de imagen, una lista de verificación de validación previa al entrenamiento y la receta de alineación del proyector en dos etapas como un patrón avanzado.

Skills relacionados: finetuning-method-selection enruta aquí; lora-qlora-recipes cubre los fundamentos de LoRA solo texto que este skill especializa; grpo-rlvr-training cubre VLM-RL (solo referencia); dataset-curation cubre la preparación de datasets de imagen+texto que este skill no aborda.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

wshobson/accessibility-compliance

Implement WCAG 2.2 compliant interfaces with mobile accessibility, inclusive design patterns, and assistive technology support. Use when auditing accessibility, implementing ARIA patterns, building for screen readers, or ensuring inclusive user experiences.

wshobson/airflow-dag-patterns

Build production Apache Airflow DAGs with best practices for operators, sensors, testing, and deployment. Use when creating data pipelines, orchestrating workflows, or scheduling batch jobs.

wshobson/angular-migration

Migrate from AngularJS to Angular using hybrid mode, incremental component rewriting, and dependency injection updates. Use when upgrading AngularJS applications, planning framework migrations, or modernizing legacy Angular code.

wshobson/anti-reversing-techniques

Understand anti-reversing, obfuscation, and protection techniques encountered during software analysis. Use this skill when analyzing malware evasion techniques, when implementing anti-debugging protections for CTF challenges, when reverse engineering packed binaries, or when building security research tools that need to detect virtualized environments.

wshobson/api-design-principles

Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.

wshobson/architecture-decision-records

Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.

wshobson/architecture-patterns

Implement proven backend architecture patterns including Clean Architecture, Hexagonal Architecture, and Domain-Driven Design. Use this skill when designing clean architecture for a new microservice, when refactoring a monolith to use bounded contexts, when implementing hexagonal or onion architecture patterns, or when debugging dependency cycles between application layers.

wshobson/async-python-patterns

Master Python asyncio, concurrent programming, and async/await patterns for high-performance applications. Use when building async APIs, concurrent systems, or I/O-bound applications requiring non-blocking operations.

wshobson/attack-tree-construction

Build comprehensive attack trees to visualize threat paths. Use when mapping attack scenarios, identifying defense gaps, or communicating security risks to stakeholders.

wshobson/auth-implementation-patterns

Master authentication and authorization patterns including JWT, OAuth2, session management, and RBAC to build secure, scalable access control systems. Use when implementing auth systems, securing APIs, or debugging security issues.

wshobson/avoid-ai-writing

Audit and rewrite prose so it stops reading as machine-generated. Use this skill when asked to remove AI-isms, clean up AI writing, edit a draft for AI tells, audit a README, changelog, release note, PR description, or blog post for machine-sounding prose, or make text sound less like AI. Supports a detect-only mode, a rewrite mode, and an edit-in-place mode, with optional voice and context profiles.

wshobson/backtesting-frameworks

Build robust backtesting systems for trading strategies with proper handling of look-ahead bias, survivorship bias, and transaction costs. Use when developing trading algorithms, validating strategies, or building backtesting infrastructure.

wshobson/bash-defensive-patterns

Master defensive Bash programming techniques for production-grade scripts. Use when writing robust shell scripts, CI/CD pipelines, or system utilities requiring fault tolerance and safety.

wshobson/bats-testing-patterns

Master Bash Automated Testing System (Bats) for comprehensive shell script testing. Use when writing tests for shell scripts, CI/CD pipelines, or requiring test-driven development of shell utilities.

wshobson/bazel-build-optimization

Optimize Bazel builds for large-scale monorepos. Use when configuring Bazel, implementing remote execution, or optimizing build performance for enterprise codebases.

wshobson/before-you-build

Pre-build product and feature risk review for founders, product managers, and AI-assisted builders. Use this skill when the user is about to build a landing page, MVP, SaaS product, internal tool, agent workflow, or major feature and needs to check demand, positioning, monetization, retention, trust, distribution, and adoption risk before implementation starts.

wshobson/billing-automation

Build automated billing systems for recurring payments, invoicing, subscription lifecycle, and dunning management. Use when implementing subscription billing, automating invoicing, or managing recurring payment systems.

wshobson/binary-analysis-patterns

Master binary analysis patterns including disassembly, decompilation, control flow analysis, and code pattern recognition. Use when analyzing executables, understanding compiled code, or performing static analysis on binaries.

wshobson/block-no-verify-hook

Configure a PreToolUse hook to prevent AI agents from skipping git pre-commit hooks with --no-verify and other bypass flags. Use when setting up Claude Code projects that enforce commit quality gates.

wshobson/brand-landingpage

Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens — use frontend-design instead.

Skills relacionados