Home
Login

Modelo de linguagem grande de diálogo bilíngue de código aberto lançado pela Zhipu AI em conjunto com o Laboratório KEG da Universidade Tsinghua, com suporte para chamadas de ferramentas, execução de código e outras funções.

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

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:

  1. Modo Chat: Interação de diálogo padrão.
  2. Modo Tool: Demonstração de chamada de ferramentas.
  3. 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.