Initial commit: Llama 4 Scout BI-V150 deployment bundle
This commit is contained in:
77
apply_patch.py
Normal file
77
apply_patch.py
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
修复 CoreX 版 vLLM 0.17.0 的 Llama 4 chunked local attention bug。
|
||||
|
||||
症状(第一个真实请求时):
|
||||
TypeError: CommonAttentionMetadata.__init__() missing 2 required positional
|
||||
arguments: 'key_start_loc' and 'seq_lens_np'
|
||||
|
||||
原因:
|
||||
vllm/v1/attention/backends/utils.py 的
|
||||
make_local_attention_virtual_batches() 在构造 CommonAttentionMetadata 时
|
||||
没有传新版本 dataclass 要求的 key_start_loc / seq_lens_np。
|
||||
|
||||
本脚本幂等:已经打过补丁会直接返回 0。
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
try:
|
||||
import vllm
|
||||
except ImportError as e:
|
||||
print(f"ERROR: 无法 import vllm: {e}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
TARGET = os.path.join(
|
||||
os.path.dirname(vllm.__file__),
|
||||
"v1",
|
||||
"attention",
|
||||
"backends",
|
||||
"utils.py",
|
||||
)
|
||||
|
||||
MARKER = "seq_lens_np=seqlens_k_local"
|
||||
|
||||
OLD = """ query_start_loc=query_start_loc_cpu.to(device=device, non_blocking=True),
|
||||
seq_lens=seq_lens_cpu.to(device=device, non_blocking=True),"""
|
||||
|
||||
NEW = """ query_start_loc=query_start_loc_cpu.to(device=device, non_blocking=True),
|
||||
key_start_loc=torch.from_numpy(
|
||||
np.concatenate(
|
||||
(np.zeros(1, dtype=np.int32), np.cumsum(seqlens_k_local, dtype=np.int32))
|
||||
)
|
||||
).to(device=device, non_blocking=True),
|
||||
seq_lens=seq_lens_cpu.to(device=device, non_blocking=True),
|
||||
seq_lens_np=seqlens_k_local,"""
|
||||
|
||||
|
||||
def main() -> int:
|
||||
if not os.path.exists(TARGET):
|
||||
print(f"ERROR: 找不到目标文件: {TARGET}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
with open(TARGET, "r", encoding="utf-8") as f:
|
||||
src = f.read()
|
||||
|
||||
if MARKER in src:
|
||||
print(f"patch already applied: {TARGET}")
|
||||
return 0
|
||||
|
||||
if OLD not in src:
|
||||
print(
|
||||
"ERROR: 目标代码块未找到,vLLM 版本可能不同。\n"
|
||||
f"请手动检查: {TARGET}",
|
||||
file=sys.stderr,
|
||||
)
|
||||
return 1
|
||||
|
||||
with open(TARGET, "w", encoding="utf-8") as f:
|
||||
f.write(src.replace(OLD, NEW, 1))
|
||||
|
||||
print(f"patched: {TARGET}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user