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
8776c63c
Commit
8776c63c
authored
Apr 22, 2025
by
王敏
Browse files
[fix]修复开并行解码后,speculative-disable-by-batch-size设的比测试的batch小的话可能出现的数组越界问题
parent
8fc15e04
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
10 deletions
+28
-10
vllm/sequence.py
vllm/sequence.py
+20
-1
vllm/spec_decode/spec_decode_worker.py
vllm/spec_decode/spec_decode_worker.py
+8
-9
No files found.
vllm/sequence.py
View file @
8776c63c
...
@@ -1300,17 +1300,36 @@ class HiddenStates(msgspec.Struct, array_like=True,
...
@@ -1300,17 +1300,36 @@ class HiddenStates(msgspec.Struct, array_like=True,
"""Update hidden states from target model invocation. Only used for
"""Update hidden states from target model invocation. Only used for
decode steps"""
decode steps"""
assert
len
(
seq_group_metadata_list
)
==
len
(
hidden_states
)
assert
len
(
seq_group_metadata_list
)
==
len
(
hidden_states
)
self
.
_seq_ids
.
extend
(
get_all_seq_ids
(
seq_group_metadata_list
))
# self._seq_ids.extend(get_all_seq_ids(seq_group_metadata_list))
# self.hidden_states = torch.cat([self.hidden_states, hidden_states])
# if self.second_last_token_hidden_states is not None:
# # Adding dummy hidden_states to this to maintain same shape
# self.second_last_token_hidden_states = torch.cat([
# self.second_last_token_hidden_states,
# torch.zeros_like(hidden_states)
# if second_last_token_hidden_states is None else
# second_last_token_hidden_states
# ])
seq_ids
=
get_all_seq_ids
(
seq_group_metadata_list
)
diff_seq_ids
=
[
item
for
item
in
self
.
_seq_ids
if
item
not
in
seq_ids
]
index
=
[
self
.
_seq_ids
.
index
(
seq_id
)
for
seq_id
in
diff_seq_ids
]
self
.
_seq_ids
=
diff_seq_ids
self
.
hidden_states
=
self
.
hidden_states
[
index
]
self
.
hidden_states
=
torch
.
cat
([
self
.
hidden_states
,
hidden_states
])
self
.
hidden_states
=
torch
.
cat
([
self
.
hidden_states
,
hidden_states
])
if
self
.
second_last_token_hidden_states
is
not
None
:
if
self
.
second_last_token_hidden_states
is
not
None
:
# Adding dummy hidden_states to this to maintain same shape
# Adding dummy hidden_states to this to maintain same shape
self
.
second_last_token_hidden_states
=
self
.
second_last_token_hidden_states
[
index
]
self
.
second_last_token_hidden_states
=
torch
.
cat
([
self
.
second_last_token_hidden_states
=
torch
.
cat
([
self
.
second_last_token_hidden_states
,
self
.
second_last_token_hidden_states
,
torch
.
zeros_like
(
hidden_states
)
torch
.
zeros_like
(
hidden_states
)
if
second_last_token_hidden_states
is
None
else
if
second_last_token_hidden_states
is
None
else
second_last_token_hidden_states
second_last_token_hidden_states
])
])
self
.
_seq_ids
.
extend
(
seq_ids
)
def
prune
(
self
,
def
prune
(
self
,
seq_group_metadata_list
:
List
[
SequenceGroupMetadata
])
->
None
:
seq_group_metadata_list
:
List
[
SequenceGroupMetadata
])
->
None
:
...
...
vllm/spec_decode/spec_decode_worker.py
View file @
8776c63c
...
@@ -691,7 +691,6 @@ class SpecDecodeWorker(LoraNotSupportedWorkerBase):
...
@@ -691,7 +691,6 @@ class SpecDecodeWorker(LoraNotSupportedWorkerBase):
torch
.
where
(
sampler_output
.
sampled_token_ids
-
torch
.
where
(
sampler_output
.
sampled_token_ids
-
VLLM_INVALID_TOKEN_ID
)[
0
]]
VLLM_INVALID_TOKEN_ID
)[
0
]]
if
not
skip_proposer
:
if
self
.
previous_hidden_states
is
None
and
len
(
if
self
.
previous_hidden_states
is
None
and
len
(
seq_group_meta_with_hidden
):
seq_group_meta_with_hidden
):
self
.
previous_hidden_states
=
HiddenStates
(
self
.
previous_hidden_states
=
HiddenStates
(
...
...
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