华为云之基于MindSpore搭建聊天机器人全流程【玩转华为云】
一、本次实践介绍
1.1 实践环境简介
实验平台:华为云开发者云实验平台
本实验依托华为云官方开发者实验平台,提供一键式创建实验环境的功能。开发者可根据实验手册指引,快速完成云服务的实践、调试与验证,真正实现“开箱即用”。
平台核心优势:
- ✅ 轻量高效:按需分配资源,环境秒级启动
- ✅ 操作便捷:全程可视化操作界面,降低学习门槛
- ✅ 真实场景:基于真实云环境构建,贴近实际开发与部署流程
图:华为云开发者实验平台主页
1.2 实验流程概览
本实验将引导你完成从环境配置到模型运行的完整流程,具体步骤如下:
步骤 | 操作内容 |
---|---|
1 | 实验环境准备与云资源登录 |
2 | 配置并升级 MindSpore 与 MindNLP 框架 |
3 | 基于 MindSpore 框架调用 API 搭建模型结构 |
4 | 加载 DeepSeek-R1-Distill-Qwen-1.5B 模型 |
5 | 实现聊天机器人交互功能 |
6 | 运行代码并验证模型输出 |
1.3 实践目标与基本要求
通过本次实验,你将达成以下目标:
🎯 掌握 MindSpore 框架的核心 API 使用方法
🎯 理解并实践基于 DeepSeek-R1-Distill-Qwen-1.5B 模型的聊天机器人开发全流程
🎯 熟练使用华为云资源完成 AI 模型的部署与运行
🎯 提升在昇腾(Ascend)环境下进行大模型开发与调试的实战能力
实验摘要
- 核心任务:基于 MindSpore 框架搭建一个可交互的聊天机器人
- 关键技术栈:MindSpore + MindNLP + DeepSeek-R1-Distill-Qwen-1.5B
- 主要步骤:环境配置 → 框架升级 → 模型加载 → 代码运行 → 对话测试
二、 相关服务介绍
2.1 华为云ECS云服务器介绍
华为云弹性云服务器
(ECS)是一种高效、安全的云上计算服务,支持用户按需自助获取资源,具备灵活的弹性伸缩能力。ECS 为各类应用提供稳定可靠的运行环境,有效保障业务的连续性与高可用性。凭借其卓越的性能与高度的灵活性,ECS 能够满足多样化的应用场景需求,无论是Web服务、开发测试,还是大数据处理,均可从容应对,为用户带来高效、便捷的云端使用体验。
2.2 MindSpore框架和MindNLP套件介绍
MindSpore框架介绍:
MindSpore是由华为开发的一款全场景AI计算框架,旨在为开发者提供高效、灵活且易于使用的深度学习开发体验。它支持端、边、云全场景部署,具备自动微分、自动并行和高阶函数优化等先进特性,能够显著提升模型训练和推理的效率。MindSpore采用基于源码的可微编程架构,实现了“一次编写,多场景运行”的目标,同时深度优化了在Ascend(昇腾)AI处理器上的性能表现,也兼容GPU、CPU等多种硬件平台,广泛应用于计算机视觉、自然语言处理、推荐系统等领域。
MindNLP套件介绍:
MindNLP是基于MindSpore框架构建的自然语言处理(NLP)专用工具套件,致力于为NLP研究和应用提供全面支持。它集成了丰富的预训练模型(如BERT、GPT、T5等)、文本处理工具、下游任务示例(如文本分类、机器翻译、问答系统等)以及高效的训练与推理流程。MindNLP不仅支持传统NLP任务,还积极探索大模型时代下的语言模型训练与应用,提供了对Transformer架构的深度优化,并支持与昇思MindSpore生态无缝集成,便于开发者快速构建、训练和部署高质量的自然语言处理应用。
三、创建Notebook服务
3.1 登录华为云
查看华为云实验账号信息:进入实验环境后,我们在左侧的实验手册中可以看到华为云实验账号。
进入【实验操作桌面】,打开Chrome浏览器,填写左侧的实验账号信息登录并进入华为云控制台页面。
登录完毕后,我们进入华为云控制台管理首页。
3.2 创建notebook
在服务列表中,我们选择AI开发平台ModelArts选项。
开发者空间——notebook,进入到notebook管理界面,点击“创建notebook”。
修改实例规格为24核192G,磁盘规格为50G,确认创建。
3.3 查看notebook服务状态
需要等待一段时间,等待其状态为正常运行后,再点击【打开】选项。
3.4 新建终端
在打开的notebook界面,我们点击“Terminal”,开始新建终端。
四、昇思MindSpore和MindNLP的升级
在终端执行以下命令:
pip install mindspore==2.5.0
pip install mindnlp==0.4.1
五、运行代码
在默认路径下新建’test_chat.py’文件,将以下代码复制到’test_chat.py’文件中
import mindspore
from mindnlp.transformers import AutoModelForCausalLM, AutoTokenizer
from mindnlp.transformers import TextIteratorStreamer
from threading import Thread
# Loading the tokenizer and model from Hugging Face's model hub.
model_name = 'MindSpore-Lab/DeepSeek-R1-Distill-Qwen-1.5B'
tokenizer = AutoTokenizer.from_pretrained(model_name, mirror="modelers", ms_dtype=mindspore.float32)
# 设置pad_token为eos_token
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(model_name, mirror="modelers", ms_dtype=mindspore.float32)
system_prompt = "你是一个智能聊天机器人,以最简单的方式回答用户问题"
def build_input_from_chat_history(chat_history, msg: str):
messages = [{'role': 'system', 'content': system_prompt}]
for info in chat_history:
role, content = info['role'], info['content']
messages.append({'role': role, 'content': content})
messages.append({'role': 'user', 'content': msg})
return messages
def inference(message, history):
messages = build_input_from_chat_history(history, message)
input_ids = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
return_tensors="ms",
tokenize=True
)
streamer = TextIteratorStreamer(tokenizer, timeout=300, skip_prompt=True, skip_special_tokens=True)
generate_kwargs = dict(
input_ids=input_ids,
streamer=streamer,
max_new_tokens=1024,
use_cache=True,
)
t = Thread(target=model.generate, kwargs=generate_kwargs)
t.start() # Starting the generation in a separate thread.
partial_message = ""
for new_token in streamer:
partial_message += new_token
print(new_token, end="", flush=True)
messages.append({'role': 'assistant', 'content': partial_message})
return messages[1:]
import os
import platform
os_name = platform.system()
clear_command = 'cls' if os_name == 'Windows' else 'clear'
welcome_prompt = '欢迎使用 DeepSeek-R1-Distill-Qwen-1.5B 模型,输入内容即可进行对话,clear 清空对话历史,stop 终止程序'
print(welcome_prompt)
history = []
while True:
query = input("\n用户:")
if query.strip() == "stop":
break
if query.strip() == "clear":
os.system(clear_command)
print(welcome_prompt)
continue
print("\nDeepSeek-R1-Distill-Qwen-1.5B:", end="")
history = inference(query, history)
print("")
在终端运行以下命令:
python test_chat.py
运行完毕后,我们在终端的提示中输入相关问题,模型会根据用户提问的问题进行回答,如下所示:
六、总结
通过本次实践,成功在华为云ECS上基于MindSpore和MindNLP搭建了聊天机器人,完成了环境配置、框架升级与代码运行的全流程操作。实践过程中,深入体验了华为云Notebook服务的便捷性以及MindSpore框架在自然语言处理任务中的强大能力。MindNLP套件提供了丰富的模型组件和工具,显著提升了开发效率。本次实验为后续开展更复杂的AI模型研发与部署奠定了良好基础。
- 点赞
- 收藏
- 关注作者
评论(0)