前段时间在昇思训练营发现一个好东西,就是昇思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" :breakprint (f"input:{inputx} ")query = inputxinputs = 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没有太大的区别,完全可以竞争一下!