Fast.aiをAlibaba Cloud GPUにインストールしてJupyterノートブックで実行する方法

今回は、Alibaba Cloud Elastic **GPU** Serviceにfast.aiライブラリをインストールする方法と、**Jupyter** Notebookを使ってアクセスする方法を紹介します。

*本ブログは英語版からの翻訳です。オリジナルは[こちら](https://www.alibabacloud.com/blog/installing-fast-ai-in-alibaba-cloud-gpu-and-running-it-on-jupyter-notebook_594619)からご確認いただけます。一部機械翻訳を使用しております。翻訳の間違いがありましたら、ご指摘いただけると幸いです。*

#なぜGPUなのか？
特にディープラーニングは、多くの行列の乗算を必要とします。この処理は、中央処理装置（CPU）と比較して、GPU（Graphical Processing Unit）上で例外的にうまく実行できることがわかっています。ディープラーニングがブームになる前は、GPUは主にゲームやその他のグラフィックスレンダリングに使用されていました。現在では、ディープラーニングのモデルトレーニングや推論に多用されています。しかし、すべてのGPUがこのタスクに適しているわけではなく、NVIDIAのCUDAライブラリとGPUカードがディープラーニングに最適化されているため、ディープラーニングの実務家は一般的にNVIDIAのGPUを使用しています。

GPUを持つこと自体は、GPUと適切なオペレーティングシステムを持つマシンをセットアップする必要があるので、ディープラーニングの問題を解決する準備が出来ていません。今のところ、ディープラーニングの実務家は、主に彼らの実験を処理するためにUbuntuを使用しています。すべての依存関係、ドライバ、およびソフトウェアのインストールと一緒に、ローカルGPUマシンボックスをセットアップするには、ハードウェア設計に時間と知識が必要です。代わりに、より効率的なアプローチは、Alibaba Cloudのようなクラウドプロバイダーを通じてGPUインスタンスをレンタルすることです。

Alibaba Cloud GPUインスタンスは、実際の使用状況に応じて課金されるため、GPUの実験にかかる費用を節約することができます。また、ハードウェアの設定やソフトウェアのインストールについても、これらの設定はすでにAlibaba Cloudが行っているため、心配する必要はありません。

#Fast.aiの特徴
Fast.aiは以下の機能を提供します。
1.  内蔵のCUDAライブラリは、NVIDIAドライバのインストールの世話をする必要があります、どのようにNVIDIAドライバの動作を確認するには、次のコマンドを入力します: `nvidia-smi`
2. `conda`または`pip`を介して簡単にインストール。
3.  コンピュータビジョン、自然言語処理、表形式データ、協調フィルタリングモデルのためのアウトオブボックスのサポート。

以下では、Ubuntu 16.04でAlibaba Cloud Elastic GPU ServiceにFast.aiライブラリをインストールし、Jupyter Notebook上で動作させる方法を説明します。

#必要条件
1、最低10GB RAM NVIDIA GPUを搭載した新しいAlibaba Cloud Ubuntu 16.04インスタンス。
２、サーバーにRootパスワードの設定

#アリババクラウドECSインスタンスの起動
Alibaba Cloud Elastic GPU Serviceインスタンスを購入するには、まずAlibaba Cloud ECS Consoleにログインする必要があります。新しいECSインスタンスを作成し、少なくとも10GB RAM GPU NVIDIAを搭載したオペレーティングシステムとしてUbuntu 16.04を選択します。以下のスクリーンショットのように、AMDではなくNVIDIA GPUカードを選択してください。場所によってはGPUインスタンスを提供していない場合がありますので、GPUインスタンスを持っている場所に近い場所を選択するか、または最も安いものを選択してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/2154bcd0-8831-ea48-6959-c96d548bc915.png)

