DeepSeek环境搭建:Apple Silicon M1平台最佳实践

云信安装大师
90
AI 质量分
11 5 月, 2025
5 分钟阅读
0 阅读

DeepSeek环境搭建:Apple Silicon M1平台最佳实践

引言

DeepSeek是一款强大的AI模型,在Apple Silicon M1/M2芯片上运行可以获得出色的性能表现。本文将详细介绍如何在M1/M2 Mac上搭建完整的DeepSeek运行环境,包括Python环境配置、依赖安装以及常见问题的解决方案。

准备工作

在开始之前,请确保你的设备满足以下要求:

  • Mac电脑配备Apple Silicon M1/M2芯片
  • macOS Monterey (12.0) 或更高版本
  • 至少16GB内存(推荐32GB以获得更好性能)
  • 至少20GB可用存储空间

步骤一:安装Homebrew

Homebrew是macOS上最受欢迎的包管理器,我们将使用它来安装必要的依赖。

代码片段
# 安装Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

# 将Homebrew添加到PATH环境变量
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc

# 验证安装
brew --version

注意事项
– 如果你使用的是bash而不是zsh,请将.zshrc替换为.bash_profile
– Homebrew在M1芯片上默认安装在/opt/homebrew目录下

步骤二:安装Python环境

推荐使用pyenv管理Python版本,以避免系统Python的干扰。

代码片段
# 安装pyenv
brew install pyenv

# 配置pyenv初始化
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
source ~/.zshrc

# 安装Python(推荐3.9或3.10版本)
pyenv install 3.10.6
pyenv global 3.10.6

# 验证Python安装
python --version
which python

为什么选择特定Python版本
DeepSeek对Python版本有一定要求,3.9-3.10版本通常兼容性最好。太新的版本可能会有依赖冲突。

步骤三:创建虚拟环境

使用虚拟环境可以隔离项目依赖,避免污染全局Python环境。

代码片段
# 创建项目目录并进入
mkdir deepseek-project && cd deepseek-project

# 创建虚拟环境(命名为venv)
python -m venv venv

# 激活虚拟环境
source venv/bin/activate

# 验证虚拟环境是否激活(应显示venv前缀)
which python

实践经验
建议每个AI项目都使用独立的虚拟环境,这样可以避免不同项目间的依赖冲突。

步骤四:安装PyTorch和DeepSeek依赖

PyTorch是DeepSeek的核心依赖之一,我们需要安装M1优化的版本。

代码片段
# 首先确保pip是最新版本
pip install --upgrade pip

# 安装M1优化的PyTorch(推荐nightly版本以获得最佳性能)
pip install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu

# 验证PyTorch是否正确安装并能识别M1芯片
python -c "import torch; print(torch.backends.mps.is_available())"

如果输出为True,则表示PyTorch已正确识别你的M1芯片。

步骤五:安装DeepSeek及相关库

现在我们可以安装DeepSeek及其相关依赖了。

代码片段
# DeepSeek核心库(假设deepseek已发布到PyPI)
pip install deepseek-ai transformers accelerate sentencepiece bitsandbytes scipy ninja numpy pandas tqdm matplotlib jupyterlab ipywidgets tensorboard loguru wandb protobuf==3.20.*

# macOS特定优化库(可选但推荐)
pip install psutil pyobjc-framework-Metal pyobjc-framework-Cocoa pyobjc-framework-Quartz pyobjc-framework-CoreWLAN pyobjc-framework-SystemConfiguration pyobjc-framework-SecurityFoundation pyobjc-framework-SecurityInterface pyobjc-framework-ServiceManagement pyobjc-framework-Social pyobjc-framework-SyncServices pyobjc-framework-WebKit 

注意事项
protobuf需要指定3.20.*版本以避免兼容性问题
bitsandbytes可能需要从源码编译以获得最佳性能(见下文)

(可选)步骤六:从源码编译bitsandbytes以获得最佳性能

