在启智AI平台实践ChatGLM4-9B聊天机器人@MindSpore

前段时间在昇思训练营发现一个好东西,就是昇思AI实验室:昇思大模型平台

在官方提供的jupyter AI编程实践样例中,发现了这个项目:ChatGLM4-9B实践样例

GLM-4-9B是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中, GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出超越 Llama-3-8B 的卓越性能。除了能进行多轮对话,GLM-4-9B-Chat 还具备网页浏览、代码执行、自定义工具调用(Function Call)和长文本推理(支持最大 128K 上下文)等高级功能。本代模型增加了多语言支持,支持包括日语,韩语,德语在内的 26 种语言。我们还推出了支持 1M 上下文长度(约 200 万中文字符)的 GLM-4-9B-Chat-1M 模型和基于 GLM-4-9B 的多模态模型 GLM-4V-9B。GLM-4V-9B 具备 1120 * 1120 高分辨率下的中英双语多轮对话能力,在中英文综合能力、感知推理、文字识别、图表理解等多方面多模态评测中,GLM-4V-9B 表现出超越 GPT-4-turbo-2024-04-09、Gemini 1.0 Pro、Qwen-VL-Max 和 Claude 3 Opus 的卓越性能。

总之一句话,GLM4-9B太棒了! 于是将这个样例搬到了启智AI平台,这样使用起来更加方便。

环境设置

创建AI调试环境

首先是在启智平台创建MindSpore AI调试环境,具体略

注意:需要选择MindSpore2.3的Ascend平台

启动AI调试环境

启动调试环境,创建Notebook文件,写入交互代码,

设置清华源:

!pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装MindSpore2.3,如果已经安装,就不需要这步了

%%capture captured_output
# 实验环境已经预装了mindspore==2.3.0,如需更换mindspore版本,可更改下面 MINDSPORE_VERSION 变量
!pip uninstall mindspore -y
%env MINDSPORE_VERSION=2.3.0
!pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/${MINDSPORE_VERSION}/MindSpore/unified/aarch64/mindspore-${MINDSPORE_VERSION}-cp39-cp39-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.mirrors.ustc.edu.cn/simple

安装MindNLP包,选择0.4.0版本

#安装mindnlp的daily包,待正式发布后可改为直接安装mindnlp包
!pip install https://mindspore-courses.obs.cn-north-4.myhuaweicloud.com/mindnlp/mindnlp-0.4.0-py3-none-any.whl -i https://pypi.tuna.tsinghua.edu.cn/simple
# !pip install mindnlp==0.4.0
!pip install jieba -i https://pypi.tuna.tsinghua.edu.cn/simple
!pip install tiktoken -i https://pypi.tuna.tsinghua.edu.cn/simple
%env HF_ENDPOINT=https://hf-mirror.com

安装libsndfile和pillow新版本

!yum install libsndfile -y
!pip install pillow -U --user

注意,启智平台包管理软件是yum,所以这里用yum来安装libsndfile。如果是Ubuntu,则使用apt来安装。

ChatGLM4-9B代码实践

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
# 加载tokenizer文件
tokenizer = AutoTokenizer.from_pretrained("ZhipuAI/glm-4-9b-chat", mirror='modelscope')

# 在此输入希望和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)
# 加载模型
model = AutoModelForCausalLM.from_pretrained(
    "ZhipuAI/glm-4-9b-chat",
    mirror='modelscope',
    ms_dtype=mindspore.float16,
).eval()

# 设置采样、最大生成长度等配置,开始推理
# _framework_profiler_step_start()
gen_kwargs = {"max_length": 100, "do_sample": True, "top_k": 1}
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()

到了这里ChatGLM4-9B模型就启动成功了!因为query = "你好" ,也就是我们对chatglm大模型说了“你好”两个字,大模型会回应我们一些介绍语。

为了更好的应用,尝试写成可以多步执行的交互chat ,这样就能不停的跟大模型说话了:

# 设置采样、最大生成长度等配置,开始推理
# _framework_profiler_step_start()
gen_kwargs = {"max_length": 300, "do_sample": True, "top_k": 1}
while 1 :
    inputx = input("please question:")
    if inputx == 'q' or inputx == "0" :
        break
    print (f"input:{inputx} ")
    query = inputx

    inputs = tokenizer.apply_chat_template([{"role": "user", "content": query}],
                                           add_generation_prompt=True,
                                           tokenize=True,
                                           return_tensors="ms",
                                           return_dict=True
                                           )

    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))

让我们来试试它

please question: 最好的大模型在哪里? 

关于“最好的大模型”这个问题,答案取决于评价标准和具体应用场景。以下是一些在各自领域内广受认可的大模型:

1. **GPT-3**:由OpenAI开发的自然语言处理模型,具有非常强大的文本生成能力。
2. **BERT**:由Google开发,是自然语言处理领域的另一个重要模型,尤其在问答和文本分类任务中表现优异。
3. **LaMDA**:Google开发的对话模型,能够进行自然、流畅的对话。
4. **GLM-4**:由清华大学和智谱AI开发的通用语言模型,支持中英双语。
5. **ChatGLM**:基于GLM-4开发的对话模型,具有较好的中文问答能力。

这些模型在不同的领域和应用场景中都有出色的表现,具体选择哪个模型取决于您的具体需求。例如,如果您需要处理中文文本,可以考虑使用GLM-4或ChatGLM;如果您需要处理英文文本,可以考虑使用GPT-3或BERT。

再来一个:

please question: 如果把大象放进冰箱,需要几步? 

这是一个经典的儿童谜语,通常答案是三步:

1. 打开冰箱门。
2. 把大象放进去。
3. 关上冰箱门。

这个回答太牛了!个人认为这个智商算合格了!

总体感觉,ChatGLM4跟ChatGPT3和文心一言3没有太大的区别,完全可以竞争一下!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值