一:硬件准备
DC-CM588主板同时接二片20T的RK1828算力棒和并行推理方法
这里同时给二个RK182X供12V的电
二:系统调试
2-1):这里提供Debian12的固件下载(方便做算法的朋友)
通过网盘分享的文件:GB-Debian12-RK3588-cm-RK182X-20260716-150553.img链接: https://pan.baidu.com/s/148YLtP56KbWlTDYKdU5sRg 提取码: d6m5
2-2):配置DTS
驱动可以参考 CM588+RK1828算力卡linux保姆级适配过程(buildroot系统)
先看模组接的原理图
仅供参考,还是要根据对应的原理图来&pcie3x4 {status = "okay";num-lanes = <4>; /* 物理层 4 线,逻辑上需配合 PHY 拆分或板级设计支持双 x2 *//* 注意:若硬件设计为两个独立 x2 插槽,可能需分别配置 pcie3x4 和另一控制器,或依赖板级 dtsi 将 pcie3x4 拆分为两个逻辑节点(视具体 SOC 版本和 PHY 支持) */};/* 若硬件使用两个独立控制器(推荐方案:pcie2x1l0 + pcie2x1l1) */&pcie2x1l0 {status = "okay";num-lanes = <2>;reset-gpios = <&gpio4 RK_PB4 GPIO_ACTIVE_LOW>; /* 示例复位引脚,按原理图修改 */vpcie3v3-supply = <&vcc3v3_pcie>;vpcie1v8-supply = <&vcc1v8_pcie>;vpcie0v85-supply = <&vcc0v85_pcie>;};&pcie2x1l1 {status = "okay";num-lanes = <2>;reset-gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_LOW>; /* 独立复位引脚 */vpcie3v3-supply = <&vcc3v3_pcie>;vpcie1v8-supply = <&vcc1v8_pcie>;vpcie0v85-supply = <&vcc0v85_pcie>;};
2-3):验正
ztl@Debian12:~$ ls -l /dev/pcie-rkep-*crw-rw-rw- 1 root root 10, 121 7月16日 07:11 /dev/pcie-rkep-0000:01:00.0crw-rw-rw- 1 root root 10, 122 7月16日 07:11 /dev/pcie-rkep-0001:11:00.0
这里可以看到有二张查组 ID为0 和 1
三:双模组并行推理
3-1):原理
不同模型/任务:各指定 -id 0 / -id 1,可并行跑
同一模型负载均衡:需应用层自己分配(SDK 默认按 Device ID 独立访问,不自动合并算力)
模型分配策略
3-2):Demo演示
RK3588+RK1828算力盒子继续Qwen3-ASR 模型部署 基于Qwen3-ASR-1.7B 和 Qwen3-ASR-0.6B
以这个为例子
#define MAX_CONTEXT_LEN 1024*24 最大上下文长度
加载多个模型时,params.json的基本格式如下:```json{"host": "127.0.0.1","port": 8080,"timeout": 30,"models": {"Qwen2.5-0.5B": {"alias": "Qwen2.5-0.5B","model": "Qwen2.5-0.5B-Instruct.rknn","weight": "Qwen2.5-0.5B-Instruct.weight","model2": "","weight2": "","model3": "","weight3": "","vocab": "Qwen2.5-0.5B-Instruct.tokenizer.gguf","embed": "Qwen2.5-0.5B-Instruct.embed.bin","mel-filter": "","lora-weight": "","ctx-size": 1024,"predict": 512,"temp": 0.8,"top-k": 1,"top-p": 0.8,"repeat-penalty": 1.1,"presence-penalty": 1.0,"frequency-penalty": 1.0,"img-start": "","img-end": "","img-content": "","audio-start": "","audio-end": "","audio-content": "","img-width": 0,"img-height": 0,"chat-template-file": "","embedding": false,"record-path": "","reasoning-format": "none","reasoning": "auto","n-session": 1,},"Qwen3-0.6B": {"alias": "Qwen3-0.6B","model": "Qwen3-0.6B.rknn","weight": "Qwen3-0.6B.weight","model2": "","weight2": "","model3": "","weight3": "","vocab": "Qwen3-0.6B.tokenizer.gguf","embed": "Qwen3-0.6B.embed.bin","mel-filter": "","lora-weight": "","ctx-size": 1024,"predict": 512,"temp": 0.8,"top-k": 1,"top-p": 0.8,"repeat-penalty": 1.1,"presence-penalty": 1.0,"frequency-penalty": 1.0,"img-start": "","img-end": "","img-content": "","audio-start": "","audio-end": "","audio-content": "","img-width": 0,"img-height": 0,"chat-template-file": "","embedding": false,"record-path": "","reasoning-format": "none","reasoning": "auto","n-session": 1,}}}