AI Personal Learning
und praktische Anleitung
Sitzsack Marscode1

MiniMind-V: 1 Stunde Training von 26M parametrischen visuellen Sprachmodellen

Allgemeine Einführung

MiniMind-V ist ein Open-Source-Projekt, das auf GitHub gehostet wird und Benutzern helfen soll, ein leichtgewichtiges visuelles Sprachmodell (VLM) mit nur 26 Millionen Parametern in weniger als einer Stunde zu trainieren. Es basiert auf dem MiniMind-Sprachmodell, dem neuen visuellen Kodierer und dem Modul zur Merkmalsprojektion sowie der Unterstützung für die gemeinsame Verarbeitung von Bildern und Text. Das Projekt stellt den kompletten Code von der Datensatzbereinigung bis zur Modellinferenz zur Verfügung, mit Trainingskosten von nur ~RMB1,3 für eine einzelne GPU (z.B. NVIDIA 3090). MiniMind-V betont die Einfachheit und Benutzerfreundlichkeit, mit weniger als 50 Zeilen Codeänderungen, was es zu einem geeigneten Werkzeug für Entwickler macht, um mit dem Prozess der Konstruktion visueller Sprachmodelle zu experimentieren und zu lernen.

MiniMind-V: 1 Stunde Training eines visuellen Sprachmodells mit 26 Millionen Parametern-1


 

Funktionsliste

  • Bietet einen vollständigen Trainingscode für visuelle Sprachmodelle mit 26 Millionen Parametern, die ein schnelles Training auf einem einzigen Grafikprozessor ermöglichen.
  • Mit Hilfe des visuellen Codierers CLIP wurde ein Bild mit 224x224 Pixeln verarbeitet, um 196 visuelle Token zu erzeugen.
  • Unterstützt die Eingabe von einzelnen und mehreren Bildern, kombiniert mit Text für Dialoge, Bildbeschreibungen oder Fragen und Antworten.
  • Enthält vollständige Prozessskripte für die Datensatzbereinigung, das Vortraining und die überwachte Feinabstimmung (SFT).
  • Bietet eine native PyTorch-Implementierung, unterstützt Multi-Card-Beschleunigung und ist hochkompatibel.
  • Enthält den Download von Modellgewichten und Unterstützung für die Plattformen Hugging Face und ModelScope.
  • Bietet eine Webschnittstelle und eine Befehlszeilenfunktion zum einfachen Testen von Modelleffekten.
  • Unterstützung für das Tool wandb zur Erfassung von Verlusten und Leistungen während der Ausbildung.

 

Hilfe verwenden

Der Prozess der Verwendung von MiniMind-V umfasst die Konfiguration der Umgebung, die Datenvorbereitung, das Modelltraining und den Effekttest. Jeder Schritt wird im Folgenden detailliert beschrieben, um den Benutzern einen schnellen Einstieg zu ermöglichen.

Umgebung Konfiguration

MiniMind-V benötigt eine Python-Umgebung und GPU-Unterstützung. Hier sind die Installationsschritte:

  1. Klonen von Code
    Führen Sie den folgenden Befehl im Terminal aus, um den Projektcode herunterzuladen:

    git clone https://github.com/jingyaogong/minimind-v
    cd minimind-v
    
  2. Installation von Abhängigkeiten
    Projektangebote requirements.txt Datei, die die erforderlichen Bibliotheken enthält. Führen Sie den folgenden Befehl aus:

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    Python 3.9 oder höher wird empfohlen. Stellen Sie sicher, dass PyTorch CUDA unterstützt (wenn Sie einen Grafikprozessor haben). Dies kann durch Ausführen des folgenden Codes überprüft werden:

    import torch
    print(torch.cuda.is_available())
    

    Ausfuhren True Zeigt an, dass die GPU verfügbar ist.

  3. CLIP-Modelle herunterladen
    MiniMind-V verwendet das CLIP-Modell (clip-vit-base-patch16) als visuellen Kodierer. Führen Sie den folgenden Befehl aus, um die ./model/vision_model::

    git clone https://huggingface.co/openai/clip-vit-base-patch16 ./model/vision_model
    

    Auch zum Download bei ModelScope erhältlich:

    git clone https://www.modelscope.cn/models/openai-mirror/clip-vit-base-patch16 ./model/vision_model
    
  4. Download der Gewichte des Basissprachmodells
    MiniMind-V basiert auf dem MiniMind-Sprachmodell, für das die Gewichte des Sprachmodells auf den Computer heruntergeladen werden müssen. ./out Katalog. Beispiel:

    wget https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch/blob/main/lm_512.pth -P ./out
    

    oder herunterladen lm_768.pthabhängig von der Modellkonfiguration.

