Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
zhangy03 143b652a1f | 2 years ago | |
---|---|---|
.. | ||
AISpangu | 2 years ago | |
Docs | 2 years ago | |
dataset | 2 years ago | |
.whl | 2 years ago | |
AISyncore-2.0.2-py3-none-any.whl | 2 years ago | |
README.md | 2 years ago | |
ma-pre-start.sh | 2 years ago | |
pangu_ais.ipynb | 2 years ago | |
runner.py | 2 years ago | |
tbe_helper.py | 2 years ago |
若研究人员有自有语料数据,但不愿将自有数据上传至AI靶场,可以通过协同计算的方式进行联合训练。研究人员在AI靶场和本地分别进行模型训练,通过协同计算框架,可完成跨多个智算中心的协同计算作业,得到基于超大规模高质量中文语料数据集以及自有数据协同训练的新模型,进而实现多中心数据价值利用最大化及协同计算应用赋能新范式。
您可以参考此案例,基于用户本地的环境,与鹏城AI靶场预训练新的大模型或基于盘古大模型进行协同训练微调,整体框架图如下:
我们参数服务器已部署在一台配置了外网的服务器上,其中提供的功能有:
(1)协同任务的启动、停止、状态的获取、任务列表的获取等
(2)grpc端口转发功能
提供的功能有:
(1)算力的支持:支持申请单卡、8卡 NPU 算力
(2)数据的使用流程:基于数据可用不可见的理念,我们提供用户查看采样数据、对1T/200G数据根据用户需求进行随机采样、生成mindrecord文件的流程
(3)训练代码、启动代码等
若用户准备启动协同训练的任务,只需要调用API获取协同任务的端口即可。(后面会有更详细的举例)
用户只需根据自己的需求对盘古数据进行采样等处理、修改启动协同任务训练的端口即可启动靶场方的协同任务。
(1)数据的准备
用户根据需求准备好数据,可参考盘古单个txt文件的示例如下:
冬虫夏草甲鱼是一道美食,主料为活甲鱼1只500克,虫草10克。
制作方法甲鱼洗净剁块,投入开水锅烫透,加料酒、葱姜、胡椒、盐,烫几分钟去腥,取出鱼块,装入小罐内。
再加清汤、葱姜、盐,上笼蒸熟即成。
“泰坦尼克”号是英国1912年建成的英籍大型高速豪华客船“泰坦尼克”号是英国1912年建成的英籍大型高速豪华客船,总吨位46328吨,航速22节。
1912年4月10日,载旅客1316人,船员885人,从英国南安普敦启程,开始处女航,驶往美国纽约,14日在北大西洋北纬40°46′、西经50°14′处与冰山相撞,15日2时20分沉没。
50年代的中国内困外交,在东北苏联敌视北方,欧美帝国主义封锁中国,国民党尝试返攻大陆,国际形势严重,但是中国的主要工业基地仍在东北地区,50年代的中国内困外交,在东北苏联敌视北方,欧美帝国主义封锁中国,国民党尝试返攻大陆,国际形势严重,但是中国的主要工业基地仍在东北地区,东北地区的被打击半径在三小时左右,所以毛主席决定要把搬到主要工厂迁至三线,所谓三线就是既不离海又不沿疆,所有工厂依靠山地建设,越隐蔽越好,三线是现代中国的第一次对西部开发,成就了西部的国防工业和研发基础,众所周知的长虹就是原来生产导弹的,西宁特钢就是以本钢为主迁进来的,目的是为西宁坦克生产线提供特殊钢。
(2)资源的准备
若是GPU资源,请参照[协同任务1启动]
若是NPU资源,请参照[协同任务2启动]
首先,您可以先打开靶场环境 https://datai.pcl.ac.cn/#/home ,进行注册登录
(1)基于靶场导入盘古样本数据
点击“数据”,将鼠标放置如下位置,显示如下:
#导入数据集 鹏程PanGu-200G中文语料数据-new
#测试数据集将下载到当前目录下的"./SAMPLE_DATA"文件夹下,如需改变目录名称请自行修改
import wfio
_INPUT = '{"type":25,"uri":"sample_data/110/"}'
wfio.load_files(_INPUT, dir_name='./SAMPLE_DATA')
(2) 对盘古数据进行采样
若需要盘古的数据进行采样,请使用dataset_sample.py,若不需要采样,使用全量数据,请忽略这一步:
其中 --file_path 指的是输入的数据集目录
--output_path 存放采样后的数据集目录
--sample_size 提取容量,按MB计算
--save_file_size 保存单文件size, 单位MB,一般默认0.3
!python ./dataset/dataset_sample.py --sample_size=60 --save_file_size=0.3 --data_path='./SAMPLE_DATA/data/' --output_path './SAMPLE_DATA/OUTPUT/'
举例:对盘古数据进行采样,显示如下:
(3) 将数据转化为mindrecord文件
请使用脚本txt_2_mindrecord.py:
其中 --data_path 指的是数据集根目录
--num_process 使用的进程数
--output_file 保存生成的mindrecord文件目录
--tokenizer 使用的词表
!python ./dataset/pre_process_bc.py --num_process=50 --data_path='./SAMPLE_DATA/OUTPUT/*.txt' --output_file='./output_file/md'
运行此脚本,显示如下:
(1)用户数据
可参考盘古的txt文件的格式准备txt文件
(2)将数据转化为mindrecord文件
请使用脚本txt_2_mindrecord.py:
其中 --data_path 指的是数据集根目录
--num_process 使用的进程数
--output_file 保存生成的mindrecord文件目录
--tokenizer 使用的词表
!python ./dataset/pre_process_bc.py --num_process=50 --data_path='./SAMPLE_DATA/OUTPUT/*.txt' --output_file='./output_file/md'
(以靶场方+用户GPU环境为例)
#调用API获取协同计算任务的端口
打开 AISynserver_client.py文件,修改 port = ais.start_server('333444')里面的字符串 #字符串用户指定标识
运行python AISynserver_client.py
可得到port端口
最后返回port端口,用于不同的协同计算任务的参数的传输
AISynergy-core安装
# 直接使用安装包安装
pip install AISyncore-2.0.2-py3-none-any.whl
推荐使用安装包进行安装,如下图所示:
基于靶场环境调试运行
[靶场环境详细介绍]
#调用靶场API,记录模型训练过程指标等:
from wf_analyse.analyse import wflogger
step = int(cb_params.cur_step_num) + int(self.has_trained_step)
if step % 50 == 0:
wflogger.log_metrics(metrics={"loss":float(loss_value),"scale":int(cb_params.net_outputs[2].asnumpy())}, step=step)
#启动命令
#先设置环境
!bash ./ma-pre-start.sh
#启动单机单卡协同训练任务
import os
from runner import start_distributed_train, wait_distributed_train
cmd = ['python', './pangu_alpha/train_AIsyn.py', '--distribute=false',
'--device_num=1',
'--ng_port=18701',
'--data_url=./output_file',
'--run_type=train',
'--mode=350M']
manager = start_distributed_train(cmd, output_notebook=True)
wait_distributed_train(manager)
#启动单机8卡协同训练任务
import os
from runner import start_distributed_train, wait_distributed_train
cmd = ['python', './AISpangu/train_AIsyn_NPU.py', '--distribute=true',
'--device_num=8',
'--ng_port=18333',
'--data_url=./output_file',
'--run_type=train',
'--mode=350M',
'--parallel_mode=semi_auto_parallel',
'--per_batch_size=4']
manager = start_distributed_train(cmd, output_notebook=True)
wait_distributed_train(manager)
参数说明
--data_url:调试环境下传入样本数据的路径
--distribute:是否启用多卡分布式
--ng_port:输入AISynserver SDK调用API返回的端口
--parallel_mode:并行模式
--per_batch_size:batchsize大小
运行此脚本,显示如下:
基于靶场环境全量运行
在调试页面完成代码编译并在样本数据上运行成功后,点击“全量运行”,该操作将当前代码发送到运行环境对相应的全量数据进行数据分析,得到基于全量数据的数据分析结果
注意:GPU环境的grpcio版本与靶场方环境的版本保持一致:pip install grpcio==1.39.0
(1)启动容器,推荐使用镜像 docker pull zhangy03/mindspore_gpu_zy:1.7.0
(2)安装包: pip install AISyncore-2.0-py3-none-any.whl
(3)启动任务
以两卡V100为例:
cd ./AISpangu
bash ./scripts/run_distribute_train_gpu.sh 2 ./scripts/hostfile_2gpus ../wiki/test0812/test11 2 350M 18603
其中 $1 使用的卡数
$2 hostfile文件
$3 数据集目录
$4 batch_size的大小
$5 模型参数量
$6 协同训练端口号(由第一步运行过程获取得到的端口号)
(靶场方+用户NPU环境为例)
这里以华为昇腾NPU,基于modelarts进行联合训练。(注意:modelarts需配置EIP,可以访问外网)
modelarts环境下,启动notebook,上传代码,运行
cd ./AISynergy-core
pip install AISyncore-2.0.2-py3-none-any.whl
提交训练作业,配置代码路径和数据路径
python train_AIsyn_NPU.py --distribute=true,
--device_num=8,
--data_url=/cache/MindRecord/,
--run_type=train,
--mode=350M,
--per_batch_size=4,
--ng_port=30021
各方算力:1NPU
各方数据:采样数据160M
训练轮数:50
本案例以PanGu-350M模型为例在靶场上进行训练。
靶场环境(mindspore 1.7版本) | modelarts(mindspore 1.7版本) | 案例参考 | |
---|---|---|---|
单机单卡协同训练 | 支持 | 支持 | 本案例 |
单机8卡协同训练 | 支持 | 支持 | 本案例 |
多机多卡协同训练 | 待环境支撑完成 | 支持 | 本案例 |
鹏城众智AI协同计算平台AISynergy是一个分布式智能协同计算平台。该平台的目标是通过智算网络基础设施使能数据、算力、模型、网络和服务,完成跨多个智算中心的协同计算作业,进而实现全新计算范式和业务场景,如大模型跨域协同计算、多中心模型聚合、多中心联邦学习等。
Java Vue Python JavaScript Text other
Dear OpenI User
Thank you for your continuous support to the Openl Qizhi Community AI Collaboration Platform. In order to protect your usage rights and ensure network security, we updated the Openl Qizhi Community AI Collaboration Platform Usage Agreement in January 2024. The updated agreement specifies that users are prohibited from using intranet penetration tools. After you click "Agree and continue", you can continue to use our services. Thank you for your cooperation and understanding.
For more agreement content, please refer to the《Openl Qizhi Community AI Collaboration Platform Usage Agreement》