MacBook M4 Pro 上安装miniconda PyTorch 和 YOLOv8 的完整步骤

一、安装 Miniconda(若未安装)

  1. 下载安装包(M4 Pro 芯片选择 arm64 版本):(推荐直接下载pkg安装包https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/)

    curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh
    
  2. 执行安装

    bash Miniconda3-latest-MacOSX-arm64.sh
    

    按提示完成安装,默认勾选“添加到环境变量”。

二、创建并配置 Conda 环境

  1. 创建 yolov8 环境(指定 Python 3.10)

    conda create -n yolov8 python=3.10 pytorch torchvision torchaudio numpy scipy -c pytorch -c conda-forge -y
    
  2. 激活环境

    conda activate yolov8
    
  3. 降级 NumPy 到 1.x 版本(解决兼容性问题)

    conda install numpy=1.26.2 -y
    

三、验证 PyTorch 安装与 MPS 加速

  1. 创建测试文件 test_pytorch.py

    import torch
    import torchvision
    import torchaudio
    import time
    
    # 检查版本
    print(f"PyTorch 版本: {torch.__version__}")
    print(f"TorchVision 版本: {torchvision.__version__}")
    print(f"TorchAudio 版本: {torchaudio.__version__}")
    
    # 检查 MPS 支持
    print(f"MPS 设备: {torch.device('mps')}")
    print(f"MPS 可用: {torch.backends.mps.is_available()}")
    
    # 性能测试
    device = torch.device("mps" if torch.backends.mps.is_available() else "cpu")
    print(f"使用设备: {device}")
    
    size = 5000
    a = torch.randn(size, size, device=device)
    b = torch.randn(size, size, device=device)
    
    # 预热
    torch.matmul(a, b)
    
    # 计时
    start = time.time()
    torch.matmul(a, b)
    elapsed = time.time() - start
    
    print(f"矩阵乘法耗时: {elapsed:.4f} 秒")
    
  2. 运行测试

    python test_pytorch.py
    

    预期输出

    PyTorch 版本: 2.5.1
    TorchVision 版本: 0.20.1
    TorchAudio 版本: 2.5.1
    MPS 设备: mps
    MPS 可用: True
    使用设备: mps
    矩阵乘法耗时: 0.0300 秒(示例耗时,具体取决于硬件)
    

四、安装 YOLOv8

  1. 使用 pip 安装 ultralytics(含 YOLOv8)

    pip install ultralytics
    
  2. 验证 YOLOv8 安装

    yolo task=detect mode=predict model=yolov8n.pt source=0  # 摄像头实时检测
    

五、MPS 加速优化(可选)

在代码中添加以下配置提升性能:

import torch

# 启用 MPS 缓存(减少重复计算开销)
torch.backends.mps.enable_caching(True)

# 优化矩阵乘法精度(可选)
torch.set_float32_matmul_precision('high')

# 指定 MPS 设备
device = torch.device("mps")
model = YourModel().to(device)

六、常见问题解决方案

  1. MPS 不可用

    • 确保 macOS 版本 ≥ 12.3,执行 sw_vers 检查。
    • 升级 PyTorch 到最新版本:conda update pytorch -y
  2. 内存不足

    • 减小批量大小或输入图像尺寸:
      yolo predict model=yolov8n.pt source=image.jpg imgsz=640 batch=4 device=mps
      
  3. NumPy 兼容性问题

    • 若出现 _ARRAY_API not found 错误,确认 NumPy 版本为 1.26.2:
      conda install numpy=1.26.2 -y
      

七、环境管理命令

  • 查看所有环境conda info --envs
  • 删除环境conda remove -n yolov8 --all
  • 更新环境依赖conda update --all -y

通过以上步骤,您可以在 MacBook M4 Pro 上成功部署支持 MPS 加速的 PyTorch 和 YOLOv8,实现高效的机器学习推理与训练。