From 1842d488179deb34fe385be5803b08b9358c2f37 Mon Sep 17 00:00:00 2001 From: liuzx Date: Tue, 16 Jan 2024 11:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0npu=E5=92=8Cgpu=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gpu_mnist_example/README.md | 37 +++++++++++++-------------- gpu_mnist_example/inference.py | 9 +++---- gpu_mnist_example/train.py | 13 +++++----- npu_mnist_example/README.md | 12 ++++----- npu_mnist_example/inference.py | 8 +++--- npu_mnist_example/train.py | 8 +++--- npu_mnist_example/train_multi_card.py | 8 +++--- 7 files changed, 46 insertions(+), 49 deletions(-) diff --git a/gpu_mnist_example/README.md b/gpu_mnist_example/README.md index 7fac3c1..e45e4d0 100644 --- a/gpu_mnist_example/README.md +++ b/gpu_mnist_example/README.md @@ -7,26 +7,24 @@ 数据集可从本项目的数据集中引用,[数据集引用](https://git.openi.org.cn/OpenIOSSG/MNIST_Example/datasets?type=1) -- MNISTData数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 -- MNIST_Data.zip数据集压缩包的目录结构如下: - - > MNIST_Data.zip - > ├── test - > │ ├── t10k-images-idx3-ubyte - > │ └── t10k-labels-idx1-ubyte - > └── train - > ├── train-images-idx3-ubyte - > └── train-labels-idx1-ubyte +- MnistDataset_torch数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 +- MnistDataset_torch.zip数据集压缩包的目录结构如下: + + > MnistDataset_torch.zip + > + > ├── test + > + > └── train > ##### 2,预训练模型说明: -checkpoint_lenet-1_1875模型可从本项目的模型目录中引用,[预训练模型引用]() +Torch_MNIST_Example_Model模型可从本项目的模型目录中引用,[预训练模型引用]() -* checkpoint_lenet-1_1875模型的目录结构如下: +* Torch_MNIST_Example_Model模型的目录结构如下: - > checkpoint_lenet-1_1875 - > ├── checkpoint_lenet-1_1875.ckpt + > Torch_MNIST_Example_Model + > ├── mnist_epoch1_0.76.pkl > ## 二. 如何在云脑上获取代码路径,数据集路径,预训练模型路径,输出路径 @@ -51,7 +49,7 @@ code_path = c2net_context.code_path + "/" + "Openl_Cloudbrain_Example" ``` dataset_path = c2net_context.dataset_path +"/" +"数据集名称" 在本示例中代码路径为: -dataset_path = c2net_context.dataset_path + "/" + "MNIST_Data" +dataset_path = c2net_context.dataset_path + "/" + "MnistDataset_torch" ``` ##### 4,获取预训练模型路径 @@ -59,7 +57,7 @@ dataset_path = c2net_context.dataset_path + "/" + "MNIST_Data" ``` pretrain_model_path = c2net_context.pretrain_model_path +"/" +"模型名称" 在本示例中预训练模型路径为: -pretrain_model_path = c2net_context.pretrain_model_path + "/" + "checkpoint_lenet-1_1875" +pretrain_model_path = c2net_context.pretrain_model_path + "/" + "Torch_MNIST_Example_Model" ``` ##### 5,获取输出路径 @@ -96,9 +94,10 @@ upload_output() | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | 镜像 | 镜像选择含有python和torch的镜像 | | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择gpu_mnist_example/train.py | -| 数据集 | 数据集选择MNIST_Data.zip | +| 数据集 | 数据集选择MnistDataset_torch.zip | | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | 资源规格 | 规格选择[GPU] | +| 模型 | 模型选择Torch_MNIST_Example_Model | 启动调试任务后,先执行prepare()进行数据准备; @@ -113,10 +112,10 @@ upload_output() | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | 镜像 | 镜像选择含有python和torch的镜像 | | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择gpu_mnist_example/train.py | -| 数据集 | 数据集选择MNIST_Data.zip | +| 数据集 | 数据集选择MnistDataset_torch.zip | | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | 资源规格 | 规格选择[GPU] | -| 模型 | 模型选择checkpoint_lenet-1_1875 | +| 模型 | 模型选择Torch_MNIST_Example_Model | 启动训练任务后,训练结束会在任务的结果下载页提供输出结果下载 diff --git a/gpu_mnist_example/inference.py b/gpu_mnist_example/inference.py index add58c2..9ddaf72 100644 --- a/gpu_mnist_example/inference.py +++ b/gpu_mnist_example/inference.py @@ -66,18 +66,17 @@ if __name__ == '__main__': #初始化导入数据集和预训练模型到容器内 c2net_context = prepare() #获取数据集路径 - checkpoint_lenet_1_1875_path = c2net_context.dataset_path+"/"+"checkpoint_lenet-1_1875" - MnistDataset_torch = c2net_context.dataset_path+"/"+"MnistDataset_torch" + MnistDataset_torch_path = c2net_context.dataset_path+"/"+"MnistDataset_torch" #获取预训练模型路径 - mnist_example_test2_model_djts_path = c2net_context.pretrain_model_path+"/"+"MNIST_Example_test2_model_djts" + Torch_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Torch_MNIST_Example_Model" #log output print('cuda is available:{}'.format(torch.cuda.is_available())) device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") batch_size = args.batch_size epochs = args.epoch_size - test_dataset = mnist.MNIST(root=MnistDataset_torch + "/test", train=False, transform=ToTensor(),download=False) + test_dataset = mnist.MNIST(root=MnistDataset_torch_path + "/test", train=False, transform=ToTensor(),download=False) test_loader = DataLoader(test_dataset, batch_size=batch_size) model = Model().to(device) - checkpoint = torch.load(mnist_example_test2_model_djts_path + "/mnist_epoch1.pkl") + checkpoint = torch.load(Torch_MNIST_Example_Model_path + "/mnist_epoch1.pkl") model.load_state_dict(checkpoint['model']) test(model,test_loader,len(test_dataset)) \ No newline at end of file diff --git a/gpu_mnist_example/train.py b/gpu_mnist_example/train.py index 493c336..9319ff1 100644 --- a/gpu_mnist_example/train.py +++ b/gpu_mnist_example/train.py @@ -80,24 +80,23 @@ if __name__ == '__main__': #初始化导入数据集和预训练模型到容器内 c2net_context = prepare() #获取数据集路径 - checkpoint_lenet_1_1875_path = c2net_context.dataset_path+"/"+"checkpoint_lenet-1_1875" - MnistDataset_torch = c2net_context.dataset_path+"/"+"MnistDataset_torch" + MnistDataset_torch_path = c2net_context.dataset_path+"/"+"MnistDataset_torch" #获取预训练模型路径 - mnist_example_test2_model_djts_path = c2net_context.pretrain_model_path+"/"+"MNIST_Example_test2_model_djts" + Torch_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Torch_MNIST_Example_Model" #log output print('cuda is available:{}'.format(torch.cuda.is_available())) device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") batch_size = args.batch_size epochs = args.epoch_size - train_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch, "train"), train=True, transform=ToTensor(),download=False) - test_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch, "test"), train=False, transform=ToTensor(),download=False) + train_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch_path, "train"), train=True, transform=ToTensor(),download=False) + test_dataset = mnist.MNIST(root=os.path.join(MnistDataset_torch_path, "test"), train=False, transform=ToTensor(),download=False) train_loader = DataLoader(train_dataset, batch_size=batch_size) test_loader = DataLoader(test_dataset, batch_size=batch_size) #如果有保存的模型,则加载模型,并在其基础上继续训练 - if os.path.exists(os.path.join(mnist_example_test2_model_djts_path, "mnist_epoch1_0.76.pkl")): - checkpoint = torch.load(os.path.join(mnist_example_test2_model_djts_path, "mnist_epoch1_0.76.pkl")) + if os.path.exists(os.path.join(Torch_MNIST_Example_Model_path, "mnist_epoch1_0.76.pkl")): + checkpoint = torch.load(os.path.join(Torch_MNIST_Example_Model_path, "mnist_epoch1_0.76.pkl")) model.load_state_dict(checkpoint['model']) optimizer.load_state_dict(checkpoint['optimizer']) start_epoch = checkpoint['epoch'] diff --git a/npu_mnist_example/README.md b/npu_mnist_example/README.md index 3640e3e..377306d 100644 --- a/npu_mnist_example/README.md +++ b/npu_mnist_example/README.md @@ -6,10 +6,10 @@ 数据集可从本项目的数据集中引用,[数据集引用](https://git.openi.org.cn/OpenIOSSG/MNIST_Example/datasets?type=1) -- MNISTData数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 -- MNISTData.zip数据集压缩包的目录结构如下: +- MnistDataset_mindspore数据集是由10类28∗28的灰度图片组成,训练数据集包含60000张图片,测试数据集包含10000张图片。 +- MnistDataset_mindspore.zip数据集压缩包的目录结构如下: - > MNISTData.zip + > MnistDataset_mindspore.zip > ├── test > │ ├── t10k-images-idx3-ubyte > │ └── t10k-labels-idx1-ubyte @@ -50,7 +50,7 @@ code_path = c2net_context.code_path + "/" + "Openl_Cloudbrain_Example" ``` dataset_path = c2net_context.dataset_path +"/" +"数据集名称" 在本示例中代码路径为: -dataset_path = c2net_context.dataset_path + "/" + "MNISTData" +dataset_path = c2net_context.dataset_path + "/" + "MnistDataset_mindspore" ``` ##### 4,获取预训练模型路径 @@ -97,7 +97,7 @@ upload_output() | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | 镜像 | 镜像选择mindspore_1.10.1 | | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择npu_mnist_example/train.py | -| 数据集 | 数据集选择MNISTData.zip | +| 数据集 | 数据集选择MnistDataset_mindspore.zip | | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | 资源规格 | 规格选择[Ascend: 1 * Ascend 910 CPU:24 核 256GiB],表示单机单卡 | | 模型 | 模型可选择Mindspore_MNIST_Example_Model | @@ -115,7 +115,7 @@ upload_output() | 代码分支 | 选择仓库代码中要使用的代码分支,默认可选择master分支 | | 镜像 | 镜像选择mindspore_1.10.1 | | 启动文件 | 启动文件选择代码目录下的启动脚本,在本示例中选择npu_mnist_example/train.py | -| 数据集 | 数据集选择MNISTData.zip | +| 数据集 | 数据集选择MnistDataset_mindspore.zip | | 运行参数 | 选择增加运行参数可以向脚本中其他参数传值,如epoch_size,需要在代码里定义增加的超参数 | | 资源规格 | 规格选择[Ascend: 1 * Ascend 910 CPU:24 核 256GiB],表示单机单卡 | | 模型 | 模型选择Mindspore_MNIST_Example_Model | diff --git a/npu_mnist_example/inference.py b/npu_mnist_example/inference.py index 3c4c663..4bfa3ea 100644 --- a/npu_mnist_example/inference.py +++ b/npu_mnist_example/inference.py @@ -1,9 +1,9 @@ """ -示例选用的数据集是MNISTData.zip +示例选用的数据集是MnistDataset_mindspore.zip 数据集结构是: - MNISTData.zip + MnistDataset_mindspore.zip ├── test │ ├── t10k-images-idx3-ubyte │ └── t10k-labels-idx1-ubyte @@ -52,7 +52,7 @@ if __name__ == "__main__": #初始化导入数据集和预训练模型到容器内 c2net_context = prepare() #获取数据集路径 - mnistdata_path = c2net_context.dataset_path+"/"+"MNISTData" + MnistDataset_mindspore_path = c2net_context.dataset_path+"/"+"MnistDataset_mindspore" #获取预训练模型路径 Mindspore_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Mindspore_MNIST_Example_Model" #获取输出路径 @@ -69,7 +69,7 @@ if __name__ == "__main__": print("============== Starting Testing ==============") load_param_into_net(network, load_checkpoint(os.path.join(Mindspore_MNIST_Example_Model_path, "checkpoint_lenet-1_1875.ckpt"))) - ds_test = create_dataset(os.path.join(mnistdata_path, "test"), batch_size=1).create_dict_iterator() + ds_test = create_dataset(os.path.join(MnistDataset_mindspore_path, "test"), batch_size=1).create_dict_iterator() data = next(ds_test) images = data["image"].asnumpy() labels = data["label"].asnumpy() diff --git a/npu_mnist_example/train.py b/npu_mnist_example/train.py index 1fb38e5..ddbcbcb 100644 --- a/npu_mnist_example/train.py +++ b/npu_mnist_example/train.py @@ -1,9 +1,9 @@ """ -示例选用的数据集是MNISTData.zip +示例选用的数据集是MnistDataset_mindspore.zip 数据集结构是: - MNISTData.zip + MnistDataset_mindspore.zip ├── test │ ├── t10k-images-idx3-ubyte │ └── t10k-labels-idx1-ubyte @@ -52,7 +52,7 @@ if __name__ == "__main__": #初始化导入数据集和预训练模型到容器内 c2net_context = prepare() #获取数据集路径 - mnistdata_path = c2net_context.dataset_path+"/"+"MNISTData" + MnistDataset_mindspore_path = c2net_context.dataset_path+"/"+"MnistDataset_mindspore" #获取预训练模型路径 Mindspore_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Mindspore_MNIST_Example_Model" #获取输出路径 @@ -60,7 +60,7 @@ if __name__ == "__main__": context.set_context(mode=context.GRAPH_MODE,device_target=args.device_target) #使用数据集的方式 - ds_train = create_dataset(os.path.join(mnistdata_path, "train"), cfg.batch_size) + ds_train = create_dataset(os.path.join(MnistDataset_mindspore_path, "train"), cfg.batch_size) network = LeNet5(cfg.num_classes) net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean") net_opt = nn.Momentum(network.trainable_params(), cfg.lr, cfg.momentum) diff --git a/npu_mnist_example/train_multi_card.py b/npu_mnist_example/train_multi_card.py index 35e709d..ffa6491 100644 --- a/npu_mnist_example/train_multi_card.py +++ b/npu_mnist_example/train_multi_card.py @@ -1,9 +1,9 @@ """ -示例选用的数据集是MNISTData.zip +示例选用的数据集是MnistDataset_mindspore.zip 数据集结构是: - MNISTData.zip + MnistDataset_mindspore.zip ├── test │ ├── t10k-images-idx3-ubyte │ └── t10k-labels-idx1-ubyte @@ -64,7 +64,7 @@ if __name__ == "__main__": #初始化导入数据集和预训练模型到容器内 c2net_context = prepare() #获取数据集路径 - mnistdata_path = c2net_context.dataset_path+"/"+"MNISTData" + MnistDataset_mindspore_path = c2net_context.dataset_path+"/"+"MnistDataset_mindspore" #获取预训练模型路径 Mindspore_MNIST_Example_Model_path = c2net_context.pretrain_model_path+"/"+"Mindspore_MNIST_Example_Model" output_path = c2net_context.output_path @@ -79,7 +79,7 @@ if __name__ == "__main__": print("download_input failed") while not os.path.exists("/cache/download_input.txt"): time.sleep(1) - ds_train = create_dataset_parallel(os.path.join(mnistdata_path, "train"), cfg.batch_size) + ds_train = create_dataset_parallel(os.path.join(MnistDataset_mindspore_path, "train"), cfg.batch_size) network = LeNet5(cfg.num_classes) net_loss = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction="mean")