MindSpore Transformers套件教程

MindSpore Transformers套件教程

项目地址:https://gitee.com/mindspore/mindformers

一、介绍

MindSpore Transformers套件的目标是构建一个大模型训练、微调、评估、推理、部署的全流程开发套件,提供业内主流的Transformer类预训练模型和SOTA下游任务应用,涵盖丰富的并行特性。期望帮助用户轻松实现大模型训练和创新研发。

MindSpore Transformers套件基于MindSpore内置的并行技术和组件化设计,具备如下特点:

  • 一行代码实现从单卡到大规模集群训练的无缝切换;
  • 提供灵活易用的个性化并行配置;
  • 能够自动进行拓扑感知,高效地融合数据并行和模型并行策略;
  • 一键启动任意任务的单卡/多卡训练、微调、评估、推理流程;
  • 支持用户进行组件化配置任意模块,如优化器、学习策略、网络组装等;
  • 提供Trainer、pipeline、AutoClass等高阶易用性接口;
  • 提供预置SOTA权重自动下载及加载功能;
  • 支持人工智能计算中心无缝迁移部署。

如果您对MindSpore Transformers有任何建议,请通过issue与我们联系,我们将及时处理。

二、MindFormers安装
Linux源码编译方式安装

支持源码编译安装,用户可以执行下述命令进行包的安装:

git clone -b r1.1.0 https://gitee.com/mindspore/mindformers.git
cd mindformers
bash build.sh
三、版本匹配关系

当前支持的硬件为Atlas 800T A2训练服务器。当前套件建议使用的Python版本为3.9。

MindFormersMindPetMindSporeCANN驱动固件镜像链接备注
r1.1.01.0.42.3.0rc28.0.RC1.beta1aarch64 x86_64driver image版本分支

当前MindFormers仅支持如上的软件配套关系。其中CANN和固件驱动的安装需与使用的机器匹配,请注意识别机器型号,选择对应架构的版本。

四、快速使用

MindFormers套件对外提供两种使用和开发形式,为开发者提供灵活且简洁的使用方式和高阶开发接口。

方式一:使用msrun方式启动(仅适用于配套MindSpore2.3以上版本)

用户可以直接clone整个仓库,按照以下步骤运行套件中已支持的任意configs模型任务配置文件,方便用户快速进行使用和开发:

目前msrun方式启动不支持指定device_id启动,msrun命令会按当前节点所有显卡顺序设置rank_id。

单机多卡
# 单机多卡快速启动方式,默认8卡启动
bash scripts/msrun_launcher.sh "run_mindformer.py --config {CONFIG_PATH} --run_mode {train/finetune/eval/predict}"# 单机多卡快速启动方式,仅设置使用卡数即可
bash scripts/msrun_launcher.sh "run_mindformer.py --config {CONFIG_PATH} --run_mode {train/finetune/eval/predict}" WORKER_NUM# 单机多卡自定义启动方式
bash scripts/msrun_launcher.sh "run_mindformer.py --config {CONFIG_PATH} --run_mode {train/finetune/eval/predict}" WORKER_NUM MASTER_PORT LOG_DIR JOIN CLUSTER_TIME_OUT
多机多卡
# 多机多卡自定义启动方式
bash scripts/msrun_launcher.sh "run_mindformer.py --config {CONFIG_PATH} --run_mode {train/finetune/eval/predict}" WORKER_NUM LOCAL_WORKER MASTER_ADDR MASTER_PORT NODE_RANK LOG_DIR JOIN CLUSTER_TIME_OUT# 使用示例:
# 节点0,节点ip为192.168.1.1,作为主节点,总共8卡且每个节点4卡
bash scripts/msrun_launcher.sh "run_mindformer.py --config {CONFIG_PATH} --run_mode {train/finetune/eval/predict}" 8 4 192.168.1.1 8118 0 output/msrun_log False 300# 节点1,节点ip为192.168.1.2,节点0与节点1启动命令仅参数NODE_RANK不同
bash scripts/msrun_launcher.sh "run_mindformer.py --config {CONFIG_PATH} --run_mode {train/finetune/eval/predict}" 8 4 192.168.1.1 8118 1 output/msrun_log False 300
单卡启动
# 训练启动,run_mode支持train、finetune、eval、predict四个关键字,以分别完成模型训练、评估、推理功能,默认使用配置文件中的run_mode
python run_mindformer.py --config {CONFIG_PATH} --run_mode {train/finetune/eval/predict}
方式二:调用API启动

详细高阶API使用教程请参考:MindFormers大模型使用教程

准备工作
  1. 安装mindformers
    具体安装请参考第二章。

  2. 准备数据
    准备相应任务的数据集,请参考docs目录下各模型的README.md文档准备相应数据集。

Trainer 快速入门

用户可以通过以上方式安装mindformers库,然后利用Trainer高阶接口执行模型任务的训练、微调、评估、推理功能。

