Amazon Elastic Compute Cloud
Linux インスタンス用ユーザーガイド

Amazon EI の使用

インスタンスを起動して Amazon EI アクセラレーターに関連付けるには、まずセキュリティグループと AWS PrivateLink エンドポイントサービスを設定する必要があります。次に、Amazon EI ポリシーを使用してインスタンスロールを設定する必要があります。

Amazon EI のセキュリティグループの設定

新しい Amazon EI VPC エンドポイントのインバウンドおよびアウトバウンドトラフィック用と、起動する、関連する EC2 インスタンス用のアウトバウンドトラフィック用の 2 つのセキュリティグループが必要です。

Amazon EI のセキュリティグループを設定する

Amazon EI アクセラレーター (コンソール) のセキュリティグループを設定するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. 左側のナビゲーションペインで、[Security (セキュリティ)]、[Security Groups (セキュリティグループ)]、[Create a Security Group (セキュリティグループの作成)] の順に選択します。

  3. [Create Security Group (セキュリティグループの作成)] で、フィールド値を入力して [Yes, Create (はい、作成する)] を選択します。

  4. セキュリティグループの横にあるボックスを選択し、[Inbound Rules (インバウンドルール)] を選択します。

  5. [Type (タイプ)] に対して、任意のソースまたはインスタンスを関連付ける予定のセキュリティグループのポート 443 からのトラフィックのみを許可するには、[HTTPS] を選択します。

  6. [Save (保存)]、[Outbound Rules (アウトバウンドルール)] の順に選択します。

  7. [Type (タイプ)] の場合、ポート 443 の任意の宛先へのトラフィックを許可するには、[HTTPS] を選択します。

  8. [Save (保存)]、[Outbound Rules (アウトバウンドルール)] の順に選択します。

  9. 前のステップで作成したエンドポイントセキュリティグループへのトラフィックを制限するトラフィックまたは HTTPS (TCP ポート 443) へのトラフィックを任意の宛先に制限する送信ルールを追加します。

  10. [Save] を選択します。

Amazon EI アクセラレーター (AWS CLI) のセキュリティグループを設定するには

  1. create-security-group コマンドを使用してセキュリティグループを作成する。

    aws ec2 create-security-group --description insert a description for the security group --group-name assign a name for the security group [--vpc-id enter the VPC ID]
  2. authorize-security-group-ingress コマンドを使用して インバウンドルールを作成する。

    aws ec2 authorize-security-group-ingress --group-id insert the security group ID --group-name insert the name of the security group --protocol https --port 443
  3. authorize-security-group-egress コマンドを使用してアウトバウンドルールを作成する。

    aws ec2 authorize-security-group-egress --group-id insert the security group ID --group-name insert the name of the security group --protocol https --cidr 0.0.0.0/0
  4. create-security-group コマンドを使用してセキュリティグループを作成する。

    aws ec2 create-security-group --description insert a description for the security group --group-name assign a name for the security group [--vpc-id enter the VPC ID]

Amazon EI では、VPC エンドポイントを使用して、VPC のインスタンスを関連付けられた Amazon EI アクセラレーターとプライベートに接続します。アクセラレーターでインスタンスを起動する前に、Amazon EI の VPC エンドポイントを作成する必要があります。これは、VPC ごとに 1 回だけ実行する必要があります。詳細については、「インターフェイス VPC エンドポイント (AWS PrivateLink)」を参照してください。

AWS PrivateLink エンドポイントサービス (コンソール) を設定するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. 左ナビゲーションペインで、[Endpoints (エンドポイント)]、[Create Endpoint (エンドポイントの作成)] の順に選択します。

  3. [Service category (サービスカテゴリ)] で、[Find service by name (サービスを名前で検索)] を選択します。

  4. サービス名で、[com.amazonaws.us-west-2.elastic-inference.runtime] を選択します。

  5. [Subnets (サブネット)] で、エンドポイントが作成される先の 1 つ以上のアベイラビリティーゾーンを選択します。アクセラレーターを使用してインスタンスを起動する予定がある場合は、アベイラビリティーゾーンのサブネットを選択する必要があります。

  6. プライベート DNS 名を有効にして、エンドポイントのセキュリティグループを入力します。[Create endpoint (エンドポイントの作成)] を選択します。VPC エンドポイント ID をメモしておきます。これは後で使用します。

