Présentation détaillée du projet ChatGLM3
Aperçu du projet
ChatGLM3 est un modèle de pré-entraînement conversationnel publié conjointement par Zhipu AI et le laboratoire KEG de l'université Tsinghua. ChatGLM3-6B est le modèle open source de la série ChatGLM3. Tout en conservant les nombreuses excellentes caractéristiques des deux générations précédentes de modèles, telles que la fluidité de la conversation et le faible seuil de déploiement, ChatGLM3-6B introduit plusieurs nouvelles fonctionnalités et améliorations importantes.
Adresse du projet: https://github.com/THUDM/ChatGLM3
Caractéristiques principales
1. Modèle de base plus puissant
Le modèle de base de ChatGLM3-6B, ChatGLM3-6B-Base, utilise des données d'entraînement plus diversifiées, un nombre d'étapes d'entraînement plus important et une stratégie d'entraînement plus raisonnable. Les évaluations sur des ensembles de données de différents points de vue tels que la sémantique, les mathématiques, le raisonnement, le code et les connaissances montrent que ChatGLM3-6B-Base possède les performances les plus élevées parmi les modèles de base inférieurs à 10B.
2. Prise en charge plus complète des fonctionnalités
- Nouvelle version du format Prompt: Adopte un format Prompt nouvellement conçu pour prendre en charge une interaction conversationnelle plus flexible.
- Appel d'outils (Function Call): Prend en charge nativement la fonctionnalité d'appel d'outils, le modèle peut appeler activement des outils externes.
- Exécution de code (Code Interpreter): Prend en charge l'exécution de code dans un environnement Jupyter et l'obtention des résultats.
- Tâches d'agent: Prend en charge les scénarios de tâches d'agent complexes.
3. Séquence open source plus complète
Fournit plusieurs versions pour répondre à différents besoins :
- ChatGLM3-6B: Modèle de conversation standard, prend en charge une longueur de contexte de 8 K.
- ChatGLM3-6B-Base: Modèle de pré-entraînement de base.
- ChatGLM3-6B-32K: Modèle de conversation de texte long, prend en charge un contexte de 32 K.
- ChatGLM3-6B-128K: Modèle de compréhension de texte ultra-long, prend en charge un contexte de 128 K.
Performances
Évaluation des capacités de base
Résultats des tests sur 8 ensembles de données typiques en chinois et en anglais :
Modèle |
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 |
Capacité de traitement de texte long
ChatGLM3-6B-32K a été évalué manuellement dans plusieurs scénarios d'application de texte long. Par rapport au modèle de deuxième génération, son effet a été amélioré de plus de 50 % en moyenne. L'amélioration est particulièrement significative dans les applications telles que la lecture d'articles, le résumé de documents et l'analyse de rapports financiers.
Installation et utilisation
Préparation de l'environnement
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
pip install -r requirements.txt
Exemple d'utilisation de base
from transformers import AutoTokenizer, AutoModel
# Charger le modèle
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()
# Interaction conversationnelle
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
Configuration matérielle requise
- Chargement standard: Nécessite environ 13 Go de mémoire vidéo (précision FP16).
- Chargement quantifié: La demande de mémoire vidéo est considérablement réduite après la quantification 4 bits.
- Inférence CPU: Nécessite environ 32 Go de mémoire.
- Prise en charge multi-GPU: Le modèle peut être distribué sur plusieurs GPU.
Méthodes de déploiement
1. Déploiement de l'interface Web
# Version Gradio
python web_demo_gradio.py
# Version Streamlit
streamlit run web_demo_streamlit.py
2. Interaction en ligne de commande
python cli_demo.py
3. Déploiement du service API
cd openai_api_demo
python api_server.py
Fournit une interface API compatible OpenAI, prenant en charge :
- Interface de conversation standard
- Interface d'appel d'outils
- Réponse en flux continu
- Contrôle des paramètres de température et top_p
Ajustement fin et extension
Prise en charge de l'ajustement fin
Le projet fournit une suite complète d'ajustement fin, prenant en charge :
- Ajustement fin des instructions
- Ajustement fin de la conversation
- Ajustement fin spécifique à la tâche
Écosystème communautaire
Prend en charge plusieurs excellents projets open source :
Accélération de l'inférence:
- chatglm.cpp : Solution d'accélération de la quantification similaire à llama.cpp.
- ChatGLM3-TPU : Inférence d'accélération TPU.
- TensorRT-LLM : Inférence haute performance du GPU NVIDIA.
- OpenVINO : Inférence d'accélération des appareils Intel.
Framework d'ajustement fin:
- LLaMA-Factory : Framework d'ajustement fin efficace.
Framework d'application:
- LangChain-Chatchat : Projet de base de connaissances RAG.
- BISHENG : Plateforme de développement d'applications de grands modèles.
- RAGFlow : Moteur RAG de compréhension approfondie des documents.
Fonctionnalités de démonstration complètes
Le projet fournit une démonstration complète intégrant trois modes :
- Mode Chat: Interaction conversationnelle standard.
- Mode Tool: Démonstration d'appel d'outils.
- Mode Code Interpreter: Environnement d'exécution de code.
Licence et conditions d'utilisation
- Recherche académique: Utilisation entièrement ouverte.
- Utilisation commerciale: L'utilisation commerciale gratuite est autorisée après avoir rempli un questionnaire d'inscription.
- Restrictions d'utilisation: Ne doit pas être utilisé à des fins susceptibles de nuire à l'État et à la société.
- Exigences de sécurité: Les services doivent passer une évaluation de sécurité et un enregistrement.
Caractéristiques de l'architecture technique
Architecture du modèle
- Version améliorée basée sur l'architecture GLM.
- Mécanisme d'attention optimisé.
- Meilleure prise en charge multilingue.
- Prise en charge native de l'appel d'outils.
Optimisation de l'entraînement
- Données d'entraînement plus diversifiées.
- Nombre d'étapes d'entraînement plus important.
- Stratégie d'entraînement plus raisonnable.
- Optimisation pour le chinois.
Contribution de la communauté
Le projet embrasse activement la communauté open source, coopère en profondeur avec plusieurs excellents projets et a formé un écosystème complet. Les développeurs peuvent développer diverses applications innovantes basées sur ChatGLM3.