M1 MacにTensorflowをインストールしてみました

#はじめに

Apple M1のARMアーキテクチャのMacで機械学種フレームワークを利用するには、macOS11.0以降にAppleのハードウェアアクセラレーションされたTensorFlowおよびTensorFlowアドオンをインストールする必要があります。

M1 MacにTensorFlowを動かすのにだいぶ苦労したのですが、一通り動くようになったので手順簡単にまとめておきます。

## 環境
- MacBookPro(2020)
- OS Big Sur 11.6.2

##Python環境の削除
インストール済みのPythonがあると後々動作しなくなることがあるので、MacOS標準のPython以外のAnaconda,Pyenv,Howebrew等でインストールしたPythonを削除しておきます。
(消し忘れのPythonが残っているとうまく動かないことがあるので、pythonフォルダとか検索して不要なものがあれば削除しておきます。)

## TensorFlowのインストール
### Xcodeのインストール
インストールする必要のある最初のツールはXcodeで、MacAppStoreから入手してインストールします。
####コマンドラインツール
Xcodeをインストールすると、コマンドラインツールもインストールされます。
ただし、まだインストールしていない場合は、次のコマンドでインストールできます。
`xcode-select --install`

### Miniforgeのインストール
Anacondaを使用する代わりに、Condaシステムへのフルアクセスを備えた軽量のPythonインタープリターであるMiniForgeを使用します。

Miniforgeは

https://github.com/conda-forge/miniforge

からダウンロードできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684662/50f7f45d-7989-5c22-8e6c-c44180cc9f23.png)

Miniforgeはhttps://github.com/conda-forge/miniforgeからダウンロードできます。

M1 Macの場合は、Miniforge3-MacOSX-arm64アイテム（上記のリストの5番目）をクリックします。ダウンロードしたら、ターミナルを起動し、Miniforge3-MacOSX-arm64.shファイルが含まれているディレクトリに移動し、次のようなbashコマンドを使用してMiniforgeをインストールします。
`bash Miniforge3-MacOSX-arm64.sh`

ライセンス契約に同意するように求められます。それらを受け入れて、インストールを続行してください。時々聞かれる質問に[yes]と答えて行けば、インストールされます。インストールが完了したら、ターミナルを閉じます。

### Conda環境の作成
新しいターミナルウィンドウで、次のように入力して、
`conda`
condaが動作することを確認します。

TensorFlowをAppleのM1マシンにインストールするには,

https://raw.githubusercontent.com/mwidjaja1/DSOnMacARM/main/environment.yml

からenvironment.ymlファイルをダウンロードします。

このファイルには、必要な依存関係を持つPython環境を作成するための手順が含まれています。TensorFlowの新しい環境を作成するには、environment.ymlファイルを含むフォルダに移動します。(フォルダがdownloadの場合）

`cd download`

次に、次のコマンドを入力します。

`conda env create --file = environment.yml --name python38`

python38は、新しい環境名で、好きな名前に変更できます。これで、新しく作成した環境をアクティブ化できます。

`conda activate python38`

### macOS用のTensorFlowおよびTensorFlowアドオンのインストール

AppleのTensorFlowライブラリのリストは

https://github.com/apple/tensorflow_macos/releases

で入手できます。

これを書いている時点では、現在3つのバージョンが利用可能です。
v0.1alpha3
v0.1alpha2
v0.1alpha1
最新のリリース（v0.1aplha3）を選択すると、このページが表示されます。

https://github.com/apple/tensorflow_macos/releases/tag/v0.1alpha3

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684662/3ecfe77e-2ba6-7ac0-97d1-2a36722d775f.png)

2つのファイルのリンクを確認してコピーします。
tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl
 https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl

tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl
 https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl

python38の環境で、次のコマンドを使用して上記の2つのライブラリをインストールすることができます。

`pip install --upgrade --force --no-dependencies https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_addons_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl https：// github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_macos-0.1a3-cp38-cp38-macosx_11_0_arm64.whl`

2つのライブラリがインストールされたら、Pythonを起動して、pythonのコマンドラインから、TensorFlowをインポートし、そのバージョン番号を表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684662/ea31f0cc-9ff3-2320-9434-426880522f17.png)

Pythonのコマンドラインで以下を入力します。
`import tensorflow as tf`
`print(tf.__versino__)`


上記が成功してバージョン情報が表示されたら、TensorFlowがM1Macに正しくインストールされたことになります。

## その他の必須ライブラリのインストール
TensorFlowライブラリのインストールに加えて、matplotlib、sklearn、OpenCV、Pandasなどの他のライブラリをインストールする必要がある可能性が非常に高くなります。したがって、次のようにインストールしてください。

`conda install -c conda-forge matplotlib -y`
`conda install -c conda-forge scikit-learn -y`
`conda install -c conda-forge opencv -y`
`conda install -c conda-forge pandas -y`

-yオプションは、ライブラリをインストールする際に確認へ答えるの手間を省くことができます。

## Jupiter Labのインストール
最後に、JupyterLabをインストールします。

`conda install -c conda-forge jupyterlab`

JupyterNotebookが正しくインストールされているかどうかをテストします。
`jupyter lab`

以下画面が表示されればセットアップ完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684662/0029282b-8b3d-86d0-496c-bdb5415eb205.png)

*Enjoy AI Life!!*