【摆设满血Deepseek-R1/V3】大型语言模子摆设实战:多机多卡DeepSeek-R1设置指南

[复制链接]
发表于 2025-9-12 16:25:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各人好!这里是迪小莫学AI,本日的文章是“”大型语言模子摆设实战:多机多卡DeepSeek-R1设置指南“”
前言

随着大型语言模子的快速发展,怎样高效摆设这些模子成为技能团队面临的告急挑衅。本文将分享基于DeepSeek-R1模子的多机多卡摆设实践履历,资助读者相识怎样优化GPU资源使用,进步模子推理性能。
模子摆设架构

硬件资源设置

为了到达最佳性能,我们接纳了"每两台机器摆设一个模子"的方案。现实测试表明,使用2台配备8张H100的机器,或2台配备8张H800的机器,性能表现相似,都能到达约20 token/s的总体吞吐量。
性能数据参考

单组模子(2台机器)在不同输入长度下的性能表现:
提示长度最大令牌数首令牌时间(秒)每秒令牌数总时间(秒)总令牌数781920.3725.4091.4623238007819211.1419.9894.2418831180078192159.585.35664.183551并发性能表现:
并发哀求提示长度最大令牌数首令牌时间(秒)每秒令牌数总时间(秒)总令牌数1781920.3624.3473.7117948781920.9718.7179.861197916781922.7615.69117.172949632781922.387.97211.1554220模子信息

DeepSeek-R1相比于DeepSeek-V3,体量相同但数据颠末优化,效果有显着提拔。这些模子的开源堆栈可通过搜索"deepseek-ai/deepseek-v3"找到。
比方魔搭社区和抱脸社区
https://modelscope.cn/models/deepseek-ai/DeepSeek-R1/files
SG-Lang多机多卡摆设

装备支持与性能优化


  • 硬件兼容性:H系列显卡支持FP8,而A100不支持。使用A100需要将FP8转换为BF16,模子巨细会从642GB增长到高出1.3TB,因此需要至少4个A100节点。
  • 关键优化参数:

    • --enable-dp-attention:优化重复的KV缓存和内存使用,得当高并发场景
    • --enable-torch-compile:耽误优化,提拔3-4 token/s的速率
    • --grammar-backend xgrammar:实现快速布局化输出
    • --allow-auto-truncate:答应超长内容主动截断

  • 内存管理:
    在显存告急时,可使用--mem-fraction-static 0.75参数低落静态内存分配比例
Docker摆设指令模板

以下是多节点摆设的Docker下令模板:
  1. # 第一个节点
  2. docker run -itd \
  3.     --name llm_node1 \
  4.     --gpus all \
  5.     --shm-size 32g \
  6.     --network=host \
  7.     -v /本地模型路径:/容器模型路径 \
  8.     --ipc=host \
  9.     sglang容器镜像 \
  10.     python3 -m sglang.launch_server \
  11.     --model-path /容器模型路径/DeepSeek-R1 \
  12.     --tp 16 \
  13.     --dist-init-addr 主节点IP:端口 \
  14.     --nnodes 2 \
  15.     --node-rank 0 \
  16.     --trust-remote-code \
  17.     --host 0.0.0.0 \
  18.     --port 服务端口 \
  19.     --allow-auto-truncate
  20. # 第二个节点
  21. docker run -itd \
  22.     --name llm_node2 \
  23.     --gpus all \
  24.     --shm-size 32g \
  25.     --network=host \
  26.     -v /本地模型路径:/容器模型路径 \
  27.     --ipc=host \
  28.     sglang容器镜像 \
  29.     python3 -m sglang.launch_server \
  30.     --model-path /容器模型路径/DeepSeek-R1 \
  31.     --tp 16 \
  32.     --dist-init-addr 主节点IP:端口 \
  33.     --nnodes 2 \
  34.     --node-rank 1 \
  35.     --trust-remote-code \
  36.     --host 0.0.0.0 \
  37.     --port 服务端口 \
  38.     --allow-auto-truncate
复制代码
高级优化设置

针对性能要求更高的场景,可以添加以下优化参数:
  1. python3 -m sglang.launch_server --model-path /path/to/DeepSeek-R1 --tp 16 \
  2.     --dist-init-addr 主节点IP:端口 \
  3.     --nnodes 2 --node-rank 0 \
  4.     --trust-remote-code \
  5.     --host 0.0.0.0 --port 服务端口 \
  6.     --max-running-requests 1024 \
  7.     --enable-torch-compile \
  8.     --enable-flashinfer-mla \
  9.     --schedule-conservativeness 0.01
