【MindSpore易点通机器人-03】迭代0的准备工作

作者:王磊
更多精彩分享,欢迎访问和关注:https://www.zhihu.com/people/wldandan

在上一篇【MindSpore易点通机器人-02】设计与技术选型,我们介绍了MindSpore易点通机器人整体的设计,本篇将会向大家介绍进入迭代0所需要的准备工作。在03-迭代0:机器学习项目开始前要做哪些准备工作?中,提到了迭代0中需要准备的内容:

  1. 选择计算资源
  2. 搭建开发环境
  3. 建立版本控制
  4. 搭建机器学习流水线
  5. 安装Jupyter Notebook(包含在开发环境搭建中)

从MindSpore易点通机器人这个项目出发,按照实际的需求依次完成以上准备内容。

选择计算资源

在机器学习的流程中,开发者需要在本地进行网络的开发调试,在CI上完成集成和部署,在训练流水线上完成持续训练和模型验证,在生产环境完成部署推理。因此,在这些不同的环境中,可能需要不同类型的计算资源。

  1. 开发环境:开发者需要在开发环境运行MindSpore GPU版本来完成模型的开发和功能调试,因此在计算资源上通常需要Nvidia的GPU支持。
  2. CI/CD:运行MindSpore易点通机器人的集成和部署任务,普通的x86 CPU资源即可,在云上可以考虑容器集群,如华为云的CCI/CCE。
  3. 持续训练流水线(CT):MLOps流水线需要完成模型的训练、验证等任务,本地运行完整训练流水线选择消费级GPU,云侧使用ModelArts提供的昇腾或者GPU集群,并且需要多卡完成分布式训练以加速训练过程。
  4. 生产环境:需要昇腾310完成推理,可以部署在ModelArts或者CCE上。

训练和部署的具体资源数量可以根据实际的测试验证来选择规格。

搭建开发环境

开发环境准备涉及Python环境准备、MindSpore开发相关依赖安装、IDE安装配置等工作。其中Python的环境可以基于Miniconda完成,可以很方便的完成Python版本切换。对于MindSpore框架的开发,当前也有一系列自动化的脚本,帮助开发者快速完成安装配置工作。其它的依赖及IDE安装配置,都可以在MindSpore易点通机器人代码仓README找到。

开发所需的具体的组件及作用如下:

  1. MindSpore GPU版本:用于本地训练和调试模型。
  2. MindInsight:用于本地的精度调优。
  3. XAI:模型可解释性评估。
  4. MindArmour:可靠性和安全性工具。
  5. Serving:云侧部署工具。
  6. Lite:端侧(IDE)部署工具。
  7. jupyter Notebook:用于前期的技术探索。
  8. MindSpore Dev Toolkit:基于PyCharm IDE,增加智能编码,搜索等功能。

建立版本控制

版本控制包括三个部分,一个代码的版本控制,这部分通过gitee来完成,另外的包括数据和模型的版本控制,我们选择对象存储服务来承载,保证数据和模型的一对一的一致性,同时,对象存储服务也可以管理数据和模型的元数据信息(如版本等)。MindSpore易点通机器人项目使用了华为云的对象存储服务(OBS)作为训练数据和模型的版本管理工具。OBS是一个基于对象的存储服务,适合训练数据这种大规模但碎片化的类型的数据存储,同时不用担心扩容和数据可靠性问题。

OBS的使用很简单,通过华为云的Console选择OBS服务后,直接创建标准的OBS桶即可。训练流水线使用的Argo工具,可以在配置文件中直接对接OBS读写训练数据和模型。在OBS桶的概览中可以看到相关的连接信息,结合华为云用户的AK/SK完成读写操作。

搭建机器学习流水线

MindSpore易点通机器人的MLOps流水线包含两个部分,CI/CD流水线以及持续训练流水线,其中本地我们基于WSL+Ubuntu+Minikube搭建K8S集群,在K8S集群上构建CI/CD流水线(Jenkins)以及持续训练流水线(参考MindSpore DX Sig的 MLOps-Tool项目)。

整个MLOps流水线运作的流程如下:

  • 训练流水线
  1. OBS上上传原始数据,触发训练。
  2. 训练首先处理数据,将处理完的数据上传到OBS桶中。
  3. 而后开始模型的训练,使用刚处理完的数据作为输入,产出模型,同样归档OBS桶。
  4. 进行模型评估,并行完成精度、可解释性和可靠性评估。
  5. 给出总结,并触发CI/CD流水线。
  • CI/CD流水线:逐次执行如下任务
  1. 代码检查。
  2. 单元测试。
  3. 接口测试(部署到云上NLP服务的Rest接口)。
  4. 从OBS下载本次训练的模型,打包成Docker镜像。
  5. 完成生产环境部署。

在代码仓库的Workflow目录给出了当前初步的训练例子的编排配置,使用argo summbit mnist-train-eval.yaml提交例子训练任务,从Argo的UI中看到运行的结果。

持续训练流水线完成时,会触发持续集成和部署流水线,由代码仓的Jenkinsfile基于Pipeline as Code完成初始流水线的构建。

总结

迭代0主要看重端到端流程的打通,以保证后续功能的持续交付。迭代0的准备工作完成后,我们就可以开始下一步的训练数据准备工作了。

说明:严禁转载本文内容,否则视为侵权。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MindSpore中,Transformer模型是基于自注意力机制的深度学习模型,在NLP领域被广泛应用。MindSpore提供了相关的API和方法来构建和训练Transformer模型。 首先,在MindSpore中,可以使用`EmbeddingLookup`类来定义词嵌入层,该层负责将输入的单词转换为向量表示。这个类在`transformer_model.py`文件中进行定义。 接下来,为了进行网络的反向传播和训练,可以使用MindSpore的高级接口`MindSpore.Model`来定义网络反向和进行训练。在`transformer_model.py`文件中,可以看到网络的反向定义以及使用`MindSpore.Model`进行训练的示例代码。首先,通过`TransformerTrainOneStepCell`将网络和损失函数组合在一起,然后使用该组合后的网络进行训练。 最后,通过调用`model.train`方法,可以使用定义好的模型、数据集和优化器进行训练。需要指定训练的轮数、数据集、回调函数等参数来完成训练过程。 综上所述,在MindSpore中,可以使用相关的API和方法来构建和训练Transformer模型。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【MindSpore易点通】Transformer的注意力机制](https://blog.csdn.net/Kenji_Shinji/article/details/127958722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [基于MindSpore的Transformer网络实现](https://blog.csdn.net/Kenji_Shinji/article/details/127314332)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值