Skip to content

记录WSL编译vllm的一些错误解决

前言

注意

  • 从源码编译,且要使用自己已经安装的 pytorch 的话,需要走这些:
sh
# install PyTorch first, either from PyPI or from source
git clone https://github.com/vllm-project/vllm.git
cd vllm
python use_existing_torch.py
uv pip install -r requirements/build.txt
uv pip install --no-build-isolation -e .

错误

  • 编译失败,末尾报错 cmake 返回值 137:
sh
returned non-zero exit status 137.

## 较完整报错:
/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/dist.py:1021:
      _DebuggingTips: Problem in editable installation.
      !!

              ********************************************************************************
              An error happened while installing `vllm` in editable mode.

              The following steps are recommended to help debug this problem:

              - Try to install the project normally, without using the editable mode.
                Does the error still persist?
                (If it does, try fixing the problem before attempting the editable mode).
              - If you are using binary extensions, make sure you have all OS-level
                dependencies installed (e.g. compilers, toolchains, binary libraries, ...).
              - Try the latest version of setuptools (maybe the error was already fixed).
              - If you (or your project dependencies) are using any setuptools extension
                or customization, make sure they support the editable mode.

              After following the steps above, if the problem still persists and
              you think this is related to how setuptools handles editable installations,
              please submit a reproducible example
              (see https://stackoverflow.com/help/minimal-reproducible-example) to:

                  https://github.com/pypa/setuptools/issues

              See https://setuptools.pypa.io/en/latest/userguide/development_mode.html for details.
              ********************************************************************************

      !!
        cmd_obj.run()
      Traceback (most recent call last):
        File "<string>", line 11, in <module>
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/build_meta.py", line 476, in
      build_editable
          return self._build_with_temp_dir(
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/build_meta.py", line 407, in
      _build_with_temp_dir
          self.run_setup()
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/build_meta.py", line 320, in
      run_setup
          exec(code, locals())
        File "<string>", line 652, in <module>
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/__init__.py", line 117, in
      setup
          return distutils.core.setup(**attrs)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 186,
      in setup
          return run_commands(dist)
                 ^^^^^^^^^^^^^^^^^^
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/core.py", line 202,
      in run_commands
          dist.run_commands()
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 1002,
      in run_commands
          self.run_command(cmd)
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/dist.py", line 1104, in
      run_command
          super().run_command(command)
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 1021,
      in run_command
          cmd_obj.run()
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/command/editable_wheel.py",
      line 139, in run
          self._create_wheel_file(bdist_wheel)
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/command/editable_wheel.py",
      line 340, in _create_wheel_file
          files, mapping = self._run_build_commands(dist_name, unpacked, lib, tmp)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/command/editable_wheel.py",
      line 263, in _run_build_commands
          self._run_build_subcommands()
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/command/editable_wheel.py",
      line 290, in _run_build_subcommands
          self.run_command(name)
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/cmd.py", line 357,
      in run_command
          self.distribution.run_command(command)
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/dist.py", line 1104, in
      run_command
          super().run_command(command)
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/dist.py", line 1021,
      in run_command
          cmd_obj.run()
        File "<string>", line 268, in run
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/command/build_ext.py", line 99,
      in run
          _build_ext.run(self)
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/site-packages/setuptools/_distutils/command/build_ext.py",
      line 368, in run
          self.build_extensions()
        File "<string>", line 242, in build_extensions
        File "/root/miniconda3/envs/vllm_py312/lib/python3.12/subprocess.py", line 413, in check_call
          raise CalledProcessError(retcode, cmd)
      subprocess.CalledProcessError: Command '['cmake', '--build', '.', '-j=12', '--target=_moe_C',
      '--target=_vllm_fa2_C', '--target=_vllm_fa3_C', '--target=_flashmla_C', '--target=_flashmla_extension_C',
      '--target=cumem_allocator', '--target=_C']' returned non-zero exit status 137.

      hint: This usually indicates a problem with the package or the build environment.
- 其实很可能是内存不够OOM,被系统砍了,`dmesg -T`就能看见系统砍的提示:
sh
root@ > dmesg -T

[Wed Oct  1 01:43:00 2025] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=cudafe++,pid=8456,uid=0
[Wed Oct  1 01:43:00 2025] Out of memory: Killed process 8456 (cudafe++) total-vm:1797420kB, anon-rss:1259364kB, file-rss:384kB, shmem-rss:0kB, UID:0 pgtables:3568kB oom_score_adj:0
- 解决办法其实文档里有的:
sh
# 限制最大工作数量,防止系统资源不够导致崩溃
export MAX_JOBS=4
# 如果按使用已有pytorch的话应为:uv pip install --no-build-isolation -e .
uv pip install -e .
- 另起一个shell窗口,top查看内存占用,一旦出现内存只剩下几十、一两百MB就说明内存是不够的,应当`Ctrl+c`停止安装,重新调小`MAX_JOBS`
- 内存不够还强行编译的话会非常慢,而且特别容易等半天最终被系统砍了提示编译失败