GPU 训练 - Amazon 深度学习容器
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

GPU 训练

本部分用于在基于 GPU 的集群上进行培训。

有关Deep Learning Containers 完整列表,请参阅Deep Learning Containers 映像. 有关使用英特尔数学内核库 (MKL) 时的最佳配置设置的提示,请参阅AmazonDeep Learning Containers 英特尔数学核心库 (MKL) 建议.

Apache MXNet(孵化中)GPU 训练

本教程指导您在单节点 GPU 集群上使用 Apache MXNet(孵化)进行训练。

  1. 为您的集群创建 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"]
  2. 使用以下命令将 pod 文件分配给集群kubectl.

    $ kubectl create -f mxnet.yaml
  3. 您应看到以下输出:

    pod/mxnet-training created
  4. 检查状态。任务“tensorflow-training”的名称位于 tf.yaml 文件中。它现在将显示在状态中。如果您正在运行任何其他测试或之前已运行某些内容,它将显示在此列表中。多次运行,直到看到状态更改为”Running”。

    $ kubectl get pods

    您应看到以下输出:

    NAME READY STATUS RESTARTS AGE mxnet-training 0/1 Running 8 19m
  5. 检查日志以查看训练输出。

    $ 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 ...
  6. 查看日志以查看训练进度。你也可以继续查看”get pods” 刷新状态。当状态更改为 “” 时Completed”,培训工作已经完成。

后续步骤

要在 Amazon EKS 上使用带有Deep Learning Containers 的 MXNet 学习基于 GPU 的推理,请参阅Apache MxNet(孵化)GPU 推理.

TensorFlow GU 训练

本教程指导你进行训练 TensorFlow 您的单节点 GPU 集群上的模型。

  1. 为您的集群创建 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
  2. 使用以下命令将 pod 文件分配给集群kubectl.

    $ kubectl create -f tf.yaml
  3. 您应看到以下输出:

    pod/tensorflow-training created
  4. 检查状态。任务“tensorflow-training”的名称位于 tf.yaml 文件中。它现在将显示在状态中。如果你正在运行任何其他测试或者之前运行过某项测试,它会出现在这个列表中。多次运行,直到看到状态更改为”Running”。

    $ kubectl get pods

    您应看到以下输出:

    NAME READY STATUS RESTARTS AGE tensorflow-training 0/1 Running 8 19m
  5. 检查日志以查看训练输出。

    $ 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 ...
  6. 查看日志以查看训练进度。你也可以继续查看”get pods” 刷新状态。当状态更改为 “” 时Completed”,培训工作已经完成。

后续步骤

要在 Amazon EKS 上学习基于 GPU 的推理,请使用 TensorFlow 有关DDeep Learning Containers ContaTensorFlow GPU 推理.

PyTorch GU 训练

本教程指导您使用以下方法进行训练 PyTorch 在你的单节点 GPU 集群上。

  1. 为您的集群创建 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"
  2. 使用以下命令将 pod 文件分配给集群kubectl.

    $ kubectl create -f pytorch.yaml
  3. 您应看到以下输出:

    pod/pytorch-training created
  4. 检查状态。作业“pytorch-training”的名称位于 pytorch.yaml 文件中。它现在将显示在状态中。如果你正在运行任何其他测试或者之前运行过某项测试,它会出现在这个列表中。多次运行,直到看到状态更改为”Running”。

    $ kubectl get pods

    您应看到以下输出:

    NAME READY STATUS RESTARTS AGE pytorch-training 0/1 Running 8 19m
  5. 检查日志以查看训练输出。

    $ 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
  6. 查看日志以查看训练进度。你也可以继续查看”get pods” 刷新状态。当状态更改为 “” 时Completed“,培训工作已经完成。

请参阅清除了解有关在使用完集群后清理集群的信息。

后续步骤

要在 Amazon EKS 上学习基于 GPU 的推理,请使用 PyTorch 有关DDeep Learning Containers ContaPyTorch GPU 推理.

Amazon S3 插件适用于 PyTorch

Deep Learning Containers 包含一个插件,该插件使您可以将来自 Amazon S3 桶的数据用于 PyTorch 训练。

  1. 要开始在 Amazon EKS 上使用 Amazon S3 插件,请检查以确保您的集群实例具有对 Amazon S3 的完全访问权限。创建 IAM 角色它授予 Amazon S3 访问Amazon EC2 实例的权限,并将角色附加到您的实例。您可以使用亚马逊 S3FullAccess要么亚马逊 S3ReadOnlyAccess策略。

  2. 设置您的AWS_REGION带有您选择的区域的环境变量。

    export AWS_REGION=us-east-1
  3. 为您的集群创建 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"
  4. 使用以下命令将 pod 文件分配给集群kubectl.

    $ kubectl create -f s3plugin.yaml
  5. 检查状态。任务名称pytorch-s3-plugin这是在中指定的s3plugin.yaml文件现在将出现在状态信息旁边。您可以多次运行以下命令,直到看到状态更改为”Running。”

    $ kubectl get pods

    您应看到以下输出:

    NAME READY STATUS RESTARTS AGE pytorch-s3-plugin 0/1 Running 8 19m
  6. 查看日志以了解更多详细信息。

    $ kubectl logs pytorch-s3-plugin

有关更多信息,请参阅 。Amazon S3 插件适用于 PyTorch存储库。