Xinference Models Hub:一站式模型浏览、注册、审核与自动 PR 更新实战指南
【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference
Xinference Models Hub 是 Xinference(v1.13.0 起引入)统一的模型管理与协作平台,将模型 JSON 的维护方式从"手动提交 PR"升级为"平台集中编辑 + 系统自动生成 PR",覆盖模型浏览、注册、审核、更新与协作维护全流程。本文面向普通用户与模型维护者两类角色,完整讲解公开模型浏览、模型注册、README 编辑、GitHub Token 配置、审核工作流,以及"模型更新"按钮背后的底层实现链路(前端 → REST API → Supervisor → Worker → 在线模型列表服务),帮助读者掌握从消费模型到维护模型、再到实时同步最新模型清单的完整技能。
Models Hub 是什么:统一模型管理与协作平台
Xinference Models Hub 是 Xinference 面向模型管理、协作与交付的统一平台,提供从模型浏览、注册、审核、更新到协作维护的端到端支持,同时服务两类人群:
- 普通用户(Regular Users):无模型注册或维护权限,通过平台浏览、发现并消费模型;
- 模型维护者(Model Maintainers):具备模型注册或维护权限,负责模型的提交、更新与审核。
为什么需要 Models Hub:手动 PR 时代的痛点
在 Models Hub 引入之前,Xinference 的模型 JSON 文件完全依赖开源仓库(xorbitsai/inference)通过 PR 手动提交与修改,由此带来三个突出问题:
- 版本不受控:不同维护者的手动编辑缺乏统一规范与版本约束,容易产生不一致;
- 迭代周期长:每次模型更新都要走一遍人工 PR 流程,从提交到合入耗时漫长;
- 交付与发布强绑定:模型更新跟随产品发布节奏,用户无法在新模型可用时第一时间获取。
集中式在线管理机制
引入 Models Hub 后,核心变化在于:
- 所有模型信息必须在平台内编辑,包括元数据(metadata)、参数(parameters)与 README;
- 基于模型维护者的修改,系统自动生成并提交 PR到 xorbitsai/inference 仓库;
- 整个流程标准化、自动化、可追溯,彻底消除手动编辑带来的不一致。
与此同时,普通用户可随时通过 模型更新(Model Update) 功能获取最新模型列表,显著提升模型交付效率与使用体验。
普通用户指南:浏览公开模型
普通注册用户(无模型注册与维护权限)无需登录即可浏览公开模型:
| 项目 | 说明 |
|---|---|
| 访问入口 | 导航栏 → “Models” |
| 功能 | 查看所有公开可用的模型 |
| 模型详情 | 默认展示 “README” 页签,包含模型描述、使用指南与重要注意事项 |
注意:部分高级或企业级模型仅对授权用户可见,普通用户浏览不到这些受控模型。
模型维护者指南:注册、维护与审核
模型维护者(拥有模型注册或维护权限的用户)在普通用户能力之外,还拥有以下高级功能,全部需要登录后使用。
用户中心
- 入口:右上角头像 → “用户中心”
- 账户管理:更新个人资料、邮箱等信息
- Token 管理:配置个人 GitHub Token,用于模型提交或更新
注意:如果未配置 GitHub Token,系统在生成 PR 时将使用默认 Token。
模型注册
- 入口:登录后 → 右上角头像 → “模型注册”
- 提交步骤:
- 填写模型基本信息(名称、引擎、格式等);
- 编辑 README(点击 “Get README” 可自动生成模板);
- 提交模型(若注册公开模型,请开启 “Public Model” 参数)。
注意:注册公开模型时,系统会自动在 xorbitsai/inference 仓库中创建 PR。
我的模型
- 入口:登录后 → 右上角头像 → “我的模型”
- 功能:查看当前账户关联的所有模型。
模型维护
- 功能:修改模型的 JSON 或 README
- 入口:模型详情页 → “Settings” 图标
注意:更新公开模型时,系统同样会自动在 xorbitsai/inference 仓库中创建 PR,保证仓库中的模型定义与平台维护内容保持一致、可追溯。
审核工作流(Review Workflow)
提交者(Submitter)流程:
- 提交模型;
- 等待审核;
- 根据审核者反馈进行修改;
- 更新后的 PR 自动生成(针对公开模型)。
审核者(Reviewer)权限:可访问模型审核列表,拥有模型审核权限。
审核者流程:
- 进入 “Review List”;
- 评估模型的质量、完整性与合规性;
- 批准或拒绝,并在必要时提供反馈意见。
“模型更新”功能与底层实现链路
Models Hub 的在线模型列表服务不仅支撑平台浏览,还通过 模型更新(Model Update) 能力向 Xinference 本地部署实例同步最新模型。该功能对应 "Launch Model" 页面顶部的 “Type Selection + Update” 按钮,用于快速刷新指定类型(llm、embedding、rerank、image、audio、video 等)的模型列表。
页面操作步骤:
- 在页面右上角的 "Type Selection" 下拉框中选择模型类型(如 llm、embedding、rerank、image、audio、video);
- 点击 “Update” 按钮,页面向后端发送更新请求,随后自动跳转到对应 Tab 并刷新该类型的模型列表。
前端:更新请求的发起
前端 launch-model 页面 中,updateModels函数向后端发送POST /v1/models/update_type请求,携带下拉框选择的model_type:
const updateModels = async () => { setUpdateLoading(true); try { await request.post('/v1/models/update_type', { model_type: refreshType.toLowerCase() }); if (isCustomRoute) { fetchModels(refreshType); } else { onTabChange(refreshType); } } finally { setUpdateLoading(false); } };请求成功后,若当前处于自定义模型路由则直接刷新,否则跳转到对应 Tab 并刷新该类型的模型列表,对应页面顶部的Select(类型选择)与Update按钮组合。
REST API:请求入口
后端由 restful_api.py 中的update_model_type接口接收请求,将model_type透传给 Supervisor 的update_model_type方法,并捕获ValueError与未知异常返回给调用方。路由注册位于 api/routers/models.py。
Supervisor:广播到所有 Worker
在分布式部署下,Supervisor 的 update_model_type 会把请求转发给集群内的所有 Worker(通过asyncio.gather并发执行),等待全部 Worker 完成更新操作;单个 Worker 失败不会阻塞整体流程,而是记录日志继续执行。这保证了即使多节点集群,每个节点的模型注册表都能同步刷新。
Worker:下载、存储与动态重载
真正执行模型更新的逻辑位于 Worker 的 update_model_type,核心步骤包括:
- 类型校验:将
model_type与当前 Worker 支持的自定义注册类型比对,不支持则抛出ValueError; - 远程下载:从在线模型列表服务下载该类型的完整 JSON 配置:
https://model.xinference.io/api/models/download?model_type=<model_type>请求通过asyncio.to_thread(requests.get, url, timeout=30)在独立线程中执行(避免阻塞 Actor 事件循环),超时 30 秒;
- 本地存储:调用 _store_complete_model_configurations,将 JSON 原样写入本地统一配置文件:
<XINFERENCE_MODEL_DIR>/v2/builtin/<model_type>/<model_type>_models.json- 动态重载:根据模型类型调用对应的
register_builtin_model()(llm、embedding、audio、image、rerank、video、world 均有对应分支),使新模型立即对 "Launch Model" 页面可见,无需重启服务; - 容错处理:网络异常(
RequestException)、JSON 解析错误(JSONDecodeError)及未知异常分别记录日志并向上抛出明确错误信息;重载失败仅记录日志,不阻断整个更新流程。
从调用链可以看到,"模型更新" 本质上是把 Models Hub 作为权威在线模型源,将模型清单从远端持续同步到本地,与文档中 "Model update relies on the online model list service provided by Xinference Models Hub" 的描述完全对应。
支持的模型类型与模型注册查询
Xinference 通过 Models Hub 与内置模型体系支持以下模型类型(见 Models 总览):
| 模型类型 | 能力说明 | 内置模型文档 |
|---|---|---|
LLM | 文本生成 / 大语言模型 | 内置 LLM 列表 |
embedding | 文本嵌入 | 内置 Embedding 列表 |
image | 图像生成与编辑 | 内置 Image 列表 |
audio | 语音识别 / 语音合成 | 内置 Audio 列表 |
rerank | 重排序 | 内置 Rerank 列表 |
video | 视频生成 | 内置 Video 列表 |
world | 世界模型 / 环境视频生成 | 内置 World 列表 |
flexible | 传统机器学习模型推理 | 见 flexible 相关文档 |
说明:
flexible类型对应传统 ML 模型推理能力,其余类型均可在 Models Hub 中浏览与维护。
查询模型注册信息的三种方式
与平台操作并行,Xinference 也提供命令行、HTTP 与 Python Client 三种方式查询某类型的模型注册列表(见 Models 总览):
# 方式一:CLI xinference registrations --model-type <MODEL_TYPE> \ [--endpoint "http://<XINFERENCE_HOST>:<XINFERENCE_PORT>"] # 方式二:cURL curl http://<XINFERENCE_HOST>:<XINFERENCE_PORT>/v1/model_registrations/<MODEL_TYPE> # 方式三:Python Client from xinference.client import Client client = Client("http://<XINFERENCE_HOST>:<XINFERENCE_PORT>") print(client.list_model_registrations(model_type='<MODEL_TYPE>'))后端实现上,Worker 的list_model_registrations(见 worker.py)会合并内置模型族、用户自定义模型与在线更新得到的模型清单,Supervisor 则聚合所有 Worker 结果(supervisor.py)并统一排序返回;audio、world 类型还会经过专门的合并逻辑处理。
若内置模型列表中找不到所需模型,还可参考 自定义模型注册 在本地注册自定义模型;对于依赖旧版依赖库(如transformers)的存量模型,建议启用 模型虚拟环境 以保证兼容运行。
使用注意事项与限制
基于上述实现,在实际使用 Models Hub 相关能力时需留意以下几点:
- 模型更新依赖网络:
update_model_type需要从在线模型列表服务下载 JSON,网络不可达时请求将在 30 秒超时后失败并返回明确错误; - 集群部署下全节点同步:Supervisor 会把更新请求广播到所有 Worker,单节点失败不会阻塞整体,但对应节点的模型清单可能保持旧版;
- PR 自动生成的前提:注册或更新公开模型时系统才会自动创建 PR;未配置个人 GitHub Token 时使用系统默认 Token;
- 平台编辑为准:模型元数据、参数与 README 均以 Models Hub 平台内编辑内容为唯一来源,手动修改仓库内文件不保证被采纳或与平台一致。
总结
Xinference Models Hub 通过"在线集中编辑 + 自动生成 PR + 本地在线同步"三层设计,彻底解决了模型 JSON 手动维护时代版本失控、迭代缓慢与交付滞后的问题:维护者在平台完成模型的注册、编辑与审核,系统自动向 xorbitsai/inference 仓库提交可追溯的 PR;普通用户既可在平台浏览公开模型,也可借助 "Launch Model" 页面的模型更新功能,将远端最新模型清单实时同步到本地部署。理解从POST /v1/models/update_type到 Worker 下载、落盘、动态重载的完整调用链,将帮助你在集群部署、网络受限或模型交付异常等场景下快速定位问题,充分发挥 Models Hub 作为 Xinference 模型中枢的价值。
【免费下载链接】inferenceSwap GPT for any LLM by changing a single line of code. Xinference lets you run open-source, speech, and multimodal models on cloud, on-prem, or your laptop — all through one unified, production-ready inference API.项目地址: https://gitcode.com/GitHub_Trending/in/inference
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考