Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
liuzx fc690b6c60 | 3 months ago | |
---|---|---|
Example_Picture | 1 year ago | |
README.md | 3 months ago | |
config.py | 2 years ago | |
dataset.py | 3 years ago | |
dataset_distributed.py | 2 years ago | |
inference.py | 1 year ago | |
lenet.py | 3 years ago | |
openi.py | 1 year ago | |
pretrain.py | 1 year ago | |
pretrain_for_c2net.py | 1 year ago | |
read_imagenet.py | 1 year ago | |
train.py | 1 year ago | |
train_continue.py | 1 year ago | |
train_for_c2net.py | 1 year ago |
请将示例代码中openi.py拷贝到自己仓库
请将示例代码中openi.py拷贝到自己仓库
关于超参数:
--multi_data_url 必选,选择的单数据集或多数据集的obs路径
--pretrain_url 非必选,只有在界面上选择模型时才需要,选择的单模型或多模型文件的obs路径
--train_url 必选,训练结果回传到启智平台的obs路径
obs路径可以理解为云上的存储路径
在代码中定义:
parser.add_argument('--multi_data_url',
help='使用单数据集或多数据集时,需要定义的参数',
default= '[{}]')
parser.add_argument('--pretrain_url',
help='非必选,只有在界面上选择模型时才需要,使用单模型或多模型时,需要定义的参数',
default= '[{}]')
parser.add_argument('--train_url',
help='必选,回传结果到启智,需要定义的参数',
default= '')
在代码中使用:
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)
在代码中数据集的使用方式: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)
关于超参数:
--multi_data_url 必选,选择的单数据集或多数据集的obs路径
--pretrain_url 非必选,只有在界面上选择模型时才需要,选择的单模型或多模型的obs路径
--model_url 可选,训练结果回传到启智平台的obs路径,否则请将输出设置为/cache/output文件夹
obs路径可以理解为云上的存储路径
在代码中定义:
parser.add_argument('--multi_data_url',
help='使用单数据集或多数据集时,需要定义的参数',
default= '[{}]')
parser.add_argument('--pretrain_url',
help='非必选,只有在界面上选择模型时才需要,使用预训练单模型或多模型时,需要定义的参数',
default= '[{}]')
parser.add_argument('--model_url',
help='使用智算集群回传结果到启智,需要定义的参数',
default= '')
在代码中使用:
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)
在代码中数据集的使用方式: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.model_url)
或是将输出文件夹设置为/cache/output
基于启智集群和智算集群训练的所有共用函数都放在openi.py里,将openi.py文件拷贝到自己的仓库里,就可直接调用
主要使用的方法有以下几个:
openi_multidataset_to_env 启智集群任务将数据集拷贝到训练镜像
c2net_multidataset_to_env 智算集群任务将数据集拷贝到训练镜像
pretrain_to_env 将预训练模型文件拷贝到训练镜像
env_to_openi 将训练镜像的输出结果拷贝回启智平台
obs_copy_file 通过mox拷贝文件
obs_copy_folder 通过mox拷贝文件夹
两个集群间的代码迁移只需要改动数据集部分和上传训练结果部分,注意智算集群的上传超参数是train_url,智算集群是model_url
例如迁移启智的代码到智算时,只需要在导入包函数时,替换 openi_multidataset_to_env
为 c2net_multidataset_to_env
,并修改相关的上传结果代码即 env_to_openi
使用方法:
import moxing as mox
mox.file.copy("s3url", "your_local_file_path")
使用示例:假如在详情页中数据集的路径是 s3:///urchincache/attachment/e/0/e027fb4c-2706-4212-8e6f-a875c489c1da/MNISTData.zip
你在notebook中的路径是:/home/ma-user/work
则可以使用下面的方法将数据集拷贝到调试环境内:
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")
当在调试环境下调试好代码后,需要参照训练环境的示例进行配置,才能创建训练任务
若想要使用调试环境的多卡并行训练,可参考示例调试环境多卡并行示例
请在代码中加入 args, unknown = parser.parse_known_args()
,可忽略掉 --ckpt_url
,--data_url
等参数报错问题
使用缓存文件和local_rank%8作为判断,若第0卡拷贝完成,则其它卡不拷贝,并在第0卡拷贝数据完成后才执行之后的代码
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完成手写数字识别相关的任务,旨在为AI开发者提供云脑调试、训练和推理任务的示例。
Python Markdown
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》