Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: vllm serve --config.yaml - Order of arguments matters? #8947

Closed
1 task done
FloWsnr opened this issue Sep 29, 2024 · 9 comments · Fixed by #8960
Closed
1 task done

[Bug]: vllm serve --config.yaml - Order of arguments matters? #8947

FloWsnr opened this issue Sep 29, 2024 · 9 comments · Fixed by #8960
Labels
bug Something isn't working good first issue Good for newcomers

Comments

@FloWsnr
Copy link

FloWsnr commented Sep 29, 2024

Your current environment

The output of `python collect_env.py`
PyTorch version: 2.4.0+cu121
Is debug build: False
CUDA used to build PyTorch: 12.1
ROCM used to build PyTorch: N/A

OS: Rocky Linux release 8.10 (Green Obsidian) (x86_64)
GCC version: (GCC) 11.3.0
Clang version: Could not collect
CMake version: version 3.26.5
Libc version: glibc-2.28

Python version: 3.11.5 (main, Sep 11 2023, 13:54:46) [GCC 11.2.0] (64-bit runtime)
Python platform: Linux-4.18.0-553.16.1.el8_10.x86_64-x86_64-with-glibc2.28
Is CUDA available: True
CUDA runtime version: Could not collect
CUDA_MODULE_LOADING set to: LAZY
GPU models and configuration: 
GPU 0: NVIDIA H100
GPU 1: NVIDIA H100
GPU 2: NVIDIA H100
  MIG 1g.12gb     Device  0:
  MIG 1g.12gb     Device  1:
  MIG 1g.12gb     Device  2:
  MIG 1g.12gb     Device  3:
  MIG 1g.12gb     Device  4:
  MIG 1g.12gb     Device  5:
  MIG 1g.12gb     Device  6:
GPU 3: NVIDIA H100

Nvidia driver version: 550.90.07
cuDNN version: Could not collect
HIP runtime version: N/A
MIOpen runtime version: N/A
Is XNNPACK available: True

CPU:
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
CPU(s):              96
On-line CPU(s) list: 0-95
Thread(s) per core:  1
Core(s) per socket:  48
Socket(s):           2
NUMA node(s):        8
Vendor ID:           GenuineIntel
CPU family:          6
Model:               143
Model name:          Intel(R) Xeon(R) Platinum 8468
Stepping:            8
CPU MHz:             3701.598
CPU max MHz:         3800.0000
CPU min MHz:         800.0000
BogoMIPS:            4200.00
L1d cache:           48K
L1i cache:           32K
L2 cache:            2048K
L3 cache:            107520K
NUMA node0 CPU(s):   0-11
NUMA node1 CPU(s):   12-23
NUMA node2 CPU(s):   24-35
NUMA node3 CPU(s):   36-47
NUMA node4 CPU(s):   48-59
NUMA node5 CPU(s):   60-71
NUMA node6 CPU(s):   72-83
NUMA node7 CPU(s):   84-95
Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc art arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf tsc_known_freq pni pclmulqdq dtes64 monitor ds_cpl smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch cpuid_fault epb cat_l3 cat_l2 cdp_l3 invpcid_single intel_ppin cdp_l2 ssbd mba ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid cqm rdt_a avx512f avx512dq rdseed adx smap avx512ifma clflushopt clwb intel_pt avx512cd sha_ni avx512bw avx512vl xsaveopt xsavec xgetbv1 xsaves cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local split_lock_detect avx_vnni avx512_bf16 wbnoinvd dtherm ida arat pln pts hwp hwp_act_window hwp_epp hwp_pkg_req avx512vbmi umip pku ospke waitpkg avx512_vbmi2 gfni vaes vpclmulqdq avx512_vnni avx512_bitalg tme avx512_vpopcntdq la57 rdpid bus_lock_detect cldemote movdiri movdir64b enqcmd fsrm md_clear serialize tsxldtrk pconfig arch_lbr amx_bf16 avx512_fp16 amx_tile amx_int8 flush_l1d arch_capabilities