AWS PrivateLink エンドポイントサービス (AWS CLI) を設定するには

  • create-vpc-endpoint コマンドを使用し、VPC ID、VPC エンドポイント (インターフェイス) のタイプ、サービス名、エンドポイントを使用するサブネット、およびエンドポイントネットワークインターフェイスに関連付けるセキュリティグループを指定します。VPC エンドポイントのセキュリティグループの設定方法の詳細については、「Amazon EI のセキュリティグループの設定」を参照してください。

    aws ec2 create-vpc-endpoint --vpc-id vpc-insert VPC ID --vpc-endpoint-type Interface --service-name com.amazonaws.us-west-2.elastic-inference.runtime --subnet-id subnet-insert subnet --security-group-id sg-insert security group ID

Amazon EI ポリシーを使用してインスタンスロールを設定する

Amazon EI アクセラレーターを使用してインスタンスを起動するには、Amazon EI アクセラレーターでアクションを実行できる IAM ロールを指定する必要があります。

Amazon EI ポリシー (コンソール) を使用してインスタンスロールを設定するには

  1. https://console.aws.amazon.com/iam/ にある IAM コンソールを開きます。

  2. 左ナビゲーションペインで、[Policies (ポリシー)]、[Create Policy (ポリシーの作成)] の順に選択します。

  3. [JSON] を選択し、次のポリシーを貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "elastic-inference:Connect", "Resource": "*" } ] }
  4. [Review policy (ポリシーの確認)] を選択し、ec2-role-trust-policy.json などのポリシーの名前と説明を入力します。

  5. [Create policy] を選択します。

  6. 左ナビゲーションペインで [Roles (ロール)]、[Create role (ロールの作成)] の順に選択します。

  7. [AWS service (AWS のサービス)]、[EC2]、[次へ: アクセス許可] の順に選択します。

  8. 先ほど作成したポリシーの名前 (ec2-role-trust-policy.json) を選択します。[Next: Review (次へ: レビュー)] を選択します。

  9. ロール名を入力し、[Create Role (ロールの作成)] を選択します。

インスタンスを作成するときは、起動ウィザードの [Configure Instance Details (インスタンスの詳細の設定)] でロールを選択します。

Amazon EI ポリシー (AWS CLI) を使用してインスタンスロールを設定するには

  • Amazon EI ポリシーを使用してインスタンスロールを設定するには、「IAM ロールの作成」のステップに従います。インスタンスに次のポリシーを追加してください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "elastic-inference:Connect", "Resource": "*" } ] }

Amazon EI でインスタンスを起動する

サブネット内で起動するアクセラレーターを備えた EC2 インスタンスを設定できるようになりました。サポートされている Amazon EC2 インスタンスタイプと Amazon EI アクセラレーターサイズを選択できます。Amazon EI アクセラレーターは、現在の世代のすべてのインスタンスタイプで使用できます。次から選択する Amazon EI アクセラレーターのサイズは 3 つあります。

  • 1 GB のアクセラレーターメモリの eia1.medium

  • 2 GB のアクセラレーターメモリの eia1.large

  • 4 GB のアクセラレーターメモリの eia1.xlarge

