Deep Learning AMIを使ってみた(失敗)

こんにちは。hacknoteのr.katoです。

Deep Learning AMIとはで紹介した、Deep Learning AMI(DLAMI)を使ってみました。

とはいえ、推奨環境なんかで動かしたら、いくら請求されるかわかったもんじゃありません。

AMIだし、インスタンスの作成とmnistぐらいt2.microでいけるっしょということで、実際にやってみました。
まあ、失敗したんですけどね…

やったこと

AMI IDが ami-07729b5941107618c のAMIを使って、インスタンスをいつもどおりの方法で作成しました。

そして、ユーザー名が ubuntu でログインしました。

すると…

=============================================================================
       __|  __|_  )
       _|  (     /   Deep Learning AMI (Ubuntu 18.04) Version 26.0
      ___|\___|___|
=============================================================================

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-1054-aws x86_64v)

Please use one of the following commands to start the required environment with the framework of your choice:
for MXNet(+Keras2) with Python3 (CUDA 10.1 and Intel MKL-DNN) ____________________________________ source activate mxnet_p36
for MXNet(+Keras2) with Python2 (CUDA 10.1 and Intel MKL-DNN) ____________________________________ source activate mxnet_p27
for MXNet(+AWS Neuron) with Python3 ___________________________________________________ source activate aws_neuron_mxnet_p36
for TensorFlow(+Keras2) with Python3 (CUDA 10.0 and Intel MKL-DNN) __________________________ source activate tensorflow_p36
for TensorFlow(+Keras2) with Python2 (CUDA 10.0 and Intel MKL-DNN) __________________________ source activate tensorflow_p27
for Tensorflow(+AWS Neuron) with Python3 _________________________________________ source activate aws_neuron_tensorflow_p36
for TensorFlow 2(+Keras2) with Python3 (CUDA 10.0 and Intel MKL-DNN) _______________________ source activate tensorflow2_p36
for TensorFlow 2(+Keras2) with Python2 (CUDA 10.0 and Intel MKL-DNN) _______________________ source activate tensorflow2_p27
for PyTorch with Python3 (CUDA 10.1 and Intel MKL) _____________________________________________ source activate pytorch_p36
for PyTorch with Python2 (CUDA 10.1 and Intel MKL) _____________________________________________ source activate pytorch_p27
for Chainer with Python2 (CUDA 10.0 and Intel iDeep) ___________________________________________ source activate chainer_p27
for Chainer with Python3 (CUDA 10.0 and Intel iDeep) ___________________________________________ source activate chainer_p36
for base Python2 (CUDA 10.0) _______________________________________________________________________ source activate python2
for base Python3 (CUDA 10.0) _______________________________________________________________________ source activate python3

Official Conda User Guide: https://docs.conda.io/projects/conda/en/latest/user-guide/
AWS Deep Learning AMI Homepage: https://aws.amazon.com/machine-learning/amis/
Developer Guide and Release Notes: https://docs.aws.amazon.com/dlami/latest/devguide/what-is-dlami.html
Support: https://forums.aws.amazon.com/forum.jspa?forumID=263
For a fully managed experience, check out Amazon SageMaker at https://aws.amazon.com/sagemaker
When using INF1 type instances, please update regularly using the instructions at: https://github.com/aws/aws-neuron-sdk/tree/master/release-notes
=============================================================================

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
-以下略-

と表示されました。
Anacondaの仮想環境切り替えのコマンドを最初に表示してくれるのは非常に便利です。

ひとまず、 for TensorFlow 2(+Keras2) with Python3 (CUDA 10.0 and Intel MKL-DNN) を使ってみようと source activate tensorflow2_p36 を実行しました。

すると…

WARNING: First activation might take some time (1+ min).
Installing TensorFlow optimized for your Amazon EC2 instance......
Env where framework will be re-installed: tensorflow2_p36
Instance t2.micro is identified as a CPU instance, uninstalling tensorflow-gpu, installing optimized version of the Deep Learning framework.
Installing Tensorflow optimized for your Amazon EC2 instance......
Env where framework will be re-installed: tensorflow2_p36
WARNING: First activation might take some time (1+ min).

…いやいやいや、ちょっと待って

初回のアクティベートには少々時間がかかる!?
t2.microはCPUインスタンスだから云々!?

その結果、一瞬でクレジットが尽きました
CPU使用率もすごかったorz…
クレジットが尽きたこともあり、初回のsource activateが終了する前に退勤時間が来てしまいました。

しかも、途中で容量不足が原因のメモリエラーしてるし… まあ1GBぐらいしかないから当たり前だけどさ

File "/home/ubuntu/anaconda3/envs/tensorflow2_p36/lib/python3.6/sre_compile.py", line 354, in _optimize_charset
    charmap = bytes(charmap) # should be hashable
MemoryError
Traceback (most recent call last):
  File "<frozen importlib._bootstrap>", line 888, in _find_spec
AttributeError: '_SixMetaPathImporter' object has no attribute 'find_spec'

During handling of the above exception, another exception occurred:

原因

今回、失敗した原因はAnaconda仮想環境の初回アクティベート時にライブラリなどのインストールが行われることを知らなかったためです。

AMIなので全て含まれていてアクティベートしたらそのまま使えると思っていましたが実際には違いました。

次回、可能ならもっと高性能なインスタンスで検証してみようと思います。

2020年1月9日 追記

C4.largeインスタンスにDeepLearningeAMIを入れて使ってみました!
Deep Learning AMIをC4.largeで使ってみた