🐛 Bug
我遇到了一个使用webllm部署的(DORA)Qwen2-0.5B微调模型的问题。推理总是失败,错误相同。
错误跟踪:
background.js:53 thread '' 在 /home/cfruan/.cargo/registry/src/index.crates.io-6f17d22bba15001f/rayon-core-1.12.1/src/registry.rs:168:10 处发生恐慌:
全局线程池尚未初始化。:ThreadPoolBuildError { kind: IOError(Os { code: 6, kind: WouldBlock, message: "Resource temporarily unavailable" }) }
任何帮助都将非常受欢迎,这个问题已经困扰我好几天了
重现问题
重现行为所需的步骤:
- 使用HuggingFace PEFT包微调一个Qwen2-0.5B模型,在LoraConfig中设置use_dora=True
- 使用.merge_and_unload()将lora适配器与基本权重合并
- 使用MLCEngine测试合并后的权重
- 对(q4f16_1)进行量化并使用mlc-llm(最新夜间版本)编译wasm文件
- 使用web-llm部署并尝试运行推理
预期行为
模型应输出令牌,控制台中不应有错误。
环境
- 平台(例如WebGPU/Vulkan/IOS/Android/CUDA):WebGPU(使用metal编译)
- 操作系统(例如Ubuntu/Windows/MacOS/...):MacOS
- 设备(例如iPhone 12 Pro,PC+RTX 3090,...):Mac Book Pro M1
- 如何安装MLC-LLM(
conda
,源代码):源代码 - 如何安装TVM-Unity(
pip
,源代码):源代码 - Python版本(例如3.10):NA
- GPU驱动程序版本(如适用):NA
- CUDA/cuDNN版本(如适用):NA
- TVM Unity哈希标签(
python -c "import tvm; print('\n'.join(f'{k}: {v}' for k, v in tvm.support.libinfo().items()))"
,适用于编译模型): - 其他相关信息:
其他上下文
如果需要,我可以分享代码示例和问题权重
6条答案
按热度按时间f0brbegy1#
请问您能否尝试运行原始的Qwen2-0.5B模型?另外,您的微调模型是否可以在其他设备上运行,例如CUDA?
zzwlnbp82#
是的,我可以在webllm上运行原始的Qwen2-0.5B(从源权重编译),并且我可以在Metal上使用mlc-llm python库运行微调后的模型 - 只有微调后的模型在webllm上失败。
oxosxuxt3#
这似乎与我们如何打包以及最新的wasm运行时有关。如果您有自定义编译,可以运行原始的Qwen并重现错误,那将很有帮助。或者,如果您能与导致错误的模型分享一个可复现的命令,那就太好了
7ajki6be4#
这些是我尝试部署的权重 - 在Metal上的Python后端运行正常
使用webLLM
原始权重:
--> 按预期工作
微调后的权重
--> 如前所述的错误
有趣的是,我们还有以下组合:
所以问题似乎出在权重上,但为什么它们在使用Python库时可以正常工作?
jpfvwuh45#
你可能现在可以尝试使用未量化的qwen2-0.5B,因为mlc-llm团队还没有发布q4f16 webgpu.wasm,只发布了q0f16,而且你的生成的wasm存在一些问题,这些问题在原始模型上没有问题,但在微调后的模型上有。我也是waiting,期待官方发布的qwen2-0.5B q4f16 wasm。我猜你应该在官方wasm发布后尝试微调后的q4f16模型。
ego6inou6#
@bil-ash 我上周尝试使用q0f16量化,并得到了相同的错误。我认为我生成的wasm与"官方"的wasm之间没有区别。