Amazon EI (コンソール) を使用してインスタンスを起動するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. [インスタンスの作成] を選択します。

  3. [Choose an Amazon Machine Image (Amazon マシンイメージを選択する)] で、Amazon Linux または Ubuntu AMI を選択します。深層学習 AMI のいずれかをお勧めします。

  4. [Choose an Instance Type (インスタンスタイプの選択)] ページで、インスタンスのハードウェア設定を選択できます。

  5. [Next: Configure Instance Details] を選択します。

  6. [Configure Instance Details (インスタンスの詳細を設定)] ページで、設定を確認します。インスタンスのセキュリティグループと以前に設定した Amazon EI アクセラレーターを使用して VPC を使用していることを確認します。詳細については、「Amazon EI のセキュリティグループの設定」を参照してください。

  7. [IAM role (IAM ロール)] で、「Amazon EI ポリシーを使用してインスタンスロールを設定する」で作成した IAM ロールを選択します。

  8. [Add an Amazon EI accelerator (Amazon EI アクセラレーターの追加)] を選択します。

  9. Amazon EI アクセラレーターのサイズを選択します。オプションは eia1.mediumeia1.largeeia1.xlarge です。

  10. (オプション) ページの下部にある [Next (次へ)] を選択して、ストレージとタグを追加することができます。または、インスタンスウィザードで残りの設定ステップを完了させることもできます。

  11. インスタンスの設定を確認し、[Launch (起動)] を選択します。

  12. インスタンスに既存のキーペアを選択するか、新しいキーペアを作成するかどうかを確認するメッセージが表示されます。詳細については、「Amazon EC2 のキーペア」を参照してください。

    警告

    [Proceed without a key pair (キーペアなしで続行)] オプションは選択しないでください。キーペアを使用せずにインスタンスを起動すると、インスタンスに接続できません。

  13. キーペアを選択したら、[Launch Instances (インスタンスの起動)] を選択します。

  14. インスタンスを起動することを知らせる確認ページが表示されます。確認ページを閉じて、コンソールに戻るには、[View Instances (インスタンスの表示)] を選択します。

  15. [Instances (インスタンス)] に、起動のステータスが表示されます。インスタンスはすぐに起動します。インスタンスを起動した直後のステータスは pending です。インスタンスが起動されると、状態は running に変わります。

  16. インスタンスの準備ができて接続できるようになるまでには、数分かかる場合があります。インスタンスのステータスチェックが成功していることを確認します。この情報は、[ステータスチェック] 列で確認できます。

Amazon EI (AWS CLI) でインスタンスを起動するには

コマンドラインで Amazon EI を使用してインスタンスを起動するには、キーペア名、サブネット ID、セキュリティグループ ID、AMI ID、およびセクションで作成したインスタンスプロファイルの名前が必要ですAmazon EI ポリシーを使用してインスタンスロールを設定する。セキュリティグループ ID には、AWS PrivateLink エンドポイントを含むインスタンス用に作成した ID を使用します。詳細については、「Amazon EI のセキュリティグループの設定」を参照してください。AMI ID の詳細については、「Linux AMI を見つける」を参照してください。

  1. インスタンスとアクセラレーターを起動するには、run-instances コマンドを使用します。

    aws ec2 run-instances --image-id ami-insert image ID --instance-type for exmample, m5.large --subnet-id subnet-insert your subnet ID --elastic-inference-accelerator Type=for example, eia1.large --key-name enter your key pair name --security-group-ids sg-enter your security group ID --iam-instance-profile Name="enter the name of your accelerator profile"
  2. run-instances オペレーションが成功すると、出力は次のようになります。ElasticInferenceAcceleratorArn は Amazon EI アクセラレーターを識別します。

    "ElasticInferenceAcceleratorAssociations": [ { "ElasticInferenceAcceleratorArn": "arn:aws:elastic-inference:us-west-2:204044812891:elastic-inference-accelerator/eia-3e1de7c2f64a4de8b970c205e838af6b", "ElasticInferenceAcceleratorAssociationId": "eia-assoc-031f6f53ddcd5f260", "ElasticInferenceAcceleratorAssociationState": "associating", "ElasticInferenceAcceleratorAssociationTime": "2018-10-05T17:22:20.000Z" } ],

これで、提供された AMI で TensorFlow または MXNet のいずれかを使用してモデルを実行する準備が整いました。

Amazon EI で TensorFlow モデルを使用する

Amazon EI 対応バージョンの TensorFlow Serving では、TensorFlow コードを変更せずに Amazon EI アクセラレーターを使用できます。Amazon EI TensorFlow Serving は AWS Deep Learning AMI で使用できます。Amazon S3 バケットからバイナリをダウンロードして、独自の Amazon Linux または Ubuntu AMI または Docker コンテナにビルドすることもできます。

Amazon EI TensorFlow Serving を使用すると、標準の TensorFlow Serving インターフェイスは変更されません。唯一の違いは、エントリポイントが amazonei_tensorflow_model_server という別のバイナリであることです。

詳細については、「TensorFlow Serving.」を参照してください。

