教養の海を泳ぐ

駆け出しエンジニア

AWS Elastic Inferenceのススメ

今年アルバイト業務でよくお世話になった、AWS Elastic Inferenceについて紹介します。

Elastic Inferenceとは?

ディープラーニングなどの重たいデータ処理を行う際に、従来はグラフィック描画に用いていたGPUを計算に用いるのが一般的になってきました。

AWSでもGPUリソースを利用することが可能ですが、コストがかかります。AWS EC2でGPUインスタンスを利用すると、そこそこのスペックでもあっという間にクレジットが消えますよね。

スポットで学習を行うだけなら良いかもしれませんが、ディープな推論を行うようなAPIサーバーを作る時に、GPUインスタンスの維持費はバカにならないものがあります。

そこでAWS Elactic Inferenceの出番です。EC2にGPUインスタンスではなくCPUインスタンスを利用しつつも、アクセラレーターであるElastic Inference(EI)をアタッチすることで、従来よりも低コストで高速な推論を行うことが可能になります(学習はできません)。GPUリソースを推論の時だけピンポイントに使えるようになるイメージです。

参考:
https://aws.amazon.com/jp/machine-learning/elastic-inference/features/

どうやって使うの?

EC2の起動ではCPUインスタンスを選びます。

いつもの設定の他にやることとしては、

・「Elastic Inference」の項目をチェック

・EI用のAMIロールを作成

・EI用のセキュリティグループを作成

・EI用のVPCエンドポイントを作成

の4つです。

tensorflow servingのsaved_modelを用意すれば、AMIの仮想環境に入って以下のようなコマンド一発で推論サーバーを起動できます。

 $ EI_VISIBLE_DEVICES=<ordinal number> amazonei_tensorflow_model_server --model_name=ssdresnet --model_base_path=/tmp/ssd_resnet50_v1_coco --port=9000

(model_base_pathには絶対パスを指定することに注意)

参考:
https://docs.aws.amazon.com/elastic-inference/latest/developerguide/ei-tensorflow-python.html

https://qiita.com/brownbro/items/00a135e6e7fefeda50a4

嬉しい点

GPUインスタンスよりも安価

AWS公式によれば、ディープラーニングの推論を実行するコストを最大 75% まで削減できるらしいです。EC2は従量課金なので、ずっとサーバーを起動しているとアイドル状態でもコストが嵩んでしまうため、これは嬉しいですよね。

・サーバー起動が手軽

サーバーのスクリプトを書かずに、モデルだけ用意すれば推論を行うことができます。推論サーバーの構築に時間をかけずに、他の本当にやりたいことに時間を割くことができますね。

参考:
https://aws.amazon.com/jp/machine-learning/elastic-inference/

嬉しくない点

・設定が煩雑

VPCの外側にあるためエンドポイントを作る必要があったり、HTTPSでの通信だったり、IAMポリシーが別途必要だったり、初めて使おうと思った時のハードルが高い気がします。

・Web上のナレッジが少ない

Qiitaですら2020年12月時点で該当タグの記事が3件しかないので、ちゃんと使おうとしても「何も分からない」状態になります。あまり情報が無いっていうことは、使う人が少ないんですかね...

・自動化がしづらい

インフラ構築の自動化は恐らくできるはずなのですが、CloudFormationやTerraformでサポートされているとは言い難いので、現状多分AWSの中の人にしか分からない感じだと思います。設定の煩雑さが自動化を困難にしている気がします。

・EKSで管理しづらい

一応EKSではサポートされていて起動テンプレートもあるのですが、EI付きのノードグループを既存のVPCに突っ込むとか、複雑なことをしようとすると方法が分からないという問題があります。

参考:
https://github.com/aws-samples/amazon-elastic-inference-eks

終わりに

簡単な内容ではありますが、Elastic Inferenceについてまとめてみました。

ディープな推論サーバーを手軽に構築したい場合に、導入を検討してみてはいかがでしょうか。