Vorbereitung der Daten

MiniMind-V verwendet etwa 570.000 Bilder für das Vortraining und 300.000 Daten für die Feinabstimmung der Befehle mit etwa 5 GB Speicherplatz:

  1. Erstellen eines Datensatzkatalogs
    Erstellen Sie im Stammverzeichnis des Projekts die Datei ./dataset Mappe:

    mkdir dataset
    
  2. Datensatz herunterladen
    Laden Sie einen Datensatz von Hugging Face oder ModelScope herunter, der die *.jsonl Q&A-Daten und *images Bilddaten:

    • Gesicht umarmen: https://huggingface.co/datasets/jingyaogong/minimind-v_dataset
    • ModelScope: https://www.modelscope.cn/datasets/gongjy/minimind-v_dataset
      Laden Sie die Bilddaten herunter und entpacken Sie sie nach ./dataset::
    unzip pretrain_images.zip -d ./dataset
    unzip sft_images.zip -d ./dataset
    
  3. Validierungsdatensatz
    sicher ./dataset Enthält die folgenden Dateien:

    • pretrain_vlm_data.jsonlPre-training data, ca. 570.000 Einträge.
    • sft_vlm_data.jsonlEinzahlige Feinabstimmungsdaten, etwa 300.000 Einträge.
    • sft_vlm_data_multi.jsonlMulti-Map-Feinabstimmungsdaten, etwa 13.600 Einträge.
    • Bildordner: enthält Bilddateien für das Vortraining und die Feinabstimmung.

Modellschulung

Das MiniMind-V-Training gliedert sich in ein Vortraining und eine überwachte Feinabstimmung und unterstützt die Beschleunigung mit einer oder mehreren Karten.

  1. Konfigurationsparameter
    Compiler ./model/LMConfig.pystellen Sie die Modellparameter ein. Beispiel:

    • Miniaturen:dim=512n_layers=8
    • Mittleres Modell:dim=768n_layers=16
      Diese Parameter bestimmen die Größe und Leistung des Modells.
  2. vor der Ausbildung
    Führen Sie Pre-Trainingsskripte aus, um die Fähigkeiten zur Bildbeschreibung zu erlernen:

    python train_pretrain_vlm.py --epochs 4
    

    Die Ausgangsgewichte werden gespeichert als ./out/pretrain_vlm_512.pth(oder 768.pthDas CLIP-Modell wird eingefroren.) Ein einzelner NVIDIA 3090 benötigt etwa 1 Stunde für eine Epoche. friert das CLIP-Modell ein und trainiert nur die Projektionsschicht und die letzte Schicht des Sprachmodells.

  3. Überwachte Feinabstimmung (SFT)
    Feinabstimmung mit vortrainierten Gewichten zur Optimierung der Dialogfähigkeit:

    python train_sft_vlm.py --epochs 4
    

    Die Ausgangsgewichte werden gespeichert als ./out/sft_vlm_512.pth. In diesem Schritt werden die Projektionsschicht und das Sprachmodell mit allen Parametern trainiert.

  4. Doka-Ausbildung (fakultativ)
    Wenn Sie über N Grafikkarten verfügen, verwenden Sie den folgenden Befehl zur Beschleunigung:

    torchrun --nproc_per_node N train_pretrain_vlm.py --epochs 4
    

    Austauschbarkeit train_pretrain_vlm.py Für andere Trainingsskripte (z.B. train_sft_vlm.py).

  5. Ausbildung überwachen
    Trainingsverluste können mit wandb aufgezeichnet werden:

    python train_pretrain_vlm.py --epochs 4 --use_wandb
    

    Echtzeitdaten auf der offiziellen wandb-Website anzeigen.

Effektivitätstest

