![]() |
||
---|---|---|
Example_Picture | ||
OpenI.py | ||
README.md | ||
config.py | ||
dataset.py | ||
dataset_distributed.py | ||
inference.py | ||
lenet.py | ||
pretrain.py | ||
pretrain_for_c2net.py | ||
read_imagenet.py | ||
train.py | ||
train_continue.py | ||
train_for_c2net.py |
README.md
如何在启智平台上进行模型训练 - NPU版本
1. 启智NPU训练任务的超参数及使用方法
- 关于超参数:
- --multi_data_url 是启智平台上选择的数据集的obs路径
- --pretrain_url 是启智平台上选择的预训练模型文件的obs路径
- --train_url 是训练结果回传到启智平台的obs路径
-
在代码中定义:
parser.add_argument('--multi_data_url', help='使用数据集时,需要定义的参数', default= '[{}]') parser.add_argument('--pretrain_url', help='使用预训练模型时,需要定义的参数', default= '[{}]') parser.add_argument('--train_url', help='回传结果到启智,需要定义的参数', default= '')
-
在代码中使用:
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.ckpt_url, pretrain_dir) ###上传训练结果到启智平台 env_to_openi(train_dir,args.train_url)
-
在代码中数据集的使用方式:data_dir + 数据集名称
ds_train = create_dataset_parallel(os.path.join(data_dir + "/MNISTData", "train"), cfg.batch_size)
-
在代码中预训练模型文件的使用方式:pretrain_dir + 模型文件名称
load_param_into_net(network, load_checkpoint(os.path.join(pretrain_dir, "checkpoint_lenet-1_1875.ckpt")))
-
在代码中回传结果:
env_to_openi(train_dir,args.train_url)
2. 启智集群和智算集群的NPU训练样例
启智集群的示例代码:
- 启智集群训练示例请参考示例中train.py的代码注释
- 启智集群加载模型的训练示例请参考示例中 pretrain.py的代码注释
- 启智集群的推理示例请参考示例中inference.py的代码注释
- 启智集群训练任务已经将ImageNet-1k数据集挂载到训练镜像,具体使用方法请参考示例中read_imagenet.py的代码注释
- 继续训练功能示例代码请参考启智集群train_continue.py ,启智与智算的用法相同
智算集群的示例代码:
- 智算网络集群训练示例请参考示例中train_for_c2net.py的代码注释
- 智算网络集群加载模型的训练示例请参考示例中pretrain_for_c2net.py的代码注释
- 智算集群train_continue_c2net.py
3.创建NPU训练示例任务界面教程
4.FAQ
4.1 关于openi.py:
基于启智集群和智算集群训练的所有共用函数都放在openi.py里,将openi.py文件拷贝到自己的仓库里,就可直接调用
主要使用的方法有4个:
- openi_multidataset_To_env 启智集群任务将数据集拷贝到训练镜像
- c2net_multidataset_to_env 智算集群任务将数据集拷贝到训练镜像
- pretrain_to_env 将预训练模型文件拷贝到训练镜像
- env_to_openi 将训练镜像的输出结果拷贝到启智平台
4.2. 如何进行集群间代码迁移
两个集群间的代码迁移只需要改动数据集部分和上传训练结果部分,其他的使用方式一样
例如迁移启智的代码到智算时,只需要在导入包函数时,替换openi_multidataset_to_env为c2net_multidataset_to_env;并去掉相关的上传结果代码即env_to_openi
数据集部分:
-
在启智集群导入数据集到训练环境使用openi_multidataset_to_env
from openi import openi_multidataset_to_env as DatasetToEnv
-
在智算集群导入数据集到训练环境使用c2net_multidataset_to_env
from openi import c2net_multidataset_to_env as DatasetToEnv
结果输出部分:
-
启智集群需要使用env_to_openi,将训练镜像中的输出结果上传到启智平台
from openi import env_to_openi
-
智算集群不需要使用任何函数,在训练结束后,系统会自动判别并将输出结果上传到启智平台
4.3. 训练环境与调试环境区别:
- 当在调试环境下调试好代码后,需要参照训练环境的示例进行配置,才能创建训练任务
- 若想要使用调试环境的多卡并行训练,可参考示例调试环境多卡并行示例