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

AWS で ARMのインスタンスを使ってみた。

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は使えないようです。

image.png

↓をみると、Arm 用のイメージが準備されているようでした。 ここからubuntu 18のイメージを選択し配備しました、
image.png

触ってみる

インスタンスを払い出すと通常の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 が使えました。特に問題なく動きますね。 すごーい
image.png

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を使ったプログラムを書きます。

image.png

時間を見つけて、機械学習をARM上で動かしてみたいですね。
今日はこれまで。

※12/6 誤字などがあまりに多かったので、ちょっと?修正。

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
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