diff --git a/checkpoint/README.md b/checkpoint/README.md index 408c53a67f08495d452d7bfbcaac578a3c414619..f34aecb5b4a6b3716a705da13a159235728733da 100644 --- a/checkpoint/README.md +++ b/checkpoint/README.md @@ -54,7 +54,7 @@ MNIST是一个手写数字数据集,训练集包含60000张手写数字,测试集包含10000张手写数字,共10类。MNIST数据集的官网:[THE MNIST DATABASE](http://yann.lecun.com/exdb/mnist/)。 -从MNIST官网下载如下4个文件到本地并解压: +- 途径一,从MNIST官网下载如下4个文件到本地并解压: ``` train-images-idx3-ubyte.gz: training set images (9912422 bytes) @@ -63,6 +63,8 @@ t10k-images-idx3-ubyte.gz: test set images (1648877 bytes) t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes) ``` +- 途径二,从华为云OBS中下载[MNIST数据集](https://share-course.obs.cn-north-4.myhuaweicloud.com/dataset/MNIST.zip)并解压。 + ### 脚本准备 从[课程gitee仓库](https://gitee.com/mindspore/course)上下载本实验相关脚本。 @@ -87,7 +89,7 @@ checkpoint ### 创建Notebook -可以参考[创建并打开Notebook](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0034.html)来创建并打开本实验的Notebook脚本。 +ModelArts Notebook资源池较小,且每个运行中的Notebook会一直占用Device资源不释放,不适合大规模并发使用。可以参考[创建并打开Notebook](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0034.html)来创建并打开本实验的Notebook脚本。 创建Notebook的参考配置: @@ -106,7 +108,7 @@ checkpoint > **提示:** 上述数据集和脚本的准备工作也可以在Notebook环境中完成,在Jupyter Notebook文件列表页面,点击右上角的"New"->"Terminal",进入Notebook环境所在终端,进入`work`目录,可以使用常用的linux shell命令,如`wget, gzip, tar, mkdir, mv`等,完成数据集和脚本的下载和准备。 -> **提示:** 请从上至下阅读提示并执行代码框进行体验。代码框执行过程中左侧呈现[\*],代码框执行完毕后左侧呈现如[1],[2]等。请等上一个代码框执行完毕后再执行下一个代码框。 +> **提示:** 可将如下每段代码拷贝到Notebook代码框/Cell中,从上至下阅读提示并执行代码框进行体验。代码框执行过程中左侧呈现[\*],代码框执行完毕后左侧呈现如[1],[2]等。请等上一个代码框执行完毕后再执行下一个代码框。 导入MindSpore模块和辅助模块: @@ -389,6 +391,14 @@ infer('MNIST') ## 实验步骤(ModelArts训练作业) +除了Notebook,ModelArts还提供了训练作业服务。相比Notebook,训练作业资源池更大,且具有作业排队等功能,适合大规模并发使用。使用训练作业时,也会有修改代码和调试的需求,有如下三个方案: + +1. 在本地修改代码后重新上传; + +2. 使用[PyCharm ToolKit](https://support.huaweicloud.com/tg-modelarts/modelarts_15_0001.html)配置一个本地Pycharm+ModelArts的开发环境,便于上传代码、提交训练作业和获取训练日志。 + +3. 在ModelArts上创建Notebook,然后设置[Sync OBS功能](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0038.html),可以在线修改代码并自动同步到OBS中。因为只用Notebook来编辑代码,所以创建CPU类型最低规格的Notebook就行。 + ### 适配训练作业 创建训练作业时,运行参数会通过脚本传参的方式输入给脚本代码,脚本必须解析传参才能在代码中使用相应参数。如data_url和train_url,分别对应数据存储路径(OBS路径)和训练输出路径(OBS路径)。脚本对传参进行解析后赋值到`args`变量里,在后续代码里可以使用。 @@ -403,10 +413,23 @@ args, unknown = parser.parse_known_args() MindSpore暂时没有提供直接访问OBS数据的接口,需要通过MoXing提供的API与OBS交互。将OBS中存储的数据拷贝至执行容器: -```python -import moxing -moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST/') -``` +- 途径一,拷贝自己账户下OBS桶内的数据集。 + + ```python + import moxing + moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST/') + ``` + +- 途径二,拷贝他人账户下OBS桶内的数据集,前提是他人账户下的OBS桶已设为公共读/公共读写,且需要他人账户的访问密钥、私有访问密钥、OBS桶-概览-基本信息-Endpoint。 + + ```python + import moxing + # set moxing/obs auth info, ak:Access Key Id, sk:Secret Access Key, server:endpoint of obs bucket + moxing.file.set_auth(ak='VCT2GKI3GJOZBQYJG5WM', sk='t1y8M4Z6bHLSAEGK2bCeRYMjo2S2u0QBqToYbxzB', + server="obs.cn-north-4.myhuaweicloud.com") + # copy dataset from obs bucket to container/cache + moxing.file.copy_parallel(src_url="s3://share-course/dataset/MNIST/", dst_url='MNIST/') + ``` 如需将训练输出(如模型Checkpoint)从执行容器拷贝至OBS,请参考: @@ -445,7 +468,7 @@ MindSpore还支持在本地CPU/GPU/Ascend环境上运行,如Windows/Ubuntu x64 在Windows/Ubuntu x64笔记本上运行实验: ```shell script -vim main.py # 将第23行的context设置为`device_target='CPU'` +# 编辑main.py 将第23行的context设置为`device_target='CPU'` python main.py --data_url=D:\dataset\MNIST ``` diff --git a/checkpoint/main.py b/checkpoint/main.py index 486bb692abdca0026ad1a94c32d9167ae8f3c884..8072c8e665db93ed3111e85788b39a7492bb69a7 100644 --- a/checkpoint/main.py +++ b/checkpoint/main.py @@ -140,7 +140,17 @@ if __name__ == "__main__": if args.data_url.startswith('s3'): import moxing - moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST') + + # WAY1: copy dataset from your own OBS bucket. + # moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST') + + # WAY2: copy dataset from other's OBS bucket, which has been set public read or public read&write. + # set moxing/obs auth info, ak:Access Key Id, sk:Secret Access Key, server:endpoint of obs bucket + moxing.file.set_auth(ak='VCT2GKI3GJOZBQYJG5WM', sk='t1y8M4Z6bHLSAEGK2bCeRYMjo2S2u0QBqToYbxzB', + server="obs.cn-north-4.myhuaweicloud.com") + # copy dataset from obs bucket to container/cache + moxing.file.copy_parallel(src_url="s3://share-course/dataset/MNIST/", dst_url='MNIST/') + args.data_url = 'MNIST' # 请先删除旧的checkpoint目录`ckpt` diff --git a/knn/README.md b/knn/README.md index 458f35cfcccb1740a15057a7f0d69a8f3392a802..f9807211a423973e6e93f97d3126dbf081647d33 100644 --- a/knn/README.md +++ b/knn/README.md @@ -47,7 +47,7 @@ K近邻算法(K-Nearest-Neighbor, KNN)是一种用于分类和回归的非 ### 数据准备 -Wine数据集是模式识别最著名的数据集之一。这些数据是对来自意大利同一地区但来自三个不同品种的葡萄酒进行化学分析的结果。分析了三种葡萄酒中每种所含13种成分的量。这些13种属性是 +Wine数据集是模式识别最著名的数据集之一,Wine数据集的官网:[Wine Data Set](http://archive.ics.uci.edu/ml/datasets/Wine)。这些数据是对来自意大利同一地区但来自三个不同品种的葡萄酒进行化学分析的结果。数据集分析了三种葡萄酒中每种所含13种成分的量。这些13种属性是 1. Alcohol,酒精 2. Malic acid,苹果酸 @@ -63,8 +63,11 @@ Wine数据集是模式识别最著名的数据集之一。这些数据是对来 12. OD280/OD315 of diluted wines,稀释酒的OD280/OD315 13. Proline,脯氨酸 -在Wine数据集的官网[Wine Data Set](http://archive.ics.uci.edu/ml/datasets/Wine)上下载[wine.data](http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data)文件。 +- 途径一,从Wine数据集官网下载[wine.data文件](http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data)。 +- 途径二,从华为云OBS中下载[wine.data文件](https://share-course.obs.cn-north-4.myhuaweicloud.com/dataset/wine.data)。 +| Key | Value | Key | Value | +| :------------------------- | :------------- | :-------------------- | :--- | | Data Set Characteristics: | Multivariate | Number of Instances: | 178 | | Attribute Characteristics: | Integer, Real | Number of Attributes: | 13 | | Associated Tasks: | Classification | Missing Values? | No | diff --git a/lenet5/README.md b/lenet5/README.md index 6b5cdcfbfb8d5c6823a6e5fc8a611f62d9a558c4..5e4b5abbc3188734a0c380bfb49e2e67520a6f1f 100644 --- a/lenet5/README.md +++ b/lenet5/README.md @@ -45,7 +45,7 @@ LeNet5 + MINST被誉为深度学习领域的“Hello world”。本实验主要 MNIST是一个手写数字数据集,训练集包含60000张手写数字,测试集包含10000张手写数字,共10类。MNIST数据集的官网:[THE MNIST DATABASE](http://yann.lecun.com/exdb/mnist/)。 -从MNIST官网下载如下4个文件到本地并解压: +- 途径一,从MNIST官网下载如下4个文件到本地并解压: ``` train-images-idx3-ubyte.gz: training set images (9912422 bytes) @@ -54,6 +54,8 @@ t10k-images-idx3-ubyte.gz: test set images (1648877 bytes) t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes) ``` +- 途径二,从华为云OBS中下载[MNIST数据集](https://share-course.obs.cn-north-4.myhuaweicloud.com/dataset/MNIST.zip)并解压。 + ### 脚本准备 从[课程gitee仓库](https://gitee.com/mindspore/course)上下载本实验相关脚本。 @@ -78,7 +80,7 @@ lenet5 ### 创建Notebook -可以参考[创建并打开Notebook](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0034.html)来创建并打开本实验的Notebook脚本。 +ModelArts Notebook资源池较小,且每个运行中的Notebook会一直占用Device资源不释放,不适合大规模并发使用。可以参考[创建并打开Notebook](https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0034.html)来创建并打开本实验的Notebook脚本。 创建Notebook的参考配置: @@ -97,7 +99,7 @@ lenet5 > **提示:** 上述数据集和脚本的准备工作也可以在Notebook环境中完成,在Jupyter Notebook文件列表页面,点击右上角的"New"->"Terminal",进入Notebook环境所在终端,进入`work`目录,可以使用常用的linux shell命令,如`wget, gzip, tar, mkdir, mv`等,完成数据集和脚本的下载和准备。 -> **提示:** 请从上至下阅读提示并执行代码框进行体验。代码框执行过程中左侧呈现[\*],代码框执行完毕后左侧呈现如[1],[2]等。请等上一个代码框执行完毕后再执行下一个代码框。 +> **提示:** 可将如下每段代码拷贝到Notebook代码框/Cell中,从上至下阅读提示并执行代码框进行体验。代码框执行过程中左侧呈现[\*],代码框执行完毕后左侧呈现如[1],[2]等。请等上一个代码框执行完毕后再执行下一个代码框。 导入MindSpore模块和辅助模块: @@ -251,10 +253,23 @@ args, unknown = parser.parse_known_args() MindSpore暂时没有提供直接访问OBS数据的接口,需要通过MoXing提供的API与OBS交互。将OBS中存储的数据拷贝至执行容器: -```python -import moxing -moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST/') -``` +- 途径一,拷贝自己账户下OBS桶内的数据集。 + + ```python + import moxing + moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST/') + ``` + +- 途径二,拷贝他人账户下OBS桶内的数据集,前提是他人账户下的OBS桶已设为公共读/公共读写,且需要他人账户的访问密钥、私有访问密钥、OBS桶-概览-基本信息-Endpoint。 + + ```python + import moxing + # set moxing/obs auth info, ak:Access Key Id, sk:Secret Access Key, server:endpoint of obs bucket + moxing.file.set_auth(ak='VCT2GKI3GJOZBQYJG5WM', sk='t1y8M4Z6bHLSAEGK2bCeRYMjo2S2u0QBqToYbxzB', + server="obs.cn-north-4.myhuaweicloud.com") + # copy dataset from obs bucket to container/cache + moxing.file.copy_parallel(src_url="s3://share-course/dataset/MNIST/", dst_url='MNIST/') + ``` 如需将训练输出(如模型Checkpoint)从执行容器拷贝至OBS,请参考: @@ -293,7 +308,7 @@ MindSpore还支持在本地CPU/GPU/Ascend环境上运行,如Windows/Ubuntu x64 在Windows/Ubuntu x64笔记本上运行实验: ```shell script -vim main.py # 将第15行的context设置为`device_target='CPU'` +# 编辑main.py 将第15行的context设置为`device_target='CPU'` python main.py --data_url=D:\dataset\MNIST ``` diff --git a/lenet5/main.py b/lenet5/main.py index e767ecd6e353d460cc943e237eda8a8bb013f7f7..59e18435f217ff78020d54cba8071200f85c295a 100644 --- a/lenet5/main.py +++ b/lenet5/main.py @@ -12,7 +12,7 @@ from mindspore import nn from mindspore.train import Model from mindspore.train.callback import LossMonitor -context.set_context(mode=context.GRAPH_MODE, device_target='Ascend') # Ascend, CPU, GPU +context.set_context(mode=context.GRAPH_MODE, device_target='CPU') # Ascend, CPU, GPU def create_dataset(data_dir, training=True, batch_size=32, resize=(32, 32), @@ -79,7 +79,17 @@ if __name__ == "__main__": if args.data_url.startswith('s3'): import moxing - moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST') + + # WAY1: copy dataset from your own OBS bucket. + # moxing.file.copy_parallel(src_url=args.data_url, dst_url='MNIST') + + # WAY2: copy dataset from other's OBS bucket, which has been set public read or public read&write. + # set moxing/obs auth info, ak:Access Key Id, sk:Secret Access Key, server:endpoint of obs bucket + moxing.file.set_auth(ak='VCT2GKI3GJOZBQYJG5WM', sk='t1y8M4Z6bHLSAEGK2bCeRYMjo2S2u0QBqToYbxzB', + server="obs.cn-north-4.myhuaweicloud.com") + # copy dataset from obs bucket to container/cache + moxing.file.copy_parallel(src_url="s3://share-course/dataset/MNIST/", dst_url='MNIST/') + args.data_url = 'MNIST' train(args.data_url) diff --git a/logistic_regression/README.md b/logistic_regression/README.md index 52c742e65f69f62b2a33a99094367d6bcba75834..4266f82dee7e173913a86cc6eea1809d05d59b45 100644 --- a/logistic_regression/README.md +++ b/logistic_regression/README.md @@ -47,7 +47,10 @@ ### 数据准备 -Iris数据集是模式识别最著名的数据集之一。数据集包含3类,每类50个实例,其中每个类都涉及一种鸢尾植物。 第一类与后两类可线性分离,后两类之间不能线性分离,所以本实验取前两类数据,做一个2分类数据集。在Iris数据集的官网[Iris Data Set](http://archive.ics.uci.edu/ml/datasets/Iris)上下载[iris.data](http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data)文件。 +Iris数据集是模式识别最著名的数据集之一。数据集包含3类,每类50个实例,其中每个类都涉及一种鸢尾植物。 第一类与后两类可线性分离,后两类之间不能线性分离,所以本实验取前两类数据,做一个2分类数据集。Iris数据集的官网:[Iris Data Set](http://archive.ics.uci.edu/ml/datasets/Iris)。 + +- 途径一,从Iris数据集官网下载[iris.data文件](http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data)。 +- 途径二,从华为云OBS中下载[iris.data文件](https://share-course.obs.cn-north-4.myhuaweicloud.com/dataset/iris.data)。 每个样本含有4个数值属性和一个类别属性: 1. sepal length in cm diff --git a/softmax_regression/README.md b/softmax_regression/README.md index 36b48ffd7703c347f20efc26ee25ff864d91f49b..1c0dc77a059eebf8936f69f2edcbb7e461051350 100644 --- a/softmax_regression/README.md +++ b/softmax_regression/README.md @@ -45,7 +45,10 @@ Logistic函数针对的是二分类问题,而Softmax解决的是多分类问 ### 数据准备 -Iris数据集是模式识别最著名的数据集之一。数据集包含3类,每类50个实例,其中每个类都涉及一种鸢尾植物。在Iris数据集的官网[Iris Data Set](http://archive.ics.uci.edu/ml/datasets/Iris)上下载[iris.data](http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data)文件。 +Iris数据集是模式识别最著名的数据集之一。数据集包含3类,每类50个实例,其中每个类都涉及一种鸢尾植物。 第一类与后两类可线性分离,后两类之间不能线性分离,所以本实验取前两类数据,做一个2分类数据集。Iris数据集的官网:[Iris Data Set](http://archive.ics.uci.edu/ml/datasets/Iris)。 + +- 途径一,从Iris数据集官网下载[iris.data文件](http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data)。 +- 途径二,从华为云OBS中下载[iris.data文件](https://share-course.obs.cn-north-4.myhuaweicloud.com/dataset/iris.data)。 每个样本含有4个数值属性和一个类别属性: 1. sepal length in cm