进入大模型平台,只需要运行即可,可以改输入。
ChatGLM4:使用MindSpore进行聊天机器人开发
本文档提供了使用MindSpore和MindNLP部署和推理ChatGLM4聊天机器人模型的详细步骤,帮助用户搭建一个可以与ChatGLM4互动的对话系统。
前置条件
确保您具备以下环境和工具:
- Python 环境:建议使用Python 3.9或更高版本。
- MindSpore:本文代码基于MindSpore框架。
- MindNLP:MindSpore的自然语言处理工具包。
安装依赖
首先,安装所需的依赖包,如tiktoken
,用于高效的分词。运行以下命令:
!pip install tiktoken
安装完成后,终端将输出如下信息:
Looking in indexes: https://repo.huaweicloud.com/repository/pypi/simple/
Collecting tiktoken
Downloading https://repo.huaweicloud.com/repository/pypi/packages/f7/01/...
...
Successfully installed tiktoken-0.8.0
加载模型和分词器
为了使用ChatGLM4,我们需要加载分词器和模型。分词器用于处理输入文本,模型则根据输入生成相应的回答。
第一步:导入库
首先,导入必要的库和模块。
import mindspore
from mindnlp.core import no_grad
from mindnlp.transformers import AutoModelForCausalLM, AutoTokenizer
from mindspore._c_expression import _framework_profiler_step_start
from mindspore._c_expression import _framework_profiler_step_end
第二步:加载分词器
使用AutoTokenizer
加载ZhipuAI/glm-4-9b-chat
的分词器,以便将输入文本转化为模型可处理的格式。
# 加载分词器
tokenizer = AutoTokenizer.from_pretrained("ZhipuAI/glm-4-9b-chat", mirror='modelscope')
第三步:准备用户输入
定义想与ChatGLM4互动的文本查询。在此示例中,我们使用简单的问候语。
# 输入希望与ChatGLM4对话的内容
query = "你好"# 准备模型输入
inputs = tokenizer.apply_chat_template([{"role": "user", "content": query}],add_generation_prompt=True,tokenize=True,return_tensors="ms",return_dict=True
)
print(inputs) # 输出查看输入内容和格式是否正确
第四步:加载ChatGLM4模型
接下来,加载ChatGLM4模型。我们使用AutoModelForCausalLM
类加载模型并将其设为评估模式(.eval()
),以便进行推理。
# 加载模型
model = AutoModelForCausalLM.from_pretrained("ZhipuAI/glm-4-9b-chat",mirror='modelscope',ms_dtype=mindspore.float16,
).eval()
生成回答
分词器和模型加载完成后,就可以生成模型对用户问题的回答。
第五步:设置生成参数并进行推理
定义生成参数以控制模型输出,包括max_length
和top_k
等参数,影响生成回答的长度和多样性。
# 设置采样、最大生成长度等参数
gen_kwargs = {"max_length": 100, "do_sample": True, "top_k": 1}# 开始性能分析(可选)
# _framework_profiler_step_start()# 推理生成回答
with no_grad():outputs = model.generate(**inputs, **gen_kwargs)outputs = outputs[:, inputs['input_ids'].shape[1]:]print(tokenizer.decode(outputs[0], skip_special_tokens=True))# 结束性能分析(可选)
# _framework_profiler_step_end()
输出示例
运行以上代码后,模型会基于用户输入生成回答。以下为示例输出:
对于query = "你好"
的输入,可能会得到如下输出:
你好!有什么我可以帮助您的吗?
注意事项
- 警告信息:如果遇到关于
numpy
子正常值的警告信息,这些一般是无害的,与系统配置相关。 - 性能分析:
_framework_profiler_step_start()
和_framework_profiler_step_end()
用于性能分析,使用时请去掉注释。
总结
本文档详细介绍了如何使用MindSpore和MindNLP搭建ChatGLM4聊天机器人系统。通过本文的步骤,您可以实现与模型的互动,非常适用于聊天机器人系统、客服自动化以及虚拟助理等应用场景。
欢迎尝试不同的输入内容,并调整生成参数,以使模型的回答更符合您的需求。
我们得到的结果如下