Allgemeine Einführung
InternLM-XComposer ist ein Open-Source-Projekt zur grafischen multimodalen Makromodellierung, das vom InternLM-Team entwickelt und auf GitHub gehostet wird. Es basiert auf dem InternLM-Sprachmodell und ist in der Lage, multimodale Daten wie Text, Bilder und Video zu verarbeiten, und wird häufig in den Bereichen Grafik-Authoring, Bildverständnis und Videoanalyse eingesetzt. Das Projekt ist bekannt für seine Fähigkeit, bis zu 96K lange Kontexte zu unterstützen, hochauflösende 4K-Bilder zu verarbeiten und feinkörnige Videos zu verstehen, mit einer Leistung, die mit GPT-4V vergleichbar ist, das nur 7B Parameter verwendet. Der Code, die Modellgewichte und die ausführliche Dokumentation stehen Forschern, Entwicklern und Nutzern, die sich für multimodale KI interessieren, über GitHub zur Verfügung. Seit Februar 2025 hat das Projekt mehrere Versionen veröffentlicht, darunter InternLM-XComposer-2.5 und OmniLive, um das multimodale Interaktionserlebnis kontinuierlich zu optimieren.
Funktionsliste
- Unterstützung für ultralange kontextbezogene Ausgaben: Verarbeitung von bis zu 96K gemischten grafischen Inhalten für komplexe Aufgaben.
- Hochauflösendes Bildverständnis: Unterstützt die Bildanalyse von 336 Pixel bis 4K mit klaren Details.
- Feinkörniges Videoverständnis: Zerlegung von Videos in Einzelbilder zur Erfassung dynamischer Details.
- Grafikerstellung: Erstellen von grafischen Artikeln oder Webinhalten nach Vorgaben.
- Mehrere Runden des Mehrbilddialogs: Unterstützung mehrerer Bildeingaben für eine kontinuierliche Dialoganalyse.
- Open-Source-Modellunterstützung: Bereitstellung einer Vielzahl von Modellgewichten und Feinabstimmungscodes zur Erleichterung der Sekundärentwicklung.
- Multimodale Streaming-Interaktion: Die OmniLive-Version unterstützt die Verarbeitung von Video- und Audiodaten von langer Dauer.
Hilfe verwenden
InternLM-XComposer ist ein Open-Source-Projekt, das auf GitHub basiert. Die Benutzer benötigen einige Programmierkenntnisse, um es zu installieren und zu verwenden. Im Folgenden finden Sie eine ausführliche Anleitung, um den Benutzern einen schnellen Einstieg zu ermöglichen.
Einbauverfahren
1. die Vorbereitung der Umwelt
-
- Stellen Sie sicher, dass Sie Python 3.9 oder höher auf Ihrem Gerät installiert haben.
- Erfordert NVIDIA GPU und CUDA-Unterstützung (CUDA 11.x oder 12.x empfohlen).
- Installieren Sie Git, um Ihre Codebasis zu klonen.
2. klonen von Projekten
Führen Sie den folgenden Befehl im Terminal aus, um das Projekt lokal herunterzuladen:
git clone https://github.com/InternLM/InternLM-XComposer.git cd InternLM-XComposer
3. Erstellen einer virtuellen Umgebung Isolieren Sie Abhängigkeiten mit Conda oder Tools für virtuelle Umgebungen:
conda create -n internlm python=3.9 -y conda activate internlm
4. Installation von Abhängigkeiten Installieren Sie die erforderlichen Bibliotheken gemäß der offiziellen Dokumentation:
pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117 pip install transformers==4.33.2 timm==0.4.12 sentencepiece==0.1.99 gradio==4.13.0 markdown2==4.4.10 xlsxwriter==3.1.2 einops
- Optional: Installieren Sie flash-attention2, um GPU-Speicher zu sparen:
pip install flash-attn --no-build-isolation
5. Download Modellgewichte Das Projekt unterstützt das Herunterladen von vortrainierten Modellen, z. B. von Hugging Face:
model = AutoModel.from_pretrained('internlm/internlm-xcomposer2d5-7b', torch_dtype=torch.bfloat16, trust_remote_code=True).cuda().eval()
6. Überprüfen der Installation Führen Sie den Beispielcode aus, um zu testen, ob die Umgebung normal ist:
python -m torch.distributed.run --nproc_per_node=1 example_code/simple_chat.py
Hauptfunktionen
1. grafische Erstellung
- Funktion EinführungGenerierung von Inhalten mit Text und Bildern, wie z. B. Artikel oder Webseiten, auf der Grundlage von Benutzeranweisungen.
- Verfahren::
- Input vorbereiten: Schreiben Sie eine Textanweisung (z. B. "Schreiben Sie einen Artikel über das Reisen, einschließlich dreier Bilder").
- Führen Sie den Code aus:
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('internlm/internlm-xcomposer2d5-7b', trust_remote_code=True).cuda().eval()
tokenizer = AutoTokenizer.from_pretrained('internlm/internlm-xcomposer2d5-7b', trust_remote_code=True)
query = "写一篇关于旅行的文章,包含三张图片"
response, _ = model.chat(tokenizer, query, do_sample=False, num_beams=3)
print(response)
- Ausgabe: Das Modell erzeugt eine Mischung aus grafischen und textlichen Inhalten, wobei die Bildbeschreibungen automatisch in den Text eingebettet werden.
2. hochauflösendes Bildverständnis
- Funktion EinführungAnalysiert hochauflösende Bilder und liefert detaillierte Beschreibungen.
- Verfahren::
- Bereiten Sie das Image vor: Legen Sie die Image-Datei in einem lokalen Verzeichnis ab (z. B.
examples/dubai.png
). - Führen Sie den Code aus:
query = "详细分析这张图片"
image = ['examples/dubai.png']
with torch.autocast(device_type='cuda', dtype=torch.float16):
response, _ = model.chat(tokenizer, query, image, do_sample=False, num_beams=3)
print(response)
- Ausgabe: Das Modell liefert eine detaillierte Beschreibung des Bildinhalts, z. B. Details wie Gebäude, Farben usw.
3. die Videoanalyse
- Funktion EinführungZerlegen Sie ein Videobild und beschreiben Sie den Inhalt.
- Verfahren::
- Vorbereitungsvideo: Laden Sie das Beispielvideo herunter (z. B.
liuxiang.mp4
). - Verwenden Sie die OmniLive-Version:
from lmdeploy import pipeline
pipe = pipeline('internlm/internlm-xcomposer2d5-ol-7b')
video = load_video('liuxiang.mp4')
query = "描述这段视频内容"
response = pipe((query, video))
print(response.text)
- Ausgabeergebnis: Gibt eine detaillierte Beschreibung des Videobildes zurück, z. B. eine Aktion oder eine Szene.
4. mehrere Runden des Dialogs mit mehreren Charts
- Funktion EinführungUnterstützt die Eingabe mehrerer Bilder für einen kontinuierlichen Dialog.
- Verfahren::
- Bereiten Sie mehrere Bilder vor (z. B.
cars1.jpg
,cars2.jpg
,cars3.jpg
). - Führen Sie den Code aus:
query = "Image1 <ImageHere>; Image2 <ImageHere>; Image3 <ImageHere>; 分析这三辆车的优缺点"
images = ['examples/cars1.jpg', 'examples/cars2.jpg', 'examples/cars3.jpg']
response, _ = model.chat(tokenizer, query, images, do_sample=False, num_beams=3)
print(response)
- Ergebnis: Das Modell analysiert die Fahrzeugmerkmale, die jedem Bild entsprechen, einzeln.
caveat
- Hardware-VoraussetzungMindestens 24 GB GPU-Speicher werden empfohlen, versuchen Sie es mit der quantisierten 4-Bit-Version für Geräte der unteren Leistungsklasse.
- Tipps zur FehlersucheWenn der Videospeicher nicht ausreicht, verringern Sie den
hd_num
(Standardwert 18). - Unterstützung der GemeinschaftBesuchen Sie die GitHub Issues-Seite, um häufig gestellte Fragen zu sehen oder Feedback einzureichen.
Mit diesen Schritten können Sie den InternLM-XComposer problemlos installieren und für Forschung und Entwicklung nutzen.