This commit is contained in:
2026-06-23 13:58:15 +08:00
parent 0e0e85966e
commit 896c96257b
2 changed files with 196 additions and 1 deletions
+51
View File
@@ -101,6 +101,56 @@ def patch7_rocm_break_import_cycle():
print('Patch 7: already applied or pattern not found.')
def patch9_registry_model_impl_compat():
"""补丁 9:registry.py —— vllm main 与 transformers v4 兼容
问题:vllm main 的 ModelRegistry 大量访问 model_config.model_impl,
该属性是 vllm ModelConfig 的字段(默认 "auto"),但 inspect 链路传入的
有时是 transformers config 对象(如 Qwen2VLConfig),v4 没有此属性 →
AttributeError → "Model architectures [...] failed to be inspected"。
同时 _try_resolve_transformers 末尾调用 model_config._get_transformers_backend_cls(),
v4 的 config 也没有该方法。
根因:mineru[core] 锁定 transformers<5.0.0(v4),vllm main 期望 v5。
本补丁把所有 model_config.model_impl 访问改成 getattr 兜底(缺属性时当 "auto",
走 fallback 分支匹配 vllm 注册表),并给 _get_transformers_backend_cls 加兜底。
采用逐处 getattr 替换,不依赖方法定位(比方法注入更可靠)。
"""
f = os.path.join(VLLM_DIR, 'model_executor', 'models', 'registry.py')
if not os.path.exists(f):
print('Patch 9: registry.py not found; skipping.')
return
c = open(f).read()
if '# mineru-rocm: model_impl v4 compat' in c:
print('Patch 9: already applied (model_impl v4 compat present).')
return
# 把 model_config.model_impl 访问替换为 getattr 兜底
before = c.count('model_config.model_impl')
c2 = c.replace(
'model_config.model_impl',
'getattr(model_config, "model_impl", "auto")'
)
replaced = before - c2.count('model_config.model_impl')
# _get_transformers_backend_cls 兜底:v4 无此方法
c2 = c2.replace(
'return model_config._get_transformers_backend_cls()',
'return getattr(model_config, "_get_transformers_backend_cls", lambda: None)()'
)
# 写入幂等标记(注释,便于重入检测)
c2 = '# mineru-rocm: model_impl v4 compat\n' + c2
if c2 != c:
open(f, 'w').write(c2)
print(f'Patch 9: registry.py model_impl v4 compat applied '
f'({replaced} access(es) wrapped).')
else:
print('Patch 9: no changes applied (pattern not found).')
def ensure_vllm_dist_info():
"""为 /opt/vllm 源码导入创建最小 dist-info。
@@ -233,6 +283,7 @@ def install_sitecustomize_force_rocm():
def main():
patch6_init_platform_fallback()
patch7_rocm_break_import_cycle()
patch9_registry_model_impl_compat()
install_sitecustomize_force_rocm()
try:
ensure_vllm_installed()