RDK S100/S100P/S600 的端侧 LLM/VLM 原生运行库,BLLM (已开源),让更多的大模型跑在 BPU 上

BLLM:让更多的大模型原生跑在 RDK BPU 上

BLLM(BPU LLM)今日开源,v0.1.0 发布。它是面向 D-Robotics RDK S100 / S100P / S600

C++17 端侧大语言模型 / 多模态运行时——把已编译的 .hbm直接跑在板载 BPU(hbDNN / hbUCP)上,

自带 KV / SSM 缓存、采样器与解码循环,不依赖任何额外的大模型 SDK

仓库地址:https://github.com/ruisv/bllm


效果展示 ( Qwen3.5-0.8B(混合 SSM)在 RDK S100P BPU 上原生流式对话)

Qwen3.5-0.8B(混合 SSM)在 RDK S100P BPU 上原生流式对话

核心特性

  • 原生 BPU 推理。 直接驱动 .hbm,无需 OpenExplorer OE-LLM 之类的第二套运行时。

  • 稠密 + 混合双架构。 覆盖 Qwen2.5-1.5B/7B、DeepSeek-R1-Distill、InternLM2、GLM-Edge、Phi-4-mini

等稠密文本模型;更支持 Qwen3.5-0.8B 混合 Gated-DeltaNet / SSM——严格 100% 落 BPU,约 21 tok/s

这是纯注意力运行时结构上做不到的。

  • 多模态。 Qwen2.5-Omni 的文本 + 图像 + 音频 + 视频;媒体可传文件路径或原始数组,相机 / 麦克风

零拷贝实时流式,边采集边编码进 KV 缓存。

  • 一行式会话。 bllm.load(model) 返回统一会话,内置 C++ 分词器、ChatML 模板、流式输出、多轮对话。

  • 完整采样。 greedy / temperature / top-k / top-p / min-p / typical-p,以及重复、频率、存在惩罚,

可复现。

  • 生产级能力。 困惑度、异步提交、提示缓存(KV+SSM 状态存取,逐位一致复现)、停止串(命中即提前

停止)、以及与视觉流水线共享单 BPU 核的优先级与时间片控制。

与官方 OE-LLM 运行时的区别

D-Robotics 官方提供了闭源的 OE-LLM 板端运行时(libxlm.so)。BLLM 不是它的封装,而是构建在

板子通用 hobot 栈之上的开源原生替代运行时——在对齐官方可用生成能力的基础上,补齐了官方在结构

上不具备的几项能力。核心差异如下(均为同一块 .hbm 上的实测结论):

| 维度 | 官方 OE-LLM 运行时(libxlm) | BLLM(本项目) |

|—|—|—|

| 开放性 | 闭源 | 开源,Apache-2.0 |

| 运行时依赖 | 在板载栈之上自带一套 libdnn / libhbucp,属第二套版本锁定的运行时 | 直接构建在板子通用 hobot 运行时上,单一运行时,无双运行时 ABI 风险 |

| 安装 | 需引入 OE-LLM SDK | 一次 conda install,无额外 SDK 依赖 |

| 架构覆盖 | 面向注意力 prefill / decode 双图 | 稠密注意力 + Qwen3.5 Gated-DeltaNet / SSM 混合架构(100% 落 BPU) |

| 模型范围 | 官方现成清单 | 官方清单,另可驱动 Phi-4-mini、GLM-Edge、Qwen3 等 |

| 文本向量 | 无编码器入口 | 支持 |

| 停止串 | 无中途取消,只能生成到 eos 后裁剪 | 命中即提前停止,省算力 |

| 同 .hbm 吞吐 | 基准 | 相当(逐模型实测对齐) |

一句话:稠密文本模型上,BLLM 与官方运行时吞吐相当;而在混合架构、文本向量、提前停止、单运行时与

开源可扩展性上,BLLM 提供了官方运行时之外的选择。二者都跑在同一块 BPU、消费同样的 .hbm

快速上手

板上安装:


conda install -c https://mirrors.ruis.ai/conda -c conda-forge bllm

一行加载,流式对话:


import bllm

llm = bllm.load("/path/to/qwen3.5-0.8b")

for chunk in llm.stream_chat("用一句话介绍北京"):

print(chunk, end="", flush=True)

.hbm 也能直接吃,运行时自动合成清单:


llm = bllm.load("Qwen2.5_1.5B.hbm", tokenizer_dir="Qwen2.5_1.5B_config/")

print(llm.chat("你好"))

C++ 侧对应 bllm::NativeLlm / bllm::NativeVlmfind_package(bllm) 即可链接。

演示

仓库 README 顶部附有实机流式对话录屏:Qwen3.5-0.8B 在 RDK S100P 上中英文对话,约 14 tok/s,

全程 100% 在 BPU 上。

支持的模型

| 类型 | 模型 |

|—|—|

| 稠密文本 | Qwen2.5 1.5B / 7B、DeepSeek-R1-Distill-Qwen 1.5B / 7B、InternLM2-1.8B、GLM-Edge、Phi-4-mini |

| 混合 SSM | Qwen3.5-0.8B(原生独有) |

| 多模态 | Qwen2.5-Omni-3B(文本 / 图像 / 音频 / 视频) |

BLLM 消费成品 .hbm + 分词器配置;模型转换是离线流程,不在本仓范围。

与视觉共享 BPU

S100 / S100P 单 BPU 核,LLM 与视觉会争用同一队列。BLLM 提供优先级与时间片控制:配合 .hbm 编译期的

max_time_per_fc,同驻检测器的 p99 延迟可从 41 ms 降到约 3 ms(383 FPS),而 LLM 空载时几乎不受影响。

参与

License:Apache-2.0。