Descrição Detalhada do Projeto ChatGLM3
Visão Geral do Projeto
ChatGLM3 é um modelo de pré-treinamento de diálogo lançado conjuntamente pela Zhipu AI e pelo Laboratório KEG da Universidade Tsinghua. ChatGLM3-6B é o modelo de código aberto da série ChatGLM3, que introduz vários novos recursos e melhorias, mantendo as muitas excelentes características das duas gerações anteriores de modelos, como diálogo fluente e baixo limiar de implantação.
Endereço do Projeto: https://github.com/THUDM/ChatGLM3
Principais Características
1. Modelo Base Mais Poderoso
O modelo base do ChatGLM3-6B, ChatGLM3-6B-Base, adota dados de treinamento mais diversificados, etapas de treinamento mais completas e estratégias de treinamento mais razoáveis. As avaliações em conjuntos de dados de diferentes perspectivas, como semântica, matemática, raciocínio, código e conhecimento, mostram que o ChatGLM3-6B-Base tem o desempenho mais forte entre os modelos base abaixo de 10B.
2. Suporte de Função Mais Completo
- Nova Versão do Formato Prompt: Adota um formato Prompt recém-projetado para suportar interações de diálogo mais flexíveis.
- Chamada de Ferramentas (Function Call): Suporta nativamente a função de chamada de ferramentas, permitindo que o modelo chame ativamente ferramentas externas.
- Execução de Código (Code Interpreter): Suporta a execução de código no ambiente Jupyter e a obtenção de resultados.
- Tarefas de Agente: Suporta cenários complexos de tarefas de agente inteligente.
3. Sequência de Código Aberto Mais Abrangente
Fornece várias versões para atender a diferentes necessidades:
- ChatGLM3-6B: Modelo de diálogo padrão, suporta comprimento de contexto de 8K.
- ChatGLM3-6B-Base: Modelo de pré-treinamento base.
- ChatGLM3-6B-32K: Modelo de diálogo de texto longo, suporta contexto de 32K.
- ChatGLM3-6B-128K: Modelo de compreensão de texto ultralongo, suporta contexto de 128K.
Desempenho
Avaliação de Capacidades Básicas
Resultados dos testes em 8 conjuntos de dados típicos em inglês e chinê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 |
Capacidade de Processamento de Texto Longo
O ChatGLM3-6B-32K foi avaliado manualmente em vários cenários de aplicação de texto longo. Em comparação com a segunda geração de modelos, o efeito médio foi aprimorado em mais de 50%. As melhorias são particularmente significativas em aplicações como leitura de artigos, resumo de documentos e análise de relatórios financeiros.
Instalação e Uso
Preparação do Ambiente
git clone https://github.com/THUDM/ChatGLM3
cd ChatGLM3
pip install -r requirements.txt
Exemplo Básico de Uso
from transformers import AutoTokenizer, AutoModel
# Carregar o 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()
# Interação de diálogo
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
Requisitos de Hardware
- Carregamento Padrão: Requer aproximadamente 13 GB de memória de vídeo (precisão FP16).
- Carregamento Quantizado: Os requisitos de memória de vídeo são bastante reduzidos após a quantização de 4 bits.
- Inferência de CPU: Requer aproximadamente 32 GB de memória.
- Suporte Multi-GPU: O modelo pode ser distribuído em várias GPUs.
Métodos de Implantação
1. Implantação da Interface Web
# Versão Gradio
python web_demo_gradio.py
# Versão Streamlit
streamlit run web_demo_streamlit.py
2. Interação de Linha de Comando
python cli_demo.py
3. Implantação do Serviço API
cd openai_api_demo
python api_server.py
Fornece uma interface API compatível com OpenAI, suportando:
- Interface de diálogo padrão
- Interface de chamada de ferramentas
- Resposta de streaming
- Controle de parâmetros de temperatura e top_p
Ajuste Fino e Expansão
Suporte de Ajuste Fino
O projeto fornece um conjunto completo de ajuste fino, suportando:
- Ajuste fino de instrução
- Ajuste fino de diálogo
- Ajuste fino específico da tarefa
Ecossistema da Comunidade
Suporta vários excelentes projetos de código aberto:
Aceleração de Inferência:
- chatglm.cpp: Solução de aceleração de quantização semelhante a llama.cpp.
- ChatGLM3-TPU: Inferência acelerada por TPU.
- TensorRT-LLM: Inferência de alto desempenho para GPU NVIDIA.
- OpenVINO: Inferência acelerada para dispositivos Intel.
Frameworks de Ajuste Fino:
- LLaMA-Factory: Framework de ajuste fino eficiente.
Frameworks de Aplicação:
- LangChain-Chatchat: Projeto de base de conhecimento RAG.
- BISHENG: Plataforma de desenvolvimento de aplicações de grandes modelos.
- RAGFlow: Motor RAG de compreensão profunda de documentos.
Funcionalidade Demo Abrangente
O projeto fornece uma demonstração abrangente que integra três modos:
- Modo Chat: Interação de diálogo padrão.
- Modo Tool: Demonstração de chamada de ferramentas.
- Modo Code Interpreter: Ambiente de execução de código.
Licença e Termos de Uso
- Pesquisa Acadêmica: Uso totalmente aberto.
- Uso Comercial: Permitido o uso comercial gratuito após preencher um questionário de registro.
- Restrições de Uso: Não deve ser usado para fins que possam prejudicar o país e a sociedade.
- Requisitos de Segurança: Os serviços precisam passar por avaliação de segurança e registro.
Características da Arquitetura Técnica
Arquitetura do Modelo
- Versão aprimorada baseada na arquitetura GLM.
- Mecanismo de atenção otimizado.
- Melhor suporte multilíngue.
- Suporte nativo para chamada de ferramentas.
Otimização de Treinamento
- Dados de treinamento mais diversificados.
- Etapas de treinamento mais completas.
- Estratégias de treinamento mais razoáveis.
- Otimizado para chinês.
Contribuição da Comunidade
O projeto abraça ativamente a comunidade de código aberto, cooperando profundamente com vários excelentes projetos, formando um ecossistema completo. Os desenvolvedores podem desenvolver várias aplicações inovadoras com base no ChatGLM3.