本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
GPU 训练
本部分用于在基于 GPU 的集群上进行培训。
有关Deep Learning Containers 完整列表,请参阅Deep Learning Containers 映像. 有关使用英特尔数学内核库 (MKL) 时的最佳配置设置的提示,请参阅AmazonDeep Learning Containers 英特尔数学核心库 (MKL) 建议.
Apache MXNet(孵化中)GPU 训练
本教程指导您在单节点 GPU 集群上使用 Apache MXNet(孵化)进行训练。
-
为您的集群创建 pod 文件。pod 文件将提供有关集群应运行什么的说明。此 pod 文件将下载 MXNet 存储库并运行 MNIST 示例。Open(打开)vi要么vim并复制并粘贴以下内容。将此文件另存为
mxnet.yaml
。apiVersion: v1 kind: Pod metadata: name:
mxnet-training
spec: restartPolicy: OnFailure containers: - name:mxnet-training
image:763104351884.dkr.ecr.us-east-1.amazonaws.com/mxnet-training:1.6.0-gpu-py36-cu101-ubuntu16.04
command: ["/bin/sh","-c"] args: ["git clone -b v1.4.x https://github.com/apache/incubator-mxnet.git && python ./incubator-mxnet/example/image-classification/train_mnist.py"] -
使用以下命令将 pod 文件分配给集群kubectl.
$
kubectl create -f mxnet.yaml -
您应看到以下输出:
pod/mxnet-training created
-
检查状态。任务“tensorflow-training”的名称位于 tf.yaml 文件中。它现在将显示在状态中。如果您正在运行任何其他测试或之前已运行某些内容,它将显示在此列表中。多次运行,直到看到状态更改为”
Running
”。$
kubectl get pods您应看到以下输出:
NAME READY STATUS RESTARTS AGE mxnet-training 0/1 Running 8 19m
-
检查日志以查看训练输出。
$
kubectl logs mxnet-training您应该可以看到类似于如下输出的内容:
Cloning into 'incubator-mxnet'... INFO:root:Epoch[0] Batch [0-100] Speed: 18437.78 samples/sec accuracy=0.777228 INFO:root:Epoch[0] Batch [100-200] Speed: 16814.68 samples/sec accuracy=0.907188 INFO:root:Epoch[0] Batch [200-300] Speed: 18855.48 samples/sec accuracy=0.926719 INFO:root:Epoch[0] Batch [300-400] Speed: 20260.84 samples/sec accuracy=0.938438 INFO:root:Epoch[0] Batch [400-500] Speed: 9062.62 samples/sec accuracy=0.938594 INFO:root:Epoch[0] Batch [500-600] Speed: 10467.17 samples/sec accuracy=0.945000 INFO:root:Epoch[0] Batch [600-700] Speed: 11082.03 samples/sec accuracy=0.954219 INFO:root:Epoch[0] Batch [700-800] Speed: 11505.02 samples/sec accuracy=0.956875 INFO:root:Epoch[0] Batch [800-900] Speed: 9072.26 samples/sec accuracy=0.955781 INFO:root:Epoch[0] Train-accuracy=0.923424 ...
-
查看日志以查看训练进度。你也可以继续查看”get pods” 刷新状态。当状态更改为 “” 时
Completed
”,培训工作已经完成。
后续步骤
要在 Amazon EKS 上使用带有Deep Learning Containers 的 MXNet 学习基于 GPU 的推理,请参阅Apache MxNet(孵化)GPU 推理.
TensorFlow GU 训练
本教程指导你进行训练 TensorFlow 您的单节点 GPU 集群上的模型。
-
为您的集群创建 pod 文件。pod 文件将提供有关集群应运行什么的说明。此 pod 文件将下载 Keras 并运行 Keras 示例。此示例使用 TensorFlow 框架。Open(打开)vi要么vim并复制并粘贴以下内容。将此文件另存为
tf.yaml
。您可以将其与任一使用 TensorFlow要么 TensorFlow 2. 要与之配合使用 TensorFlow 2,将 Docker 镜像更改为 TensorFlow 2 张图片。apiVersion: v1 kind: Pod metadata: name:
tensorflow-training
spec: restartPolicy: OnFailure containers: - name:tensorflow-training
image:763104351884.dkr.ecr.us-east-1.amazonaws.com/tensorflow-training:1.15.2-gpu-py37-cu100-ubuntu18.04
command: ["/bin/sh","-c"] args: ["git clone https://github.com/fchollet/keras.git && python /keras/examples/mnist_cnn.py"] resources: limits: nvidia.com/gpu:1
-
使用以下命令将 pod 文件分配给集群kubectl.
$
kubectl create -f tf.yaml -
您应看到以下输出:
pod/tensorflow-training created
-
检查状态。任务“tensorflow-training”的名称位于 tf.yaml 文件中。它现在将显示在状态中。如果你正在运行任何其他测试或者之前运行过某项测试,它会出现在这个列表中。多次运行,直到看到状态更改为”
Running
”。$
kubectl get pods您应看到以下输出:
NAME READY STATUS RESTARTS AGE tensorflow-training 0/1 Running 8 19m
-
检查日志以查看训练输出。
$
kubectl logs tensorflow-training您应该可以看到类似于如下输出的内容:
Cloning into 'keras'... Using TensorFlow backend. Downloading data from https://s3.amazonaws.com/img-datasets/mnist.npz 8192/11490434 [..............................] - ETA: 0s 6479872/11490434 [===============>..............] - ETA: 0s 8740864/11490434 [=====================>........] - ETA: 0s 11493376/11490434 [==============================] - 0s 0us/step x_train shape: (60000, 28, 28, 1) 60000 train samples 10000 test samples Train on 60000 samples, validate on 10000 samples Epoch 1/12 2019-03-19 01:52:33.863598: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX512F 2019-03-19 01:52:33.867616: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance. 128/60000 [..............................] - ETA: 10:43 - loss: 2.3076 - acc: 0.0625 256/60000 [..............................] - ETA: 5:59 - loss: 2.2528 - acc: 0.1445 384/60000 [..............................] - ETA: 4:24 - loss: 2.2183 - acc: 0.1875 512/60000 [..............................] - ETA: 3:35 - loss: 2.1652 - acc: 0.1953 640/60000 [..............................] - ETA: 3:05 - loss: 2.1078 - acc: 0.2422 ...
-
查看日志以查看训练进度。你也可以继续查看”get pods” 刷新状态。当状态更改为 “” 时
Completed
”,培训工作已经完成。
后续步骤
要在 Amazon EKS 上学习基于 GPU 的推理,请使用 TensorFlow 有关DDeep Learning Containers ContaTensorFlow GPU 推理.
PyTorch GU 训练
本教程指导您使用以下方法进行训练 PyTorch 在你的单节点 GPU 集群上。
-
为您的集群创建 pod 文件。pod 文件将提供有关集群应运行什么的说明。这个 pod 文件将下载 PyTorch存储库并运行 MNIST 示例。Open(打开)vi要么vim,然后复制并粘贴以下内容。将此文件另存为
pytorch.yaml
。apiVersion: v1 kind: Pod metadata: name:
pytorch-training
spec: restartPolicy: OnFailure containers: - name:pytorch-training
image:763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.5.1-gpu-py36-cu101-ubuntu16.04
command: - "/bin/sh" - "-c" args: - "git clone https://github.com/pytorch/examples.git && python examples/mnist/main.py --no-cuda" env: - name: OMP_NUM_THREADS value: "36" - name: KMP_AFFINITY value: "granularity=fine,verbose,compact,1,0" - name: KMP_BLOCKTIME value: "1" -
使用以下命令将 pod 文件分配给集群kubectl.
$
kubectl create -f pytorch.yaml -
您应看到以下输出:
pod/pytorch-training created
-
检查状态。作业“pytorch-training”的名称位于 pytorch.yaml 文件中。它现在将显示在状态中。如果你正在运行任何其他测试或者之前运行过某项测试,它会出现在这个列表中。多次运行,直到看到状态更改为”
Running
”。$
kubectl get pods您应看到以下输出:
NAME READY STATUS RESTARTS AGE pytorch-training 0/1 Running 8 19m
-
检查日志以查看训练输出。
$
kubectl logs pytorch-training您应该可以看到类似于如下输出的内容:
Cloning into 'examples'... Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to ../data/MNIST/raw/train-images-idx3-ubyte.gz 9920512it [00:00, 40133996.38it/s] Extracting ../data/MNIST/raw/train-images-idx3-ubyte.gz to ../data/MNIST/raw Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to ../data/MNIST/raw/train-labels-idx1-ubyte.gz Extracting ../data/MNIST/raw/train-labels-idx1-ubyte.gz to ../data/MNIST/raw 32768it [00:00, 831315.84it/s] Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to ../data/MNIST/raw/t10k-images-idx3-ubyte.gz 1654784it [00:00, 13019129.43it/s] Extracting ../data/MNIST/raw/t10k-images-idx3-ubyte.gz to ../data/MNIST/raw Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to ../data/MNIST/raw/t10k-labels-idx1-ubyte.gz 8192it [00:00, 337197.38it/s] Extracting ../data/MNIST/raw/t10k-labels-idx1-ubyte.gz to ../data/MNIST/raw Processing... Done! Train Epoch: 1 [0/60000 (0%)] Loss: 2.300039 Train Epoch: 1 [640/60000 (1%)] Loss: 2.213470 Train Epoch: 1 [1280/60000 (2%)] Loss: 2.170460 Train Epoch: 1 [1920/60000 (3%)] Loss: 2.076699 Train Epoch: 1 [2560/60000 (4%)] Loss: 1.868078 Train Epoch: 1 [3200/60000 (5%)] Loss: 1.414199 Train Epoch: 1 [3840/60000 (6%)] Loss: 1.000870
-
查看日志以查看训练进度。你也可以继续查看”get pods” 刷新状态。当状态更改为 “” 时
Completed
“,培训工作已经完成。
请参阅清除了解有关在使用完集群后清理集群的信息。
后续步骤
要在 Amazon EKS 上学习基于 GPU 的推理,请使用 PyTorch 有关DDeep Learning Containers ContaPyTorch GPU 推理.
Amazon S3 插件适用于 PyTorch
Deep Learning Containers 包含一个插件,该插件使您可以将来自 Amazon S3 桶的数据用于 PyTorch 训练。
-
要开始在 Amazon EKS 上使用 Amazon S3 插件,请检查以确保您的集群实例具有对 Amazon S3 的完全访问权限。创建 IAM 角色它授予 Amazon S3 访问Amazon EC2 实例的权限,并将角色附加到您的实例。您可以使用亚马逊 S3FullAccess
要么亚马逊 S3ReadOnlyAccess 策略。 设置您的
AWS_REGION
带有您选择的区域的环境变量。export AWS_REGION=
us-east-1
-
为您的集群创建 pod 文件。pod 文件将提供有关集群应运行什么的说明。此 pod 文件将使用 PyTorch Amazon S3 插件用于访问示例 Amazon S3 数据集。
注意
你的 GPU 集群应该使用
p3.8xlarge
在本示例中,节点或更大。Open(打开)vi要么vim,然后复制并粘贴以下内容。将此文件另存为
s3plugin.yaml
。apiVersion: v1 kind: Pod metadata: name:
pytorch-s3-plugin
spec: restartPolicy: OnFailure containers: - name:pytorch-s3-plugin
image:763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.8.1-gpu-py36-cu111-ubuntu18.04-v1.7
command: - "/bin/sh" - "-c" args: - "git clone https://github.com/aws/amazon-s3-plugin-for-pytorch.git && python amazon-s3-plugin-for-pytorch/examples/s3_imagenet_example.py" env: - name: OMP_NUM_THREADS value: "36" - name: KMP_AFFINITY value: "granularity=fine,verbose,compact,1,0" - name: KMP_BLOCKTIME value: "1" -
使用以下命令将 pod 文件分配给集群kubectl.
$
kubectl create -f s3plugin.yaml -
检查状态。任务名称
pytorch-s3-plugin
这是在中指定的s3plugin.yaml
文件现在将出现在状态信息旁边。您可以多次运行以下命令,直到看到状态更改为”Running
。”$
kubectl get pods您应看到以下输出:
NAME READY STATUS RESTARTS AGE pytorch-s3-plugin 0/1 Running 8 19m
-
查看日志以了解更多详细信息。
$
kubectl logs pytorch-s3-plugin
有关更多信息,请参阅 。Amazon S3 插件适用于 PyTorch