Introducción Detallada al Proyecto ChatGLM3
Resumen del Proyecto
ChatGLM3 es un modelo de preentrenamiento de diálogo lanzado conjuntamente por Zhipu AI y el Laboratorio KEG de la Universidad de Tsinghua. ChatGLM3-6B es el modelo de código abierto de la serie ChatGLM3, que conserva las excelentes características de las dos generaciones anteriores, como la fluidez del diálogo y el bajo umbral de implementación, e introduce una serie de nuevas características y mejoras importantes.
Dirección del Proyecto: https://github.com/THUDM/ChatGLM3
Características Principales
1. Modelo Base Más Potente
El modelo base de ChatGLM3-6B, ChatGLM3-6B-Base, utiliza datos de entrenamiento más diversos, pasos de entrenamiento más completos y estrategias de entrenamiento más razonables. Las evaluaciones en conjuntos de datos desde diferentes perspectivas, como semántica, matemáticas, razonamiento, código y conocimiento, muestran que ChatGLM3-6B-Base tiene el rendimiento más sólido entre los modelos base de menos de 10B.
2. Soporte de Funciones Más Completo
- Nueva Versión del Formato Prompt: Adopta un formato Prompt de nuevo diseño, que admite una interacción de diálogo más flexible.
- Llamada de Herramientas (Function Call): Admite de forma nativa la función de llamada de herramientas, el modelo puede llamar activamente a herramientas externas.
- Ejecución de Código (Code Interpreter): Admite la ejecución de código en el entorno Jupyter y la obtención de resultados.
- Tareas de Agente: Admite escenarios complejos de tareas de agentes inteligentes.
3. Secuencia de Código Abierto Más Completa
Proporciona múltiples versiones para satisfacer diferentes necesidades:
- ChatGLM3-6B: Modelo de diálogo estándar, admite una longitud de contexto de 8K.
- ChatGLM3-6B-Base: Modelo de preentrenamiento base.
- ChatGLM3-6B-32K: Modelo de diálogo de texto largo, admite un contexto de 32K.
- ChatGLM3-6B-128K: Modelo de comprensión de texto ultra largo, admite un contexto de 128K.
Rendimiento
Evaluación de Capacidades Básicas
Resultados de las pruebas en 8 conjuntos de datos típicos en chino e inglés:
Modelo |
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 |
Capacidad de Procesamiento de Texto Largo
Se realizó una prueba de evaluación manual de ChatGLM3-6B-32K en múltiples escenarios de aplicación de texto largo. En comparación con el modelo de segunda generación, su efecto ha mejorado en promedio más del 50%. La mejora es particularmente significativa en aplicaciones como la lectura de documentos, el resumen de documentos y el análisis de informes financieros.
Instalación y Uso
Preparación del Entorno
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
pip install -r requirements.txt
Ejemplo de Uso Básico
from transformers import AutoTokenizer, AutoModel
# Cargar el modelo
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()
# Interacción de diálogo
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
Requisitos de Hardware
- Carga Estándar: Requiere aproximadamente 13 GB de memoria de video (precisión FP16).
- Carga Cuantificada: La demanda de memoria de video se reduce considerablemente después de la cuantificación de 4 bits.
- Inferencia de CPU: Requiere aproximadamente 32 GB de memoria.
- Soporte Multi-GPU: El modelo se puede distribuir en múltiples GPU.
Métodos de Implementación
1. Implementación de la Interfaz Web
# Versión Gradio
python web_demo_gradio.py
# Versión Streamlit
streamlit run web_demo_streamlit.py
2. Interacción de Línea de Comandos
python cli_demo.py
3. Implementación del Servicio API
cd openai_api_demo
python api_server.py
Proporciona una interfaz API compatible con OpenAI, que admite:
- Interfaz de diálogo estándar
- Interfaz de llamada de herramientas
- Respuesta de flujo
- Control de parámetros de temperatura y top_p
Ajuste Fino y Expansión
Soporte de Ajuste Fino
El proyecto proporciona un conjunto completo de ajuste fino, que admite:
- Ajuste fino de instrucciones
- Ajuste fino de diálogo
- Ajuste fino específico de la tarea
Ecosistema Comunitario
Admite múltiples proyectos de código abierto excelentes:
Aceleración de la Inferencia:
- chatglm.cpp: Esquema de aceleración de cuantificación similar a llama.cpp.
- ChatGLM3-TPU: Inferencia acelerada por TPU.
- TensorRT-LLM: Inferencia de alto rendimiento de GPU NVIDIA.
- OpenVINO: Inferencia acelerada de dispositivos Intel.
Frameworks de Ajuste Fino:
- LLaMA-Factory: Framework de ajuste fino eficiente.
Frameworks de Aplicación:
- LangChain-Chatchat: Proyecto de base de conocimiento RAG.
- BISHENG: Plataforma de desarrollo de aplicaciones de modelos grandes.
- RAGFlow: Motor RAG de comprensión profunda de documentos.
Funciones de Demostración Integrales
El proyecto proporciona una demostración integral que integra tres modos:
- Modo Chat: Interacción de diálogo estándar.
- Modo Tool: Demostración de llamada de herramientas.
- Modo Code Interpreter: Entorno de ejecución de código.
Licencia y Términos de Uso
- Investigación Académica: Uso completamente abierto.
- Uso Comercial: Se permite el uso comercial gratuito después de completar un cuestionario de registro.
- Restricciones de Uso: No debe utilizarse para fines que puedan poner en peligro al país y a la sociedad.
- Requisitos de Seguridad: Los servicios deben pasar por una evaluación de seguridad y un registro.
Características de la Arquitectura Técnica
Arquitectura del Modelo
- Versión mejorada basada en la arquitectura GLM.
- Mecanismo de atención optimizado.
- Mejor soporte multilingüe.
- Soporte nativo para la llamada de herramientas.
Optimización del Entrenamiento
- Datos de entrenamiento más diversos.
- Pasos de entrenamiento más completos.
- Estrategias de entrenamiento más razonables.
- Optimizado para chino.
Contribución de la Comunidad
El proyecto abraza activamente la comunidad de código abierto, coopera profundamente con múltiples proyectos excelentes y ha formado un ecosistema completo. Los desarrolladores pueden desarrollar varias aplicaciones innovadoras basadas en ChatGLM3.