前回は、AWSのMLスタックの最下層に位置するサービス群「MLフレームワークとインフラストラクチャ」の全体像を解説しました。今回からは「AWS Deep Learning AMIs(以下、深層学習 AMI)」を解説していきます。

初回となる今回は、下記を理解していただくことを目標に解説をしていきます。

  • 深層学習 AMIの概要がわかる

深層学習 AMIとは

まず、「AMI」は「Amazon Machine Image(Amazonマシンイメージ)」の略であり、インスタンスの起動に必要なOSやボリュームなどの情報を持つファイルです。下図は、EC2インスタンス作成時のAMIの選択画面です。Linux(Amazon Linux、CentOS、Ubuntu など)、Windows Server、macOSなどさまざまなAMIが提供されています。

イメージ

AMIの例(EC2インスタンス作成のAMIの選択画面)

AMIには、AWSが公式に公開しているもののほかに、AWS Marketplaceに出品されたAMIや、企業もしくは個人が公開したコミュニティAMIなどがあります。簡単に利用できる一方で、信頼性やセキュリティに対する懸念もあるため、信頼できる公開元によるAMIかどうかを確認した上で利用してください。

さて、「深層学習 AMI」は、前回解説したMLフレームワークとインフラストラクチャで提供されるサービスの1つです(下図の赤枠)。MLフレームワークとインフラストラクチャでは、TensorFlowPyTorchApache MXNetなど人気の高いDeep Learning(深層学習)フレームワークとインタフェースが事前にインストールされたAMIが提供されています(下図の青枠)。

イメージ

