昇思25天学习打卡营第17天|ChatGLM-6B聊天demo

一、简介:

本次实验,基于MindNLP和ChatGLM6B模型搭建一个小的聊天应用,ChatGLM6B 是基于 GLM-4 模型开发的开源对话机器人,拥有 62 亿个参数,能够进行自然流畅的语言交流。在对话中,ChatGLM6B 可以胜任文案写作、代码调试等任务,还能够根据用户需求进行角色扮演,满足用户在虚拟场景中的互动需求。同时,ChatGLM6B 也具备多模态理解能力,可以解析图片、视频等多种类型的信息,进一步拓展了其在实际应用中的场景。

二、环境准备:

首先还是需要下载MindSpore和MindNLP两个基础包。下载MindSpore可以参考昇思25天学习打卡营第1天|快速入门-CSDN博客,mindnlp直接使用pip命令下载即可,并进行网络配置:

# 配置网络环境以方便拉取huggingface的模型
export HF_ENDPOINT=https://hf-mirror.com

三、具体实践:

使用mindnlp库加载"ChatGLM-6B"的预训练序列到序列语言模型和相应的分词器,并使用半精度浮点数来减少内存使用。通过设置模型为评估模式,代码为使用gradio创建Web界面进行文本生成任务做好了准备,同mdtex2html时间库可用于处理和显示生成的文本

from mindnlp.transformers import AutoModelForSeq2SeqLM, AutoTokenizer
import gradio as gr
import mdtex2html

model = AutoModelForSeq2SeqLM.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope").half()
model.set_train(False)
tokenizer = AutoTokenizer.from_pretrained('ZhipuAI/ChatGLM-6B', mirror="modelscope")

下载完权重就可以和ChatGLM6B聊天了(doge):

prompt = '你好'
history = []
response, _ = model.chat(tokenizer, prompt, history=history, max_length=20)
print(response)

如果想和ChatGLM6B展开多轮对话,可以使用下面的代码:

prompt = '你好'
history = []

print("输入'exit'结束对话。")

while True:
    # 生成回应
    response, _ = model.chat(tokenizer, prompt, history=history, max_length=200)
    print(response)
    print("输入'exit'结束对话。")

    # 更新对话历史
    history.append((prompt, response))

    # 获取用户下一轮的输入
    prompt = input("用户: ")
    if prompt.lower() == "exit":
        print("结束对话")
        break

    # 清除历史中的"exit",以避免影响模型生成回应
    if prompt.lower() == "exit":
        history.pop()

 就是有点慢,大家最好用好一点的显卡(狗头)

  • 13
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值