このリリースの Amazon EI TensorFlow Serving は、以下の深層学習ユースケースやネットワークアーキテクチャー (およびそれに類するもの) でパフォーマンスが向上し、コスト節約の利点をもたらすことがテストされています。

ユースケース ネットワークトポロジーの例

イメージの認識

Inception、ResNet、MVCNN

SSD、RCNN

ニューラル機械翻訳

GNMT

TensorFlow Serving の例

以下は、Amazon EI TensorFlow Serving を使用してインセプションモデルを実行する方法の例です。AMI またはカスタム AMI で実行する Amazon EI TensorFlow Serving をダウンロードする場合は、次の依存関係をインストールする必要があります。IAM 認証用 OpenSSL と TensorFlow Serving Python API PIP パッケージ。これらの依存関係は、AWS 深層学習 AMI にあらかじめインストールされています。

インセプションモデルによる推論の提供とテスト

  1. モデルのダウンロード

    curl -O https://s3-us-west-2.amazonaws.com/aws-tf-serving-ei-example/inception_example2.zip
  2. モデルを解凍します。

    unzip inception_example2.zip
  3. ハスキーの画像をダウンロードします。

    curl -O https://upload.wikimedia.org/wikipedia/commons/b/b5/Siberian_Husky_bi-eyed_Flickr.jpg
  4. AmazonEI_TensorFlow_Serving がインストールされているフォルダに移動し、次のコマンドを実行してサーバーを起動します。

    AmazonEI_TensorFlow_Serving_v1.11_v1 --model_name=inception --model_base_path=[directory with the unzipped model]/inception_example --port=9000
  5. サーバーがフォアグラウンドで実行されている間に、別のターミナルセッションを開始します。新しいターミナルを開き、任意のテキストエディタを使用して、次の内容のスクリプトを作成します。inception_client.py という名前を付けます。このスクリプトはイメージのファイル名をパラメータとして取り、事前に訓練されたモデルから予測結果を取得します。

    from __future__ import print_function import grpc import tensorflow as tf from PIL import Image import numpy as np import time from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_service_pb2_grpc tf.app.flags.DEFINE_string('server', 'localhost:9000', 'PredictionService host:port') tf.app.flags.DEFINE_string('image', '', 'path to image in JPEG format') FLAGS = tf.app.flags.FLAGS def main(_): channel = grpc.insecure_channel(FLAGS.server) stub = prediction_service_pb2_grpc.PredictionServiceStub(channel) # Send request with Image.open(FLAGS.image) as f: f.load() # See prediction_service.proto for gRPC request/response details. data = np.asarray(f, dtype = "float") data = np.resize(data, (224, 224, 3)) data = np.expand_dims(data, axis=0) request = predict_pb2.PredictRequest() request.model_spec.name = 'inception' request.inputs['Placeholder:0'].CopyFrom( tf.contrib.util.make_tensor_proto(data, shape=[1,224,224,3], dtype=tf.float32)) start = time.time() result = stub.Predict(request, 60.0) # 10 secs timeout stop = time.time() print("Inception prediction took %fs"%(stop - start)) print("Inception Client Passed") if __name__ == '__main__': tf.app.run()
  6. サーバーの場所、ポート、およびハスキー写真のファイル名をパラメータとして渡してスクリプトを実行します。

    python inception_client.py --server=localhost:9000 --image Siberian_Husky_bi-eyed_Flickr.jpg

チュートリアルや例については、「TensorFlow Python API」を参照してください。

その他の要件と考慮事項

サポートされているモデル形式

Amazon EI は TensorFlow Serving を介して TensorFlow saved_model 形式をサポートしています。

OpenSSL 要件

Amazon EI TensorFlow Serving には IAM 認証用の OpenSSL が必要です。OpenSSL は AWS Deep Learning AMI にあらかじめインストールされています。独自の AMI または Docker コンテナを構築する場合は、OpenSSL をインストールする必要があります。

  • Ubuntu 用の OpenSSL をインストールするコマンド:

    sudo apt-get install libssl-dev
  • Amazon Linux 用の OpenSSL をインストールするコマンド:

    sudo yum install openssl-devel

ウォームアップ

Amazon EI TensorFlow Serving は、モデルを事前ロードし、最初の推論リクエストの典型的な遅延を減らすために、ウォームアップ機能を提供します。Amazon Elastic Inference TensorFlow Serving は、「serving_default」署名定義のウォームアップのみをサポートします。