代码片段
# Clone bitsandbytes仓库并编译M1优化版(需要Xcode命令行工具)
git clone https://github.com/TimDettmers/bitsandbytes.git && cd bitsandbytes && git checkout cuda118 && make hip && pip install . && cd .. && rm -rf bitsandbytes/

原理说明
bitsandbytes是一个优化内存使用的库,从源码编译可以确保针对M1芯片进行优化。

(可选)步骤七:验证Metal加速是否正常工作

代码片段
import torch 

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

x = torch.randn(1000, device=device)
y = x * x 
print(y[:5])

预期输出应显示设备为”mps”,并且计算能够正常执行。如果没有报错,说明Metal加速已正确配置。

(可选)步骤八:Jupyter Notebook配置(推荐)

如果你计划使用Jupyter Notebook进行开发:

代码片段
pip install notebook ipywidgets jupyter_contrib_nbextensions jupyter_nbextensions_configurator 

jupyter contrib nbextension install --user 
jupyter nbextension enable --py widgetsnbextension 
jupyter nbextension enable execute_time/ExecuteTime 

# 启动Jupyter Notebook 
jupyter notebook 

(可选)步骤九:监控GPU和CPU使用情况(推荐)

代码片段
brew install htop glances 

# GPU使用情况监控工具(需要Xcode命令行工具)
git clone https://github.com/yujitach/MenuMeters.git && cd MenuMeters && make && open build/Release/MenuMeters.prefPane 

(可选)步骤十:启用Metal性能分析工具(用于调试)

代码片段
export METAL_DEVICE_WRAPPER_TYPE=1 
export METAL_CAPTURE_ENABLED=1 
export METAL_SYSTEM_TRACE_ENABLED=1 

这些环境变量可以帮助你分析Metal的性能瓶颈。注意它们会降低运行速度,仅用于调试目的。

(可选)步骤十一:设置Swap空间以提高大模型运行稳定性(16GB内存用户特别建议)

由于大型AI模型可能消耗大量内存,增加swap空间可以防止OOM错误:

代码片段
sudo sysctl vm.swapusage #查看当前swap使用情况 

sudo mkdir /private/vm #如果不存在则创建目录 
sudo chown root:wheel /private/vm 
sudo chmod go-w /private/vm 

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist #停止动态分页服务 

sudo dd if=/dev/zero of=/private/vm/swapfile bs=1024 count=16777216 #创建16GB swap文件 

sudo chown root:wheel /private/vm/swapfile 
sudo chmod go-w /private/vm/swapfile 

sudo vim /etc/sysctl.conf #添加以下内容:
vm.swapfile=/private/vm/swapfile 
vm.swappiness=90 

sudo launchctl load -wF /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist #重新加载动态分页服务 

sudo reboot #重启生效 

警告
此操作会占用大量磁盘空间,请确保你有足够的存储空间。16GB swap文件大约需要16GB磁盘空间。

(可选)步骤十二:设置Docker支持(如果需要容器化部署)

虽然不推荐在M1上通过Docker运行AI模型(性能损失较大),但如果需要:

代码片段
brew install --cask docker 

docker run --rm -it --platform linux/amd64 ubuntu uname -a #测试x86模拟 

docker run --rm -it --platform linux/arm64 ubuntu uname -a #测试原生ARM64支持 

docker run --rm -it --privileged --platform linux/arm64 ubuntu bash #完整权限容器 

注意:Docker for Mac会自动处理架构转换问题。

(可选)步骤十三:启用TensorBoard支持(用于训练监控)

如果你计划进行模型训练:

代码片段
pip install tensorboard tensorflow-macos tensorflow-metal #虽然不需要TF但TensorBoard需要这些依赖 

tensorboard dev upload --logdir ./logs & #后台启动TensorBoard服务器并上传数据到云端(需要登录) 

tensorboard --logdir ./logs & #本地启动TensorBoard服务器(默认端口6006) 

