240708_昇思学习打卡-Day20-MindNLP ChatGLM-6B StreamChat
基于MindNLP和ChatGLM-6B实现一个聊天应用,本文进行简单记录。
环境配置
%%capture captured_output
# 实验环境已经预装了mindspore==2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号
!pip uninstall mindspore -y
!pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore==2.2.14
配置网络线路
!export HF_ENDPOINT=https://hf-mirror.com
代码开发
# 导入自动模型和自动分词器类,用于序列到序列的语言模型任务
from mindnlp.transformers import AutoModelForSeq2SeqLM, AutoTokenizer
# 导入Gradio库,用于构建交互式用户界面
import gradio as gr
# 导入mdtex2html模块,可能用于将markdown格式的文本转换为HTML
import mdtex2html
# 初始化一个预训练的序列到序列语言模型,这里使用的是ChatGLM-6B模型
# 从预先定义的URL加载模型,使用modelscope镜像加速下载
model = AutoModelForSeq2SeqLM.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope").half()
# 设置模型为评估模式,禁用dropout等训练时使用的策略
model.set_train(False)
# 初始化与模型配套的分词器,同样从预先定义的URL加载,使用modelscope镜像
tokenizer = AutoTokenizer.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope")
可以修改下列参数和prompt体验模型
# 初始化对话提示
prompt = '你好'
# 初始化对话历史记录
history = []
# 调用模型进行对话,使用tokenizer对输入进行处理
# max_length限制了生成的回复的最大长度
response, _ = model.chat(tokenizer, prompt, history=history, max_length=20)
# 输出模型生成的回复
response
打卡图片