Versions of relevant libraries:
[pip3] numpy==1.26.4
[pip3] nvidia-cublas-cu12==12.1.3.1
[pip3] nvidia-cuda-cupti-cu12==12.1.105
[pip3] nvidia-cuda-nvrtc-cu12==12.1.105
[pip3] nvidia-cuda-runtime-cu12==12.1.105
[pip3] nvidia-cudnn-cu12==9.1.0.70
[pip3] nvidia-cufft-cu12==11.0.2.54
[pip3] nvidia-curand-cu12==10.3.2.106
[pip3] nvidia-cusolver-cu12==11.4.5.107
[pip3] nvidia-cusparse-cu12==12.1.0.106
[pip3] nvidia-ml-py==12.560.30
[pip3] nvidia-nccl-cu12==2.20.5
[pip3] nvidia-nvjitlink-cu12==12.6.68
[pip3] nvidia-nvtx-cu12==12.1.105
[pip3] pyzmq==26.2.0
[pip3] sentence-transformers==3.0.1
[pip3] torch==2.4.0
[pip3] torchvision==0.19.0
[pip3] transformers==4.45.1
[pip3] triton==3.0.0
[conda] No relevant packages
ROCM Version: Could not collect
Neuron SDK Version: N/A
vLLM Version: 0.6.1.dev238+ge2c6e0a82
vLLM Build Flags:
CUDA Archs: Not Set; ROCm: Disabled; Neuron: Disabled
GPU Topology:
GPU0    GPU1    GPU2    GPU3    NIC0    NIC1    CPU Affinity    NUMA Affinity   GPU NUMA ID
GPU0     X      NV6     NV6     NV6     SYS     SYS     0-11    0               N/A
GPU1    NV6      X      NV6     SYS     PIX     SYS     24-35   2               N/A
GPU2    SYS     SYS      X      SYS     SYS     SYS     48-59   4               N/A
GPU3    NV6     SYS     NV6      X      SYS     PIX     72-83   6               N/A
NIC0    SYS     PIX     SYS     SYS      X      SYS
NIC1    SYS     SYS     SYS     PIX     SYS      X 

Legend:

  X    = Self
  SYS  = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
  NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
  PHB  = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
  PXB  = Connection traversing multiple PCIe bridges (without traversing the PCIe Host Bridge)
  PIX  = Connection traversing at most a single PCIe bridge
  NV#  = Connection traversing a bonded set of # NVLinks

NIC Legend:

  NIC0: mlx5_0
  NIC1: mlx5_1

Model Input Dumps

No response

🐛 Describe the bug

When serving a vllm server with vllm serve path/to/model --config path/to/config.yaml the position of the argument served-model-name seems to be cruical to successfully run the server.

P.s.
Why is collect_env.py showing vLLM Version: 0.6.1.dev238+ge2c6e0a82
I definitely used vllm=0.6.2 and my pip shows the same.

Config that works flawlessly:

served-model-name: "MyModel"
host: "127.0.0.1"
port: 6379
uvicorn-log-level: "info"

Here, the server runs and I can call the model using the name "MyModel".

Config that does not work:

host: "127.0.0.1"
port: 6379
uvicorn-log-level: "info"
served-model-name: "MyModel"

With the latter config, I get the following error:
vllm serve: error: the following arguments are required: model_tag

Before submitting a new issue...

  • Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.
@FloWsnr FloWsnr added the bug Something isn't working label Sep 29, 2024
@DarkLight1337
Copy link
Member

DarkLight1337 commented Sep 29, 2024

The model_tag is a positional argument that is separate from served_model_name. The previous setting worked because you passed the model name as both model_tag (implicitly by placing it as the first argument) and served_model_name (via keyword argument). To avoid this issue, I recommend you pass model_tag only as the first argument, then served_model_name should be automatically set to be the same as model_tag. Example:

model-tag: "MyModel"
host: "127.0.0.1"
port: 6379
uvicorn-log-level: "info"

@DarkLight1337
Copy link
Member

P.s.
Why is collect_env.py showing vLLM Version: 0.6.1.dev238+ge2c6e0a82
I definitely used vllm=0.6.2 and my pip shows the same.

What are you using to manage your Python environment?

@FloWsnr
Copy link
Author

FloWsnr commented Sep 29, 2024

The model_tag is a positional argument that is separate from served_model_name. The previous setting worked because you passed the model name as both model_tag (implicitly by placing it as the first argument) and served_model_name (via keyword argument). To avoid this issue, I recommend you pass model_tag only as the first argument, then served_model_name should be automatically set to be the same as model_tag. Example:

model-tag: "MyModel"
host: "127.0.0.1"
port: 6379
uvicorn-log-level: "info"

Hi DarkLight, thanks for the help.
I don't think your solution works if I want to specify a local model path but keep a clean/simple model name?

So my current actual command is:
vllm serve "/home/projectX/Meta-Llama-3.1-8B-Instruct" --config "/home/projectX/server_config.yaml"
However, I want my model to be named MyModel which is then the name used in the OpenAI api:

response = self.client.chat.completions.create(
            model="MyModel",
            messages=chat_history,
        )

If I use your config, I get the following error:
vllm: error: unrecognized arguments: --model-tag /home/projectX/Meta-Llama-3.1-8B-Instruct

P.s.
Why is collect_env.py showing vLLM Version: 0.6.1.dev238+ge2c6e0a82
I definitely used vllm=0.6.2 and my pip shows the same.

