Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
vllm_cscc
Commits
e25fee57
Unverified
Commit
e25fee57
authored
Aug 23, 2024
by
Maximilien de Bayser
Committed by
GitHub
Aug 23, 2024
Browse files
[BugFix] Fix server crash on empty prompt (#7746)
Signed-off-by:
Max de Bayser
<
mbayser@br.ibm.com
>
parent
faeddb56
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
39 additions
and
0 deletions
+39
-0
tests/entrypoints/llm/test_prompt_validation.py
tests/entrypoints/llm/test_prompt_validation.py
+9
-0
tests/entrypoints/openai/test_prompt_validation.py
tests/entrypoints/openai/test_prompt_validation.py
+22
-0
vllm/engine/llm_engine.py
vllm/engine/llm_engine.py
+8
-0
No files found.
tests/entrypoints/llm/test_prompt_validation.py
0 → 100644
View file @
e25fee57
import
pytest
from
vllm
import
LLM
def
test_empty_prompt
():
llm
=
LLM
(
model
=
"gpt2"
)
with
pytest
.
raises
(
ValueError
,
match
=
'Prompt cannot be empty'
):
llm
.
generate
([
""
])
tests/entrypoints/openai/test_prompt_validation.py
0 → 100644
View file @
e25fee57
# imports for guided decoding tests
import
re
import
openai
import
pytest
from
...utils
import
RemoteOpenAIServer
@
pytest
.
mark
.
asyncio
async
def
test_empty_prompt
():
model_name
=
"gpt2"
server_args
=
[
"--enforce-eager"
]
with
RemoteOpenAIServer
(
model_name
,
server_args
)
as
remote_server
:
client
=
remote_server
.
get_async_client
()
with
pytest
.
raises
(
openai
.
BadRequestError
,
match
=
re
.
compile
(
'.+Prompt cannot be empty.+'
)):
await
client
.
completions
.
create
(
model
=
model_name
,
prompt
=
""
,
max_tokens
=
5
,
temperature
=
0.0
)
vllm/engine/llm_engine.py
View file @
e25fee57
...
...
@@ -591,6 +591,7 @@ class LLMEngine:
prompt_adapter_request
:
Optional
[
PromptAdapterRequest
],
trace_headers
:
Optional
[
Mapping
[
str
,
str
]]
=
None
,
)
->
None
:
self
.
_validate_model_inputs
(
processed_inputs
)
# Create the sequences.
block_size
=
self
.
cache_config
.
block_size
seq_id
=
next
(
self
.
seq_counter
)
...
...
@@ -1647,3 +1648,10 @@ class LLMEngine:
def
is_embedding_model
(
self
):
return
self
.
model_config
.
is_embedding_model
def
_validate_model_inputs
(
self
,
inputs
:
Union
[
LLMInputs
,
EncoderDecoderLLMInputs
]):
prompt_key
=
"encoder_prompt_token_ids"
\
if
self
.
is_encoder_decoder_model
()
else
"prompt_token_ids"
if
not
inputs
.
get
(
prompt_key
):
raise
ValueError
(
"Prompt cannot be empty"
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment