mlc-llm [Bug] [OpenCL] 当head_dim不能被32整除时,OpenCL出现错误,

ygya80vv  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(32)

🐛 Bug

在特定 head_dim 下的分页 kvcache 在 cuda 目标上已修复,但在 #1889 之后的 opencl 目标上仍存在问题。我尝试使用 hidden_size=1536head_dim=48 将压缩的 llama 模型编译到 opencl 上。在预填充后,第一次解码导致了错误 Cannot sample from the given probability distribution due to unknown reason。经过 softmax 后的logits 都在 1e-37 左右。
如果我使用相同的参数矩阵,但将其更改为 head_dim=64,则没有问题。此外,head_dim=48 在 cuda 上运行正常。

重现步骤

预期行为

它应该在 #1889 之后修复

环境

  • 平台(例如 WebGPU/Vulkan/IOS/Android/CUDA):Android
  • 操作系统(例如 Ubuntu/Windows/MacOS/...):
  • 设备(例如 iPhone 12 Pro,PC+RTX 3090,...):qualcomm 8gen3
  • 如何安装 MLC-LLM(conda,源代码):源代码
  • 如何安装 TVM-Unity(pip,源代码):源代码
  • Python 版本(例如 3.10):3.10
  • GPU 驱动程序版本(如适用):
  • CUDA/cuDNN 版本(如适用):
  • TVM Unity Hash 标签(python -c "import tvm; print('\n'.join(f'{k}: {v}' for k, v in tvm.support.libinfo().items()))",如果您编译模型则适用):fbfa92658568428b27c6ee5762ab7fe2f7c0b415
  • 其他相关信息:
ryoqjall

ryoqjall1#

你好,@sbwww。感谢您报告此问题!您能提供更多关于您尝试运行的模型的信息吗?

kupeojn6

kupeojn62#

抱歉回复晚了。请随机初始化一个Llama MHA模型,参数为hidden_size=1536num_attention_heads=32(-> head_dim=48)。
我尝试设置num_attention_heads=24(-> head_dim=64),运行正常。所以,我认为head_dim是主要区别。

相关问题