インスタンスの種類を選択したら、OSはUbuntu 16.04 64bitを選択し、GPUドライバの自動インストールオプションにチェックを入れて最新のドライバを選択することを忘れないでください。このオプションは、インスタンス作成時にCUDAとGPUドライバを自動的にインストールしてくれます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/39affd94-92b1-b823-efe5-b9334d471140.png)

その後、[ECSインスタンス](https://www.alibabacloud.com/help/ja/doc-detail/25434.htm)に接続し、ルートユーザーとしてログインします。

#アナコンダのインストール
fast.ai ライブラリや Python を使用した他のライブラリで作業するための最良の方法は、Anaconda を介してその環境を作成することができ、私たちがマシンで行った他のことを混乱させないことです。

まず、このURLからAnaconda for Linuxをダウンロードする必要があります: [https://www.anaconda.com/download/#linux](https://www.anaconda.com/download?spm=a2c65.11461447.0.0.1a843ce9ZkXyNF#linux)

Python 3.7のダウンロードボタンを見て、右クリックしてリンクをコピーしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/3d08e2dd-bcea-a9c8-8157-e791a9fc447a.png)

あとはターミナルにリンクを貼り付けて、以下のコマンドでダウンロードします。

```
curl –o https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh
```
ダウンロードが完了したら、SHA-256チェックサムによる暗号ハッシュ検証でデータの整合性を検証するのは任意ですが、以下のコマンドを入力してください。

```
sha256-sum Anaconda3-5.3.0-Linux-x86_64.sh
```
出力されるハッシュは、Anacondaのページで適切なAnacondaのバージョンを確認する必要があります。ハッシュ出力が同じであれば、それは検証されています。

以下のコマンドでダウンロードが完了したら、すぐにAnacondaをインストールすることができます。

```
bash Anaconda3-5.3.0-Linux-x86_64.sh
```

アウトプット:

```
Welcome to Anaconda3 5.3.0 (by Continuum Analytics, Inc.)

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue
```
Enterキーを押してインストール処理を続行し、Enterキーを押し続けてライセンス情報を読み込んでください。以下のOutputのようにライセンスを承認する必要があります。

アウトプット：

```
Do you approve the license terms? [yes|no]
```
承認し、Anaconda のインストールを開始するには、「`Yes`」と入力してください。

ここで、Anaconda をインストールする場所を選択する必要があります。デフォルトのインストール場所で十分な場合は、`Enter` キーを押すか、Anaconda をインストールする他の場所を指定してください。

アウトプット：

```
Anaconda3 will now be installed into this location:
/root/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/anaconda3] >>> 
```
これでインストール作業が始まりました。Anaconda は何百もの Python パッケージを詰め込んでいるので、このプロセスには時間がかかるかもしれません。これらのパッケージのいくつかは、あなたが機械学習やディープラーニングの学習の日を通して使用することになります。

インストールプロセスが完了すると、以下のような出力が表示されます。

アウトプット：

```
...
installation finished.
Do you wish the installer to prepend the Anaconda3 install location
to PATH in your /root/.bashrc ? [yes|no]
[no] >>>
```

このステップに`yes`と入力すると、後で`conda`コマンドを使用できるようになります。

アウトプット：

```
Prepending PATH=/root/anaconda3/bin to PATH in /home/sammy/.bashrc
A backup will be made to: /root/.bashrc-anaconda3.bak
...
```
Anaconda を起動するには、以下のコマンドで bashrc ファイルをソースにする必要があります。

```
source ~/.bashrc
```
このステップの後、以下のコマンドでAnacondaのインストールを確認することができます。

```
conda list
```
このコマンドは、AnacondaによってインストールされたすべてのPythonパッケージをリストアップします。

この例では、`fast.ai`という名前の仮想環境を作成して、このコマンドを入力します。

```
conda create --name fast.ai python=3
```
このコマンドの出力は、インストールされるすべてのパッケージの一覧を表示しますので、同意する場合は `y` と入力してください。

プロセスが完了したら、以下のコマンドで環境を起動して作業を開始します。

```
source activate fast.ai
```
アウトプット：

```
(fast.ai) root@ubuntu:~$
```
`fast.ai`環境での作業が終わったら、以下のコマンドで閉じます。

```
source deactivate
```

#Fast.ai のインストール
Fast.aiライブラリは [https://github.com/fastai](https://github.com/fastai?spm=a2c65.11461447.0.0.1a843ce9ZkXyNF) にあります。インストールの手順は簡単で簡単です。GPU版とCPU版の両方を提供してくれていますが、今回はディープラーニングを行うことに興味があるので、GPU版のfast.aiをインストールします。

まず、以下のコマンドを入力してPytorchのソフトウェアをインストールします。fast.aiはPytorchソフトウェア上で動作するソフトウェアライブラリなので、fast.aiをインストールするには、まずPytorchをインストールする必要があります。fast.aiの環境を有効化することを忘れないようにしましょう。

```
source activate fast.ai
conda install -c pytorch pytorch-nightly cuda92
```
これは、condaが`fast.ai`環境にインストールするソトウェアのリストを出力します。同意する場合は `y` と入力してください。

その後、以下のコマンドを入力してトーチビジョンソフトウェアをインストールします。

```
conda install -c fast.ai torchvision-nightly
```
ソフトウェアリストの出力が出てきたら、同意するには`y`を入力してください。

最後にfast.aiをインストールするには、次のコマンドを入力します。

```
conda install -c fast.ai fast.ai
```
ソフトウェアリストの出力が出てきたら、同意するには`y`を入力してください。

この段階では、fast.aiのインストールに成功し、深層学習の実験を行う準備ができました。

#Jupyterノートの例でFast.aiを試す
fast.ai のインストールをテストする最良の方法は、コンピュータビジョン、自然言語処理、表形式データ、協調フィルタリングモデルのためのアウトオブボックスの例で作業することです。

今回はコンピュータビジョンの例を使ってみましょう。

以下のコマンドを入力して、fast.aiのサンプルデータをコピーします。

```
git clone https://github.com/fast.ai/fast.ai/tree/master/examples
```
これで `~/examples` にあるフォルダは

以下のコマンドを実行します。

```
jupyter notebook –-ip=0.0.0.0 –allow-root
```
そうすることで、このような初回アクセス用のトークンを持つ実行中のJupyter Notebookが出力されます。

```
http://(your-ip-address)/tree?token=f79ec772e0e53d30a221ecb18d447761e0f5a9d223c20175
```
別のターミナルを開き、以下のコマンドを入力します。

```
ssh –L localhost:8888:localhost:8888 root@(your-ip-address)
```
パスワードを入力して「Enter」をクリックします。

Webブラウザを開き、上記のトークンをURLアドレスバーに貼り付けます。

```
http://localhost:8888/tree?token=f79ec772e0e53d30a221ecb18d447761e0f5a9d223c22017
```
このコマンドはURLにあるJupyter Notebookを開いた後、`~/examples`フォルダを開き、`dogs_cats.ipyb`をクリックすると、以下のようなJupyter Notebookが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647921/11c1066d-a9ca-104d-5847-8de18f41aab5.png)

fast.aiライブラリを試すには、Shift + Enterを入力してすべてのコマンドを実行するだけです。ディープラーニングの処理がどのように行われているかを確認することができます。もっと詳しく知りたい方は、[http://docs.fast.ai/](https://docs.fast.ai/?spm=a2c65.11461447.0.0.1a843ce9ZkXyNF) にアクセスして、このソフトウェアに関するすべての資料を見つけてください。

*アリババクラウドは日本に２つのデータセンターを有し、世界で60を超えるアベラビリティーゾーンを有するアジア太平洋地域No.1(2019ガートナー)のクラウドインフラ事業者です。
アリババクラウドの詳細は、こちらからご覧ください。
[アリババクラウドジャパン公式ページ](https://www.alibabacloud.com/ja)*