

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ARM64 DLAMI
<a name="tutorial-arm64"></a>

AWS ARM64 GPU DLAMIsは、深層学習ワークロードに高いパフォーマンスとコスト効率を提供するように設計されています。具体的には、G5g インスタンスタイプには Arm64-based [AWS Graviton2 プロセッサ](https://aws.amazon.com/ec2/graviton/)が搭載されています。これは、 によってゼロから構築 AWS され、お客様がクラウドでワークロードを実行する方法に最適化されています。 AWS ARM64 GPU DLAMIs は、Docker、NVIDIA Docker、NVIDIA ドライバー、CUDA、CuDNN、NCCL、および TensorFlow や PyTorch などの一般的な機械学習フレームワークで事前設定されています。

G5g インスタンスタイプでは、Graviton2 の価格およびパフォーマンスの利点を活用することで、GPU アクセラレーション機能を備えた x86 ベースのインスタンスと比較して、GPU アクセラレーションを利用した深層学習モデルを大幅に低いコストでデプロイできます。

## ARM64 DLAMI を選択する
<a name="tutorial-arm64-select-dlami"></a>

選択した ARM64 DLAMI を備えた [G5g インスタンス](https://aws.amazon.com/ec2/instance-types/g5g/)を起動します。

DLAMI を起動するステップバイステップの手順については、[DLAMI を起動および設定する](https://docs.aws.amazon.com/dlami/latest/devguide/launch-config.html)を参照してください。

最新の ARM64 DLAMI のリストについては、[DLAMI のリリースノート](https://docs.aws.amazon.com/dlami/latest/devguide/appendix-ami-release-notes.html)を参照してください。

## 使用を開始する
<a name="tutorial-arm64-get-started"></a>

以下のトピックでは、ARM64 DLAMI の使用を開始する方法について説明します。

**Topics**
+ [ARM64 DLAMI を選択する](#tutorial-arm64-select-dlami)
+ [使用を開始する](#tutorial-arm64-get-started)
+ [ARM64 GPU PyTorch DLAMI の使用](tutorial-arm64-pytorch.md)

# ARM64 GPU PyTorch DLAMI の使用
<a name="tutorial-arm64-pytorch"></a>

 AWS Deep Learning AMIs は Arm64 プロセッサベースの GPUs で使用できるようになり、PyTorch 用に最適化されています。ARM64 GPU PyTorch DLAMI には、深層学習のトレーニングと推論のユースケース用に [PyTorch](https://aws.amazon.com/pytorch)、[TorchVision](https://pytorch.org/vision/stable/index.html)、および[TorchServe](https://pytorch.org/serve/) で事前設定された Python 環境が含まれています。

**Topics**
+ [PyTorch Python 環境を確認する](#tutorial-arm64-pytorch-environment)
+ [PyTorch でトレーニングサンプルを実行する](#tutorial-arm64-pytorch-training)
+ [PyTorch で推論サンプルを実行する](#tutorial-arm64-pytorch-inference)

## PyTorch Python 環境を確認する
<a name="tutorial-arm64-pytorch-environment"></a>

G5g インスタンスに接続し、次のコマンドを使用して Base Conda 環境を有効化します。

```
source activate base
```

コマンドプロンプトは、PyTorch、TorchVision、およびその他のライブラリが含まれた Base Conda 環境で作業していることが示されます。

```
(base) $
```

PyTorch 環境のデフォルトのツールパスを確認します。

```
(base) $ which python
(base) $ which pip
(base) $ which conda
(base) $ which mamba
>>> import torch, torchvision
>>> torch.__version__
>>> torchvision.__version__
>>> v = torch.autograd.Variable(torch.randn(10, 3, 224, 224))
>>> v = torch.autograd.Variable(torch.randn(10, 3, 224, 224)).cuda()
>>> assert isinstance(v, torch.Tensor)
```

## PyTorch でトレーニングサンプルを実行する
<a name="tutorial-arm64-pytorch-training"></a>

サンプル MNIST トレーニングジョブを実行します。

```
git clone https://github.com/pytorch/examples.git
cd examples/mnist
python main.py
```

出力は以下のようになります。

```
...
Train Epoch: 14 [56320/60000 (94%)]    Loss: 0.021424
Train Epoch: 14 [56960/60000 (95%)]    Loss: 0.023695
Train Epoch: 14 [57600/60000 (96%)]    Loss: 0.001973
Train Epoch: 14 [58240/60000 (97%)]    Loss: 0.007121
Train Epoch: 14 [58880/60000 (98%)]    Loss: 0.003717
Train Epoch: 14 [59520/60000 (99%)]    Loss: 0.001729
Test set: Average loss: 0.0275, Accuracy: 9916/10000 (99%)
```

## PyTorch で推論サンプルを実行する
<a name="tutorial-arm64-pytorch-inference"></a>

次のコマンドを使用して、事前トレーニング済みの densenet161 モデルをダウンロードし、TorchServe を使用して推論を実行します。

```
# Set up TorchServe
cd $HOME
git clone https://github.com/pytorch/serve.git
mkdir -p serve/model_store
cd serve

# Download a pre-trained densenet161 model
wget https://download.pytorch.org/models/densenet161-8d451a50.pth >/dev/null

# Save the model using torch-model-archiver
torch-model-archiver --model-name densenet161 \
    --version 1.0 \
    --model-file examples/image_classifier/densenet_161/model.py \
    --serialized-file densenet161-8d451a50.pth \
    --handler image_classifier \
    --extra-files examples/image_classifier/index_to_name.json  \
    --export-path model_store 

# Start the model server
torchserve --start --no-config-snapshots \
    --model-store model_store \
    --models densenet161=densenet161.mar &> torchserve.log

# Wait for the model server to start
sleep 30

# Run a prediction request
curl http://127.0.0.1:8080/predictions/densenet161 -T examples/image_classifier/kitten.jpg
```

出力は以下のようになります。

```
{
  "tiger_cat": 0.4693363308906555,
  "tabby": 0.4633873701095581,
  "Egyptian_cat": 0.06456123292446136,
  "lynx": 0.0012828150065615773,
  "plastic_bag": 0.00023322898778133094
}
```

次のコマンドを使用して densenet161 モデルの登録を解除し、サーバーを停止します。

```
curl -X DELETE http://localhost:8081/models/densenet161/1.0
torchserve --stop
```

出力は以下のようになります。

```
{
  "status": "Model \"densenet161\" unregistered"
}
TorchServe has stopped.
```