复制代码
推测解码优化

使用Next-N推测解码可大幅提拔性能:
  1. --speculative-algorithm NEXTN \
  2. --speculative-draft /path/to/DeepSeek-R1-NextN \
  3. --speculative-num-steps 3 \
  4. --speculative-eagle-topk 1 \
  5. --speculative-num-draft-tokens 4
复制代码
实测性能对比:
优化方式并发哀求首令牌时间(秒)每秒令牌数底子设置12.1318.28底子设置84.2111.86推测解码10.3830.44推测解码80.6513.69网络优化

对于使用InfiniBand网络的集群,可添加以下情况变量优化NCCL通讯:
  1. -e NCCL_DEBUG="INFO" \
  2. -e "NCCL_SOCKET_IFNAME=网卡名称" \
  3. -e NCCL_IB_HCA=mlx5_0,mlx5_1,mlx5_2,mlx5_3 \
  4. -e NCCL_P2P_LEVEL=NVL \
  5. -e NCCL_IB_GID_INDEX=0 \
  6. -e NCCL_IB_CUDA_SUPPORT=1 \
  7. -e NCCL_NET_GDR_LEVEL=2
复制代码
其他推理架构对比

vLLM

vLLM是另一个常用的推理框架,支持多机摆设。详细信息可搜索"vLLM Distributed Serving"。
ktransformers

支持在24G显存的装备上运行DeepSeek-R1/V3模子。预处理处罚速率最高可达286 tokens/s,推理生成速率最高能到达14 tokens/s。
优点:

  • 性能较高,寻求CPU性能极限
  • 得当单用户场景
缺点:

  • 拓展性弱
  • 无法支持高并发
  • 需要新一代CPU
Unsloth

支持纯CPU、CPU+GPU混淆或纯GPU模式,支持企业级并发,双卡A100可实现百人并发,每人14tokens/s,可与ollama和vllm集成。
常见标题与办理方案

历程停止标题

在某些摆设情况中,大概碰到历程无法正常停止的标题。可通过修改sglang的utils.py文件中的kill_process_tree函数办理:
  1. def kill_process_tree(parent_pid, include_parent: bool = True, skip_pid: int = None):
  2.     """Kill the process and all its child processes."""
  3.     if parent_pid is None:
  4.         parent_pid = os.getpid()
  5.         include_parent = False
  6.     try:
  7.         itself = psutil.Process(parent_pid)
  8.     except psutil.NoSuchProcess:
  9.         return
  10.     children = itself.children(recursive=True)
  11.     for child in children:
  12.         if child.pid == skip_pid:
  13.             continue
  14.         try:
  15.             child.kill()
  16.         except psutil.NoSuchProcess:
  17.             pass
  18.     if include_parent:
  19.         if parent_pid == os.getpid():
  20.             sys.exit(0)
  21.         else:
  22.             try:
  23.                 itself.kill()
  24.                 itself.send_signal(signal.SIGQUIT)
  25.             except psutil.NoSuchProcess:
  26.                 pass
复制代码
添加看门狗超时

为防止历程卡死,可添加watchdog参数:
  1. --watchdog-timeout 3600  # 单位为秒,表示1小时
复制代码
镜像与模子管理

镜像迁移

在无网络情况下迁移Docker镜像:
  1. # 导出镜像
  2. docker save -o llm_image.tar 镜像名称:标签
  3. # 导入镜像
  4. docker load < llm_image.tar
复制代码
模子迁移

使用rsync高效传输模子:
  1. rsync -avP 源路径/DeepSeek-R1/ 目标路径/DeepSeek-R1/
复制代码
总结

大型语言模子的摆设是一项复杂的体系工程,需要思量硬件资源、网络情况、软件栈等多方面因素。通过本文先容的方法,可以在多机多卡情况中高效摆设DeepSeek-R1等大模子,实现较高的推理性能和并发处理处罚本事。
随着硬件和软件技能的不绝进步,大模子摆设方案也将连续演进。建议读者保持关注社区最新动态,不绝优化自己的摆设战略。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表