华为云之基于MindSpore搭建聊天机器人全流程【玩转华为云】

举报
江湖有缘 发表于 2025/08/31 02:23:59 2025/08/31
【摘要】 华为云之基于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服务、开发测试,还是大数据处理,均可从容应对,为用户带来高效、便捷的云端使用体验。

image.png

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模型研发与部署奠定了良好基础。


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。