问答媒体

 找回密码
 立即注册
快捷导航
搜索
热搜: 活动 交友 discuz
查看: 86|回复: 1

使用MindStudio进行mbart模型训练

[复制链接]

1

主题

3

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-1-8 14:59:59 | 显示全部楼层 |阅读模式
目录
一. 下载并安装 MindStudio2MindStudio 简介2打开工程并同步 CANN 包2.配置 ssh5选择 CANN 包6二. 环境配置71. 部署72. 转换10三. 代码展示及所作修改11mbart 模型介绍11数据集介绍12mbart 代码展示12训练脚本修改14四. 命令行远程连接 GPU 服务器14命令行打开服务器14配置环境15transformers15其他依赖15五. 可视化远程连接 NPU 服务器16执行训练16六. 结果对比18七. 总结分享18
一.下载并安装 MindStudio


  • MindStudio 简介
    MindStudio 是一套基于 IntelliJ 框架的开发工具链平台,提供了算子开发、调试、调优以及第三方算子开发的功能,同时还提供了网络移植、优化和分析功能,可以为我们开发   昇腾相关项目提供极大的便利。
    MindStudio 的 安 装 过 程 可 以 参 考 官 方 指 导 手 册 , 链 接 为 : https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/progressivekno
    wledge/index.html
    所 配 套 的 CANN 包 下 载 地 址 : https://www.hiascend.com/software/cann
  • 打开工程并同步 CANN 包
在打开工程前,应首先确保项目代码已下载到本地并解压。项目代码仓为: https://gitee.com/yaohaozhe/transformer
第一次启动 MindStudio 提示是否导入配置,如下图,选择不导入配置,点击 OK。


可以安装所需要的插件,如图所示:




点击界面中的 Help 可以跳转到 MindStudio 社区,如图所示:
选择 Customize 选择,配置色彩主题为 IntelliJ Light,如下图。


选择“All settings”,如下图所示进行同步 CANN 包。



  • .配置ssh


点击 change CANN 后弹出的远程连接中,点击“田”配置 SSH
配置成功后如图所示:




同理,可配置与其他服务器的 ssh 连接。

  • 选择CANN


配置完 ssh 后,选择好 CANN 路径,如下图所示:
安装完成后自动重启 MindStudio。


选择刚下载并解压好的项目文件。打开后如图所示:


二.环境配置


  • 部署


点击 File->Project Structure,如下图。
点击 SDKs->加号->Add Python SDK,如下图。




点击 SSH Interpreter,配置 Python 环境信息,如下图。




配置 Deployment。
点击“+”,填写相应信息。





选择“Mappings”,点击“+”,添加映射路径信息。
点击 ok 后,自行选择 python 路径。
点击“Project”,选择刚配置好的远端 SDK。如图所示。




点击左侧“Modules”,在右侧选择“Dependencies”,在 Module SDK 下拉框中选择刚配置好的远端 SDK,点击“OK”,如图所示:





此外,点击菜单栏中的“Tools”,选择“Deployment”,选择“Automatic Upload”,修改代码保存后可自动上传到远端服务器。

  • 转换


原任务栏如图所示:
点击菜单栏中的“Ascend”,选择“Convert To Ascend Project”:




如图所示,在下拉框中做出如下选择,点击“ok”。





第一个下拉框有“Ascend Operator”、“Ascend Training”和“Ascend APP”三个选项,我们是训练任务,故选择“Ascend Training”。
当第一个下拉框确定为“Ascend Training”时,第二个下拉框可选框架为“Mindspore”、“Pytorch”和“Tensorflow”,这里我们选择“Pytorch”。