访问 http://localhost:6006/查看训练指标。

(可选)步骤十四:配置VS Code开发环境(推荐)

如果你使用VS Code作为IDE:

代码片段
// .vscode/settings.json内容示例:
{
    "python.pythonPath": "venv/bin/python",
    "python.linting.enabled": true,
    "python.linting.pylintEnabled": true,
    "python.formatting.provider": "black",
    "python.formatting.blackArgs": ["--line-length", "120"],
    "python.linting.flake8Enabled": true,
    "python.linting.flake8Args": ["--max-line-length=120", "--ignore=E402,W503"],
    "editor.formatOnSave": true,
    "[python]": {
        "editor.defaultFormatter": null,
        "editor.codeActionsOnSave": {
            "source.organizeImports": true,
            "source.fixAll": true,
            "source.fixAll.eslint": true,
            "source.fixAll.stylelint": true,
            "source.fixAll.markdownlint": true,
            "source.fixAll.json": true,
            "source.fixAll.yaml": true,
            }
        },
    }
}

同时建议安装以下VS Code扩展:
– Python (Microsoft)
– Pylance (Microsoft)
– Jupyter (Microsoft)
– GitLens (GitKraken)
– Docker (Microsoft)

(可选)步骤十五:配置Git大文件支持(LFS)

如果计划管理大型模型文件:

代码片段
brew install git-lfs 
git lfs install 

echo "# Large files" >> .gitattributes 
echo "*.[pb|onnx|h5|pt|bin] filter=lfs diff=lfs merge=lfs -text" >> .gitattributes 
git add .gitattributes && git commit -m"Add LFS support" 

这会将大文件自动存储在Git LFS中而不是主仓库中。

(可选)步骤十六:设置自动激活虚拟环境的Shell脚本

为了方便开发,可以设置自动激活虚拟环境的Shell函数:

“`bashrc_append() {
cat <<‘EOF’ >> ~/.zshrc

function deepseek-activate() {
local VENV_DIR=”${PWD}/venv”

代码片段
if [[ ! -d "${VENV_DIR}" ]]; then

    echo "[INFO] Creating new virtual environment..."
    python -m venv "${VENV_DIR}"

    echo "[INFO] Installing base requirements..."
    source "${VENV_DIR}/bin/activate"
    pip install --upgrade pip wheel setuptools

    if [[ -f requirements.txt ]]; then

        echo "[INFO] Installing project requirements..."
        pip install -r requirements.txt

    fi

else

    source "${VENV_DIR}/bin/activate"

fi

}

function deepseek-deactivate() {

代码片段
if [[ $(type deactivate | grep function) ]]; then

    deactivate

fi

}

EOF

}

if ! grep -q deepseek-activate ~/.zshrc; then

代码片段
bashrc_append

fi

source ~/.zshrc

代码片段

使用方法:

cd your-deepseek-project/
deepseek-activate #自动检测并激活venv或创建新venv并激活它
deepseek-deactivate #退出当前venv
“`

这个功能会极大简化日常开发工作流程!


总结

通过以上详细步骤,你应该已经成功在Apple Silicon M1/M2 Mac上搭建了完整的DeepSeek开发环境。关键点回顾:

  1. Homebrew是基础工具链的核心
  2. PyTorch必须安装针对M1优化的nightly版本
  3. 虚拟环境隔离至关重要
  4. Metal加速(MPS)能显著提升性能
  5. Swap空间对16GB内存机器运行大模型很有帮助

常见问题解决方案:
PyTorch无法识别MPS设备conda deactivate完全退出conda后再试
CUDA相关错误 → Apple Silicon不支持CUDA,确保没有误装CUDA版本的PyTorch
内存不足(OOM)sysctl vm.swapusage检查swap使用情况

希望这篇指南能帮助你在Apple Silicon平台上顺利运行DeepSeek!如果有任何问题或改进建议欢迎留言讨论。

原创 高质量