Mac M1 运行 conda 和 jupyter notebook 备忘

安装 homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

下载 Miniforge3 (Conda 安装工具)

for macOS arm64 chips (M1, M1 Pro, M1 Max, M1 Ultra, M2).

chmod +x ~/Downloads/Miniforge3-MacOSX-arm64.sh
sh ~/Downloads/Miniforge3-MacOSX-arm64.sh
source ~/miniforge3/bin/activate

image-20230213上午100817720

image-20230213上午100842133

image-20230213上午100755897

我发现他会给 .zshrc 自动加上 source 信息

image-20230213上午101018563

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/kelu/miniforge3/bin/conda' 'shell.zsh' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/kelu/miniforge3/etc/profile.d/conda.sh" ]; then
        . "/Users/kelu/miniforge3/etc/profile.d/conda.sh"
    else
        export PATH="/Users/kelu/miniforge3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

创建 pytorch 环境的文件夹

mkdir pytorch-test
cd pytorch-test

初始化:conda环境

conda create --prefix ./env python=3.8
conda activate ./env

image-20230213上午101628424

安装pytorch

pip3 install torch torchvision torchaudio

image-20230213上午103035215

image-20230213上午105402439

安装jupyter

conda install jupyter pandas numpy matplotlib scikit-learn tqdm 

image-20230213上午105451310

jupyter notebook

image-20230213上午110153434

验证:

image-20230213上午110655986

验证的脚本:

import torch
import numpy as np
import pandas as pd
import sklearn
import matplotlib.pyplot as plt
import math

print(f"PyTorch version: {torch.__version__}")

# Check PyTorch has access to MPS (Metal Performance Shader, Apple's GPU architecture)
print(f"Is MPS (Metal Performance Shader) built? {torch.backends.mps.is_built()}")
print(f"Is MPS available? {torch.backends.mps.is_available()}")

# Set the device      
device = "mps" if torch.backends.mps.is_available() else "cpu"
print(f"Using device: {device}")


# Create data and send it to the device
x = torch.rand(size=(3, 4)).to(device)
x


dtype = torch.float
device = torch.device("mps")

# Create random input and output data
x = torch.linspace(-math.pi, math.pi, 2000, device=device, dtype=dtype)
y = torch.sin(x)

# Randomly initialize weights
a = torch.randn((), device=device, dtype=dtype)
b = torch.randn((), device=device, dtype=dtype)
c = torch.randn((), device=device, dtype=dtype)
d = torch.randn((), device=device, dtype=dtype)

learning_rate = 1e-6
for t in range(2000):
    # Forward pass: compute predicted y
    y_pred = a + b * x + c * x ** 2 + d * x ** 3

    # Compute and print loss
    loss = (y_pred - y).pow(2).sum().item()
    if t % 100 == 99:
        print(t, loss)

# Backprop to compute gradients of a, b, c, d with respect to loss
    grad_y_pred = 2.0 * (y_pred - y)
    grad_a = grad_y_pred.sum()
    grad_b = (grad_y_pred * x).sum()
    grad_c = (grad_y_pred * x ** 2).sum()
    grad_d = (grad_y_pred * x ** 3).sum()

    # Update weights using gradient descent
    a -= learning_rate * grad_a
    b -= learning_rate * grad_b
    c -= learning_rate * grad_c
    d -= learning_rate * grad_d

print(f'Result: y = {a.item()} + {b.item()} x + {c.item()} x^2 + {d.item()} x^3')

image-20230213上午112823055

再次启动环境

再次启动环境,只需要激活虚拟环境然后启动jupyter即可:

conda activate ~/Workspace/pytorch-test/env
cd ~/Workspace/pytorch-test
jupyter notebook

参考资料


如果本文对你有帮助,欢迎投食

《动手学深度学习》第二版 摘录 在 Mac M1 上运行 pytorch MNIST 模型