Mac M1チップ搭載miniAnaconda、Jupyter、TensorFlow環境

Anaconda は、M1 をネイティブにサポートするインストール パッケージをリリースしました。Anacondaの公式 Web サイトにアクセスしてダウンロードしてインストールできます。

コンピュータ環境

ここに画像の説明を挿入

ミニフォージ

Anaconda は M1 上では実行できません。代わりに Miniforge が使用されます。

からhttps://github.com/conda-forge/miniforgeダウンロードしますMiniforge3-MacOSX-arm64以下に示すように:

ここに画像の説明を挿入
ターミナルに戻り、コマンドを使用してファイルがls -aあるかどうかを確認し、存在しない場合は、次のコマンドを使用してファイルを作成します。.zshrctouch ~/.zshrc
ここに画像の説明を挿入

ターミナルで次のコマンドを実行し、ダウンロードしたファイルを使用して Miniforge をインストールします。

bash Miniforge3-MacOSX-arm64.sh

ターミナルを再起動し、Python のインストールを確認します。
ここに画像の説明を挿入

最初に環境変数を構成する

conda によってインストールされた Python と Jupyter はすべてこのディレクトリにあり/Users/waldo/miniforge3/bin、環境変数に追加します

ステップ:

  1. ターミナル実行:touch ~/.bash_profile
  2. ターミナル実行:open ~/.bash_profile
  3. 以下に示すように、環境変数を追加します。
    画像の説明を追加してください
  4. ターミナル実行:source ~/.bash_profile
  5. ターミナル実行:open ~/.zshrc
  6. source ~/.bash_profile以下の図に示すように、最初の行に: を追加します。
    ここに画像の説明を挿入
  7. ターミナル実行:source ~/.bash_profile
  8. ターミナル実行:source ~/.zshrc

国内ミラーソースを anaconda に追加

この記事の以降の構成でも、一部の場所でネットワーク速度がまだ遅い場合は、「グローバル モード」をオンにして問題を解決してください。

1. 查看镜像源: conda config --show channels
2. 添加(两条命令):
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
3. 再次查看镜像源: conda config --show channels

画像の説明を追加してください

macOS の PyCharm で conda 環境を構成する方法

私たちの目的は、Anaconda 独自の Python とその豊富なサードパーティ ライブラリを PyCharm で使用することなので、このステップが最も重要です。

Python インタープリターの選択は最も重要なステップであり、最もエラーが発生しやすいステップです。上の図に示されているコンテンツを見たとき、最初の反応は [Conda 環境] をクリックすることですが、これは多くの人にとって間違っており、混乱を招きます。正しい選択はシステム インタプリタです。

次に、以下の図のパスに従って Python インタープリターを選択すると、pycharm で conda パッケージを使用できるようになります。
ここに画像の説明を挿入

JupyterLab、JupyterNotebookのインストール

注文

jupyter Notebook をインストールするコマンド:
pip3 install jupyterまたはconda install jupyter、Enter キーを押してインストールが完了するまで待ちます
。ターミナルに jupyter Notebook と入力し、Enter キーを押してデフォルトのブラウザで開きます。

jupyter lab コマンドをインストールします。
pip3 install jupyterlabまたは、conda install jupyterlab
ターミナルに jupyter lab と入力し、Enter キーを押してデフォルトのブラウザで開きます。

JupyterLab のデフォルトの作業パスを構成する

目的: JupyterLab にファイルを置くためのフォルダーを自分で作成します

py ファイルを作成し、コマンドを実行します。jupyter notebook --generate-config
画像の説明を追加してください
この py ファイルを開きます。open /Users/waldo/.jupyter/jupyter_notebook_config.py
以下の図で対応する場所を見つけ、ノートブックのデフォルトの作業ディレクトリを変更し (コメントを削除し)、保存します。
画像の説明を追加してください
最初に作業ディレクトリフォルダを作成する必要があることに注意してください

再度開くと、空になります (デフォルトの wpforJupyter フォルダー内)。
画像の説明を追加してください

TensorFlow2.8をインストールする

Apple Silicon Mac M1 は、TensorFlow 2.8 GPU アクセラレーション (tensorflow-metal PluggableDevice) をネイティブにサポートします。

