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.
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:
- 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
- Installation von Abhängigkeiten
Projektangeboterequirements.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. - 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
- 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.pth
abhä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:
- Erstellen eines Datensatzkatalogs
Erstellen Sie im Stammverzeichnis des Projekts die Datei./dataset
Mappe:mkdir dataset
- 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
- Validierungsdatensatz
sicher./dataset
Enthält die folgenden Dateien:pretrain_vlm_data.jsonl
Pre-training data, ca. 570.000 Einträge.sft_vlm_data.jsonl
Einzahlige Feinabstimmungsdaten, etwa 300.000 Einträge.sft_vlm_data_multi.jsonl
Multi-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.
- Konfigurationsparameter
Compiler./model/LMConfig.py
stellen Sie die Modellparameter ein. Beispiel:- Miniaturen:
dim=512
,n_layers=8
- Mittleres Modell:
dim=768
,n_layers=16
Diese Parameter bestimmen die Größe und Leistung des Modells.
- Miniaturen:
- 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
(oder768.pth
Das 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. - Ü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. - 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
). - 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.
- Befehlszeilenargumentation
Führen Sie den folgenden Befehl aus, um das Modell zu laden:python eval_vlm.py --load 1 --model_mode 1
--load 1
Laden Sie das Transformatorenformatmodell aus Hugging Face.--load 0
: Von./out
PyTorch-Gewichte laden.--model_mode 1
Testing fine-tuned models;0
Testen von vortrainierten Modellen.
- Testen der Webschnittstelle
Starten Sie das Webinterface:python web_demo_vlm.py
Interviews
http://localhost:8000
Laden Sie ein Bild hoch und geben Sie einen Text ein, der getestet werden soll. - Eingabeformat
MiniMind-V verwendet 196@@@
Platzhalter stellen ein Bild dar. Beispiel:@@@...@@@\n这张图片是什么内容?
Beispiel für die Eingabe mehrerer Bilder:
@@@...@@@\n第一张图是什么?\n@@@...@@@\n第二张图是什么?
- Download Gewichte vor dem Training
Wenn Sie nicht trainieren, können Sie die offiziellen Gewichte direkt herunterladen:- PyTorch-Format:https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch
- Transformers-Format:https://huggingface.co/collections/jingyaogong/minimind-v-67000833fb60b3a2e1f3597d
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
- 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. - 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. - 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. - 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
- 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. - 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. - Kann ich die Feinabstimmung auch ohne Vortraining vornehmen?
Kann. Laden Sie die offiziellen Vor-Trainingsgewichte direkt herunter und führen Sietrain_sft_vlm.py
Feinabstimmung. - 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. - 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.