What are you using to manage your Python environment?

I am using poetry and updated my vllm version today with poetry add vllm@latest

@DarkLight1337
Copy link
Member

Hi DarkLight, thanks for the help.
I don't think your solution works if I want to specify a local model path but keep a clean/simple model name?

So my current actual command is:
vllm serve "/home/projectX/Meta-Llama-3.1-8B-Instruct" --config "/home/projectX/server_config.yaml"
However, I want my model to be named MyModel which is then the name used in the OpenAI api:

response = self.client.chat.completions.create(
            model="MyModel",
            messages=chat_history,
        )

If I use your config, I get the following error:
vllm: error: unrecognized arguments: --model-tag /home/projectX/Meta-Llama-3.1-8B-Instruct

I see what you mean now, yeah the config parsing could definitely use some improvement...

P.s.
Why is collect_env.py showing vLLM Version: 0.6.1.dev238+ge2c6e0a82
I definitely used vllm=0.6.2 and my pip shows the same.

What are you using to manage your Python environment?

I am using poetry and updated my vllm version today with poetry add vllm@latest

Can you try wrapping vllm serve inside poetry run to ensure that you are using the version installed by Poetry?

@Imss27
Copy link
Contributor

Imss27 commented Sep 30, 2024

Hi @FloWsnr, could you please try my PR?
The reason I found out is due to the --served-model-names argument takes all the values behind it such that the positional argument model_tag is not set properly when served-model-names is specified at the end of the yaml file.

@DarkLight1337 Could you please review my PR when you get a chance?😊

@FloWsnr
Copy link
Author

FloWsnr commented Oct 5, 2024

Hi guys, thanks for helping!

Hi @FloWsnr, could you please try my PR?

Your PR seems to work for my usecase. As you discussed in the PR, some more work on the arg-parsing might be needed in the future to provide an elegant solution.

Why is collect_env.py showing vLLM Version: 0.6.1.dev238+ge2c6e0a82
I definitely used vllm=0.6.2 and my pip shows the same.
This is still the case for both:

  1. reinstalling the poetry env poetry install.
  2. pip install vllm==0.6.2 in a new conda-env.

I think it might be a problem with the released version since the content of _version.py is:

# _version.py
__version__ = version = '0.6.1.dev238+ge2c6e0a82'
__version_tuple__ = version_tuple = (0, 6, 1, 'dev238', 'ge2c6e0a82')

Should I open a new issue to track this separately?

@DarkLight1337
Copy link
Member

I think it might be a problem with the released version since the content of _version.py is: ...
Should I open a new issue to track this separately?

v0.6.2 (release) broke collect_env.py. It has been fixed by #8894

@youqugit
Copy link

youqugit commented Oct 8, 2024

Hi DarkLight, thanks for the help.
I don't think your solution works if I want to specify a local model path but keep a clean/simple model name?
So my current actual command is:
vllm serve "/home/projectX/Meta-Llama-3.1-8B-Instruct" --config "/home/projectX/server_config.yaml"
However, I want my model to be named MyModel which is then the name used in the OpenAI api:

response = self.client.chat.completions.create(
            model="MyModel",
            messages=chat_history,
        )

If I use your config, I get the following error:
vllm: error: unrecognized arguments: --model-tag /home/projectX/Meta-Llama-3.1-8B-Instruct

I see what you mean now, yeah the config parsing could definitely use some improvement...

P.s.
Why is collect_env.py showing vLLM Version: 0.6.1.dev238+ge2c6e0a82
I definitely used vllm=0.6.2 and my pip shows the same.

What are you using to manage your Python environment?

I am using poetry and updated my vllm version today with poetry add vllm@latest

Can you try wrapping vllm serve inside poetry run to ensure that you are using the version installed by Poetry?

I meet same issue。
i move served-model-name to first argument。
error:

huggingface_hub.errors.HFValidationError: Repo id must be in the form 'repo_name' or 'namespace/repo_name': '/data/models/Qwen2.5-7B-Instruct-GPTQ-Int4'. Use `repo_type` argument if needed.

sever command:

vllm serve "/data/models/Qwen2.5-7B-Instruct-GPTQ-Int4" \
    --served-model-name Qwen-72B-Chat-Int4 \
    --distributed-executor-backend ray \
    --tensor-parallel-size 2 \
    --quantization gptq \
    --enable-auto-tool-choice --tool-call-parser hermes \
    --port 6546\
    --host 0.0.0.0 

@Imss27
Copy link
Contributor

Imss27 commented Oct 8, 2024

@youqugit It seems not to be an argument parsing issue of vLLM, please double check your "/data/models/Qwen2.5-7B-Instruct-GPTQ-Int4" string, whether it is in the form of 'repo_name' or 'namespace/repo_name'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants