让大模型读懂动作Kimodo 基于 LLM2Vec 的文本编码器原理与服务化部署指南【免费下载链接】kimodoOfficial implementation of Kimodo, a kinematic motion diffusion model for high-quality human(oid) motion generation.项目地址: https://gitcode.com/gh_mirrors/ki/kimodoKimodo 是一个运动学动作扩散模型kinematic motion diffusion model能够根据一句话文本提示生成高质量的人形动作。它的大脑里藏着一个关键组件基于 LLM2Vec 的文本编码器负责把A person walks and falls to the ground.这样的自然语言变成 4096 维的向量嵌入c_text喂给扩散模型。本文将带你弄懂这套文本编码器的工作原理并一步步完成它的独立服务化部署——让大模型真正读懂动作。为什么选择 LLM2Vec 作为文本编码器常见的文本嵌入方案如 Sentence-BERT参数量小但语义理解能力有限而 Kimodo 选择的是LLM2Vec——一种把大型语言模型改造成嵌入模型的方法语义理解能力更接近大模型本身。具体来说Kimodo 的文本编码器由两部分组成见 kimodo/model/llm2vec/llm2vec_wrapper.py组件模型作用基座模型McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntpLlama-3-8B 经 MNTP掩码下一步预测微调后的嵌入模型适配器McGill-NLP/LLM2Vec-Meta-Llama-3-8B-Instruct-mntp-supervised监督式微调的 PEFT 适配器进一步提升语义对齐质量如架构图所示文本嵌入c_text与约束信息、噪声动作一起送入 Two-Stage Transformer Denoiser逐步去噪还原出干净的动作序列。LLM2Vec 编码流程从文本到 4096 维向量核心实现位于 kimodo/model/llm2vec/llm2vec.py整个编码流水线可分为 4 步1️⃣ 双向化改造Bidirectional Attention大语言模型默认是只看前面的因果注意力无法理解完整句意。LLM2Vec 的关键改动就在 kimodo/model/llm2vec/models/bidirectional_llama.pyclass ModifiedLlamaAttention(LlamaAttention): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.is_causal False # 关闭因果掩码让每个词都能看到整句话配合因果掩码的禁用bidirectional_llama.py 中注释掉了上三角掩码每个 token 的表示都能融合全句上下文——这是 LLM 能当语义嵌入器用的根本原因。2️⃣ 分词与指令跳过skip_instruction编码前Kimodo 会给文本套上 Llama-3 的对话模板|start_header_id|user...让模型认识这种输入格式。而计算嵌入时通过embed_mask只取真正指令之后的内容参与池化llm2vec.py 中的_skip_instruction避免模板 token 污染语义向量。3️⃣ 平均池化Mean Pooling对最后一层隐藏状态在有效 token 上取平均得到定长的 4096 维句向量llm2vec.py 的get_pooling池化模式为mean。4️⃣ 固定 batch_size1 保证可复现性这是一个容易被忽略的工程细节。在 llm2vec_wrapper.py 中encoded_text self.model.encode( text, # IMPORTANT: different batch sizes unexpectedly change the output embeddings batch_size1, ... )不同 batch size 下矩阵乘法的分块方式不同会导致浮点结果产生微小差异在 bfloat16 低精度下尤其明显。Kimodo 强制内部 batch_size1确保同一句话在任何时候编码结果都完全一致。此外encode()还支持按文本长度排序后分批处理、多 GPU 多进程并行llm2vec.py方便大批量文本嵌入。一键启动文本编码器独立服务LLM2Vec 基座是 8B 参数模型若与扩散模型挤在同一张卡上显存开销较大。Kimodo 的解法是把文本编码器拆成独立服务Gradio 服务端 客户端 API。服务端脚本是 kimodo/scripts/run_text_encoder_server.py启动方式# 默认监听 0.0.0.0:9550可用环境变量覆盖 GRADIO_SERVER_NAME0.0.0.0 GRADIO_SERVER_PORT9550 python -m kimodo.scripts.run_text_encoder_server # 显存紧张时可加 --fp32 之外的设备控制见下文 TEXT_ENCODER_DEVICEcpu python -m kimodo.scripts.run_text_encoder_server服务启动后的工作流程run_text_encoder_server.py 中的DemoWrapper用户在 Web 页面输入文本提示默认示例A person walks and falls to the ground.点击 Encode服务端调用text_encoder(text)得到嵌入张量嵌入被保存为.npy文件页面出现 Download 按钮供客户端拉取。常用启动参数--text-encoder编码器预设名当前为llm2vec--tmp-folder嵌入.npy文件的临时目录默认/tmp/text_encoder/--fp32用 float32 替代默认的 bfloat16精度更高速度稍慢。客户端调用与自动回退机制模型加载逻辑在 kimodo/model/load_model.py通过环境变量TEXT_ENCODER_MODE决定使用哪种文本编码器模式行为api强制走远程 Gradio 服务kimodo/model/text_encoder_api.py 的TextEncoderAPIlocal强制在进程内加载 LLM2Vecauto默认先发一条 healthcheck 探测服务是否可达不可达则自动回退到本地编码器远程客户端TextEncoderAPI的工作方式很简洁text_encoder_api.py通过gradio_client调用远端/DemoWrapper接口 → 下载返回的.npy嵌入 → 对多条文本做零填充对齐后统一返回(padded_tensor, lengths)与本地编码器接口完全一致。这意味着上层扩散模型代码无需区分嵌入来自本地还是远程服务——接口一致性是这套服务化设计的关键。服务地址可通过TEXT_ENCODER_URL配置默认指向本机http://127.0.0.1:9550/kimodo/model/registry.py。显存优化实战17GB vs 3GB官方文档 docs/source/getting_started/quick_start.md 给出了关键数据全 GPU 模式本地加载 LLM2Vec 编码器后整体约需17GB 显存大头就是 8B 参数的文本编码器CPU 编码模式设置TEXT_ENCODER_DEVICEcpu强制文本编码在 CPU 上运行显存需求降到3GB 以下代价是编码速度稍慢。# 小显存机器的推荐姿势编码器放 CPU扩散模型放 GPU TEXT_ENCODER_DEVICEcpu python -m kimodo.demo相关环境变量速查环境变量默认值说明TEXT_ENCODER_MODEautoapi / local / autoTEXT_ENCODER_URLhttp://127.0.0.1:9550/远程编码器服务地址TEXT_ENCODER_DEVICEauto编码器运行设备cuda/cpuTEXT_ENCODERS_DIR-本地模型目录离线场景GRADIO_SERVER_PORT9550Gradio 服务端口其中TEXT_ENCODERS_DIR对离线部署很有用当它存在时llm2vec_wrapper.py 会把模型名解析为该目录下的相对路径无需联网下载。总结原理LLM2Vec 通过关闭因果注意力让 Llama-3-8B 双向阅读整句话再经平均池化输出 4096 维嵌入batch_size1保证编码结果严格可复现。部署python -m kimodo.scripts.run_text_encoder_server一键启动独立 Gradio 服务客户端经TextEncoderAPI透明调用auto模式下服务不可达还会自动回退本地可靠性拉满。省显存TEXT_ENCODER_DEVICEcpu一行配置即可把 17GB 的显存门槛降到 3GB 以内小卡用户福音 想了解扩散去噪与约束机制的更多细节可阅读 docs/source/key_concepts/model.md。【免费下载链接】kimodoOfficial implementation of Kimodo, a kinematic motion diffusion model for high-quality human(oid) motion generation.项目地址: https://gitcode.com/gh_mirrors/ki/kimodo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
AI 不做裁判:一个不排序、不打分、不判谁赢的讨论系统 我做了一个多人结构化讨论系统,叫 Arena。它最核心的一条设计不是功能,是一条**禁止**:**AI 不许当裁判。**不许排序、不许打分、不许判谁赢、不许说「A 更正确」。AI 在这套系统里只做三件事:**切分**(把你的一句话切… · 2026/9/27 3:51:41
YOLOv8目标检测实战:智能会议室参会人数统计与毕设部署 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 3:51:23
C#第二周学习情况 摘要:本文是 C# 语言学习笔记,涵盖第四至第六节课的核心内容。第四节课介绍了二维数组与交错数组的定义和用法,以及方法(函数)的定义、访问修饰符与代码复用;第五节课讲解了构造方法、方法重载、this 关键字… · 2026/9/27 4:38:15
Keil STM32F1xx DFP 2.2.0 Pack 安装指南:解决器件缺失与下载报错 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:38:03
5G NSA接入信令流程详解:从RRC重配到NR辅小区激活的完整链路与排查指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:38:03
Windows上安装Apache Superset:pip、Docker与WSL三种方案对比与避坑指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:37:57
煤炭价格多元时序预测:R语言实现VAR、Prophet与XGBoost实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:37:57
C语言真题卷(2)核心考点与备考技巧全解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 4:37:51
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01