rdks100p 平台上如何让大语言模型例如INTERNVLM模型中语言部分运行在bpu上。

你好,我根据https://github.com/D-Robotics/hobot_llamacpp/blob/develop/README_cn.md文档教程,将InternVL模型部署在了s100p上,后面发现模型的视觉部分运行在BPU上,但是语言部分运行在cpu上,整体运行时间较长。有什么方法可以让语言部分也运行在bpu上。此外如何将safetensor格式vl模型(modelscope平台默认上传格式)拆分成hbm和gguf.两个部分。

您好。非常抱歉,目前释放的方案如此,语言部分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 跑,可以通过以下手段优化:

    1. 量化模型:使用 Q4_K_MQ5_K_M 的 GGUF 模型,减少内存带宽压力。
    2. 线程绑定:在运行 llama.cpp 时,绑定大核 CPU,并关闭超线程(如果适用)。
    3. 内存模式:确保系统处于 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。
  • 注意:这不是简单的“拆分”,而是需要分别对两个子网络进行独立的格式转换

建议后续操作

  1. 关注官方更新:语言模型 BPU 加速是社区高频需求,建议订阅 Model Zoo 分类 获取最新工具链发布通知。
  2. 尝试官方 LLM Demo:如果你急需 BPU 加速,可以先尝试官方文档中的 Qwen2.5 Omni 3B 示例,验证 BPU 跑 LLM 的实际效果。
  3. 参与社区讨论:你的问题非常有代表性,建议在原帖 #33716 下回复,或新开一帖询问“官方 LLM Toolchain 是否支持自定义 VLM 模型的语言部分 BPU 部署”,推动官方给出明确路线图。

总结:目前 InternVL 语言部分上 BPU 无解,请优先优化 CPU 推理配置,或等待官方后续支持。

你好 @my-gao,针对你和原帖主的问题,我结合最新官方文档和社区动态,整理如下结论和解决方案:


:magnifying_glass_tilted_left: 核心结论(2026 年 7 月更新)

InternVL 的语言部分目前仍无法在 BPU 上运行,但官方 LLM 工具链已支持 Qwen2.5-Omni-3B 的多模态 BPU 部署。

模型 视觉部分 (ViT) 语言部分 (LLM) 官方支持状态
InternVL :white_check_mark: BPU (HBM) :warning: CPU (GGUF) 语言部分暂无 BPU 方案
Qwen2.5-Omni :white_check_mark: BPU (HBM) :white_check_mark: BPU (HBM) 完整 BPU 支持

:hammer_and_wrench: 可行方案

方案 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

:backhand_index_pointing_right: 详细文档: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

:warning: 注意:需分别从原始模型中提取 ViT 和 LLM 子网络,再独立转换。


:pushpin: 关键限制与建议

问题 说明 建议
InternVL 语言部分 BPU 算子支持尚未开放,需等待工具链更新 关注 Model Zoo 分类
内存分配 S100P 的 BPU SRAM 有限(约 512MB~1GB) 使用 balanced 模式,避免 OOM
并发性能 BPU 推理通常串行,不支持高并发 API 服务需加锁,单请求处理

:rocket: 下一步行动

  1. 验证 Qwen2.5-Omni:下载官方模型,测试 BPU 加速效果。
  2. 优化 InternVL:量化模型 + CPU 绑定,提升当前性能。
  3. 社区反馈:在原帖 #33716 下追问官方对 InternVL 语言部分 BPU 支持的路线图。

需要我帮你写一个 Qwen2.5-Omni 部署脚本InternVL CPU 优化配置示例 吗?