署名定義

複数の 署名定義 を使用すると、消費されたアクセラレーターメモリの量に乗算的な影響を与えることができます。推論呼び出しに複数の署名定義を使用する予定がある場合は、アプリケーションのアクセラレータータイプを決定する際にこれらのシナリオをテストする必要があります。

Amazon EI で MXNet モデルを使用する

Apache MXNet の Amazon Elastic Inference 対応バージョンでは、MXNet コードをほとんど変更しないで Amazon EI をシームレスに使用できます。次の MXNet API オペレーションで Amazon EI を使用できます。

  • MXNet Python Symbol API

  • MXNet Python モジュール API

Amazon EI 対応の Apache MXNet をインストールする

Amazon EI 対応の Apache MXNet は AWS Deep Learning AMI で利用できます。Amazon S3 には「pip」パッケージもありますので、独自の Amazon Linux または Ubuntu AMI または Docker コンテナにビルドすることができます。

MXNet Symbol API で Amazon EI を使用する

simple_bind() メソッドまたは bind() メソッドのいずれかの呼び出しで、コンテキストとして mx.eia() を渡します。詳細については、「Symbol API」を参照してください。

次の例では、simple_bind() メソッドと呼んでいます。

import mxnet as mx data = mx.sym.var('data', shape=(1,)) sym = mx.sym.exp(data) # Pass mx.eia() as context during simple bind operation executor = sym.simple_bind(ctx=mx.eia(), grad_req='null') for i in range(10): # Forward call is performed on remote accelerator executor.forward() print('Inference %d, output = %s' % (i, executor.outputs[0]))

次の例では、bind() メソッドと呼んでいます。

import mxnet as mx a = mx.sym.Variable('a') b = mx.sym.Variable('b') c = 2 * a + b # Even for execution of inference workloads on eia, # context for input ndarrays to be mx.cpu() a_data = mx.nd.array([1,2], ctx=mx.cpu()) b_data = mx.nd.array([2,3], ctx=mx.cpu()) # Then in the bind call, use the mx.eia() context e = c.bind(mx.eia(), {'a': a_data, 'b': b_data}) # Forward call is performed on remote accelerator e.forward()

次の例では、Symbol API から事前にトレーニング済みの実物モデル (Resnet-50) の bind() メソッドを呼び出します。

import mxnet as mx import numpy as np path='http://data.mxnet.io/models/imagenet/' [mx.test_utils.download(path+'resnet/50-layers/resnet-50-0000.params'), mx.test_utils.download(path+'resnet/50-layers/resnet-50-symbol.json'), mx.test_utils.download(path+'synset.txt')] ctx = mx.eia() with open('synset.txt', 'r') as f: labels = [l.rstrip() for l in f] sym, args, aux = mx.model.load_checkpoint('resnet-50', 0) fname = mx.test_utils.download('https://github.com/dmlc/web-data/blob/master/mxnet/doc/tutorials/python/predict_image/cat.jpg?raw=true') img = mx.image.imread(fname) # convert into format (batch, RGB, width, height) img = mx.image.imresize(img, 224, 224) # resize img = img.transpose((2, 0, 1)) # Channel first img = img.expand_dims(axis=0) # batchify img = img.astype(dtype='float32') args['data'] = img softmax = mx.nd.random_normal(shape=(1,)) args['softmax_label'] = softmax exe = sym.bind(ctx=ctx, args=args, aux_states=aux, grad_req='null') exe.forward() prob = exe.outputs[0].asnumpy() # print the top-5 prob = np.squeeze(prob) a = np.argsort(prob)[::-1] for i in a[0:5]: print('probability=%f, class=%s' %(prob[i], labels[i]))

MXNet モジュール API で Amazon EI を使用する

Module オブジェクトを作成するときは、コンテキストとして mx.eia() を渡します。詳細については、「モジュール API」を参照してください。

MXNet モジュール API を使用するには、次のコマンドを使用できます。

