@@ -114,7 +114,7 @@ STATE=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
114114 --task " pick up the fork"
115115```
116116
117- pi0 的 ` --image-name ` 必须和 checkpoint metadata 里的 ` pi0.image_keys ` 一致。LIBERO v044 split checkpoint 使用 ` observation.images.image ` 和 ` observation.images.image2 ` 。
117+ pi0 的 ` --image-name ` 必须和vit部分的metadata 里的 ` pi0.image_keys ` 一致。LIBERO v044 split checkpoint 使用 ` observation.images.image ` 和 ` observation.images.image2 ` 。
118118
119119### ` models/model.h `
120120
@@ -144,8 +144,6 @@ if (args.type == model_type::pi0) {
144144}
145145```
146146
147- 新增模型时通常需要在这里 include 新模型的 wrapper 头文件,并添加一条分发分支。
148-
149147### ` models/ggml_backend.* `
150148
151149这组文件封装 ggml 后端、buffer、scheduler 等公共能力。多个模型都可能复用这层代码,避免每个模型目录里重复处理 ggml 初始化、设备选择和内存管理。
@@ -170,7 +168,7 @@ SmolVLA 的模型实现目录。当前主要分为两层:
170168
171169### ` models/pi0/ `
172170
173- pi0 的模型实现目录,也采用“模型专用 engine + ` Model ` wrapper ”的结构:
171+ pi0 的模型实现目录,也采用“模型专用 engine + ` Model ` 子类 ”的结构:
174172
175173* ` pi0_engine.* ` :模型专用 runtime API,例如 ` pi0_params ` 、` pi0_context ` 、` pi0_init() ` 、` pi0_predict_raw_rgb() ` 、` pi0_reset() ` 、` pi0_free() ` 。
176174* ` pi0_model.* ` :把 ` pi0_engine ` 适配到 ` robotcpp::Model ` 。
@@ -324,7 +322,7 @@ bool make_model(const model_args & args, std::unique_ptr<Model> & out, std::stri
324322* ` print_usage() ` :补充新模型的参数说明。
325323* 参数解析循环:解析新模型需要的 CLI 参数,并写入 ` model_args ` 。
326324
327- 如果新模型对 image name、state 维度或 task 文本有特殊要求,尽量在 wrapper 的 ` predict() ` 或初始化校验里返回明确错误信息,方便 CLI 和 server 复用。
325+ 如果新模型对 image name、state 维度或 task 文本有特殊要求,尽量在子类的 ` predict() ` 或初始化校验里返回明确错误信息,方便 CLI 和 server 复用。
328326
329327### 6. 修改 CMake
330328
@@ -340,8 +338,6 @@ add_library(robotcpp STATIC
340338)
341339```
342340
343- 如果新模型内部 runtime 足够大、需要单独测试,或要复用已有 ggml/llama 链接配置,也可以建立自己的 target,再让 ` robotcpp ` 链接它。是否叫 ` newmodel_engine ` 不重要,重点是外部仍通过 ` robotcpp::Model ` 创建和调用模型。
344-
345341### 7. 验证
346342
347343#### 新模型最小验证模板
@@ -353,25 +349,21 @@ add_library(robotcpp STATIC
353349 --model-type newmodel \
354350 --image /path/to/image.png \
355351 --image-name image \
356- --state 0,0,0 \
352+ --state 0,0,0,0,0,0 \
357353 --task " grab the block." \
358354 --threads 4 \
359355 --newmodel-weights /path/to/newmodel.gguf
360356```
361357
362- 如果 ` model-server ` 也要使用该模型,还需要确认 server 启动参数能把新模型所需字段传到 ` model_args ` 。通常应保持 server 和 CLI 使用同一套 ` make_model() ` 路径,以避免两边行为不一致。
358+ 如果 ` model-server ` 也要使用该模型,还需要确认 server 启动参数能把新模型所需字段传到 ` model_args ` 。
363359
364360## 新模型接入检查清单
365361
366362* ` tools/hf2gguf/<model_name>/ ` 已能把原始 checkpoint 或 ` .pt ` 转成 C++ runtime 使用的 GGUF。
367363* ` tools/quant/config/<model_name>_origin.yaml ` 已覆盖新模型的所有 GGUF component 和 tensor group。
368- * ` src/models/<model_name>/ ` 下有清晰的 ` Model ` wrapper ;只有在确实需要时才拆出内部 runtime 或 engine。
364+ * ` src/models/<model_name>/ ` 下有清晰的 ` Model ` ==子类== ;只有在确实需要时才拆出内部 runtime 或 engine。
369365* ` model_type ` 已增加新枚举。
370366* ` model_args ` 已包含新模型初始化所需参数。
371367* ` model_factory.cpp ` 已接入新模型。
372368* ` model-cli.cpp ` 已支持 ` --model-type <model_name> ` 和必要参数。
373369* ` CMakeLists.txt ` 已加入新模型源文件,并让 ` robotcpp ` 能链接到必要的内部组件。
374- * ` predict() ` 会校验输入图片、state、task,并通过 ` error ` 返回可读错误。
375- * ` model_result.actions ` 、` chunk_size ` 、` action_dim ` 的含义与现有模型保持一致。
376- * ` reset() ` 在模型有 cache 或时序状态时能正确清理状态。
377- * ` model-cli ` 和 ` model-server ` 走同一套 wrapper,不额外绕过 ` robotcpp::Model ` 。
0 commit comments