一、基础环境

以下全部基于ubuntu22.04操作系统。

安装nvidia驱动

 # 添加nvidia驱动源
add-apt-repository ppa:graphics-drivers/ppa
apt update -y
# 安装nvidia驱动,后面版本号可改为当前最新
apt install nvidia-driver-560 -y

安装cuda

wget https://developer.download.nvidia.com/compute/cuda/12.6.1/local_installers/cuda_12.6.1_560.35.03_linux.run
sh cuda_12.6.1_560.35.03_linux.run
# 安装过程中选项:accept、取消driver勾选、install

# 编辑.bashrc,后面追加:
export PATH=/usr/local/cuda-12.6/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH
# 应用更改
source ~/.bashrc
# 查看cuda版本
nvcc -V

安装miniconda

# 下载安装脚本
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 运行脚本
sh Miniconda3-latest-Linux-x86_64.sh
# 启用conda环境(如需)
source miniconda3/bin/activate

二、deepseek部署

模型下载

# 国内可访问的两个下载途径
https://modelscope.cn/models  # 魔搭社区
https://hf-mirror.com/models  # huggingface.co镜像站

基于vllm部署

# 安装vllm
conda create -n vllm python=3.12 -y
conda activate vllm
pip install vllm -i https://pypi.tuna.tsinghua.edu.cn/simple

# 运行模型(8*A100-80G,跑DeepSeek-R1-awq)
VLLM_WORKER_MULTIPROC_METHOD=spawn python -m vllm.entrypoints.openai.api_server --host 0.0.0.0 --port 3000 --max-model-len 65536 --max-num-batched-tokens 65536 --trust-remote-code --tensor-parallel-size 8 --gpu-memory-utilization 0.85 --dtype float16 --served-model-name DeepSeek-R1-AWQ --model deepseek-ai/DeepSeek-R1-awq --api-key your-key

基于sglang部署

# 安装sglang
conda create -n sglang python=3.12 -y
conda activate sglang
pip install "sglang[all]>=0.4.3" --find-links https://flashinfer.ai/whl/cu124/torch2.5/flashinfer-python

# 运行模型(单机)
python3 -m sglang.launch_server --model cognitivecomputations/DeepSeek-R1-AWQ --tp 8 --trust-remote-code --dtype half --served-model-name xxx --api-key xxx
# 运行模型(多机)
# node 1
python3 -m sglang.launch_server --model-path /path/to/DeepSeek-R1-BF16 --tp 32 --dist-init-addr 10.0.0.1:5000 --nnodes 4 --node-rank 0 --trust-remote-code --host 0.0.0.0 --port 30000
# node 2
python3 -m sglang.launch_server --model-path /path/to/DeepSeek-R1-BF16 --tp 32 --dist-init-addr 10.0.0.1:5000 --nnodes 4 --node-rank 1 --trust-remote-code
# node 3
python3 -m sglang.launch_server --model-path /path/to/DeepSeek-R1-BF16 --tp 32 --dist-init-addr 10.0.0.1:5000 --nnodes 4 --node-rank 2 --trust-remote-code
# node 4
python3 -m sglang.launch_server --model-path /path/to/DeepSeek-R1-BF16 --tp 32 --dist-init-addr 10.0.0.1:5000 --nnodes 4 --node-rank 3 --trust-remote-code

# 报错Required: 106496, Hardware limit: 101376,解决办法:减少block_size
vim miniconda3/envs/sglang/lib/python3.11/site-packages/sglang/srt/layers/attention/triton_ops/extend_attention.py
BLOCK_M, BLOCK_N = (32, 32)    # 343行增加内容,将block_size设为固定值

基于ollama部署

部署最简单,但是实测不稳定,服务会挂,且不支持多机并发,不推荐

# 安装ollama
curl -fsSL https://ollama.com/install.sh | sh
# 运行模型
ollama run deepseek-r1:671b  # 会自动下载模型并运行,支持的模型可以查看:https://ollama.com/library?sort=popular

# 速度提升参考
export OLLAMA_FLASH_ATTENTION=1  # 启用 Flash Attention
export OLLAMA_KEEP_ALIVE=-1  # 保持模型常驻内存
# 指定服务监听地址和端口
export OLLAMA_HOST=0.0.0.0:11434

基于Ktransformers部署

主要针对没有大显存,有大内存的场景,Support DeepseekR1 and V3 on single (24GB VRAM)/multi gpu and 382G DRAM

# 安装Ktransformers
# 环境准备
sudo apt-get update
sudo apt-get install build-essential cmake ninja-build
conda create --name ktransformers python=3.11
conda activate ktransformers
conda install -c conda-forge libstdcxx-ng
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
pip install packaging ninja cpufeature numpy
# 源码安装
git clone https://github.com/kvcache-ai/ktransformers.git
cd ktransformers
git submodule init
git submodule update
bash install.sh


# 运行模型,原Q4_K_M模型里面缺少配置文件,需提前下载好放到模型目录下,下载地址:https://github.com/ubergarm/r1-ktransformers-guide
ktransformers --model_path deepseek-ai/DeepSeek-R1-Q4_K_M --gguf_path /path/to/DeepSeek-R1-Q4_K_M-merged.gguf --port 10002

# gguf模型合并
# 安装llama.cpp
apt-get update
apt-get install build-essential cmake curl libcurl4-openssl-dev git -y
git clone https://github.com/ggerganov/llama.cpp
cmake llama.cpp -B llama.cpp/build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split llama-server
cp llama.cpp/build/bin/llama-* llama.cpp
# llama-gguf-split和模型的具体位置,根据实际情况填写
../llama.cpp/llama-gguf-split --merge DeepSeek-R1-Q4_K_M-00001-of-00009.gguf DeepSeek-R1-Q4_K_M-merged.gguf

三、遇到的问题

OVN网络环境

# 多机下,基于OVN网络的一些设置:
# 多网卡时,指定默认网卡
sudo vim /etc/netplan/01-network-manager-all.yaml
# 内容如下:
network:
  version: 2
  renderer: NetworkManager
  ethernets:
    enp1s0:
      dhcp4: yes  # 允许 DHCP 其他配置(如 IP)
      dhcp4-overrides:
        use-routes: false  # 关闭 DHCP 提供的默认路由
        use-dns: false     # 可选:禁用 DHCP 推送的 DNS
    enp6s0:
      dhcp4: yes
      routes:
        - to: default
          via: 10.0.0.1  # 手动指定另一个接口默认网关
          metric: 90       # Metric 更低的路由优先(数值小优先级高)
# 让设置生效
sudo netplan apply
# 查看默认路由是否生效
ip route show

# 指定通信网卡
export NCCL_SOCKET_IFNAME=enp6s0
export GLOO_SOCKET_IFNAME=enp6s0
# 禁用IB模式
export NCCL_IB_DISABLE=1
# 设置mtu
sudo ip link set dev enp6s0 mtu 1400
Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