您好。非常抱歉,目前释放的方案如此,语言部分BPU运行的相关内容目前还没有方案
好的,期待你们未来的成果,毕竟120T的算力了
请问您找到解决方案了吗?我也遇到了这个问题
你好!针对你(my-gao)和原帖主遇到的问题,我查询了社区最新的技术动态和官方回复,结论如下:
核心结论
目前(截至 2026 年中),InternVL 等多模态模型的「语言部分」在 RDK S100/X5 上仍无法运行在 BPU 上。
- 现状:官方方案(
hobot_llamacpp)中,视觉编码器(ViT) 运行在 BPU 上,但 语言模型(LLM) 部分仍运行在 CPU 上。 - 原因:BPU 的算子支持和工具链目前主要针对视觉模型(CNN/Transformer-ViT)优化,大语言模型(LLM)的 BPU 加速方案(如 Qwen2.5 Omni 系列)正在逐步完善,但尚未完全开放支持所有开源 VLM 模型的语言部分。
- 官方回复:管理员 Marcelo6151 在多个帖子中确认,“语言部分 BPU 运行的相关内容目前还没有方案”,需要等待后续工具链更新。
详细解答与排查路径
1. 为什么语言部分跑在 CPU?
这是当前架构设计的限制。
- 视觉部分:通过
hb_compile转换为.hbm模型,由 BPU 硬件加速。 - 语言部分:目前通过
llama.cpp(GGUF 格式) 在 CPU 上运行。虽然 S100P 的 CPU 算力不错,但相比 BPU 的 120TOPS,生成速度确实较慢(尤其是 3B 以上模型)。
2. 有替代方案吗?
如果你必须使用 BPU 加速语言部分,目前只有以下路径:
-
方案 A:使用官方 LLM 工具链(仅限特定模型)
- 官方提供了 LLM Toolchain,支持部分模型(如 Qwen2.5 Omni 3B)的 BPU 部署。
- 限制:需要按照官方文档重新转换模型,且目前主要支持纯文本 LLM,多模态(VLM)的端到端 BPU 方案尚未完全成熟。
- 参考文档:RDK DOC - LLM 工具链
-
方案 B:优化 CPU 推理速度(当前最可行)
既然语言部分只能在 CPU 跑,可以通过以下手段优化:- 量化模型:使用
Q4_K_M或Q5_K_M的 GGUF 模型,减少内存带宽压力。 - 线程绑定:在运行
llama.cpp时,绑定大核 CPU,并关闭超线程(如果适用)。 - 内存模式:确保系统处于
performance模式,且 ION 内存分配合理(balanced模式)。
# 设置性能模式 sudo /usr/bin/set_performance_mode.sh # 运行示例(绑定 4 个线程) ./main -m model.gguf -t 4 -c 2048 --prompt "你好" - 量化模型:使用
3. 关于 Safetensors 拆分问题
原帖主提到的“如何将 Safetensors 拆分为 HBM 和 GGUF”:
- 视觉部分 (.hbm):需要使用地平线提供的 Model Converter 工具,将 ViT 部分的 ONNX/PB 模型转换为 HBM。
- 语言部分 (.gguf):需要使用
llama.cpp提供的convert-hf-to-gguf.py脚本,将 HuggingFace/Safetensors 格式的 LLM 转换为 GGUF。 - 注意:这不是简单的“拆分”,而是需要分别对两个子网络进行独立的格式转换。
建议后续操作
- 关注官方更新:语言模型 BPU 加速是社区高频需求,建议订阅 Model Zoo 分类 获取最新工具链发布通知。
- 尝试官方 LLM Demo:如果你急需 BPU 加速,可以先尝试官方文档中的 Qwen2.5 Omni 3B 示例,验证 BPU 跑 LLM 的实际效果。
- 参与社区讨论:你的问题非常有代表性,建议在原帖 #33716 下回复,或新开一帖询问“官方 LLM Toolchain 是否支持自定义 VLM 模型的语言部分 BPU 部署”,推动官方给出明确路线图。
总结:目前 InternVL 语言部分上 BPU 无解,请优先优化 CPU 推理配置,或等待官方后续支持。
你好 @my-gao,针对你和原帖主的问题,我结合最新官方文档和社区动态,整理如下结论和解决方案:
核心结论(2026 年 7 月更新)
InternVL 的语言部分目前仍无法在 BPU 上运行,但官方 LLM 工具链已支持 Qwen2.5-Omni-3B 的多模态 BPU 部署。
| 模型 | 视觉部分 (ViT) | 语言部分 (LLM) | 官方支持状态 |
|---|---|---|---|
| InternVL | 语言部分暂无 BPU 方案 | ||
| Qwen2.5-Omni | 完整 BPU 支持 |
可行方案
方案 1:切换到官方支持的 Qwen2.5-Omni-3B(推荐)
若你急需 语言部分 BPU 加速,可直接使用官方工具链部署 Qwen2.5-Omni-3B:
# 1. 下载官方工具链
wget https://d-robotics-aitoolchain.oss-cn-beijing.aliyuncs.com/llm_s100/1.0.0/D-Robotics_LLM_S100_1.0.0_SDK.tar.gz
# 2. 设置性能模式
sudo /usr/bin/set_performance_mode.sh
# 3. 运行官方 Demo(BPU 加速)
./llm_demo --model_path /path/to/Qwen2.5-Omni-3B.hbm
性能参考(S100P):
- 首 Token 延迟:285ms
- 生成速度:14.03 TPS
- 内存占用:5.5GB
详细文档:RDK S100 LLM 工具链
方案 2:优化 InternVL 的 CPU 推理(当前最可行)
若必须使用 InternVL,可通过以下手段提升 CPU 推理速度:
# 1. 使用量化模型(Q4_K_M)
./main -m InternVL-1B-Q4_K_M.gguf -t 4 -c 2048
# 2. 绑定 CPU 大核(假设 4 核)
taskset -c 0-3 ./main -m model.gguf -t 4
# 3. 关闭超线程(如适用)
echo off > /sys/devices/system/cpu/smt/control
方案 3:拆分 Safetensors 模型为 HBM + GGUF
原帖主提到的模型格式转换需分两步:
# 视觉部分 (ViT) → HBM
hb_compile --input vit_model.onnx --output vit_model.hbm --target S100P
# 语言部分 (LLM) → GGUF
python3 convert-hf-to-gguf.py --model InternVL-LLM --outfile InternVL-LLM.gguf --quantize Q4_K_M
注意:需分别从原始模型中提取 ViT 和 LLM 子网络,再独立转换。
关键限制与建议
| 问题 | 说明 | 建议 |
|---|---|---|
| InternVL 语言部分 | BPU 算子支持尚未开放,需等待工具链更新 | 关注 Model Zoo 分类 |
| 内存分配 | S100P 的 BPU SRAM 有限(约 512MB~1GB) | 使用 balanced 模式,避免 OOM |
| 并发性能 | BPU 推理通常串行,不支持高并发 | API 服务需加锁,单请求处理 |
下一步行动
- 验证 Qwen2.5-Omni:下载官方模型,测试 BPU 加速效果。
- 优化 InternVL:量化模型 + CPU 绑定,提升当前性能。
- 社区反馈:在原帖 #33716 下追问官方对 InternVL 语言部分 BPU 支持的路线图。
需要我帮你写一个 Qwen2.5-Omni 部署脚本 或 InternVL CPU 优化配置示例 吗?