# Load saved model sym, arg_params, aux_params = mx.model.load_checkpoint(model_path, EPOCH_NUM) # Pass mx.eia() as context while creating Module object mod = mx.mod.Module(symbol=sym, context=mx.eia()) # Only for_training = False is supported for eia mod.bind(for_training=False, data_shapes=data_shape) mod.set_params(arg_params, aux_params) # Forward call is performed on remote accelerator mod.forward(data_batch)

次の例では、トレーニング済みの実物モデル (Resnet-152) でモジュール API で Amazon EI を使用しています。

import mxnet as mx import numpy as np from collections import namedtuple Batch = namedtuple('Batch', ['data']) path='http://data.mxnet.io/models/imagenet/' [mx.test_utils.download(path+'resnet/152-layers/resnet-152-0000.params'), mx.test_utils.download(path+'resnet/152-layers/resnet-152-symbol.json'), mx.test_utils.download(path+'synset.txt')] ctx = mx.eia() sym, arg_params, aux_params = mx.model.load_checkpoint('resnet-152', 0) mod = mx.mod.Module(symbol=sym, context=ctx, label_names=None) mod.bind(for_training=False, data_shapes=[('data', (1,3,224,224))], label_shapes=mod._label_shapes) mod.set_params(arg_params, aux_params, allow_missing=True) with open('synset.txt', 'r') as f: labels = [l.rstrip() for l in f] fname = mx.test_utils.download('https://github.com/dmlc/web-data/blob/master/mxnet/doc/tutorials/python/predict_image/cat.jpg?raw=true') img = mx.image.imread(fname) # convert into format (batch, RGB, width, height) img = mx.image.imresize(img, 224, 224) # resize img = img.transpose((2, 0, 1)) # Channel first img = img.expand_dims(axis=0) # batchify mod.forward(Batch([img])) prob = mod.get_outputs()[0].asnumpy() # print the top-5 prob = np.squeeze(prob) a = np.argsort(prob)[::-1] for i in a[0:5]: print('probability=%f, class=%s' %(prob[i], labels[i]))

このリリースの Amazon EI Apache MXNet は、以下の深層学習ユースケースやネットワークアーキテクチャー (およびそれに類するもの) でパフォーマンスが向上し、コスト節約の利点をもたらすことがテストされています。

ユースケース ネットワークトポロジーの例

イメージの認識

Inception、ResNet、VGG、ResNext

SSD 

              

テキスト読み上げ機能

WaveNet  

その他の要件と考慮事項

  • Amazon EI Apache MXNet は MKLDNN で構築されています。したがって、すべてのオペレーションは、mx.cpu() コンテキストを使用するときにサポートされます。mx.gpu() コンテキストはサポートされていないため、ローカル GPU でのオペレーションは実行できません。

  • Amazon EI は現在、MXNet 命令モードまたは MXNet Gluon API ではサポートされていません。

  • mx.eia() は、現在、MXNet コンテキストの全機能を提供していません。以下のようなものを書くことによって、Amazon EI アクセラレーターで NDArray のメモリを割り当てることはできません。x = mx.nd.array([[1, 2], [3, 4]], ctx=mx.eia()).これによりエラーが発生します。代わりに、x = mx.nd.array([[1, 2], [3, 4]], ctx=mx.cpu()) を使用する必要があります。MXNet は必要に応じてデータをアクセラレーターに自動的に転送します。

  • Amazon EI は推論のみをサポートしているため、backward() メソッドまたは for_training=True を使用して bind() を呼び出します。for_training のデフォルト値は、True であるため、for_training=False を設定してください。

Amazon EI で ONNX モデルを使用する

Amazon Elastic Inference によって拡張された Apache MXNet を使用して、推論のための Open Nural Network Exchange (ONNX) 形式モデルをデプロイできます。これにより、PyTorch、Chainer、CNTK、およびその他の ONNX 互換フレームワークを使用してモデルを構築しているユーザーは、モデルを ONNX にエクスポートすることで、効率的な Amazon Elastic Inference アクセラレーションを使用できます。

AWS Deep Learning AMI を使用して MXNet による ONNX モデルを割り当てる方法の詳細については、「ONNX モデルで推論の Apache MXNet モデルを使用する」を参照してください。 環境をアクティブにするには、次のコマンドを使用します: source activate amazonei_mxnet_p36.コンテキストを ctx = mx.eia() として設定します。