localai-org/kimodo.cpp
NVIDIA Kimodo ported to C++/GGML
项目说明
kimodo.cpp
GGML/C++ implementation of NVIDIA's Kimodo text-to-motion model.
Status
The five released Kimodo motion checkpoints accept either a UTF-8 prompt or a precomputed LLM2Vec embedding and generate local rotations plus root translations on CPU or Vulkan:
- SMPL-X RP v1: 22 joints
- SOMA RP/SEED v1.1: the predicted compact 30-joint control skeleton
- G1 RP/SEED v1: 34 Unitree G1 joints
NVIDIA's Python API expands SOMA's predicted 30 joints to a relaxed-hand
77-joint presentation skeleton. The native API currently returns the 30 joints
the model actually predicts. The text encoder uses eight-layer Vulkan chunks by
default; set KIMODO_TEXT_LAYER_CHUNK=1..32 to tune VRAM use.
Included: checked GGUF loading, safetensors conversion, DDIM sampling, C/C++ APIs, conditioned multi-prompt transitions, CPU/Vulkan parity tests, skeleton-only GLB export, and a local text-to-motion demo. General constraint input, 77-joint SOMA expansion, skinned-mesh GLB export, and quantised models are not implemented yet.
Build and test on Linux
Install a C++23 compiler, CMake 3.25+, Ninja, Python 3 with the Hugging Face
CLI (pip install huggingface_hub), and the Vulkan loader/headers for Vulkan
support. GGML is a pinned Git submodule:
git submodule update --init --recursive
scripts/download_gguf_weights.sh --output "$PWD" --model soma-rp-v1.1
cmake --preset debug
cmake --build --preset debug
ctest --preset debug
The standard test suite requires the local motion GGUF, text bundle, and
fixtures. It never downloads weights by itself. release, asan-ubsan, and
fuzz presets are also available.
