vLLM 的子进程会继承main进程的环境变量吗?

vllm serve Qwen/Qwen3-0.6B --gpu-memory-utilization=0.6 --port=20010 --tensor-parallel-size 2 --max-model-len 14096 --uvicorn-log-level=error

我发现在子进程(如487,488,)中打印环境变量,如LD_LIBRARY_PATH,ROCM_PATH 都为空

根据vLLM官方文档,vLLM的子进程会继承父进程的环境变量。若你在主进程(shell)中设置了如LD_LIBRARY_PATH、ROCM_PATH等环境变量,理论上子进程应能获取到这些变量。但如果你发现子进程环境变量为空,常见原因有:

  1. 你是在Python脚本或某些环境(如systemd、某些Docker配置)中启动vllm serve,未正确传递环境变量;
  2. 你在shell中export变量后,直接用sudo或其他方式切换用户启动,导致环境变量未继承;
  3. Docker容器未用–env/-e参数传递变量,或未用–env-file指定环境变量文件。

官方建议:确保在启动vllm serve前,环境变量已在当前shell中export,并用相同shell直接启动命令,或在Docker中用-e参数传递变量。否则,子进程环境变量会丢失。参考

需要更详细的排查步骤或代码示例吗?

Sources:

Hint: Mention @RunLLM in the post for followups.

我在docker 容器中启动服务,无论是在shell中export设置的环境变量,还是docker exec -e 传递的环境变量,子进程都打印为空

对了,我的vllm版本为 0.9.2rc2.dev2651+g3d192ffe9.rocm720