AWS Startup ブログ
[開催報告] AWS 深層学習アクセラレータ — Amazon EC2 Inf1 インスタンスハンズオン
こんにちは、スタートアップソリューションアーキテクトの針原 (Twitter: @_hariby) です。スタートアップ企業向けに「AWS 深層学習アクセラレータ」と題し、深層学習ワークロード向けの GPU や専用チップに特化したオンラインイベントを開催しました。イベントの後半では参加者の方に Amazon EC2 Inf1 インスタンスハンズオンとして AWS Inferentia を利用した TensorFlow, PyTorch モデルの推論を実際に試して頂きました。僕自身も今回のハンズオンイベントを通して AWS Inferentia への理解が深まったので、その内容をブログにまとめます。
こんな方におすすめ:
- AWS 上で深層学習ワークロードを動かしていて、トレーニング・推論に使うインスタンスの選択肢が知りたい
- AWS Trainium (プレビュー中), AWS Inferentia など、深層学習ワークロードに特化したチップに興味がある
- 深層学習ワークロードのコストパフォーマンスを最適化し、洗練された深層学習パイプラインに組み込みたい
Agenda
- AWS 上で深層学習ワークロードを動かすための選択肢
- 独自設計チップ AWS Inferentia と AWS Trainium による 機械学習の高速化とコスト最適化
- Inf1 インスタンスハンズオン (日本語)
- TensorFlow ResNet-50 モデルによる画像分類 on EC2
- Hugging Face (PyTorch) BERT モデルによる自然言語処理 on EC2
- Hugging Face (PyTorch) DistilBERT モデルによる自然言語処理 on SageMaker
Presentation
AWS 上で深層学習ワークロードを動かすための選択肢
Slides: https://speakerdeck.com/hariby/aws-deep-learning-accelerator-instances
スタートアップのお客さまは、AWS 上で様々なユースケース・モデル規模で機械学習・深層学習のワークロードを稼働させています。AWS では多様なニーズに対応するため、GPU はもちろん、機械学習のトレーニング・推論のための専用チップまで多彩な深層学習アクセラレータを搭載した EC2 インスタンスを提供しています。ワークロードに応じて最適な選択肢を選ぶためには、どのような GPU インスタンスがあるか、深層学習アクセラレータ (専用チップ) はどのようなものがあるか、を整理して理解する必要があります。このセッションでは、NVIDIA GPU アーキテクチャとそれぞれの世代の GPU を搭載した EC2 インスタンスファミリー (P4d/P3/P3dn/G5/G5g/G4dn) の説明、AWS が機械学習のトレーニングと推論ワークロード向けに設計したカスタムチップ AWS Trainium, AWS Inferentia を搭載した Amazon EC2 Trn1 (プレビュー中), Inf1 インスタンス、その他 Habana Gaudi アクセラレータを搭載した DL1 インスタンスなどを紹介しました。
独自設計チップ AWS Inferentia と AWS Trainium による機械学習の高速化とコスト最適化
Slides: https://speakerdeck.com/htokoyo/amazon-ec2-inf1-instance-hands-on
お客さまが AWS 上で深層学習ワークロードを運用する際、AWS が独自設計した AWS Trainium (プレビュー中), AWS Inferentia を活用頂くと非常に高いコストパフォーマンスを得ることができます。Trainium/Inferentia は、AWS の半導体部門で、AWS Nitro System や AWS Graviton 64bit Arm プロセッサを開発した Annapurna Labs (アンナプルナラボ) により開発されました。Amazon EC2 Inf1 インスタンスは AWS Inferentia チップを搭載し、推論ワークロードにおいて GPU インスタンスとの比較で最大2.3倍のスループット向上、最大70%の低価格を実現することが可能です。Amazon EC2 Trn1 インスタンス (プレビュー中) は、AWS Trainium チップを搭載し、深層学習モデルのトレーニングワークロードにおいて、クラウド上で最大のコストパフォーマンスを実現します。
なお、同様のセッションが AWS Innovate AI/ML Edition でオンデマンド配信されているので、今回イベントに参加できなかった方はセッション T2-5 でご覧いただけます。
Inf1 Instances Hands-on
後半のハンズオンワークショップでは、Amazon EC2 Inf1 Workshop (日本語) のコンテンツを用いて、EC2 Inf1 (inf1.2xlarge) インスタンスで TensorFlow ResNet-50 モデルによる画像分類と、Hugging Face (PyTorch) BERT モデルによる自然言語処理を試しました。また、SageMaker Studio Notebook から SageMaker Neo を呼び出して Inf1 (ml.inf1) にデプロイする方法も紹介しました。
TensorFlow ResNet-50 モデルによる画像分類 on EC2
事前トレーニング済みの画像分類モデル ResNet-50 を用いて、CPU での推論、SavedModel 形式でのコンパイルと Inferentia での推論、それらのパフォーマンス比較を行いました。また、Inferentia の性能を引き出すよう、neuron-top
コマンドで Neuron Cores の利用率を確認したり、推論のバッチサイズを 1, 2, 4, … と変えてパフォーマンスを計測しました。Inferentia 用にコンパイルされたモデルを、TensorFlow Serving と同じ API の Neuron TensorFlow Serving でサービングすることも可能です。
Hugging Face (PyTorch) BERT モデルによる自然言語処理 on EC2
こちらでは、Hugging Face で実装された BERT (bert-base-cased-finetuned-mrpc
) モデルを用いて文章ペアのパラフレーズ分類を行いました。torch.jit.trace
と同様の API である torch.neuron.trace
によるモデルのコンパイル (PyTorch の TorchScript 形式) と、CPU, Inferentia での推論を実行しました。こちらも Inferentia での推論性能を向上させるためバッチサイズを変化させたり、Inferentia の4つの Neuron Cores を使った Data Parallel の紹介、TorchServe によるモデルのサービングを試したりしました。
Hugging Face (PyTorch) DistilBERT モデルによる自然言語処理 on SageMaker
Amazon SageMaker は Inf1 をサポートし、リアルタイム推論用のモデルデプロイ時に Inf1 を指定できます。SageMaker Neo でターゲットデバイスに ml_inf1
を選択すると、Inferentia 向けモデルコンパイルを簡単に行うことができます。こちらのコンテンツは、SageMaker Studio から Hugging Face DistilBERT モデルをコンパイル・デプロイする Notebook (ml.t3.medium, Data Science Kernel) を紹介しました。SageMaker から Inf1 インスタンスを利用することで、簡単に機械学習パイプラインに Inferentia を組み込むことが可能です。
まとめ
当日イベントに参加頂けなかった方にも伝わるよう文章で内容をまとめてみましたが、興味をお持ち頂けたでしょうか?AWS Inferentia, AWS Trainium をはじめた深層学習のためのアクセラレータ (専用チップ) は、非常に面白い技術分野なので、高い技術力をお持ちのスタートアップの皆様にはぜひ活用して頂きたいと感じています。Inferentia は現時点で東京リージョン含む23リージョンで既に利用可能ですし、Trainium は2022年前半での一般提供に向けてプレビュー受付中です。ぜひ、コストパーフォマンスが最適化された機械学習環境を構築し、クラウド上での深層学習ワークロードを楽しんでください。
著者について
針原 佳貴 (Yoshitaka Haribara, Ph.D.) は AWS Japan のスタートアップソリューションアーキテクトです。日本のスタートアップのお客さまの機械学習ワークロードを支援しています。余暇はドラムのレコーディングを楽しんでいます。