首页 > 其他分享 >在启智AI平台实践ChatGLM4-9B聊天机器人@MindSpore

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

时间:2024-10-13 17:47:44浏览次数:7  
标签:GLM AI 模型 9B ChatGLM4 True 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没有太大的区别,完全可以竞争一下!

标签:GLM,AI,模型,9B,ChatGLM4,True,mindspore
From: https://blog.csdn.net/skywalk8163/article/details/142819531

相关文章

  • AIGC在游戏开发中的潜力:自动生成游戏内容
    AIGC在游戏开发中的潜力:自动生成游戏内容随着游戏行业的快速发展,自动化生成内容(AIGC,ArtificialIntelligenceGeneratedContent)在游戏开发中的潜力日益受到关注。通过AIGC,开发者可以借助人工智能来自动生成游戏中的角色、场景、任务等内容,从而大幅减少开发时间,提升游戏的丰富性......
  • 用第二客户端远程连接hive报错Failed to connect to node1:10000
    报错内容:24/10/1315:08:35[main]:WARNjdbc.HiveConnection:Failedtoconnecttonode1:10000Error:CouldnotopenclienttransportwithJDBCUri:jdbc:hive2://node1:10000:Failedtoopennewsession:java.lang.RuntimeException:org.apache.hadoop.ipc.Remo......
  • 2024年最新AI写作工具指南,你知道哪款最好用吗?
    每天对着电脑码字,是不是有时候感觉灵感被掏空了,只能盯着闪烁的光标发呆?也许你甚至怀疑自己是不是该转行了,别急,这可能只是因为——你的工具还不够给力!面对琳琅满目的AI写作工具,你是否也曾迷茫过?真的能够帮助你提高效率吗?一起来看看吧!这篇文章将为你推荐2024年最强大的几款......
  • AI 推理能力大“翻车”!苹果最新论文:LLM只是复杂的模式匹配,而不是真正的逻辑推理
    内容提要大语言模型真的可以推理吗?LLM都是“参数匹配大师”?苹果研究员质疑LLM推理能力,称其“不堪一击”!文章正文苹果的研究员MehrdadFarajtabar等人最近发表了一篇论文,对大型语言模型(LLM)的推理能力提出了尖锐的质疑,他认为,LLM的“推理”能力,其实只是复杂的模式匹......
  • OpenAI官方开源多智能体框架「Swarm」,并不是我想要的多智能体框架PI
    今天早上,OpenAI实施团队的@shyamal在Github上开源了Swarm这个OpenAI官方的多智能体框架。不得不说,OpenAI官方下场,获得的社区影响就是不一样,在微信群、朋友圈里已经出现大量的解析文章。这个多智能体框架确实已经把多智能体的关键,说的很透彻了,Swarm里面定义了两个核心「Agents......
  • Splatt3R: Zero-shot Gaussian Splatting from Uncalibrated Image Pairs 论文解读
    目录一、概述二、相关工作1、近期工作2、DUSt3R3、MASt3R三、Splatt3R1、MASt3R的Backbone 2、高斯预测头3、点云与3D高斯参数结合4、3D高斯渲染5、损失函数四、实验 1、对比实验2、消融实验一、概述    该论文首次提出了一种无需任何相机参数和深......
  • 最近雷军AI配音火出圈,一键免费生成!保姆级教程分享!
    这两天被雷军这个AI配音刷屏了,在某音,B站上大火!特别是一些游戏解说都用他的AI配音,随便发一个视频播放量是杠杠的!也算是一个热点了,这热点可以蹭一波。那这个AI配音到底是怎么做出来的呢?其实非常简单,互联网就是信息差,谁先掌握了第一手信息,谁就可以吃肉!几天就给大家讲下如何......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 最近雷军AI配音火出圈,一键免费生成!保姆级教程分享!
    这两天被雷军这个AI配音刷屏了,在某音,B站上大火!特别是一些游戏解说都用他的AI配音,随便发一个视频播放量是杠杠的!也算是一个热点了,这热点可以蹭一波。那这个AI配音到底是怎么做出来的呢?其实非常简单,互联网就是信息差,谁先掌握了第一手信息,谁就可以吃肉!几天就给大家讲下如何......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......