9个做简历的网站,公司网站建设策划书,中国农业科技推广网,注册公司流程和费用多少在大模型时代#xff0c;单节点 GPU 资源往往难以满足大模型#xff08;如 7B/13B 参数模型#xff09;的部署需求。借助 Ray 分布式框架#xff0c;我们可以轻松实现跨节点 GPU 资源调度#xff0c;让大模型在多节点间高效运行。本文将以 DeepSeek-llm-7B-Chat 模型为例单节点 GPU 资源往往难以满足大模型如 7B/13B 参数模型的部署需求。借助 Ray 分布式框架我们可以轻松实现跨节点 GPU 资源调度让大模型在多节点间高效运行。本文将以 DeepSeek-llm-7B-Chat 模型为例详细讲解如何通过 Ray 搭建跨节点集群结合 vLLM 实现分布式推理并解决部署过程中的常见问题。一、背景与目标为什么需要跨节点 GPU 调用模型规模限制7B 参数的 DeepSeek 模型单卡可加载但更大的模型如 33B单卡显存不足需多卡并行。资源利用率跨节点调用可整合多台服务器的 GPU 资源避免单节点资源闲置。分布式推理优势通过 Ray 的张量并行Tensor Parallelism模型层可拆分到不同节点的 GPU提升推理效率。本文目标搭建包含 1 个主节点、2 个工作节点的 Ray 集群。跨节点调用 2 张 GPU用 vLLM 部署 DeepSeek-llm-7B-Chat 模型。实现 OpenAI 兼容的 API 服务支持客户端调用。二、环境准备硬件要求节点数量3 台服务器1 主 2 从支持 GPU。主节点master192.168.2.221至少 1 张 GPU本文用 Tesla V100-32GB。工作节点 1worker1192.168.2.226至少 1 张 GPU。工作节点 2worker2192.168.2.227至少 1 张 GPU。网络节点间内网互通推荐 10Gbps 以上带宽支持 SSH 免密登录。软件要求工具 / 库版本作用Python3.9运行环境Ray2.9.0分布式集群管理vLLM0.9.2高效大模型推理引擎CUDA11.8GPU 加速DeepSeek-llm-7B-Chat-目标部署模型三、详细部署步骤步骤 1全节点初始化环境所有节点执行1.1 安装系统依赖解决后续可能出现的Python.h缺失问题编译 C 扩展时需要
# 基于CentOS/RHEL的系统
dnf install -y python3-devel gcc gcc-c# 基于Ubuntu的系统
# apt-get install -y python3-dev gcc g
1.2 创建虚拟环境统一环境避免依赖冲突
# 安装virtualenv
pip3 install virtualenv# 创建并激活虚拟环境
cd /opt
virtualenv vllm_env --pythonpython3.9
source vllm_env/bin/activate # 激活环境后续所有操作均在此环境中执行
1.3 安装核心依赖
# 安装Ray包含集群管理和客户端组件
pip install ray[default,client] --upgrade# 安装vLLM支持分布式推理
pip install vllm0.9.2# 安装其他工具可选用于测试
pip install requests # 用于发送API请求
步骤 2搭建 Ray 分布式集群2.1 启动主节点master192.168.2.221
# 启动Ray主节点指定IP、端口和Dashboard
ray start --head \--node-ip-address 192.168.2.221 \ # 主节点IP--port 6379 \ # 端口集群元数据存储--dashboard-host 0.0.0.0 \ # 允许外部访问Dashboard--dashboard-port 8265 \ # Dashboard端口用于监控集群--include-dashboardTrue \ # 启用Dashboard启动成功后会显示工作节点加入命令需记录
To add another node to this Ray cluster, run:ray start --address192.168.2.221:6379
2.2 加入工作节点worker1192.168.2.226 和 worker2192.168.2.227在两个工作节点分别执行以下命令加入主节点集群
# 激活虚拟环境同主节点路径
source /opt/vllm_env/bin/activate# 加入集群使用主节点输出的地址
ray start \--address 192.168.2.221:6379 \ # 主节点地址--node-ip-address 192.168.2.226 # 当前工作节点IPworker1填226worker2填227
2.3 验证集群状态主节点执行
# 查看集群节点信息
ray status
预期输出显示 3 个节点2 张 GPU 可用
Node status
---------------------------------------------------------------
Healthy:1 node_abc... (192.168.2.221)1 node_def... (192.168.2.226)1 node_ghi... (192.168.2.227)
Resources
---------------------------------------------------------------
Total Usage: 0.0/192.0 CPU, 0.0/2.0 GPU # 2张GPU可用
步骤 3部署 DeepSeek 模型主节点执行3.1 准备模型将 DeepSeek-llm-7B-Chat 模型下载到所有节点均可访问的路径推荐用 NFS 共享避免多节点重复下载
# 示例通过Hugging Face Hub下载需提前登录hf-cli
huggingface-cli download deepseek-ai/deepseek-llm-7b-chat --local-dir /data/storage/data/VLLM_MODE/deepseek-llm-7b-chat
3.2 启动 vLLM 服务支持跨节点 GPU 调用
# 激活虚拟环境
source /opt/vllm_env/bin/activate# 设置Ray集群地址
export RAY_ADDRESS192.168.2.221:6379# 启动OpenAI兼容的API服务
python -m vllm.entrypoints.openai.api_server \--model /data/storage/data/VLLM_MODE/deepseek-llm-7b-chat \ # 模型路径--port 9001 \ # API服务端口--host 0.0.0.0 \ # 允许外部访问--tensor-parallel-size 2 \ # 张量并行数总GPU数--distributed-executor-backend ray \ # 使用Ray作为分布式后端--gpu-memory-utilization 0.9 # GPU内存利用率90%
启动成功的关键日志步骤 4验证跨节点 GPU 调用4.1 检查 GPU 使用情况工作节点执行在 worker1192.168.2.226和 worker2192.168.2.227分别执行nvidia-smi可看到 GPU 被 vLLM 进程占用
nvidia-smi
预期输出关键信息
-----------------------------------------------------------------------------
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
||
| 0 N/A N/A 872773 C ...vllm_env/bin/python 28511MiB | # vLLM进程占用
-----------------------------------------------------------------------------
说明两个节点的 GPU 均被成功调用每张卡负载约 28GB符合 7B 模型 90% 内存利用率的预期。4.2 测试模型推理客户端执行通过 API 发送请求测试
# 发送推理请求
curl http://192.168.2.221:9001/v1/chat/completions \-H Content-Type: application/json \-d {model: deepseek-llm-7b-chat,messages: [{role: user, content: 介绍一下Ray和vLLM的关系}]}
成功响应示例部分json
{id: chatcmpl-xxx,object: chat.completion,created: 1689523456,model: deepseek-llm-7b-chat,choices: [{message: {role: assistant,content: Ray是一个分布式计算框架可用于管理跨节点的GPU资源...vLLM是高效的大模型推理引擎通过Ray实现分布式部署...},finish_reason: stop,index: 0}]
}
步骤 5Ray 集群的停止与清理当需要更新配置或重启集群时需彻底停止 Ray 进程并清理残留数据避免旧会话信息干扰
# 停止当前节点的 Ray 进程
ray stop# 若 ray stop 无效直接 kill 残留进程谨慎使用确保只 kill Ray 相关进程
pkill -f ray# 清理 Ray 临时目录包含Redis数据、会话信息等
rm -rf /tmp/ray/*
注意以上命令需在所有节点执行主节点 工作节点确保集群完全停止。清理完成后可重新执行步骤 2 和步骤 3 启动新集群。四、常见问题与解决方案问题 1Python.h: No such file or directory原因缺少 Python 开发库编译 C 扩展时失败。解决安装python3-devel
dnf install python3-devel # CentOS/RHEL
# 或 apt-get install python3-dev # Ubuntu
问题 2ModuleNotFoundError: No module named vllm原因工作节点未安装 vLLM。解决在所有工作节点的虚拟环境中安装 vLLM
source /opt/vllm_env/bin/activate
pip install vllm0.9.2
问题 3Ray Client 连接超时原因6379 端口未开放或 Ray Client 服务未启动。解决
# 主节点开放端口
firewall-cmd --add-port6379/tcp --permanent
firewall-cmd --reload# 重启Ray时显式指定Client端口
ray start --head ... --ray-client-server-port 6379
问题 4GPU 资源不足原因tensor-parallel-size超过实际 GPU 数量。解决确保--tensor-parallel-size等于集群总 GPU 数本文为 2。
关键代码
pip install ray[default] --upgrade
ray start --head --node-ip-address 192.168.2.221 --port 6379 --dashboard-host 0.0.0.0 --dashboard-port 8265 --include-dashboardTrue 创建master ray主节点
ray start --address 192.168.2.221:6379 --node-ip-address 192.168.2.226
ray start --address 192.168.2.221:6379 --node-ip-address 192.168.2.227cd /opt/
source vllm_env/bin/activateexport HF_ENDPOINThttps://hf-mirror.com
huggingface-cli download --resume-download deepseek-ai/deepseek-llm-7b-chat --local-dir /data/storage/data/VLLM_MODE/deepseek-llm-7b-chatRAY_ADDRESS192.168.2.221:6379 python -m vllm.entrypoints.openai.api_server --model /data/storage/data/VLLM_MODE/deepseek-llm-7b-chat --port 9001 --host 0.0.0.0 --tensor-parallel-size 2 --distributed-executor-backend ray --gpu-memory-utilization 0.9