👁️Affinage en vision

Apprenez à affiner des LLM vision/multimodaux avec Unsloth

L'affinage (fine-tuning) des modèles de vision permet au modèle d'exceller dans certaines tâches pour lesquelles les LLM classiques ne sont pas aussi performants, telles que la détection d'objets/mouvements. Vous pouvez également entraîner des VLMs avec RL. Nous avons de nombreux notebooks gratuits pour l'affinage en vision :

  • Ministral 3 : affinage vision pour Q&R général : Notebookarrow-up-right On peut concaténer des ensembles de données de Q&R général avec des ensembles de données plus spécialisés pour empêcher l'affinage d'oublier les compétences du modèle de base.

  • Gemma 3 (4B) Vision : Notebookarrow-up-right

  • Llama 3.2 Vision affinage pour radiographie : Notebookarrow-up-right Comment pouvons-nous aider les professionnels de la santé à analyser plus rapidement les radiographies, les scanners et les échographies ?

  • Qwen2.5 VL affinage pour convertir l'écriture manuscrite en LaTeX : Notebookarrow-up-right Cela permet de transcrire facilement des formules mathématiques complexes en LaTeX sans les écrire manuellement.

circle-info

Il est préférable de s'assurer que votre jeu de données contient des images toutes de la même taille/dimensions. Utilisez des dimensions de 300 à 1000 px pour garantir que l'entraînement ne prenne pas trop de temps ni n'utilise trop de ressources.

Désactivation de la vision / affinage texte uniquement

Pour affiner les modèles de vision, nous vous permettons désormais de sélectionner quelles parties du modèle affiner. Vous pouvez choisir d'affiner uniquement les couches de vision, ou les couches de langage, ou les couches d'attention / MLP ! Nous les activons toutes par défaut !

model = FastVisionModel.get_peft_model(
    model,
    finetune_vision_layers     = True, # False si vous n’affinez pas les couches vision
    finetune_language_layers   = True, # False si vous n’affinez pas les couches de langage
    finetune_attention_modules = True, # False si vous n’affinez pas les couches d’attention
    finetune_mlp_modules       = True, # False si vous n’affinez pas les couches MLP

    r = 16,                           # Plus grand = meilleure précision, mais peut suradapter
    lora_alpha = 16,                  # Alpha recommandé == r au moins
    lora_dropout = 0,
    bias = "none",
    random_state = 3407,
    use_rslora = False,               # Nous supportons LoRA stabilisé en rang
    loftq_config = None,               # Et LoftQ
    target_modules = "all-linear",    # Optionnel maintenant ! Peut spécifier une liste si nécessaire
    modules_to_save=[
        "lm_head",
        "embed_tokens",
    ],
)

Vision Data Collator

Nous avons un data collator spécial uniquement pour les jeux de données vision :

Et les arguments pour le data collator sont :

Entraînement multi-image

Pour affiner ou entraîner des modèles avec plusieurs images, le changement le plus simple est de remplacer :

par :

L'utilisation de map déclenche la standardisation du jeu de données et les règles de traitement arrow qui peuvent être strictes et plus compliquées à définir.

Jeu de données pour l'affinage en vision

Le jeu de données pour affiner un modèle de vision ou multimodal est similaire aux paires standard de question & réponse jeux de données , mais cette fois, ils incluent également des entrées d'images. Par exemple, le Notebook Llama 3.2 Visionarrow-up-right utilise un cas de radiographie pour montrer comment l'IA peut aider les professionnels médicaux à analyser plus efficacement les radiographies, les scanners et les échographies.

Nous utiliserons une version échantillonnée du jeu de données de radiographie ROCO. Vous pouvez accéder au jeu de données iciarrow-up-right. Le jeu de données inclut des radiographies, des scanners et des échographies présentant des conditions et des maladies médicales. Chaque image a une légende rédigée par des experts la décrivant. L'objectif est d'affiner un VLM pour en faire un outil d'analyse utile pour les professionnels médicaux.

Examinons le jeu de données et vérifions ce que montre le 1er exemple :

Image
Légende

La radiographie panoramique montre une lésion ostéolytique dans la maxillaire postérieure droite avec résorption du plancher du sinus maxillaire (flèches).

Pour formater le jeu de données, toutes les tâches d'affinage vision doivent être formatées comme suit :

Nous allons créer une instruction personnalisée demandant au VLM d'être un radiographe expert. Notez aussi qu'au lieu d'une seule instruction, vous pouvez ajouter plusieurs tours pour en faire une conversation dynamique.

Convertissons le jeu de données au format "correct" pour l'affinage :

Le premier exemple est maintenant structuré comme ci‑dessous :

Avant de faire tout affinage, peut-être que le modèle de vision sait déjà comment analyser les images ? Vérifions si c'est le cas !

Et le résultat :

Pour plus de détails, consultez notre section jeu de données dans le notebook iciarrow-up-right.

🔎Entraîner uniquement sur les réponses de l'assistant pour les modèles de vision, VLMs

Pour les modèles de langage, nous pouvons utiliser from unsloth.chat_templates import train_on_responses_only comme décrit précédemment. Pour les modèles de vision, utilisez les arguments supplémentaires dans UnslothVisionDataCollator comme précédemment ! Voir Vision Data Collator pour plus de détails sur la façon d'utiliser le vision data collator.

Par exemple pour Llama 3.2 Vision :

Mis à jour

Ce contenu vous a-t-il été utile ?