Help us understand the problem. What is going on with this article?

AWSLambdaでPyTorch【EFS編】

はじめに

本記事はAWSのLambda上でPyTorchを動かして見ようという試みについてのまとめです。DeepLearningタグをつけていますが、学習については触れません。ゴールはLambda上で何かしらの推論を動かしてみるというところまでです。

ざっくりまとめ

  1. EFS使ってみる
  2. LambdaでPyTorch
  3. slackからも呼ぶ

の三本立てです。

背景

AWS Lambdaは非常に構築が楽で便利なのですが、様々な制限があります。機械学習をするときにとくに問題になりそうなのが、デプロイパッケージサイズと/tmp領域サイズです。

デプロイパッケージサイズと/tmp領域サイズ
デプロイパッケージサイズ
50 MB (zip 圧縮済み、直接アップロード)
250 MB (解凍、レイヤーを含む)
3 MB (コンソールエディタ)

/tmp ディレクトリのストレージ
512 MB

TensorFlow, PyTorchなどのライブラリも益々巨大化していきますしモデルファイルも大きくなってきています。Lambdaに搭載したいが容量オーバーで諦めるということが往々にしてあります。

2020年6月のアップデートでLambdaがAmazon Elastic File System(EFS)をマウントすることができるようになりました。
これにより以下のような恩恵があります。

  • /tmpで使用可能な容量(512MB)より大きいデータを処理またはロードする。
  • 頻繁に変更されるファイルの最新バージョンをロードする。
  • モデルやその他の依存関係をロードするためにストレージ容量を必要とするデータサイエンスパッケージを使用する。
  • 呼び出し間で関数の状態を保存する(一意のファイル名またはファイルシステムロックを使用)。
  • 大量の参照データへのアクセスを必要とするアプリケーションの構築。
  • レガシーアプリケーションをサーバーレスアーキテクチャに移行する。
  • ファイルシステムアクセス用に設計されたデータ集約型ワークロードとの相互作用。
  • ファイルを部分的に更新する(同時アクセス用のファイルシステムロックを使用)。
  • アトミック操作でファイルシステム内のディレクトリとそのすべてのコンテンツを移動する。

特に今回の場合は、モデルやその他の依存関係をロードするためにストレージ容量を必要とするデータサイエンスパッケージを使用する。が該当するでしょうか。

EFSを用意

EFSの準備は、先行事例を大いに参考にさせてもらいます。

EFSの作成とアクセスポイントの準備

PyTorch用のEC2を準備

Python3.7を使用するつもりなので、AmazonLinuxを指定します。(Python3.8ならAmazonLinux2を利用しましょう。)
Python2系しか入っていないのでPython3.7をインストールします。この記事はPython3.8用ですがPython3.7に読み替えておきます。

EFSをEC2にマウント

EFSのマウントにEFSマウントヘルパーが必要なので、

$ sudo yum install -y amazon-efs-utils

で入れておきます。

EFSのセキュリティーグループにEC2のセキュリティグループを追加しておきます。
インバウンドルールにタイプをNFSとプロトコルにTCP、ポート範囲2049を指定してソースにEC2インスタンスのセキュリティグループを指定しておきます。

EC2にログインして以下のコマンドを叩きましょう。

$ sudo mount -t efs [ファイルシステムID]:/ /mnt

EC2で必要なライブラリをインストール

必要なライブラリをインストールします。

$ sudo pip3 install torch==1.6.0+cpu torchvision==0.7.0+cpu -f https://download.pytorch.org/whl/torch_stable.html

これでEFSにPyTorchがインストールできたので、次回Lambdaから読み込みます。(Lambdaでimport編)

myonoym
glpgs
AIR DesignというB2Bサービスを運営しています。機械学習でデザインを空気のように扱える世界を目指しています。
https://www.glpgs.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした