Skip to content

Latest commit

 

History

History
89 lines (63 loc) · 3.06 KB

File metadata and controls

89 lines (63 loc) · 3.06 KB

InfiniLM-ModelHub

中文项目简介 | Documentation | 中文文档

InfiniLM-ModelHub 是 InfiniLM 的 out-of-tree 模型定义仓库。它把模型适配、配置转换、processor 选择、权重重映射规则和可选 C++ backend 插件放在 InfiniLM 主仓之外,避免推理引擎仓库随着模型数量增长而不断膨胀。

插件模块只依赖 InfiniLM 暴露的 infinilm.plugins API。Python 插件逻辑只在模型加载阶段运行,用于适配 config、选择 processor、转换 checkpoint key 或声明 backend plugin;逐 token 推理热路径仍由 InfiniLM C++ backend 执行。

这个仓库解决什么问题

  • 让用户可以在 InfiniLM 主仓之外定义新模型配置。
  • 对能复用已有 backend 的模型,用几十行 Python 完成 config 适配和权重映射。
  • 对不能复用已有 backend 的模型,提供 out-of-tree C++ backend 和模型专用算子的实现路径。
  • 用小型 config fixture 快速验证模型注册、config 适配和 backend 选择,不需要下载大模型权重。
  • 提供模型配置矩阵和插件冒烟测试,用于验证如何与 InfiniLM 配置连接。

目录结构

cpp_backends/              out-of-tree C++ backend 示例
docs/                      设计说明和兼容性文档
examples/                  小型 config fixture 和插件冒烟测试
src/infinilm_model_hub/    Python 插件模块和复用工具
tests/                     脚本式验证入口
tools/                     构建、验证和检查工具

快速开始

先安装 InfiniLM,再安装 ModelHub:

cd InfiniLM-ModelHub
python -m pip install -e . --no-build-isolation

运行基础插件验证:

python tests/verify_plugin_repo.py

运行模型矩阵 config 验证:

python tests/verify_model_matrix.py

构建 out-of-tree C++ backend 插件:

python tools/build_backend_plugins.py \
  --infinilm-root <path-to-InfiniLM> \
  --infini-root <path-to-InfiniCore-install>

定义一个新模型

如果模型可以复用已有 InfiniLM backend,通常只需要定义一个 ModelSpec

from infinilm.plugins import ModelSpec, register_model


def adapt_config(config):
    config = dict(config)
    config["head_dim"] = config["hidden_size"] // config["num_attention_heads"]
    return config


register_model(
    ModelSpec(
        model_type="my_llama_family",
        backend_model_type="llama",
        config_adapter=adapt_config,
        processor="llama",
    )
)

如果 checkpoint 的权重命名或布局不同,可以组合 src/infinilm_model_hub/weights.py 中的复用规则,例如 rename()split_fused()

更多文档