如题,在环境中没安装vllm时,若使用fun-asr-nano,则每次都会重新加载模型。
问题出现在_server_app.py的159~172行。
问题在于:
- vLLM 加载失败时 →
app.state.engine 仍然是 None
- 降级到
AutoModel 时 → 虽然模型被存入 app.state.fallback_models["fun-asr-nano"],但没有设置任何标志阻止下次重新加载
- 下次请求时 → 因为
app.state.engine is None,条件不成立,再次进入 _load_vllm_engine()
- 再次失败 → 再次加载
AutoModel(重复步骤 2-3)
另外,第273~280行这个逻辑也不是很合理,运行起来的python应该不能动态地就多了vllm库,所以server跑起来检测vllm不存在后,使用一个状态变量记一下就行了,至少server重启之前这个变量的值应该都不会变了。然后再所有模型都可以走_load_fallback。对于有vllm,则判断模型是不是fun-asr-nano,再决定走不走_load_vllm_engine()。这样我觉得更合理一些。
以现有代码,最小改变是:
第160行之后加两行:
if app.state.fallback_models["fun-asr-nano"]:
return app.state.fallback_models["fun-asr-nano"]
供参考。
感谢您的付出。
如题,在环境中没安装vllm时,若使用fun-asr-nano,则每次都会重新加载模型。
问题出现在_server_app.py的159~172行。
问题在于:
app.state.engine仍然是NoneAutoModel时 → 虽然模型被存入app.state.fallback_models["fun-asr-nano"],但没有设置任何标志阻止下次重新加载app.state.engine is None,条件不成立,再次进入_load_vllm_engine()AutoModel(重复步骤 2-3)另外,第273~280行这个逻辑也不是很合理,运行起来的python应该不能动态地就多了vllm库,所以server跑起来检测vllm不存在后,使用一个状态变量记一下就行了,至少server重启之前这个变量的值应该都不会变了。然后再所有模型都可以走
_load_fallback。对于有vllm,则判断模型是不是fun-asr-nano,再决定走不走_load_vllm_engine()。这样我觉得更合理一些。以现有代码,最小改变是:
第160行之后加两行:
供参考。
感谢您的付出。