# 以gpt2模型为例
import mindspore; mindspore.set_context(mode=0, device_id=0)
from mindformers import Trainer# 初始化预训练任务
trainer = Trainer(task='text_generation',model='gpt2',train_dataset='path/to/train_dataset',eval_dataset='path/to/eval_dataset')
# 开启预训练
trainer.train()# 开启全量微调
trainer.finetune()# 开启评测
trainer.evaluate()# 开启推理
predict_result = trainer.predict(input_data="An increasing sequence: one,", do_sample=False, max_length=20)
print(predict_result)
# output result is: [{'text_generation_text': ['An increasing sequence: one, two, three, four, five, six, seven, eight,']}]# Lora微调
trainer = Trainer(task="text_generation", model="gpt2", pet_method="lora",train_dataset="path/to/train_dataset")
trainer.finetune(finetune_checkpoint="gpt2")
pipeline 快速入门

MindFormers套件为用户提供了已集成模型的pipeline推理接口,方便用户体验大模型推理服务。

# 以gpt2 small为例
import mindspore; mindspore.set_context(mode=0, device_id=0)
from mindformers.pipeline import pipelinepipeline_task = pipeline(task="text_generation", model="gpt2")
pipeline_result = pipeline_task("An increasing sequence: one,", do_sample=False, max_length=20)
print(pipeline_result)
# [{'text_generation_text': ['An increasing sequence: one, two, three, four, five, six, seven, eight,']}]
AutoClass 快速入门

MindFormers套件为用户提供了高阶AutoClass类,包含AutoConfig、AutoModel、AutoProcessor、AutoTokenizer四类,方便开发者进行调用。

# AutoConfig获取已支持的任意模型配置
from mindformers import AutoConfig# 获取gpt2的模型配置
gpt2_config = AutoConfig.from_pretrained('gpt2')
# 获取vit_base_p16的模型配置
vit_base_p16_config = AutoConfig.from_pretrained('vit_base_p16')# AutoModel获取已支持的网络模型
from mindformers import AutoModel# 利用from_pretrained功能实现模型的实例化(默认加载对应权重)
gpt2 = AutoModel.from_pretrained('gpt2')
# 利用from_config功能实现模型的实例化(默认加载对应权重)
gpt2_config = AutoConfig.from_pretrained('gpt2')
gpt2 = AutoModel.from_config(gpt2_config)
# 利用save_pretrained功能保存模型对应配置
gpt2.save_pretrained('./gpt2', save_name='gpt2')# AutoProcessor获取已支持的预处理方法
from mindformers import AutoProcessor# 通过模型名关键字获取对应模型预处理过程(实例化gpt2的预处理过程,通常用于Trainer/pipeline推理入参)
gpt2_processor_a = AutoProcessor.from_pretrained('gpt2')
# 通过yaml文件获取相应的预处理过程
gpt2_processor_b = AutoProcessor.from_pretrained('configs/gpt2/run_gpt2.yaml')# AutoTokenizer获取已支持的tokenizer方法
from mindformers import AutoTokenizer
# 通过模型名关键字获取对应模型预处理过程(实例化gpt2的tokenizer,通常用于Trainer/pipeline推理入参)
gpt2_tokenizer = AutoTokenizer.from_pretrained('gpt2')

希望通过这个教程,您能轻松上手MindSpore Transformers套件,快速实现大模型的训练和应用。如果有任何疑问或建议,请随时与我们联系。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++实时检测耳机的插入与拔出(附源码)

目录 1、实现继承于IMMNotificationClient接口类的CMMNotificationClient类,实时感知音频设备变化的通知事件 2、在CMMNotificationClient的构造函数中初始化多媒体设备COM接口,设置回调类指针 3、通过获取音频设备接口下外设的KSJACK_DESCRIPTION 信息判断耳机的连接状态…

猫头虎分享已解决Bug || 前端领域技术问题解析

原创作者: 猫头虎 作者微信号: Libin9iOak 作者公众号: 猫头虎技术团队 更新日期: 2024年6月6日 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: &…

从老花眼开始

三年前,博主的的火眼金睛开始老花了,表现就是看近处看不清了。人眼对可视距离的标准可以定义为:看手机为近距离,看电脑为中距离,看电视为中距离,看红绿灯为远距离。老花眼就是戴近视眼镜直接看手机看不清了…

聆思CSK6大模型+AI交互多模态开源SDK介绍

视觉语音大模型 AI 开发套件( CSK6-MIX )是围绕 CSK6011A 芯片设计的具备丰富语音图像功能与硬件外设的开发板,采用具备丰富组件生态的 Zephyr RTOS作为操作系统,官方提供了十几种开源SDK,包含大模型语音交互、大模型拍照识图、文生图、人脸识…

2024年危化品生产经营单位考试试题。

16.在生产经营单位的安全生产工作中,最基本的安全管理制度是( )。 A.安全生产目标管理制 B.安全生产奖励制度 C.安全生产责任制 答案:C 17.在劳动过程、生产过程和生产环境中存在的危害劳动者健康的因素,称为( )。 A.职业病…

如何在不同的操作系统中查看路由器的IP地址?这里有详细步骤

