公司
发布日期 2024-06-05
分类
大语言模型
类型 开源
参数9B
上下文128K
体验网址点击使用

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。

部署使用

详细步骤

  1. 安装依赖
    • 确保安装了Python环境。
    • 安装transformers库和torch库。
  2. 下载模型
    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()
    
  3. 生成文本
    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))
    
  4. 使用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_sampletop_k

相关资源

  • ModelScope模型库GLM-4-9B Chat
  • GitHub仓库: 更多推理代码和依赖信息,请访问GLM-4的GitHub

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
搜索