GLM-4-9B-Chat是智谱AI推出的最新一代预训练模型GLM-4系列中的开源版本。该模型在语义理解、数学推理、代码执行和知识获取等多个方面表现出卓越的性能。它不仅能够进行多轮对话,还具备网页浏览、代码执行、自定义工具调用和长文本推理等高级功能。模型支持包括日语、韩语、德语在内的26种语言,进一步增强了其多语言处理能力。
模型评测
GLM-4-9B Chat在多个经典任务上进行了评测,结果显示其在不同数据集上均有出色的表现。以下是一些关键评测结果:
- AlignBench-v2: 6.61
- MT-Bench: 8.35
- IFEval: 69.0
- MMLU: 72.4
- C-Eval: 75.6
- GSM8K: 79.6
- MATH: 50.6
- HumanEval: 71.8
- NCB: 32.2
此外,GLM-4-9B-Chat在长文本处理能力上也进行了测试,结果显示其在1M上下文长度下的表现优异。在多语言能力测试中,GLM-4-9B Chat在六个多语言数据集上的表现均优于Llama-3-8B-Instruct。
部署使用
详细步骤
- 安装依赖:
- 确保安装了Python环境。
- 安装
transformers
库和torch
库。
- 下载模型:
import torch from transformers import AutoModelForCausalLM, AutoTokenizer device = "cuda" tokenizer = AutoTokenizer.from_pretrained("THUDM/glm-4-9b-chat", trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( "THUDM/glm-4-9b-chat", torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, trust_remote_code=True ).to(device).eval()
- 生成文本:
query = "你好" inputs = tokenizer.apply_chat_template([{"role": "user", "content": query}], add_generation_prompt=True, tokenize=True, return_tensors="pt", return_dict=True ) inputs = inputs.to(device) gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 1} with torch.no_grad(): outputs = model.generate(**inputs, **gen_kwargs) outputs = outputs[:, inputs['input_ids'].shape[1]:] print(tokenizer.decode(outputs[0], skip_special_tokens=True))
- 使用vLLM后端:
from transformers import AutoTokenizer from vllm import LLM, SamplingParams max_model_len, tp_size = 131072, 1 model_name = "THUDM/glm-4-9b-chat" prompt = [{"role": "user", "content": "你好"}] tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) llm = LLM( model=model_name, tensor_parallel_size=tp_size, max_model_len=max_model_len, trust_remote_code=True, enforce_eager=True ) stop_token_ids = [151329, 151336, 151338] sampling_params = SamplingParams(temperature=0.95, max_tokens=1024, stop_token_ids=stop_token_ids) inputs = tokenizer.apply_chat_template(prompt, tokenize=False, add_generation_prompt=True) outputs = llm.generate(prompts=inputs, sampling_params=sampling_params) print(outputs[0].outputs[0].text)
常见问题
Q: 如何处理模型的内存占用问题?
A: 可以通过减少max_model_len
参数值或增加tp_size
参数值来降低内存占用。
Q: 如何优化模型的生成文本质量?
A: 可以通过调整temperature
参数和max_tokens
参数来优化生成文本的多样性和长度。
Q: 如何处理模型的输出不符合预期的情况?
A: 检查输入提示是否准确,或者尝试调整生成参数如do_sample
和top_k
。
相关资源
- ModelScope模型库: GLM-4-9B Chat
- GitHub仓库: 更多推理代码和依赖信息,请访问GLM-4的GitHub