👁️Fine-tuning Vision

Apprenez à fine-tuner des LLM vision/multimodaux avec Unsloth

L'affinage des modèles visuels permet au modèle d'exceller dans certaines tâches pour lesquelles les LLM normaux ne sont pas aussi performants, comme la détection d'objets/mouvements. Vous pouvez également entraîner des VLM avec RL. Nous disposons de nombreux notebooks gratuits pour l'affinage en vision :

  • Ministral 3 : affinage en vision pour Q&R générale : Notebookarrow-up-right On peut concaténer des jeux de données de Q&R générale avec des jeux de données plus spécialisés pour éviter que l'ajustement n'oublie les compétences du modèle de base.

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

  • Llama 3.2 Vision affinage pour la radiographie : Notebookarrow-up-right Comment pouvons-nous aider les professionnels de santé à analyser plus rapidement les radiographies, scanners et é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 de toutes les mêmes tailles/dimensions. Utilisez des dimensions de 300 à 1000 px pour garantir que votre entraînement ne prenne pas trop de temps ou n'utilise pas trop de ressources.

Désactivation de la vision / Affinage uniquement texte

Pour affiner les modèles de vision, nous vous permettons maintenant 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 de 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 = plus de précision, mais peut sur-apprendre
    lora_alpha = 16,                  # Alpha recommandé == r au minimum
    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",
    ],
)

Collecteur de données Vision

Nous avons un collecteur de données spécial juste pour les jeux de données vision :

Et les arguments pour le collecteur de données sont :

Jeu de données pour l'affinage en vision

Le jeu de données pour affiner un modèle vision ou multimodal est similaire à une paire question & réponse standard – Nous pouvons charger le jeu de données Elise en utilisant la , mais cette fois, ils incluent également des entrées d'image. Par exemple, le Notebook Vision Llama 3.2arrow-up-right utilise un cas de radiographie pour montrer comment l'IA peut aider les professionnels médicaux à analyser les radiographies, les scanners et les échographies plus efficacement.

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 montrant des conditions et 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.

Jetons un œil au 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'ajustement fin vision doivent être formatées comme suit :

Nous rédigerons une instruction personnalisée demandant au VLM d'être un expert en radiographie. Remarquez 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 dans le format « correct » pour l'ajustement fin :

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

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

Et le résultat :

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

guide VLM GRPO

Pour affiner ou entraîner un VLM comme Qwen3-VL avec plusieurs images, le changement le plus simple est d'échanger

convert_to_conversation,

ds_converted = [convert_to_converation(sample) for sample in dataset]

🔎Entraînement 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 tout comme avant ! Voir Fine-tuning Vision pour plus de détails sur l'utilisation du collecteur de données vision.

Par exemple pour Llama 3.2 Vision :

Mis à jour

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