举例:
export CUDA_VISIBLE_DEVICES=0,1
nohup python3 -m vllm.entrypoints.openai.api_server --served-model-name deepseek-v2-lite --model /mnt/data2/melan/model/DeepSeek-V2-Lite-Chat --host 10.4.118.205 --port 8301 --tensor-parallel-size 2 --gpu-memory-utilization 0.9 --enable-prefix-caching --trust-remote-code > logs/run_deepseek_v2_lite.log 2>&1 &
echo $! > pids/run_deepseek_v2_lite.pid
详解:
export CUDA_VISIBLE_DEVICES=0,1
- 解释:这行命令设置环境变量
CUDA_VISIBLE_DEVICES
,将其值设为0,1
。 - 作用:指定程序只能使用编号为 0 和 1 的 GPU。这对于多 GPU 系统非常有用,可以控制程序使用哪些 GPU。
nohup python3 -m vllm.entrypoints.openai.api_server --served-model-name deepseek-v2-lite --model /mnt/data2/melan/model/DeepSeek-V2-Lite-Chat --host 10.4.118.205 --port 8301 --tensor-parallel-size 2 --gpu-memory-utilization 0.9 --enable-prefix-caching --trust-remote-code > logs/run_deepseek_v2_lite.log 2>&1 &
解释:
nohup
:表示忽略挂起信号(SIGHUP),即使终端关闭,程序也会继续运行。python3 -m vllm.entrypoints.openai.api_server
:使用 Python 解释器运行模块vllm.entrypoints.openai.api_server
。--served-model-name deepseek-v2-lite
:指定服务的模型名称为deepseek-v2-lite
。--model /mnt/data2/melan/model/DeepSeek-V2-Lite-Chat
:指定模型文件路径。--host 10.4.118.205
:指定服务器主机地址。--port 8301
:指定服务器端口号。--tensor-parallel-size 2
:指定张量并行度为 2。--gpu-memory-utilization 0.9
:指定 GPU 内存利用率为 90%。--enable-prefix-caching
:启用前缀缓存。--trust-remote-code
:信任远程代码。> logs/run_deepseek_v2_lite.log 2>&1
:将标准输出和标准错误重定向到日志文件logs/run_deepseek_v2_lite.log
。&
:将命令放入后台运行。
echo $! > pids/run_deepseek_v2_lite.pid
$!
:获取最后一个后台进程的进程 ID (PID)。> pids/run_deepseek_v2_lite.pid
:将 PID 写入文件pids/run_deepseek_v2_lite.pid
。
-
作用:通过存储进程 ID,可以方便地管理和终止后台运行的程序。
注意:张量并行计算的并行度通常需要与指定的 GPU 数量保持一致。这是因为张量并行计算的核心思想是将模型的张量(如权重矩阵)分割成多个部分,并将这些部分分布到多个 GPU 上进行并行计算。