AWSのMLスタックにおける深層学習 AMIの位置付け(AWS社の公開情報に基づいて作成

深層学習 AMIは、EC2インスタンスのマシンイメージとして利用されます。AWSではCPUやGPU、AWSが独自に開発したプロセッサ(AWS TrainiumAWS Inferentia)などを搭載した多彩なインスタンスタイプが用意されています(上図のオレンジ枠)。

これらのサービスを活用することで、利用者の業務要件・ワークロードに最適化された機械学習の実行環境を構築できます。

深層学習 AMIのメリット

深層学習 AMIを利用する主なメリットは、先述したような人気の高い深層学習フレームワークが事前にインストールされていることです。

本稿の執筆時点では、次の深層学習フレームワークが事前にインストールされています。

  • TensorFlow
  • TensorFlow 2
  • PyTorch
  • Apache MXNet
  • Keras

AWSで深層学習用のインスタンスをゼロから作成する場合、例えば以下のような作業が必要となります。

  • 利用したいOS(Amazon Linuxなど)が搭載されたAMIを選択してEC2インスタンスを作成する
  • 深層学習フレームワークやGPU向けのライブラリ(「NVIDIA CUDA(以下、CUDA)」や「NVIDIA cuDNN(以下、cuDNN)」など)を利用するための前提条件を調査して、必要に応じてインストールや設定を行う
  • 深層学習フレームワークやGPU向けのライブラリのインストールや設定を行う

環境構築作業では、手順通りに実施したつもりでも、前提条件の見落としや微妙な環境の違いによって想定外のトラブルが発生しがちです。深層学習 AMIではAWSがあらかじめ深層学習フレームワークやGPU向けのライブラリの導入作業を実施してくれているため、環境構築の手間やそれに伴うトラブルを回避することができます。

また、深層学習 AMIにはJupyter Notebook形式でサンプルプログラムやチュートリアルも用意されています。これらは、開発の迅速な立ち上げやプロジェクトメンバーの教育にも活用できます。

深層学習 AMIでサポートが終了した深層学習フレームワーク

新しいバージョンの深層学習 AMIでは、以下の深層学習フレームワークはインストールされていません。

  • Microsoft Cognitive Toolkit(CNTK)
  • Caffe
  • Caffe 2
  • Theano

また、開発者ガイドでは「Chainer」が事前にインストールされていると記載がありますが、本稿の執筆時に筆者が確認したところ、インストールされていませんでした。ChainerはPreferred Networksが開発した日本発の深層学習フレームワークです。2020年に新規開発が終了しているため、サポート対象外になったのだと考えられます。

開発を始める前に一度検証環境で利用を考えている深層学習 AMIを使ってインスタンスを作成し、目的の深層学習フレームワークやバージョンがインストールされているかを確認したほうが良いでしょう。

深層学習 AMIの選択基準

深層学習 AMIの選択基準としては、次の3つが考えられます。業務要件と照らし合わせながら適切なAMIを選択することが必要です。

  • Conda AMIとBase AMI
  • 深層学習 AMIのOS
  • CUDAのバージョン

これらの基準について、順に見ていきましょう。

Conda AMIとBase AMI

深層学習 AMIは大きく「Conda AMI」と「Base AMI」の2種類が提供されています。まずはこのどちらを採用するかがポイントとなるでしょう。

それぞれの特徴を下表に示します。

深層学習 AMIの種類 説明
Conda AMI TensorFlow、PyTorch、Apache MXNet などの深層学習フレームワークがプリインストールされているAMI。フレームワークごとに「Anaconda」の仮想環境が提供されており、自由に切り替えられる
Base AMI GPUを利用するために必要なNVIDIA CUDAとcuDNN、その依存関係にあるコンポーネントだけがインストールされているAMI。深層学習フレームワークはインストールされていないので、利用者が自由にインストールしてカスタマイズできる

表に示した通り、Base AMIには深層学習フレームワークがインストールされていません。深層学習フレームワークの種類やバージョンなどをきめ細やかに設定したい場合はBase AMIを利用して環境構築を行い、そうでない場合には Conda AMIを利用すると良いでしょう。

AnacondaはPythonやRのデータサイエンス向けのディストリビューションであり、「Conda」というツールを使ってパッケージ管理や環境管理を行えます。環境管理機能を利用すると、1つのインスタンスの中に複数の「仮想環境」を構築できます。

AnacondaをインストールしたPCやサーバには、複数の仮想環境を同居させることが可能です。仮想環境同士は互いに影響を及ぼさないので、1つのインスタンスの中に複数の深層学習フレームワークの種類やバージョンを組み合わせた仮想環境を作成でき、仮想環境ごとにPythonのバージョンを変えることもできます。

以下の図は、Conda AMIの仮想環境の例です。赤枠の1つ1つが仮想環境に相当します。例えば、「conda_pytorch_latest_p37」は「最新版のPyTorchとPython 3.7 がインストールされた仮想環境」を意味します。

イメージ

Conda AMIの仮想環境

深層学習 AMIのOS

AWS公式の深層学習 AMIとしては、Amazon Linux 2、Amazon Linux、Ubuntu 18.04、Ubuntu 16.04、Windows Server 2016が提供されており、いずれも東京リージョンで利用することができます。

前述の通り、Base AMIでは上記のOSイメージにCUDAとcuDNNがインストールされており、Conda AMIでは深層学習フレームワークが事前にインストールされたAnacondaの仮想環境が提供されています。

提供される仮想環境は、OSごとに異なります。開発者ガイドを基に導入状況をまとめた表は以下の通りです。ただし、アップデートが盛んに行われているため、開発者ガイドの更新が間に合っていない場合があります。下表は参考程度に留めて、開発を始める前に検証環境でインスタンスを作成して導入の状況を確認したほうが良いでしょう。

深層学習フレームワーク Amazon Linux 2 Ubuntu 18.04 Windows Server 2016
TensorFlow
TensorFlow 2
PyTorch
Apache MXNet
Keras

Amazon LinuxとUbuntu 16.04の利用

Amazon LinuxとUbuntu 16.04の深層学習 AMIも提供されていますが、前者は2020年12月31日、後者は2021年4月30日をもって標準サポートが終了しています。深層学習 AMIとしてはどちらも選択可能であるものの、セキュリティの観点からは利用が望ましくないため、Amazon Linux 2もしくはUbuntu 18.04を利用してください。

CUDAのバージョン

CUDAは「Compute Unified Device Architecture」の略であり、NVIDIAが開発したGPUによる並列コンピューティングプラットフォームおよびプログラミングモデルです。cuDNNはそのディープニューラルネットワーク(DNN)のライブラリです。

GPUは並列計算に優れています。CUDAおよびcuDNNを利用し、GPUを用いることで深層学習の計算を高速化することができます。

本稿の執筆時点で、CUDAは11.4、cuDNNは8.2が最新版として提供されています。開発者ガイドによると、深層学習 AMIでは、CUDAは10.0、10.1、10.2、cuDNNは7.5が事前インストールされていると記載されています。実際に上図で紹介した「conda_pytorch_latest_p37」には、CUDAは10.0、cuDNNは7.5がインストールされていました。CUDAやcuDNNのアップデートを行う場合は、検証環境で影響を確認した上で実施してください。

* * *

今回は深層学習 AMIの概要について解説しました。次回は深層学習 AMIの基本的な使い方について解説したいと思います。

著者紹介


菊地 貴彰 (KIKUCHI Takaaki)
株式会社NTTデータ システム技術本部 デジタル技術部
Agileプロフェッショナル担当

大学・大学院では、機械学習を専攻。ベイズ的枠組みを用いて、複数の遺伝子のデータから遺伝子どうしの相互作用ネットワークの推定に関する研究を行った。

株式会社NTTデータに入社後は、法人や金融のシステム開発のシステム基盤担当としてキャリアを積み、 現在はデジタル技術やAgile開発を専門に扱う組織でシステム開発全般を担当する。
2019, 2020 APN AWS Top Engineers, Japan APN Ambassador 2020, 2021に選出。

本連載の内容に対するご意見・ご質問はtwitter: @kikuchitk7まで。