Mac

旧記事: M1 Mac(Apple Silicon)にTensorFlow/OpenCVをインストール

旧記事: M1 Mac(Apple Silicon)にTensorFlow/OpenCVをインストール

 M1 Mac (Apple Silicon)の性能を試すためにもNativeでTensorFlowを動くようにしてみましょう。

 追記 2021/7/24 TensorFlow2.5よりAppleが提供するGPUを使えるようなったため、そちらのインストール方法を参照してください。


この記事のゴール

  • TensorFlowがM1 Mac (Apple Silicon) で使えること!(Natvieで)
  • OpenCVがM1 Mac (Apple Silicon) で使えること!

環境構築

構築手順の概要

  1. 事前確認
  2. Python環境の確認
  3. MiniForgeをインストール
  4. MiniForgeにPython3.8環境を構築(OpenCVのインストール)
  5. TensorFlowのインストール/動作確認

1.事前確認

 次のツールが入っていることを確認しましょう。

ターミナル Arm
#xcode-selectがインストールされているかを確認します。
$ xcode-select -v
xcode-select version 2384
#brewがインストールされているかを確認します。
$ brew -v
Homebrew 3.1.8
Homebrew/homebrew-core (git revision 4059a766e1; last commit 2021-05-22)
#wgetがインストールされているかを確認します。
$ wget --version
GNU Wget 1.21.1 built on darwin20.2.0.

全てツールがインストールされておられた方、「2.Python環境の確認」まで進めてください。

 以下の手順は、上記ツールがインストールされていない方の手順となります。

  • xcode-select(xcode command tool)/brewがインストールされていない人の作業

    1. AppSotreからXcodeインストールします。
    2. Homebrewを使うために、Command line tools for Xcodeをインストールし、ライセンスにも同意しておきます。
    $ xcode-select --install
    $ xcode-select -license
    1. Homebrewをインストールします。Homebrewの公式によると、/opt/homebrewインストールを推奨していますので、推奨通りにインストールしていきます。
    $ sudo mkdir /opt/homebrew
    $ sudo chown -R $(whoami) /opt/homebrew
    $ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C /opt/homebrew
    $ echo 'export PATH=/opt/homebrew/bin:$PATH' >> ~/.zshrc
    $ exec $SHELL -l

    これで、brewのインストールは完了です。

  • wgetがインストールされていない方の手順となります。

    1. brewからwgetをインストールします
    $ brew install wget

    これで、wgetのインストールは完了です。

2.Python環境の確認

 現在、Apple SillionにoptimizedされたTensorFlow tensorflow_macosは、Python3.8が必須と書いてあります。

Python 3.8 (required to be downloaded from Xcode Command Line Tools for M1 Macs).

 公式の通りにインストールしてもいいのですが、MiniForgeからもtensorflow_macosがインストールでき、OpenCVも簡単にインストールで来ます。前回は、自分で、ソースからコンパイルをしましたが、今回は、Miniforgeからインストールします。
 Miniforgeのインストール前にPythonのバージョンを確認しておきます。

ターミナル Arm
$ python3 --version
Python 3.8.10

3.MiniForgeのインストール

 Miniforgeのサイトから最新版のインストーラshellをダウンロードし、実行します。途中でライセンスの同意やPrefixなどを尋ねられますので、yesを入力してください。

ターミナル Arm
$ wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-MacOSX-arm64.sh
$ bash Miniforge3-MacOSX-arm64.sh
...
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Do you accept the license terms? [yes|no]
[no] >>> yes...
Miniforge3 will now be installed into this location:
/Users/XXXX/miniforge3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below
[/Users/XXXX/miniforge3] >>>ENTER...
  wheel              conda-forge/noarch::wheel-0.36.2-pyhd3deb0d_0
  xz                 conda-forge/osx-arm64::xz-5.2.5-h642e427_1
  zlib               conda-forge/osx-arm64::zlib-1.2.11-h31e879b_1009

Proceed ([y]/n)? y...
  libopenblas        conda-forge/osx-arm64::libopenblas-0.3.15-openmp_hf330de4_1
  llvm-openmp        conda-forge/osx-arm64::llvm-openmp-11.1.0-hf3c4609_1
  numpy              conda-forge/osx-arm64::numpy-1.20.3-py38hbf7bb01_0

Proceed ([y]/n)? y...
  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0

Proceed ([y]/n)? y...
  python-dateutil    conda-forge/noarch::python-dateutil-2.8.1-py_0
  tornado            conda-forge/osx-arm64::tornado-6.1-py38h30f7421_1
  zstd               conda-forge/osx-arm64::zstd-1.5.0-h861e0a7_0
Proceed ([y]/n)? y...
  pixman             conda-forge/osx-arm64::pixman-0.40.0-h27ca646_0
  py-opencv          conda-forge/osx-arm64::py-opencv-4.5.2-py38hab544c7_0
  x264               conda-forge/osx-arm64::x264-1161.3030-h27ca646_0

Proceed ([y]/n)? y...
Verifying transaction: done
Executing transaction: done

4. MiniForgeにPython3.8環境を構築(OpenCVのインストール)

 MiniForge condaでPython3.8の環境を構築します。また、Deep Learningでよく使うライブラリ群もインストールします。
 もちろん、OpenCVも入れます。

ターミナル Arm
$ conda create --name python38 python=3.8
$ conda activate python38
$ conda install numpy
$ conda install six
$ conda install matplotlib
$ conda install opencv

5.TensorFlowのインストール/動作確認

 現在(2021/5/23時点)、tensorflow_macosの最新は、Version 0.1-alpha3です。wgetを使って、ダウンロードします。ダウンロードURLはこちらのGitHubから取得できます。
 tar.gzをダウンロード後、解凍します。

  1. wgetでtensorflow_macを取得し、展開する。
ターミナル Arm
$ wget https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha3/tensorflow_macos-0.1alpha3.tar.gz
$ tar zxvf tensorflow_macos-0.1alpha3.tar.gz
$ env="$HOME/miniforge3/envs/python38"
$ libs="$PWD/tensorflow_macos/arm64/"
$ 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.1a3-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.1a3-cp38-cp38-macosx_11_0_arm64.whl"
  1. 動作確認をする

 Pythonをターミナル上で実行し、“import tensorflow”でバージョン番号が正しく表示されることを確認しましょう。

ターミナル Arm
$ 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 tftf.__version__
>>> tf.__version__'2.4.0-rc0'
>>> exit()

以上で完了です。


最後に

 これで、Tensor FlowのインストールとOpenCVが動作するようになりました。いよいよ画像処理をメインにBlogを進めたいと思います。