马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
各人好!这里是迪小莫学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下令模板:- # 第一个节点
- docker run -itd \
- --name llm_node1 \
- --gpus all \
- --shm-size 32g \
- --network=host \
- -v /本地模型路径:/容器模型路径 \
- --ipc=host \
- sglang容器镜像 \
- python3 -m sglang.launch_server \
- --model-path /容器模型路径/DeepSeek-R1 \
- --tp 16 \
- --dist-init-addr 主节点IP:端口 \
- --nnodes 2 \
- --node-rank 0 \
- --trust-remote-code \
- --host 0.0.0.0 \
- --port 服务端口 \
- --allow-auto-truncate
- # 第二个节点
- docker run -itd \
- --name llm_node2 \
- --gpus all \
- --shm-size 32g \
- --network=host \
- -v /本地模型路径:/容器模型路径 \
- --ipc=host \
- sglang容器镜像 \
- python3 -m sglang.launch_server \
- --model-path /容器模型路径/DeepSeek-R1 \
- --tp 16 \
- --dist-init-addr 主节点IP:端口 \
- --nnodes 2 \
- --node-rank 1 \
- --trust-remote-code \
- --host 0.0.0.0 \
- --port 服务端口 \
- --allow-auto-truncate
复制代码 高级优化设置
针对性能要求更高的场景,可以添加以下优化参数:- python3 -m sglang.launch_server --model-path /path/to/DeepSeek-R1 --tp 16 \
- --dist-init-addr 主节点IP:端口 \
- --nnodes 2 --node-rank 0 \
- --trust-remote-code \
- --host 0.0.0.0 --port 服务端口 \
- --max-running-requests 1024 \
- --enable-torch-compile \
- --enable-flashinfer-mla \
- --schedule-conservativeness 0.01
复制代码 推测解码优化
使用Next-N推测解码可大幅提拔性能:- --speculative-algorithm NEXTN \
- --speculative-draft /path/to/DeepSeek-R1-NextN \
- --speculative-num-steps 3 \
- --speculative-eagle-topk 1 \
- --speculative-num-draft-tokens 4
复制代码 实测性能对比:
优化方式并发哀求首令牌时间(秒)每秒令牌数底子设置12.1318.28底子设置84.2111.86推测解码10.3830.44推测解码80.6513.69网络优化
对于使用InfiniBand网络的集群,可添加以下情况变量优化NCCL通讯:- -e NCCL_DEBUG="INFO" \
- -e "NCCL_SOCKET_IFNAME=网卡名称" \
- -e NCCL_IB_HCA=mlx5_0,mlx5_1,mlx5_2,mlx5_3 \
- -e NCCL_P2P_LEVEL=NVL \
- -e NCCL_IB_GID_INDEX=0 \
- -e NCCL_IB_CUDA_SUPPORT=1 \
- -e NCCL_NET_GDR_LEVEL=2
复制代码 其他推理架构对比
vLLM
vLLM是另一个常用的推理框架,支持多机摆设。详细信息可搜索"vLLM Distributed Serving"。
ktransformers
支持在24G显存的装备上运行DeepSeek-R1/V3模子。预处理处罚速率最高可达286 tokens/s,推理生成速率最高能到达14 tokens/s。
优点:
缺点:
Unsloth
支持纯CPU、CPU+GPU混淆或纯GPU模式,支持企业级并发,双卡A100可实现百人并发,每人14tokens/s,可与ollama和vllm集成。
常见标题与办理方案
历程停止标题
在某些摆设情况中,大概碰到历程无法正常停止的标题。可通过修改sglang的utils.py文件中的kill_process_tree函数办理:- def kill_process_tree(parent_pid, include_parent: bool = True, skip_pid: int = None):
- """Kill the process and all its child processes."""
- if parent_pid is None:
- parent_pid = os.getpid()
- include_parent = False
- try:
- itself = psutil.Process(parent_pid)
- except psutil.NoSuchProcess:
- return
- children = itself.children(recursive=True)
- for child in children:
- if child.pid == skip_pid:
- continue
- try:
- child.kill()
- except psutil.NoSuchProcess:
- pass
- if include_parent:
- if parent_pid == os.getpid():
- sys.exit(0)
- else:
- try:
- itself.kill()
- itself.send_signal(signal.SIGQUIT)
- except psutil.NoSuchProcess:
- pass
复制代码 添加看门狗超时
为防止历程卡死,可添加watchdog参数:- --watchdog-timeout 3600 # 单位为秒,表示1小时
复制代码 镜像与模子管理
镜像迁移
在无网络情况下迁移Docker镜像:- # 导出镜像
- docker save -o llm_image.tar 镜像名称:标签
- # 导入镜像
- docker load < llm_image.tar
复制代码 模子迁移
使用rsync高效传输模子:- rsync -avP 源路径/DeepSeek-R1/ 目标路径/DeepSeek-R1/
复制代码 总结
大型语言模子的摆设是一项复杂的体系工程,需要思量硬件资源、网络情况、软件栈等多方面因素。通过本文先容的方法,可以在多机多卡情况中高效摆设DeepSeek-R1等大模子,实现较高的推理性能和并发处理处罚本事。
随着硬件和软件技能的不绝进步,大模子摆设方案也将连续演进。建议读者保持关注社区最新动态,不绝优化自己的摆设战略。
|