Detaillierte Vorstellung des ChatGLM3-Projekts
Projektübersicht
ChatGLM3 ist ein dialogorientiertes vortrainiertes Modell, das gemeinsam von Zhipu AI und dem KEG-Labor der Tsinghua-Universität veröffentlicht wurde. ChatGLM3-6B ist das Open-Source-Modell der ChatGLM3-Serie, das neben den vielen hervorragenden Eigenschaften der vorherigen zwei Generationen, wie z. B. flüssige Dialoge und niedrige Bereitstellungsschwellen, eine Reihe wichtiger neuer Funktionen und Verbesserungen einführt.
Projektadresse: https://github.com/THUDM/ChatGLM3
Kernfunktionen
1. Leistungsstärkeres Basismodell
Das Basismodell ChatGLM3-6B von ChatGLM3-6B-Base verwendet vielfältigere Trainingsdaten, ausreichendere Trainingsschritte und eine angemessenere Trainingsstrategie. Die Bewertung auf Datensätzen aus verschiedenen Perspektiven wie Semantik, Mathematik, Schlussfolgerungen, Code und Wissen zeigt, dass ChatGLM3-6B-Base die stärkste Leistung unter den Basismodellen unter 10B aufweist.
2. Umfassendere Funktionsunterstützung
- Neue Prompt-Format: Nimmt ein neu gestaltetes Prompt-Format an, das flexiblere Dialoginteraktionen unterstützt.
- Werkzeugaufruf (Function Call): Unterstützt nativ die Werkzeugaufruffunktion, sodass das Modell aktiv externe Werkzeuge aufrufen kann.
- Codeausführung (Code Interpreter): Unterstützt die Ausführung von Code in einer Jupyter-Umgebung und das Abrufen von Ergebnissen.
- Agent-Aufgaben: Unterstützt komplexe Agent-Aufgabenszenarien.
3. Umfassendere Open-Source-Sequenz
Bietet mehrere Versionen, um unterschiedliche Anforderungen zu erfüllen:
- ChatGLM3-6B: Standard-Dialogmodell, unterstützt 8K Kontextlänge.
- ChatGLM3-6B-Base: Basis-Vortrainiertes Modell.
- ChatGLM3-6B-32K: Langtext-Dialogmodell, unterstützt 32K Kontext.
- ChatGLM3-6B-128K: Ultralanges Textverständnismodell, unterstützt 128K Kontext.
Leistungsdarstellung
Bewertung der grundlegenden Fähigkeiten
Testergebnisse auf 8 typischen chinesischen und englischen Datensätzen:
Modell |
GSM8K |
MATH |
BBH |
MMLU |
C-Eval |
CMMLU |
MBPP |
AGIEval |
ChatGLM2-6B-Base |
32.4 |
6.5 |
33.7 |
47.9 |
51.7 |
50.0 |
- |
- |
ChatGLM3-6B-Base |
72.3 |
25.7 |
66.1 |
61.4 |
69.0 |
67.5 |
52.4 |
53.7 |
Langtextverarbeitungsfähigkeit
ChatGLM3-6B-32K wurde in mehreren Langtextanwendungsszenarien manuell bewertet. Im Vergleich zum Modell der zweiten Generation wurde die Wirkung im Durchschnitt um mehr als 50 % verbessert. Die Verbesserung ist besonders deutlich bei Anwendungen wie dem Lesen von Artikeln, der Zusammenfassung von Dokumenten und der Analyse von Finanzberichten.
Installation und Verwendung
Umgebungsvorbereitung
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
pip install -r requirements.txt
Grundlegendes Verwendungsbeispiel
from transformers import AutoTokenizer, AutoModel
# Modell laden
tokenizer = AutoTokenizer.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("THUDM/chatglm3-6b", trust_remote_code=True, device='cuda')
model = model.eval()
# Dialoginteraktion
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
Hardwareanforderungen
- Standardladen: Benötigt ca. 13 GB GPU-Speicher (FP16-Genauigkeit).
- Quantisiertes Laden: Der GPU-Speicherbedarf wird nach der 4-Bit-Quantisierung erheblich reduziert.
- CPU-Inferenz: Benötigt ca. 32 GB Speicher.
- Multi-GPU-Unterstützung: Das Modell kann auf mehrere GPUs verteilt werden.
Bereitstellungsmethoden
1. Web-Oberflächenbereitstellung
# Gradio-Version
python web_demo_gradio.py
# Streamlit-Version
streamlit run web_demo_streamlit.py
2. Befehlszeileninteraktion
python cli_demo.py
3. API-Dienstbereitstellung
cd openai_api_demo
python api_server.py
Bietet eine OpenAI-kompatible API-Schnittstelle, die Folgendes unterstützt:
- Standard-Dialogschnittstelle
- Werkzeugaufrufschnittstelle
- Streaming-Antwort
- Temperatur- und Top_p-Parametersteuerung
Feinabstimmung und Erweiterung
Feinabstimmungsunterstützung
Das Projekt bietet ein komplettes Feinabstimmungspaket, das Folgendes unterstützt:
- Befehlsfeinabstimmung
- Dialogfeinabstimmung
- Aufgabenspezifische Feinabstimmung
Community-Ökosystem
Unterstützt mehrere hervorragende Open-Source-Projekte:
Inferenzbeschleunigung:
- chatglm.cpp: Ähnlich wie llama.cpp, ein Quantisierungsbeschleunigungsschema.
- ChatGLM3-TPU: TPU-beschleunigte Inferenz.
- TensorRT-LLM: Hochleistungsfähige NVIDIA GPU-Inferenz.
- OpenVINO: Intel-Gerätebeschleunigte Inferenz.
Feinabstimmungsframework:
- LLaMA-Factory: Effizientes Feinabstimmungsframework.
Anwendungsframework:
- LangChain-Chatchat: RAG-Wissensdatenbankprojekt.
- BISHENG: Entwicklungsplattform für große Modellanwendungen.
- RAGFlow: RAG-Engine für tiefes Dokumentenverständnis.
Umfassende Demo-Funktion
Das Projekt bietet eine umfassende Demo, die drei Modi integriert:
- Chat-Modus: Standard-Dialoginteraktion.
- Tool-Modus: Werkzeugaufrufdemonstration.
- Code Interpreter-Modus: Codeausführungsumgebung.
Lizenz und Nutzungsbedingungen
- Akademische Forschung: Völlig offene Nutzung.
- Kommerzielle Nutzung: Kostenlose kommerzielle Nutzung nach Ausfüllen eines Fragebogens.
- Nutzungsbeschränkungen: Darf nicht für Zwecke verwendet werden, die dem Staat und der Gesellschaft schaden könnten.
- Sicherheitsanforderungen: Dienste müssen eine Sicherheitsbewertung und -registrierung durchlaufen.
Technische Architekturmerkmale
Modellarchitektur
- Verbesserte Version basierend auf der GLM-Architektur.
- Optimierter Aufmerksamkeitsmechanismus.
- Bessere Mehrsprachigkeitsunterstützung.
- Native Unterstützung für Werkzeugaufrufe.
Trainingsoptimierung
- Vielfältigere Trainingsdaten.
- Ausreichendere Trainingsschritte.
- Angemessenere Trainingsstrategie.
- Optimierung für Chinesisch.
Community-Beitrag
Das Projekt begrüßt aktiv die Open-Source-Community, arbeitet eng mit mehreren hervorragenden Projekten zusammen und hat ein vollständiges Ökosystem geschaffen. Entwickler können auf der Grundlage von ChatGLM3 verschiedene innovative Anwendungen entwickeln.