# 如何在启智平台上进行模型调试和训练—GPU_手写数字识别示例 ## 一 ,数据集及预训练模型准备 ##### 1,数据集说明: 数据集可从本项目的数据集中引用,[数据集引用](https://openi.pcl.ac.cn/OpenIOSSG/OpenI_Cloudbrain_Example/datasets) - MnistDataset_torch数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 - MnistDataset_torch.zip数据集压缩包的目录结构如下: > MnistDataset_torch.zip > > ├── test > > └── train > ##### 2,预训练模型说明: Torch_MNIST_Example_Model模型可从本项目的模型目录中引用,[预训练模型引用](https://openi.pcl.ac.cn/OpenIOSSG/OpenI_Cloudbrain_Example/modelmanage/show_model) * Torch_MNIST_Example_Model模型的目录结构如下: > Torch_MNIST_Example_Model > ├── mnist_epoch1.pkl > ## 二.GPU样例准备 ##### 1,gpu示例代码: - 训练任务单卡示例请参考示例中[train.py](./train.py)的代码注释 - 训练任务多卡示例请参考示例中[parallel_train.py](./parallel_train.py)的代码注释 - 推理任务示例请参考示例中[inference.py](./inference.py)的代码注释 - [model.py](./model.py)是运行项目所需的代码 ##### 2,创建GPU调试任务 表1创建训练作业界面参数说明 | 参数名称 | 说明 | | -------- | ----------------------------------------------------------------------------------- | | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | 镜像 | 镜像选择含有python和torch的镜像,推荐镜像: | | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择gpu_mnist_example/train.py | | 数据集 | 数据集选择MnistDataset_torch.zip | | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | 资源规格 | 规格选择[GPU] | | 模型 | 模型选择Torch_MNIST_Example_Model | 启动调试任务后,先执行prepare()进行数据准备; 进入对应的代码目录后,可在终端执行python train.py; ##### 3,创建GPU训练任务 表2 创建训练作业界面参数说明 | 参数名称 | 说明 | | -------- | ----------------------------------------------------------------------------------- | | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | 镜像 | 镜像选择含有python和torch的镜像 | | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择gpu_mnist_example/train.py | | 数据集 | 数据集选择MnistDataset_torch.zip | | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | 资源规格 | 规格选择[GPU] | | 模型 | 模型选择Torch_MNIST_Example_Model | 启动训练任务后,训练结束会在任务的结果下载页提供输出结果下载 ## 三. 如何在云脑上获取代码路径,数据集路径,预训练模型路径,输出路径 ##### 1,准备数据 ``` from c2net.context import prepare c2net_context = prepare() ``` ##### 2,获取代码路径 ``` code_path = c2net_context.code_path +"/" +"项目名".lower() 在本示例中代码路径为: code_path = c2net_context.code_path + "/" + "Openl_Cloudbrain_Example".lower() ``` ##### 3,获取数据集路径 ``` dataset_path = c2net_context.dataset_path +"/" +"数据集名称" 在本示例中代码路径为: dataset_path = c2net_context.dataset_path + "/" + "MnistDataset_torch" ``` ##### 4,获取预训练模型路径 ``` pretrain_model_path = c2net_context.pretrain_model_path +"/" +"模型名称" 在本示例中预训练模型路径为: pretrain_model_path = c2net_context.pretrain_model_path + "/" + "Torch_MNIST_Example_Model" ``` ##### 5,获取输出路径 ``` output_path = c2net_context.output_path 在本示例中输出路径为: output_path = c2net_context.output_path ``` ##### 6,回传结果 ``` from c2net.context import upload_output upload_output() 在本示例中回传结果为(只有训练任务才能回传结果): from c2net.context import prepare,upload_output upload_output() ``` ## 四.GPU任务注意事项 ##### 1, 使用超参数的方法 请在代码中加入 ``` import parser args, unknown = parser.parse_known_args() #可忽略掉 `--ckpt_url`,`--data_url`, `--multi_date_url`等参数无定义导致的报错问题 ``` ## 对于示例代码有任何问题,欢迎在本项目中提issue。