Este artigo se aplica ao macOS 12+, o uso do conda vem com python3.9
- ambiente de computador
- Mini forja
- Como configurar o ambiente conda no PyCharm no macOS
- Sobre JupyterLab, JupyterNotebook
- Instale o TensorFlow2.8
-
- Crie um ambiente virtual
- Instale dependências do Tensorflow (executadas em um ambiente virtual)
- Instale o Tensorflow (executado em um ambiente virtual)
- Instale o tensorflow-metal (executado em um ambiente virtual)
- Instale os pacotes necessários (executados no ambiente virtual)
- Configuração do ambiente virtual jupyter
- código de teste
Anaconda lançou um pacote de instalação que suporta nativamente M1, você pode ir ao site oficial do Anaconda para baixar e instalar,
ambiente de computador
Mini forja
O Anaconda não pode rodar no M1, o Miniforge é usado para substituí-lo.
https://github.com/conda-forge/miniforge
Baixe em Miniforge3-MacOSX-arm64
. Como mostrado abaixo:
Volte ao terminal, use ls -a
o comando para verificar se existe .zshrc
um arquivo, caso contrário, use o comando touch ~/.zshrc
para criar o arquivo:
Execute o seguinte comando no terminal para instalar o Miniforge usando o arquivo que você acabou de baixar:
bash Miniforge3-MacOSX-arm64.sh
Reinicie o terminal e verifique a instalação do Python:
Configure primeiro as variáveis de ambiente
O Python e o Jupyter instalados pelo conda estão todos neste diretório
/Users/waldo/miniforge3/bin
, adicione-os à variável de ambiente
etapa:
- Execução terminal:
touch ~/.bash_profile
- Execução terminal:
open ~/.bash_profile
- Adicione variáveis de ambiente, conforme mostrado abaixo:
- Execução terminal:
source ~/.bash_profile
- Execução terminal:
open ~/.zshrc
- Adicione: na primeira linha
source ~/.bash_profile
, conforme mostrado na figura abaixo:
- Execução terminal:
source ~/.bash_profile
- Execução terminal:
source ~/.zshrc
Adicionar fonte de espelho doméstico ao anaconda
Se nas seguintes configurações deste artigo a velocidade da rede ainda estiver lenta em alguns locais, ative o "modo global" para resolver o problema
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
Como configurar o ambiente conda no PyCharm no macOS
Nosso objetivo é usar o próprio python do Anaconda e suas ricas bibliotecas de terceiros no PyCharm, portanto esta etapa é a mais importante.
Escolher um interpretador Python é a etapa mais crítica e mais sujeita a erros. Ao vermos o conteúdo mostrado na imagem acima, a primeira reação é clicar em Ambiente Conda, o que é incorreto e confuso para muitas pessoas. A escolha correta deve ser System Interpreter.
Em seguida, siga o caminho na figura abaixo para selecionar o interpretador python, então você pode usar o pacote conda no pycharm:
Sobre JupyterLab, JupyterNotebook
Ordem
Instale o comando jupyter notebook:
pip3 install jupyter
Ou conda install jupyter
pressione enter para aguardar a conclusão da instalação
Digite jupyter notebook no terminal, pressione enter para abrir com o navegador padrão
Instale o comando jupyter lab:
pip3 install jupyterlab
ou conda install jupyterlab
digite jupyter lab no terminal, pressione enter para abrir com o navegador padrão
Configure o caminho de trabalho padrão do JupyterLab
Objetivo: Crie você mesmo uma pasta para colocar os arquivos no JupyterLab
Crie um arquivo py, comando: jupyter notebook --generate-config
abra este arquivo py: open /Users/waldo/.jupyter/jupyter_notebook_config.py
encontre o local correspondente na figura abaixo, modifique o diretório de trabalho padrão do notebook (remova o comentário), salve:
Observe que a pasta do diretório de trabalho deve ser criada primeiro
Após a reabertura, ele fica vazio ( na pasta wpforJupyter padrão ):
Instale o TensorFlow2.8
Apple Silicon Mac M1 suporta nativamente aceleração de GPU TensorFlow 2.8 (tensorflow-metal PluggableDevice)
Crie um ambiente virtual
O ambiente virtual equivale a um sandbox, evitando a influência mútua de diferentes frameworks, de forma que múltiplas versões diferentes do tensorflow podem até ser instaladas. Também é conveniente desinstalar, basta excluir o ambiente virtual diretamente
Crie um conda para criar um ambiente virtual, aqui use python 3.9.7 (exigido pelo TensorFlow).
创建名为“tf2_8”的虚拟环境:
conda create -n tf2_8 python=3.9.7
激活虚拟环境:
conda activate tf2_8
补充一个知识点,删除上述虚拟环境的命令为:
conda remove -n tf2_8 --all
Instale dependências do Tensorflow (executadas em um ambiente virtual)
Instale pela primeira vez (instale a versão tf2.8 aqui)
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
instalação de atualização
Se você instalou a v2.6 antes e deseja atualizar a v2.8, você pode executar o seguinte comando para instalar.
# 卸载已安装的 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
Instale o Tensorflow (executado em um ambiente virtual)
python -m pip install tensorflow-macos
Nota: Se ocorrer um erro nesta etapa, execute-o pip3 install torch
e execute novamente o comando acima
Instale o tensorflow-metal (executado em um ambiente virtual)
python -m pip install tensorflow-metal
Instale os pacotes necessários (executados no ambiente virtual)
conda install libjpeg 或者 pip3 install libjpeg
conda install -y matplotlib jupyterlab
注意: libjpeg 是 matplotlib 需要依赖的库。
Execute o seguinte comando:
pip install -U --force-reinstall charset-normalizer
Configuração do ambiente virtual jupyter
Abra o notebook jupyter neste momento, a execução
import tensorflow as tf
não teve êxito, a seguinte configuração é necessária
Abra o terminal do sistema e execute o seguinte comando:
1. conda activate tf2_8 //注意替换成自己的虚拟环境名
2. conda install ipykernel //安装ipykernel
3. sudo python -m ipykernel install --name tf2_8 //在ipykernel中安装当前环境
4. conda deactivate
Abra o jupyter e troque o kernel:
código de teste
Saída Olá, 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))
Teste se a função de aceleração da GPU está normal
import tensorflow as tf
tf.test.is_gpu_available()
Teste o desempenho da 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)))