如果你曾经需要访问路由器的设置页面来进行一些配置更改,你知道你需要路由器的IP地址才能访问。如果你忘记了这个IP地址是什么,下面是如何在几乎所有平台上找到它的。 为什么路由器的IP很有用 在网络世界中,默认网关是一个IP地址,当流量被发送到当前网络之外的目的地时,…

国能数智集团侧交付中心经理曲明志受邀为第十三届中国PMO大会演讲嘉宾

全国PMO专业人士年度盛会 国能数智科技开发(北京)有限公司智能电力业务部总监、集团侧交付中心经理、公司项目经理协会会长曲明志先生受邀为PMO评论主办的2024第十三届中国PMO大会演讲嘉宾,演讲议题为“运营类项目建设经验分享”。大会将于6月…

工业边缘计算网关在机械制造企业中的应用-天拓四方

随着信息技术的不断发展,工业领域对数据处理和分析的需求日益增长。工业边缘计算网关作为一种新型技术,正逐渐成为工业数字化转型的关键驱动力。本文将通过一个具体案例阐述工业边缘计算网关在工业中的应用,以及其为工业生产带来的显著效益。…

Anvil Empires/铁砧帝国操作没反应、频繁掉线怎么办?

Anvil Empires是一款多人在线游戏,且规模非常大!玩家需要在持续的在线世界中与成千上万的玩家一起发动战争。目前自定义服务器技术可以使多达 1000 名玩家能够在大规模的实时战斗,且战斗是由玩家在开放世界沙盒中有机地煽动的,所以…

图论之岛屿系列

图论之岛屿系列 形成模板进行学习&#xff0c;加快学习效率 深度优先遍历 # 可以直接改原始grid的采用直接改的方案来完成修改&#xff0c;减少了内存开支 def dfs(self, grid, i, j):if i < 0 or j < 0 or i > len(grid) or j > len(grid[0]) or grid[i][j] &…

AWD攻防比赛流程手册

AWD简单介绍&#xff1a; AWD&#xff1a;Attack With Defence&#xff0c;即攻防对抗&#xff0c;比赛中每个队伍维护多台服务器&#xff08;一般两三台&#xff0c;视小组参赛人数而定&#xff09;&#xff0c;服务器中存在多个漏洞&#xff08;web层、系统层、中间件层等&am…

传统车牌识别

主要参考&#xff1a;https://blog.csdn.net/qq_40784418/article/details/105586644 其它介绍&#xff1a; https://blog.csdn.net/great_yzl/article/details/120127962 https://blog.csdn.net/onepunch_k/article/details/115480904 cv2.matchTemplate https://docs.ope…

php实现modbus CRC校验

一&#xff1a;计算CRC校验函数 function calculateCRC16Modbus($string) {$crcBytes [];for ($i 0; $i < strlen($string); $i 2) {$crcBytes[] hexdec(substr($string, $i, 2));}$crc 0xFFFF;$polynomial 0xA001; // This is the polynomial x^16 x^15 x^2 1fo…

05-5.5.1 哈夫曼树

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

机器学习算法 —— K近邻(KNN回归)

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 实战KNN分类KNN回归模拟数据集 —— KNN回归库函数导入数据导入&分析模型训练&预测可视化模型分析总结实战 KNN分类 接上文:机器学习算法 —— K近邻(KNN分类) KNN回归 模拟数…

有个网友问Webview2如何另存为mhtml

有个网友问Webview2如何另存为mhtml 。俺查了一下&#xff0c;Webview2没有直接的saveas函数。然后我查到 之后我就使用 webview2 capture 这2个关键字去查询&#xff0c;果然搜到了 一段代码 然后我把这段代码 改成成C#的&#xff0c; string data await webView21.CoreWebV…

学会这几点,轻松制作引人入胜的电子期刊

随着数字化时代的到来&#xff0c;电子期刊已经成为了信息传播的重要载体。它以方便快捷、形式多样、互动性强等特点&#xff0c;受到了广泛的欢迎。那么&#xff0c;如何制作一份引人入胜的电子期刊呢&#xff1f;下面就来为大家分享几点制作电子期刊的小技巧。 1.选择合适的制…

你为什么学习c++?

C 是几乎所有现代面向对象语言的鼻祖&#xff08;注意是现代面向对象语言&#xff0c;还有一个“古代”面向对象&#xff0c;思想是消息传递而不是封装、继承与多态&#xff0c;Objective-C 就是消息传递的面向对象语言&#xff09;。刚好我有一些资料&#xff0c;是我根据网友…

vue2动态横条图(横条图样式定时切换)

每次切换成新图后会清除定时器和图&#xff08;重新加载&#xff0c;否则要么会重复加载定时器。清除定时器之后要先调用一次index为0的数据&#xff09; 数据样例 acrossBarDatas:{data: ["80", "80"],sunffix: [单位, "单位"],title: "标…

提取人脸——OpenCV

提取人脸 导入所需的库创建窗口显示原始图片显示检测到的人脸创建全局变量定义字体对象定义一个函数select_image定义了extract_faces函数设置按钮运行GUI主循环运行显示 导入所需的库 tkinter&#xff1a;用于创建图形用户界面。 filedialog&#xff1a;用于打开文件对话框。 …