Home
Login

Modelo de lenguaje grande de diálogo bilingüe de código abierto publicado conjuntamente por Zhipu AI y el laboratorio KEG de la Universidad de Tsinghua, que admite funciones como la invocación de herramientas y la ejecución de código.

Apache-2.0Python 13.7kTHUDM Last Updated: 2025-01-13

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:

  1. Modo Chat: Interacción de diálogo estándar.
  2. Modo Tool: Demostración de llamada de herramientas.
  3. 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.