- 来源:https://github.com/localai-org/kimodo.cpp
- 类型:repo
- 机构:LocalAI(GitHub
localai-org;权重托管 Hugging FaceLocalAI-io) - 归档日期:2026-08-28
- 上游:NVIDIA nv-tlabs/kimodo / 项目页 / arXiv:2603.15546
- 许可:移植代码 Apache-2.0;GGML 子模块与模型权重各保留原许可
- 开源结论(步骤 2.5):已开源 — GitHub 公开 C++/GGML 推理仓(无独立
*.github.io项目页,以仓库 README /PORTING.md/docs/IMPLEMENTATION.md为项目入口);SOMA / G1 的 F32 GGUF 已发布;SMPL-X 权重因 NVIDIA Internal R&D 许可禁止再分发,须用户自行转换 - 快照:约 511 stars、43 forks;C++ 为主;创建于 2026-08-22
kimodo.cpp 把 NVIDIA Kimodo 文本→运动扩散去噪器移植到 C++ / GGML:CPU 或 Vulkan 上加载原生 GGUF,吃 UTF-8 prompt 或预计算 LLM2Vec 嵌入,输出局部旋转 + root 平移;不依赖 Python/PyTorch 运行时。
- 官方 Kimodo Python 栈全 GPU 约 17 GB VRAM(文本编码器占大头);本仓把 8B LLM2Vec 与运动去噪器串行加载,把「本地 / 嵌入式 / 无 Python」推理从研究栈里拆出来
- 与 llama.cpp 不是 简单包一层:文本侧自实现 双向 Llama + mean pooling(LLM2Vec 改了因果注意力),运动侧是独立 root/body Transformer + DDIM
- 机器人选型上它是 Kimodo 部署档:能出骨架 GLB / C ABI 运动缓冲,但 一般约束输入、77 关节 SOMA 展开、蒙皮 GLB、量化权重尚未实现
- motion-bricks.cpp Demo 可选播放 Kimodo 动画并接 GGML SONIC;Kimodo GLB→
.mbstyle直转仍为后续工作
已实现:GGUF 校验加载、safetensors→GGUF 转换、DDIM 采样、C/C++ API、多 prompt 过渡、CPU/Vulkan 对等测试、仅骨架 GLB 导出、本地文生运动 Demo。
未实现:通用运动学约束输入、SOMA 30→77 关节展开、蒙皮网格 GLB、量化模型。
可运行检查点接受 UTF-8 prompt 或预计算 4096-d F32 LLM2Vec 嵌入:
| 变体 | 骨架(原生 API 实际预测) | HF(LocalAI-io) |
上游许可 |
|---|---|---|---|
| SMPL-X RP v1 | 22 关节 | 不发布(须本地转换 gated 权重) | NVIDIA Internal Scientific R&D(禁止商用与衍生模型再分发) |
| SOMA RP / SEED v1.1 | 紧凑 30 关节控制骨架(官方 Python 再展开到 77) | Kimodo-SOMA-RP-v1.1-GGML 等 | NVIDIA Open Model License(模型许可允许商用) |
| G1 RP / SEED v1 | 34 个 Unitree G1 关节 | Kimodo-G1-RP-v1-GGML 等 | NVIDIA Open Model License |
文本编码器单独发布:Llama-3-Kimodo-GGML(含转换后的 Meta Llama 3 材料,条款独立)。SOMA-RP 运动 GGUF 约 0.3B / F32 1.13 GB。安装器:scripts/download_gguf_weights.sh(校验 manifest + SHA-256);--motion-only 用于只喂预计算嵌入。
| 入口 | 位置 / 命令 |
|---|---|
| C ABI | include/kimodo/kimodo_capi.h:kimodo_model_load / kimodo_generate / kimodo_generate_embedding;输出 local_rotations_xyzw [T,J,4] 与 root_positions [T,3] |
| 设备 | KIMODO_DEVICE_AUTO / CPU / VULKAN;文本层分块 KIMODO_TEXT_LAYER_CHUNK=1..32 |
| 构建 | C++23 + CMake 3.25+ + Ninja;cmake --preset debug;可选 Nix flake;另有 release / asan-ubsan / fuzz |
| 权重 | scripts/download_gguf_weights.sh --output "$PWD" --model soma-rp-v1.1;测试套件不会自行下载 |
| Demo | go run ./demo -addr 0.0.0.0:8094 → 本地 WebGL;成功样本写 demo-output/.../animation.glb |
| 源码主路径 | src/text_encoder + llama_bi(双向 Llama)→ src/denoiser(root/body)→ src/diffusion(CFG/DDIM)→ src/motion_rep 逆变换 → src/skeleton FK |
GGML 以 pinned git submodule(ggml-org/ggml)引入;不 vendoring 整棵 llama.cpp。
- kimodo.cpp(实体页) — 本地 GGML 运行时、许可边界与缺失能力
- Kimodo(上游实体) — Python 官方栈、约束编辑、Benchmark
- Diffusion-based Motion Generation — 部署侧对照(Python 17GB vs C++ CPU/Vulkan)
- HY-Motion vs GENMO vs Kimodo — 选型里补「本地推理档」