Sobald das Training abgeschlossen ist, kann das Modell auf seine Fähigkeiten zum Bilddialog getestet werden.

  1. Befehlszeilenargumentation
    Führen Sie den folgenden Befehl aus, um das Modell zu laden:

    python eval_vlm.py --load 1 --model_mode 1
    
    • --load 1Laden Sie das Transformatorenformatmodell aus Hugging Face.
    • --load 0: Von ./out PyTorch-Gewichte laden.
    • --model_mode 1Testing fine-tuned models;0 Testen von vortrainierten Modellen.
  2. Testen der Webschnittstelle
    Starten Sie das Webinterface:

    python web_demo_vlm.py
    

    Interviews http://localhost:8000Laden Sie ein Bild hoch und geben Sie einen Text ein, der getestet werden soll.

  3. Eingabeformat
    MiniMind-V verwendet 196 @@@ Platzhalter stellen ein Bild dar. Beispiel:

    @@@...@@@\n这张图片是什么内容?
    

    Beispiel für die Eingabe mehrerer Bilder:

    @@@...@@@\n第一张图是什么?\n@@@...@@@\n第二张图是什么?
    
  4. Download Gewichte vor dem Training
    Wenn Sie nicht trainieren, können Sie die offiziellen Gewichte direkt herunterladen:

caveat

  • Empfohlener Videospeicher 24 GB (z. B. RTX 3090). Wenn der Videospeicher nicht ausreicht, reduzieren Sie die Stapelgröße (batch_size).
  • Sicherstellen, dass der Pfad zum Datensatz korrekt ist.*.jsonl und Bilddateien müssen in den Ordner ./dataset.
  • Das Einfrieren von CLIP-Modellen während des Trainings reduziert die arithmetischen Anforderungen.
  • Mehrbilddialoge sind nur begrenzt wirksam, und es wird empfohlen, vorrangig Einzelbildszenarien zu testen.

 

Anwendungsszenario

  1. Algorithmisches Lernen der AI
    MiniMind-V bietet einen prägnanten Modellierungscode in visueller Sprache, der für Studenten geeignet ist, um die Prinzipien der cross-modalen Modellierung zu verstehen. Die Benutzer können den Code ändern, um mit verschiedenen Parametern oder Datensätzen zu experimentieren.
  2. Schnelles Prototyping
    Entwickler können Prototypen von Bilddialoganwendungen auf der Grundlage von MiniMind-V entwickeln. MiniMind-V ist leicht und effizient und eignet sich für Geräte mit geringer Rechenleistung wie PCs oder eingebettete Systeme. Es ist leichtgewichtig und effizient und eignet sich für Geräte mit geringer Rechenleistung wie PCs oder eingebettete Systeme.
  3. Instrumente für Bildung und Ausbildung
    Hochschulen und Universitäten können MiniMind-V in KI-Kursen verwenden, um den gesamten Prozess der Modellbildung zu zeigen. Der Code ist klar kommentiert und für den Einsatz im Unterricht geeignet.
  4. Kostengünstige Experimente
    Die Kosten für die Projektschulung sind gering und eignen sich für Teams mit begrenztem Budget, um die Wirkung multimodaler Modelle zu testen, ohne dass Hochleistungsserver erforderlich sind.

 

QA

  1. Welche Bildgrößen unterstützt MiniMind-V?
    Standardmäßig werden Bilder mit 224x224 Pixeln verarbeitet, begrenzt durch das CLIP-Modell. Die Bilder der Datensätze können auf 128x128 komprimiert werden, um Platz zu sparen. CLIP-Modelle mit größerer Auflösung können in Zukunft ausprobiert werden.
  2. Wie viel Zeit wird die Schulung in Anspruch nehmen?
    Auf einem einzelnen NVIDIA 3090 dauert eine Epoche des Pre-Trainings etwa 1 Stunde, wobei die Feinabstimmung etwas schneller geht. Die genaue Zeit variiert je nach Hardware und Datenmenge.
  3. Kann ich die Feinabstimmung auch ohne Vortraining vornehmen?
    Kann. Laden Sie die offiziellen Vor-Trainingsgewichte direkt herunter und führen Sie train_sft_vlm.py Feinabstimmung.
  4. Welche Sprachen werden unterstützt?
    Unterstützt vor allem Chinesisch und Englisch, die Wirkung hängt vom Datensatz ab. Benutzer können andere Sprachen durch Feinabstimmung erweitern.
  5. Wie gut funktioniert der Mehrbilddialog?
    Die derzeitige Fähigkeit zum Dialog mit mehreren Bildern ist begrenzt, und es wird empfohlen, vorzugsweise Einzelbildszenarien zu verwenden. Verbesserungen können in Zukunft mit größeren Modellen und Datensätzen vorgenommen werden.
Darf nicht ohne Genehmigung vervielfältigt werden:Leiter des AI-Austauschkreises " MiniMind-V: 1 Stunde Training von 26M parametrischen visuellen Sprachmodellen
de_DEDeutsch