仮想環境を作成する

仮想環境はサンドボックスに相当し、異なるフレームワークの相互影響を回避するため、複数の異なるバージョンの tensorflow をインストールすることもできます。アンインストールも便利で、仮想環境を直接削除するだけです

仮想環境を作成するための conda を作成します。ここでは Python 3.9.7 (TensorFlow に必要) を使用します。

创建名为“tf2_8”的虚拟环境:
conda create -n tf2_8 python=3.9.7
激活虚拟环境:
conda activate tf2_8

补充一个知识点,删除上述虚拟环境的命令为:
conda remove -n tf2_8 --all

Tensorflow の依存関係をインストールする (仮想環境で実行)

初めてインストールする (tf2.8 バージョンをここにインストールします)

conda install -c apple tensorflow-deps==2.8.0


注:tensorflow-deps 的版本是基于 TensorFlow 的,因此可以根据自己的需求指定版本安装。如下:
安装指定2.6版本:
conda install -c apple tensorflow-deps==2.6.0
安装指定2.8版本:
conda install -c apple tensorflow-deps==2.8.0

アップグレードインストール

以前に v2.6 をインストールしていて、v2.8 に更新したい場合は、次のコマンドを実行してインストールできます。

# 卸载已安装的 tensorflow-macos 和 tensorflow-metal
python -m pip uninstall tensorflow-macos
python -m pip uninstall tensorflow-metal
# 升级 tensorflow-deps
conda install -c apple tensorflow-deps --force-reinstall
# 后者指向特定的 conda 环境
conda install -c apple tensorflow-deps --force-reinstall -n tf2_8 

Tensorflowのインストール(仮想環境で実行)

python -m pip install tensorflow-macos

注: このステップでエラーが発生した場合は、それを実行してpip3 install torchから、上記のコマンドを再実行してください。

tensorflow-metalのインストール(仮想環境で実行)

python -m pip install tensorflow-metal

必要なパッケージのインストール(仮想環境で実行)

conda install libjpeg 或者 pip3 install libjpeg
conda install -y matplotlib jupyterlab
注意: libjpeg 是 matplotlib 需要依赖的库。

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

pip install -U --force-reinstall charset-normalizer 

Jupyter仮想環境の構成

この時点で jupyter ノートブックを開きます。実行はimport tensorflow as tf失敗します。次の構成が必要です。

システムターミナルを開き、次のコマンドを実行します。

1. conda activate tf2_8 //注意替换成自己的虚拟环境名

2. conda install ipykernel //安装ipykernel

3. sudo python -m ipykernel install --name tf2_8 //在ipykernel中安装当前环境

4. conda deactivate

jupyter を開いてカーネルを切り替えます。
ここに画像の説明を挿入
ここに画像の説明を挿入

テストコード

出力 こんにちは、TensorFlow

import tensorflow as tf
import os
os.environ["CUDA_VISIBLE_DEVICES"]="0"
tf.compat.v1.disable_eager_execution()
hello=tf.constant('Hello,TensorFlow')
config=tf.compat.v1.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.9
sess=tf.compat.v1.Session(config=config)
print(sess.run(hello))

ここに画像の説明を挿入

GPUアクセラレーション機能が正常かテストする

import tensorflow as tf
tf.test.is_gpu_available()

ここに画像の説明を挿入

GPUのパフォーマンスをテストする

from tensorflow.keras import layers
from tensorflow.keras import models
import tensorflow as tf
import time 

begin_time = time.time()

print(f"Running TensorFlow {tf.__version__} with {len(tf.config.list_physical_devices('GPU'))} GPUs recognized")

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10, activation='softmax'))
model.summary()

from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
train_images = train_images.reshape((60000, 28, 28, 1))
train_images = train_images.astype('float32') / 255
test_images = test_images.reshape((10000, 28, 28, 1))
test_images = test_images.astype('float32') / 255
train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)
model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])
model.fit(train_images, train_labels, epochs=5, batch_size=64)
test_loss, test_acc = model.evaluate(test_images, test_labels)
test_acc
end_time = time.time()

print('Total time: {} s'.format(int(end_time-begin_time)))

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Waldocsdn/article/details/124435043