Browse Source

更新npu和gpu使用示例

liuzx-patch-1
liuzx 2 years ago
parent
commit
1842d48817
7 changed files with 46 additions and 49 deletions
  1. +18
    -19
      gpu_mnist_example/README.md
  2. +4
    -5
      gpu_mnist_example/inference.py
  3. +6
    -7
      gpu_mnist_example/train.py
  4. +6
    -6
      npu_mnist_example/README.md
  5. +4
    -4
      npu_mnist_example/inference.py
  6. +4
    -4
      npu_mnist_example/train.py
  7. +4
    -4
      npu_mnist_example/train_multi_card.py

+ 18
- 19
gpu_mnist_example/README.md View File

@@ -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 |

启动训练任务后,训练结束会在任务的结果下载页提供输出结果下载



+ 4
- 5
gpu_mnist_example/inference.py View File

@@ -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))

+ 6
- 7
gpu_mnist_example/train.py View File

@@ -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']


+ 6
- 6
npu_mnist_example/README.md View File

@@ -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 |


+ 4
- 4
npu_mnist_example/inference.py View File

@@ -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()


+ 4
- 4
npu_mnist_example/train.py View File

@@ -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)


+ 4
- 4
npu_mnist_example/train_multi_card.py View File

@@ -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")


Loading…
Cancel
Save