from openi import openi_multidataset_to_env as DatasetToEnv
from openi import pretrain_to_env
from openi import env_to_openi
if __name__ == "__main__":
data_dir = '/cache/data'
train_dir = '/cache/output'
pretrain_dir = '/cache/pretrain'
if not os.path.exists(data_dir):
os.makedirs(data_dir)
if not os.path.exists(train_dir):
os.makedirs(train_dir)
if not os.path.exists(pretrain_dir):
os.makedirs(pretrain_dir)
###拷贝云上的数据集到训练镜像
DatasetToEnv(args.multi_data_url, data_dir)
###拷贝云上的预训练模型文件到训练环境
pretrain_to_env(args.pretrain_url, pretrain_dir)
###上传训练结果到启智平台
env_to_openi(train_dir,args.train_url)
from openi import c2net_multidataset_to_env as DatasetToEnv
from openi import pretrain_to_env
from openi import env_to_openi
if __name__ == "__main__":
data_dir = '/cache/data'
train_dir = '/cache/output'
pretrain_dir = '/cache/pretrain'
if not os.path.exists(data_dir):
os.makedirs(data_dir)
if not os.path.exists(train_dir):
os.makedirs(train_dir)
if not os.path.exists(pretrain_dir):
os.makedirs(pretrain_dir)
###拷贝云上的数据集到训练镜像
DatasetToEnv(args.multi_data_url, data_dir)
###拷贝云上的预训练模型文件到训练环境
pretrain_to_env(args.pretrain_url, pretrain_dir)
###上传训练结果到启智平台
env_to_openi(train_dir,args.model_url)
import moxing as mox
mox.file.copy("s3:///urchincache/attachment/e/0/e027fb4c-2706-4212-8e6f-a875c489c1da/MNISTData.zip", "/home/ma-user/work/MNISTData.zip")
if local_rank%8==0:
DatasetToEnv(args.multi_data_url,data_dir)
#Set a cache file to determine whether the data has been copied to obs.
#If this file exists during multi-card training, there is no need to copy the dataset multiple times.
f = open("/cache/download_input.txt", 'w')
f.close()
try:
if os.path.exists("/cache/download_input.txt"):
print("download_input succeed")
except Exception as e:
print("download_input failed")
while not os.path.exists("/cache/download_input.txt"):
time.sleep(1)
此仓库不再维护
如何在启智平台上进行模型训练 - NPU版本
请将示例代码中openi.py拷贝到自己仓库
1.启智集群和智算集群的NPU训练样例
启智集群的示例代码:
智算集群的示例代码:
2. 启智集群NPU训练任务的超参数及使用方法
请将示例代码中openi.py拷贝到自己仓库
关于超参数:
在代码中定义:
在代码中使用:
在代码中数据集的使用方式:data_dir + 数据集名称
在代码中预训练模型文件的使用方式:pretrain_dir + 模型文件名称
在代码中回传结果:
3. 智算集群NPU训练任务的超参数及使用方法
关于超参数:
在代码中定义:
在代码中使用:
在代码中数据集的使用方式:data_dir + 数据集名称
在代码中预训练模型文件的使用方式:pretrain_dir + 模型文件名称
在代码中回传结果:
4.创建NPU训练示例任务界面教程
5.FAQ
5.1 关于启智平台公共库函数openi.py:
基于启智集群和智算集群训练的所有共用函数都放在openi.py里,将openi.py文件拷贝到自己的仓库里,就可直接调用
主要使用的方法有以下几个:
5.2. 如何进行集群间代码迁移
两个集群间的代码迁移只需要改动数据集部分和上传训练结果部分,注意智算集群的上传超参数是train_url,智算集群是model_url
例如迁移启智的代码到智算时,只需要在导入包函数时,替换
openi_multidataset_to_env
为c2net_multidataset_to_env
,并修改相关的上传结果代码即env_to_openi
5.3. 训练环境与调试环境区别:
5.3.1. 调试环境如何下载数据集和预训练模型文件
使用方法:
使用示例:假如在详情页中数据集的路径是
s3:///urchincache/attachment/e/0/e027fb4c-2706-4212-8e6f-a875c489c1da/MNISTData.zip
你在notebook中的路径是:
/home/ma-user/work
则可以使用下面的方法将数据集拷贝到调试环境内:
5.3.2. 调试环境与训练环境之间的代码迁移
当在调试环境下调试好代码后,需要参照训练环境的示例进行配置,才能创建训练任务
若想要使用调试环境的多卡并行训练,可参考示例调试环境多卡并行示例
5.4. 解决参数报错问题:
请在代码中加入
args, unknown = parser.parse_known_args()
,可忽略掉--ckpt_url
,--data_url
等参数报错问题5.5. 多卡训练任务如何只让数据集只拷贝一次
使用缓存文件和local_rank%8作为判断,若第0卡拷贝完成,则其它卡不拷贝,并在第0卡拷贝数据完成后才执行之后的代码
对于示例代码有任何问题,欢迎在本项目中提issue。