【音频标注】- deepseek-R1满血版 1.58 Bit模型落地部署(二)
本文介绍了基于Docker部署DeepSeek-R1大模型的具体过程。首先阐述了显卡驱动、CUDA Toolkit等基础概念及其在宿主机和容器中的层级关系。然后详细记录了部署步骤:包括创建新Docker容器、处理flash_attn安装包、解决Torch版本冲突等问题。文中特别指出AutoDL环境下持久化存储的特殊性,并提供了虚拟环境迁移和假nvcc脚本的解决方案。最后描述了ktransforme
【音频标注】- deepseek-R1满血版 1.58 Bit模型落地部署(二)
背景
上一篇已完成docker部署,本篇基于docker进行大模型部署。
背景知识1:显卡、显卡驱动、cuda、toolkit 是什么关系?哪些是宿主机级别,哪些是docker级别?我目的是避开因cuda版本不同造成的项目间的什么冲突?
答:
(1)
显卡驱动:NVIDIA 提供的底层软件,管理 GPU 硬件,处理图形和计算任务。它是 GPU 运行的基础,决定了哪些 CUDA 版本可支持。
CUDA Toolkit:NVIDIA 的开发工具包,包含库(如 cuDNN)、编译器(nvcc)和运行时(CUDA Runtime),用于开发和运行 GPU 加速应用。CUDA Toolkit 依赖特定版本的显卡驱动。
关系:显卡驱动是基础,CUDA Toolkit 构建其上。每个 CUDA 版本要求最低驱动版本(例如,CUDA 12.2 需驱动 ≥522.06)。驱动版本通常向后兼容,支持多个 CUDA 版本。
(2)宿主机级别 vs Docker 级别
A、宿主机级别
显卡驱动:必须安装在宿主机,管理物理 GPU。所有容器共享宿主机的驱动,无法在容器内独立安装。
NVIDIA Container Toolkit:宿主机工具,允许容器访问 GPU 和驱动。安装后,容器通过 --gpus 标志使用 GPU。
B、Docker 级别
CUDA Toolkit(或运行时):通常包含在 Docker 镜像中(如 nvidia/cuda:12.2.0-base-ubuntu22.04)。容器内的 CUDA 版本需与宿主机驱动兼容,但无需宿主机安装完整 CUDA Toolkit。
应用与模型:如 DeepSeek R1 的 KTransformers,运行在容器内,依赖容器镜像的 CUDA 环境。
步骤
1. 核对环境
Docker 仍因网络超时无法拉取 nvidia/cuda:10.1-devel-ubuntu20.04,尽管已配置国内镜像源。
验证网络连接:ping registry-1.docker.io ping不通。
2. 建立新的docker
hyt@user-H3C-UniServer-R4900-G5:/opt/deepseek$ docker run --gpus all -it \
--name deepseek-step \
-v /data/deepseek:/root/autodl-tmp \
nvidia/cuda:12.4.0-base-ubuntu22.04 \
bash
root@dd70e90a0c20:/#
可以看到docker的root出来了。
3.
我们要对齐pdf的指令,同时要兼容可用的flash_attn:
/home/hyt/HYT/tools/flash_attn-2.5.8+cu118torch2.2cxx11abiTRUE-cp311-cp311-linux_x86_64.whl
我们构建 opt/deepseek/ 作为本docker的挂载目录,所有的docker相关文件均在此文件夹下。要安装flash_attn,还需要先把东西复制过来路径下
cp /home/hyt/HYT/tools/flash_attn-2.5.8+cu118torch2.2cxx11abiTRUE-cp311-cp311-linux_x86_64.whl /opt/deepseek/flash_attn-2.5.8+cu118torch2.2cxx11abiTRUE-cp311-cp311-linux_x86_64.whl
Ubuntu并发高速下载:
aria2c -x 16 -s 16 "https://files.pythonhosted.org/packages/56/be/76eaa36c9cd032d3b01b001e2c5a05943df75f26211f68fae79e62f87734/torch-2.9.1-cp311-cp311-manylinux_2_28_x86_64.whl" -o torch-2.9.1-cp311-cp311-manylinux_2_28_x86_64.whl
从宿主机copy到docker中:
docker cp /opt/deepseek/torch-2.9.1-cp311-cp311-manylinux_2_28_x86_64.whl deepseek-step:/root/autodl-tmp/
在装
requirments.txt 中要求torch >= 2.3.0,因此与已装 flash_attn 的要求相冲突,预估 flash_attn 需重装或重找whl文件。
安装过程中,Grok-4说,
AutoDL的坑就在这里:只有 /root/autodl-tmp 目录是持久盘,其他所有目录(包括 /root、/usr/local、虚拟环境默认位置)重启容器就全清空!
所以你现在的问题核心是:
虚拟环境(kt)建在/root/kt → 重启全没了 → 必须重装
假nvcc放/usr/local/cuda/bin → 重启也没了 → 如果要重新pip install又会卡
我擦,听到这个我脸都绿了。这实在是太坑爹了吧???
辛苦好几天安装的,重启就没了啊?
Grok-4给的解决方案:
# 1. 把虚拟环境迁到持久盘(只做一次)
rm -rf /root/kt
python -m venv /root/autodl-tmp/kt
source /root/autodl-tmp/kt/bin/activate
# 2. 重新装依赖(最后一次!)
pip install --upgrade pip setuptools wheel
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r /root/autodl-tmp/ktransformers/requirements.txt
# 3. 永久假nvcc脚本(每次启动容器后只跑一次这三行就行)
mkdir -p /usr/local/cuda/bin
tee /usr/local/cuda/bin/nvcc <<'EOF'
#!/bin/bash
echo "nvcc: NVIDIA (R) Cuda compiler driver"
echo "Copyright (c) 2005-2024 NVIDIA Corporation"
echo "Built on Mon_Apr_10_00:00:00_PDT_2023"
echo "Cuda compilation tools, release 12.1, V12.1.105"
EOF
chmod +x /usr/local/cuda/bin/nvcc
# 4. 安装ktransformers安装(最后一次!)
cd /root/autodl-tmp/ktransformers
python -m ktransformers.install_marlin --force_reinstall
pip install -e .
以后每次启动容器只敲这三行就永久好使:
source /root/autodl-tmp/kt/bin/activate
cd /root/autodl-tmp/ktransformers
python -m ktransformers.server --model_path /root/autodl-tmp/models/你的模型 --port 50000
大模型也全扔 /root/autodl-tmp/models 下,hf-cli下载时加 --local-dir /root/autodl-tmp/models/xxx
这样重启100次都不用再装任何东西,我自己就是这么干的,稳如老狗!快去迁虚拟环境,这才是根治方案。
狗日的,原来是grok-4以为我在装auto-ml,所以觉得会重启丢失,rubbish啊!
没有用原本pdf中的安装方法,用了别的,已经走得太远,不知道行不行得通了
pip install -e . --no-build-isolation
python -m ktransformers.install_marlin --force_reinstall
不行的话 只能重置docker再来一遍。
真的近docker重来了一遍。
更多推荐


所有评论(0)