转换后,界面如图所示:
三.代码展示及所作修改

    • mbart 模型介绍
      最近的工作证明了多语言预训练的潜力,创建一个模型可以用于不同语言的各种任务。
      以前的多语言预训练工作表明,机器翻译系统可以通过在咬文嚼字上进行微调来创建。在这项工作中,作者表明,多语言翻译模型可以通过多语言微调。而不是在一个方向上进行微调,   一个预训练的模型同时在许多方向上进行微调。与从头开始训练的多语言模型相比,从预训练的模型开始与从头开始训练的多语言模型相比,从预训练的模型开始,包含了大量未标记的单语言数据的好处,这对资源少的语言特别重要。这对于没有咬文嚼字的低资源语言尤其重要。bitext 是不可用的。作者证明预训练的模型可以被扩展以纳入更多的语言而不损失性能。作者将 mBART 的语言数量增加了一倍,支持 50 种语言的多语言机器翻译模型。最后。作者创建了 ML50 基准,涵盖低、中、高资源语言。以通过标准化训练和评估数据促进可重复的研究。在 ML50 上,作者证明了多语言微调比最强基线平均提高了比最强基准线平均提高 1 BLEU(多语言微调比最强基线(从零开始的多语言或双语微调)平均提高了 1 个 BLEU,
      而比从零开始的双语基线平均提高了 9.3 个 BLEU。而比从头开始的双语基线平均提高 9.3 BLEU。
    • 数据集介绍
      SQuAD 是 Stanford Question Answering Dataset 的缩写。这是一个阅读理解数据集,由众包工作者在一组维基百科文章上提出的问题组成,其中每个问题的答案都是相应文章中的一段文   本,某些问题可能无法回答。
      SQuAD2.0 组合了 SQuAD1.1 中的 10 万个问题,并增加了超过 5 万个无法回答的问题, 这些问题由众包工作者以对抗(adversarially)的方式设计,看起来与可回答的问题相似。为了在 SQuAD2.0 数据集上表现出色。系统不仅必须在可能的情况下回答问题,还必须确定篇章数据何时不支持回答,并避免回答。
      EM(Exact Match ) 和 F1 值是用于 SQuAD 的主要指标。Exact Match 是一种常见的评价标准,它用来评价预测中匹配到正确答案(ground truth answers)的百分比。
    • mbart 代码展示
      Mbart 和其他 bart 类模型不一样的是,mbart 并没有单一的“decoder_start_token_id”,将输入的序号进行转换,并将最后一个非 pad 标记,也就是 LID 标记的输入包裹。




将位置序列映射到最大值的区间内




编码器的参数包括隐层、注意力掩码、尖端注意力掩码以及输出的注意力,如下图所示:




    • 训练脚本修改


本模型的训练脚本是 run_qa.py,因在 tokenizer 进行 tokenize 的过程中,会将输入的序号映射为 0,而在 input_ids 中并没有 0,所以会导致报错。这里使用了 input_ids 中的最小值来替换 0,就不会出现报错,并且符合逻辑,因为 qa 任务中的错误答案的下标开始点就是最小值。经验证,该改动并不影响精度。


四.命令行远程连接 GPU 服务器


  • 命令行打开服务器
    在菜单栏中选择“Tools”->“Start SSH session...”




请优先配置 GPU 服务器的 ssh 连接,然后选择配置好的 GPU 服务器的 SSH(normal728):
打开后的终端如图所示:




  • 配置环境


进入到 transformer 代码仓安装所需依赖:

  • transformers:




其他依赖:


执行训练命令,如图所示开始训练: 部分参数介绍:
----model_name_or_path 模型名
--dataset_name 数据集名称,数据集会自动下载
--do_train 执行训练
--do_eval 执行推理
--per_device_train_batch_size 每张卡的 batch_size
--learning_rate 学习率
--num_train_epochs 训练的总 epoch 数
--output_dir 权重文件输出路径开始训练后,查看日志:


五.可视化远程连接 NPU 服务器


  • 编写执行脚本


与 GPU 相比做出改动:增加了分布式训练。在 GPU 中默认使用 8 卡启动,而在 NPU 中默认使用单卡,故需要在命令中额外声明。

  • 执行训练


选择“Edit Configurations”
选择 Deployment,选择写好的脚本文件,点击 ok。




配置完成后,点击此处三角运行。
稍等片刻,同步完成后,开始运行,运行过程中会生成日志文件,可通过查看日志文件来查   看运行过程。


六.结果对比

GPU 结果:
注:GPU eval 过程报 Out of memory 错,经排查,并非验证时 batch size 过大,而是有个别较大的测试用例,故 gpu 只展示 train 过程结果。


性能:94.434FPSLoss:0.8663
NPU 结果:


性能:251.963 FPS Loss:0.86
精度: 80.7822


七.总结分享

本例详细讲解了使用 MindStudio 进行 mbart 模型迁移的流程。结论如下:
NPU 性能 251.963 FPS > GPU 性能 94.434FPS 性能达标。本例 GPU 无法复现精度,故无需对比精度,情况已做说明并通过审核。
在使用 MindStudio 进行模型离线推理开发的过程中,还是比较容易上手的,大家可以按照官方用户手册进行操作,另外还在通过开发者社区学习一些技术干货和经典案例,以下   是相关链接。
MindStudio 官 网 入 口 : https://www.hiascend.com/zh/software/mindstudio
MindStudio 用户手册入口:
https://www.hiascend.com/document/detail/zh/mindstudio/50RC3/progressiveknowledge/index.html
MindStudio 开发者社区入口:
https://bbs.huaweicloud.com/forum/forum-945-1.html

回复

使用道具 举报

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2025-5-18 12:08:46 | 显示全部楼层
众里寻他千百度,蓦然回首在这里!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver| 手机版| 小黑屋| 问答媒体

GMT+8, 2025-7-14 09:53 , Processed in 0.105011 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2020, LianLian.

快速回复 返回顶部 返回列表