AWSでARMを使ってみる
はじめに
偶々AdventCalenderを見ていたら12/5の分が余っていたためエントリして急いで作りました。
会議中ですが、爆速で執筆します。
2018年11月にAWSでARMが使えるインスタンスの発表がありました。
https://aws.amazon.com/jp/blogs/news/new-ec2-instances-a1-powered-by-arm-based-aws-graviton-processors/
こういう機能のようです。
https://aws.amazon.com/jp/ec2/instance-types/a1/
ARMって耳にはしますが使ったことがないなー。ということでとりあえず使ってみます。
料金
オハイオの料金はこんな感じ。
a1.medium 1 該当なし 2 GiB EBS のみ 0.0255USD/時間
a1.large 2 該当なし 4 GiB EBS のみ 0.051USD/時間
a1.xlarge 4 該当なし 8 GiB EBS のみ 0.102USD/時間
a1.2xlarge 8 該当なし 16 GiB EBS のみ 0.204USD/時間
a1.4xlarge 16 該当なし 32 GiB EBS のみ 0.408USD/時間
a1.metal 16 該当なし 32 GiB EBS のみ 0.408USD/時間
t3と比較をしてみましたが、そんな高くない気がしました。
medium同士で比較をするとArmのほうが安いですね。
メモリの量で比較すると、Armのほうが若干高いようです。
t3.nano 2 変数 0.5 GiB EBS のみ 0.0052USD/時間
t3.micro 2 変数 1 GiB EBS のみ 0.0104USD/時間
t3.small 2 変数 2 GiB EBS のみ 0.0208USD/時間
t3.medium 2 変数 4 GiB EBS のみ 0.0416USD/時間
配備をしてみる
通常のEC2のAMIは使えないようです。
↓をみると、Arm 用のイメージが準備されているようでした。 ここからubuntu 18のイメージを選択し配備しました、
触ってみる
インスタンスを払い出すと通常のEC2インスタンスと同様に操作できるようです。
とりあえずログインしてみます。
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-1048-aws aarch64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Thu Dec 5 08:18:24 UTC 2019
System load: 0.09 Processes: 124
Usage of /: 0.2% of 484.35GB Users logged in: 0
Memory usage: 4% IP address for ens5: 10.10.242.100
Swap usage: 0%
0 packages can be updated.
0 updates are security updates.
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.
適当にpythonを動かしてみましたが動きました。
$ python3
Python 3.6.8 (default, Aug 20 2019, 17:12:48)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("watashi ha maloney")
watashi ha maloney
>>> quit()
docker入れてーと進めたいところですが、dockerのインストール手順などは色々投稿されていたようなので、うーんいったい何をすればいいだろう。とりあえずjupyter とよくあるやつをいきなり入れてみます。
$ sudo apt update
$ sudo apt install python3-dev
$ sudo apt install python3-pip
$ pip3 install jupyterlab
起動します。
$ jupyter lab --ip=0.0.0.0 --port 8081 --allow-root
~略~
http://xxxxxxxxxxx:8081/?token=879077bd96XXXXXXXXXXXXXXXXXXXXXXXXXX32
普通にjupyterlab が使えました。特に問題なく動きますね。 すごーい
matplotとか入れる。
matplotやnumpyなど適当に色々と入れてみようとしましたが
猛烈に時間がかかった後に失敗してしまいました。
謎の待ち時間
$ sudo pip3 install matplotlib --no-cache-dir
Collecting matplotlib
Downloading https://files.pythonhosted.org/packages/75/81/53ccadcb8cad0a9837f1487b57f2b46b21caa2b3f35f72bc1acb06b5825c/matplotlib-3.1.2.tar.gz (40.9MB)
100% |████████████████████████████████| 40.9MB 39.3MB/s
なぜかここで固まってしまいました。
ここに限らず jupyteryやnumpy のパッケージのインストール時に謎の硬直が度々発生しました。12/5の記事が雑すぎたので、12/6に再度やり直してみているのですが、
固まる箇所は毎回同じのようです。 これは気になりますね。
インストールに失敗? → 解決
かなり放置してみたところ、無事再開・・・と思ったらインストールに失敗してしまいました。
aarch64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -DFREETYPE_BUILD_TYPE=system -DPY_ARRAY_UNIQUE_SYMBOL=MPL_matplotlib_ft2font_ARRAY_API -DNPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -D__STDC_FORMAT_MACROS=1 -Iextern/agg24-svn/include -I/tmp/pip-build-k0ro6ugl/matplotlib/.eggs/numpy-1.17.4-py3.6-linux-aarch64.egg/numpy/core/include -I/usr/include/python3.6m -c src/checkdep_freetype2.c -o build/temp.linux-aarch64-3.6/src/checkdep_freetype2.o
src/checkdep_freetype2.c:1:10: fatal error: ft2build.h: No such file or directory
#include <ft2build.h>
^~~~~~~~~~~~
compilation terminated.
error: command 'aarch64-linux-gnu-gcc' failed with exit status 1
ft2build.hがないそうなので、freetypeに関するパッケージなどを適当に入れてみます。
$ sudo apt install libpng-dev
$ sudo apt install libfreetype6-dev
やっつけでしたが無事matplotが入りました。
パッケージが不足して失敗するときは、異様なほどに時間がかかって、
結果失敗するというケースが多いように思います。
ARMでMatplotを使ってみた
再度jupyterlabを起動して適当にmatplotを使ったプログラムを書きます。
時間を見つけて、機械学習をARM上で動かしてみたいですね。
今日はこれまで。
※12/6 誤字などがあまりに多かったので、ちょっと?修正。