M1　MACでTensorflowを使おう！

この記事は古川研究室 [AdventCalendar] (https://qiita.com/flab5420/items/fc94dadc49635f0e5c9f) 6日目の記事です。
本記事は古川研究室の学生が学習の一環として書いたものです。
内容が曖昧であったり表現が多少異なったりする場合があります。
#最初に
この記事では、M1 MACでのTensorflowの環境開発の手順を自分用にまとめています。公式の手順とは若干異なります。
#M1 MacにTensorFlow(tensorflow_macos)をインストールする方法
M1 MACにTensorFlowをインストールするには、以下の4ステップが必要になります。

 * 1 : コマンドラインツールをインストールする
 * 2 : Miniforgeをインストールする
 * 3 : MiniForgeにPython3.8環境を構築する
 * 4 : M1 Mac用のTensorFlowとそのアドオンをインストールする

#1. コマンドラインツールをインストールする
まずはxcode-selectをインストールします。

```
$ xcode-select --install
```
インストールが完了したらxcode-select -vでバージョンを確認してみましょう。私は2384になっていました。

```
flab-mac@flab-macnoMacBook-Air-2 ~ % xcode-select -v
xcode-select version 2384.
```
バージョンが確認できれば、問題なくインストールできています。次のステップに進みましょう。
#2. Miniforgeをインストールする。
M1 MACでデータ分析環境を作るにはMiniforgeがおすすめです。
以下の３ステップが必要となります。

 * ① : シェルスクリプトをダウンロードする
 * ② : シェルスクリプトを実行する
 * ③ : Condaコマンドが使えるか確認する

##① : シェルスクリプトをダウンロードする
まずminiforgeのシェルスクリプトをダウンロードします。公式のGithubにアクセスしましょう。
https://github.com/conda-forge/miniforge
[Miniforge3-MacOSX-arm64]をダウンロードします。Downloadまでスクロールすると、各OS・アーキテクチャごとにダウンロードリンクが存在します。
今回はMacOSのAppleSilicon(=M1 Mac)なので、以下の赤枠からシェルスクリプトをダウンロードします。
これでインストールに必要なファイルをダウンロードできます。

##② : シェルスクリプトを実行する
ダンロードが完了したら、ターミナル上で以下のコマンドを実行していきましょう。

```
# ダウンロードした[Miniforge3-MacOSX-arm64]が入ったディレクトリまで移動
cd Downloads

# インストールフォルダを指定してインストール
bash Miniforge3-Linux-x86_64.sh
```
コマンドを実行すると、途中でyes/noを求められるときが多々あります。基本的にはすべてyesで回答しましょう。
インストールが完了したら、最後に以下のコマンドを入力します。

```
$ source ~/.zshrc
```
これでターミナルの名前横に、(base)が追加されるはずです。

##③ : Condaコマンドが使えるか確認する
最後にCondaコマンドとPythonを使えるか確認していきましょう。Condaのバージョンを確認するには、「conda -V」コマンドを用います。私のバージョンは4.10.3でした。

```
flab-mac@flab-macnoMacBook-Air-2 ~ % conda -V  
conda 4.10.3
```
#3. MiniForgeにPython3.8環境を構築する
続いて以下のコマンドを入力し、MiniforgeにPython3.8の環境を構築します。今回は「python38」という名前をつけていますがここは好きな名前をつけてもらって構いません。

```
$ conda create --name python38 python=3.8
```
Python3.8環境をアクティベートします。これでPython3.8の仮想環境が使えるようになります。

```
$ conda activate python38
```

#4. 必要なライブラリのインストール
アクティベートした状態で事前に必要なライブラリをインストールします。

```
$ conda install numpy
$ conda install six
$ conda install matplotlib
$ conda install opencv
```

#5. Tensorflowのインストール
以下コマンドでTensorFlowをインストールします。

```
$ wget https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha2/tensorflow_macos-0.1alpha2.tar.gz
$ tar xvzf tensorflow_macos-0.1alpha2.tar.gz
$ env="$HOME/miniforge3/envs/python38"
$ libs="$PWD/tensorflow_macos/ar
m64/"
$ pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/grpcio-1.33.2-cp38-cp38-macosx_11_0_arm64.whl"
$ pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/h5py-2.10.0-cp38-cp38-macosx_11_0_arm64.whl"
$ pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_addons_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl"
$ conda install -c conda-forge -y absl-py
$ conda install -c conda-forge -y astunparse
$ conda install -c conda-forge -y gast
$ conda install -c conda-forge -y opt_einsum
$ conda install -c conda-forge -y termcolor
$ conda install -c conda-forge -y typing_extensions
$ conda install -c conda-forge -y wheel
$ conda install -c conda-forge -y typeguard
$ pip install wrapt flatbuffers tensorflow_estimator google_pasta keras_preprocessing protobuf
$ pip install tensorboard
$ pip install --upgrade -t "$env/lib/python3.8/site-packages/" --no-dependencies --force "$libs/tensorflow_macos-0.1a2-cp38-cp38-macosx_11_0_arm64.whl"
```
インストールできたか確認しましょう。以下のようにコマンド実行してTensorFlowをインポートできていればOKです。

```
(python38) flab-mac@flab-macnoMacBook-Air-2 ~ % python3 
Python 3.8.10 | packaged by conda-forge | (default, May 11 2021, 06:27:18) 
[Clang 11.1.0 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
Init Plugin
Init Graph Optimizer
Init Kernel
>>> tf.__version__
'2.5.0'
>>> 
```
アクティベートした状態で上記のようにバージョンが表示されればインストール完了です。
また、「conda list」とというコマンドを実行し、「tensorflow-macos          2.5.0                    pypi_0    pypi」がリストに表記されているか確認してみるといいでしょう。表示されればインストールできています。

#参考文献

 * https://tech-diary.net/how-to-install-tensorflow-on-m1-mac/
 * https://medium.com/gft-engineering/macbook-m1-tensorflow-on-jupyter-notebooks-6171e1f48060
 * https://tech-diary.net/install-python-on-m1-mac/