👁️Vision-Feinabstimmung

Lerne, wie man Vision-/multimodale LLMs mit Unsloth feinabstimmt

Feinabstimmung von Vision-Modellen ermöglicht es dem Modell, bei bestimmten Aufgaben zu glänzen, bei denen normale LLMs nicht so gut sind, wie z. B. Objekt-/Bewegungserkennung. Sie können auch trainieren VLMs mit RL. Wir haben viele kostenlose Notebooks für Vision-Feinabstimmungen:

  • Ministral 3: Vision-Feinabstimmung für allgemeine Q&A: Notebookarrow-up-right Man kann allgemeine Q&A-Datensätze mit spezialisierteren Datensätzen verketten, damit die Feinabstimmung die Fähigkeiten des Basismodells nicht vergisst.

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

  • Llama 3.2 Vision Feinabstimmung für Radiographie: Notebookarrow-up-right Wie können wir medizinisches Fachpersonal dabei unterstützen, Röntgenaufnahmen, CT-Scans und Ultraschall schneller zu analysieren.

  • Qwen2.5 VL Feinabstimmung zur Umwandlung von Handschrift in LaTeX: Notebookarrow-up-right Dies ermöglicht, komplexe mathematische Formeln leicht als LaTeX zu transkribieren, ohne sie manuell schreiben zu müssen.

circle-info

Es ist am besten sicherzustellen, dass Ihr Datensatz Bilder mit allen gleichen Größen/Abmessungen enthält. Verwenden Sie Abmessungen von 300–1000 px, um sicherzustellen, dass Ihr Training nicht zu lange dauert oder zu viele Ressourcen verbraucht.

Deaktivieren von Vision- / Nur-Text-Feinabstimmung

Um Vision-Modelle zu finetunen, erlauben wir Ihnen jetzt auszuwählen, welche Teile des Modells feinabgestimmt werden sollen. Sie können auswählen, nur die Vision-Schichten, oder die Sprachschichten, oder die Attention-/MLP-Schichten zu finetunen! Standardmäßig haben wir sie alle aktiviert!

model = FastVisionModel.get_peft_model(
    model,
    finetune_vision_layers     = True, # False, wenn Vision‑Layer nicht feinabgestimmt werden
    finetune_language_layers   = True, # False, wenn Sprach‑Layer nicht feinabgestimmt werden
    finetune_attention_modules = True, # False, wenn Attention‑Layer nicht feinabgestimmt werden
    finetune_mlp_modules       = True, # False, wenn MLP‑Layer nicht feinabgestimmt werden

    r = 16,                           # Je größer, desto höher die Genauigkeit, kann aber overfitten
    lora_alpha = 16,                  # Empfohlen: alpha == r mindestens
    lora_dropout = 0,
    bias = "none",
    random_state = 3407,
    use_rslora = False,               # Wir unterstützen rank‑stabilisiertes LoRA
    loftq_config = None,               # Und LoftQ
    target_modules = "all-linear",    # Jetzt optional! Kann bei Bedarf eine Liste angeben
    modules_to_save=[
        "lm_head",
        "embed_tokens",
    ],
)

Vision Data Collator

Wir haben einen speziellen Data Collator nur für Vision-Datensätze:

Und die Argumente für den Data Collator sind:

Training mit mehreren Bildern

Um Modelle mit mehreren Bildern zu finetunen oder zu trainieren, ist die einfachste Änderung, Folgendes auszutauschen:

mit:

Die Verwendung von map aktiviert Datensatz-Standardisierung und Arrow-Verarbeitungsregeln, die streng sein und schwerer zu definieren sein können.

Datensatz für Vision-Feinabstimmung

Der Datensatz für die Feinabstimmung eines Vision- oder multimodalen Modells ähnelt dem Standard Frage-&-Antwort-Paar Datensätzen , aber diesmal enthalten sie auch Bild-Eingaben. Zum Beispiel das Llama 3.2 Vision Notebookarrow-up-right verwendet einen Radiographie-Fall, um zu zeigen, wie KI medizinischen Fachkräften helfen kann, Röntgenaufnahmen, CT-Scans und Ultraschall effizienter zu analysieren.

Wir werden eine stichprobenartige Version des ROCO-Radiographie-Datensatzes verwenden. Sie können auf den Datensatz zugreifen hierarrow-up-right. Der Datensatz enthält Röntgenaufnahmen, CT-Scans und Ultraschallbilder, die medizinische Zustände und Krankheiten zeigen. Jedes Bild hat eine von Experten geschriebene Bildunterschrift, die es beschreibt. Das Ziel ist, einen VLM zu finetunen, um ihn zu einem nützlichen Analysewerkzeug für medizinisches Fachpersonal zu machen.

Werfen wir einen Blick auf den Datensatz und prüfen, was das 1. Beispiel zeigt:

Bild
Bildunterschrift

Panoramische Radiographie zeigt eine osteolytische Läsion im rechten hinteren Oberkiefer mit Resorption des Bodens der Kieferhöhle (Pfeile).

Um den Datensatz zu formatieren, sollten alle Vision-Feinabstimmungsaufgaben wie folgt formatiert werden:

Wir werden eine benutzerdefinierte Anweisung erstellen, die den VLM auffordert, ein erfahrener Radiograph zu sein. Beachten Sie auch, dass Sie statt nur einer Anweisung mehrere Durchläufe hinzufügen können, um es zu einem dynamischen Gespräch zu machen.

Konvertieren wir den Datensatz in das "richtige" Format für die Feinabstimmung:

Das erste Beispiel ist jetzt wie unten strukturiert:

Bevor wir irgendwelche Feinabstimmungen vornehmen: Weiß das Vision-Modell vielleicht bereits, wie man die Bilder analysiert? Prüfen wir, ob das der Fall ist!

Und das Ergebnis:

Für weitere Details sehen Sie unseren Datensatzabschnitt im Notebook hierarrow-up-right.

🔎Training nur auf Assistentenantworten für Vision-Modelle, VLMs

Für Sprachmodelle können wir verwenden from unsloth.chat_templates import train_on_responses_only wie zuvor beschrieben. Für Vision-Modelle verwenden Sie die zusätzlichen Argumente als Teil von UnslothVisionDataCollator genau wie zuvor! Siehe Vision Data Collator für weitere Details zur Verwendung des Vision Data Collators.

Zum Beispiel für Llama 3.2 Vision:

Zuletzt aktualisiert

War das hilfreich?