模型市场
Model Marketplace Layer — 开源模型库 · 自训练模型 · 评测平台 · 版本管理 · 模型发现与元数据注册中心
2. 层级定位与边界
L3 模型市场是整个 AI 平台的模型资产中枢,负责管理所有模型的元数据、版本、评测结果和生命周期。它向上为 L4 模型网关和 L5 应用平台提供模型发现与查询能力,向下对接 L2 模型部署层将模型注册为推理服务。L3 不存储模型权重文件(权重由 L1 对象存储管理),也不执行模型推理(由 L2 负责)。
L3 的核心职责包括:模型资产目录管理、元数据规范、版本控制与别名映射、标准化评测引擎、模型搜索与发现、以及与 L2 的部署协调。
3. 边界规范
不提供:模型推理端点(由 L2 提供)、请求级路由决策(由 L4 执行)、API 鉴权和限流(由 L4 执行)。L3 只提供元数据查询,不参与推理请求路径。
不调用:L3 不直接管理 GPU 资源或 Pod 生命周期,所有这些均由 L2 封装。
不调用:L3 不直接读写 GPU 节点、不管理存储集群、不创建 PVC。所有文件级别的操作由 L1 基础设施层管理。
版本管理器 ↔ 别名映射:版本管理器负责 SemVer 版本号分配和生命周期状态转换;别名映射维护 "production" / "latest" / "staging" 等别名到具体版本的映射关系。
模型注册器 ↔ 权重扫描器:权重扫描器定期扫描 L1 对象存储中的新权重文件,自动发现并注册新模型版本到模型注册器。
4. 模型分类体系
L3 将所有模型划分为三大类:开源模型(从社区获取)、自训练模型(从零开始或 Continue Pretrain)、微调模型(在基座模型上通过 SFT/RLHF/DPO 等方法微调)。每类模型有独立的注册流程和版本管理策略。
4.1 开源模型库
4.2 自训练模型
自训练模型包括平台内部从零开始训练或基于开源模型进行 Continue Pretrain 的模型。此类模型拥有完整的训练过程记录和数据溯源。
| 子类别 | 说明 | 模型示例 | 版本示例 | 训练数据规模 |
|---|---|---|---|---|
| 从零预训练 (From-Scratch Pretrain) | 使用大规模语料从随机初始化开始训练完整模型 | FinanceLM-7B · LegalLM-13B · MedicalLM-70B | v1.0.0 · v1.1.0 · v2.0.0 | 2T–8T tokens |
| 增量预训练 (Continue Pretrain) | 基于开源模型继续进行领域语料预训练 | Qwen3-8B-CPT-Finance · Llama-3.1-8B-CPT-Legal | v1.0.0 · v1.2.0 · v2.0.0 | 50B–500B tokens |
| 领域适配 (Domain-Specific) | 面向特定业务场景的模型定制,如金融问答、合同审核等 | Finance-ContractLM-7B · Insurance-ClaimLM-13B | v1.0.0 · v1.5.0 · v2.0.0 | 5B–50B tokens |
4.3 微调模型
微调模型是基于某个基座模型通过监督微调 (SFT)、强化学习 (RLHF) 或直接偏好优化 (DPO) 等方法训练得到的衍生模型。微调模型与基座模型保持强血缘关系。
| 子类别 | 方法 | 基座示例 | 输出示例 | 训练数据规模 |
|---|---|---|---|---|
| 全量微调 (Full FT) | 更新所有模型参数 | Qwen3-235B-A22B | Qwen3-235B-A22B-FT-Finance v1.0.0 | 10k–100k 条 |
| LoRA 微调 | 低秩适配,仅训练 adapter 权重 | Llama-3.1-8B | Llama-3.1-8B-LoRA-CustomerService v1.2.0 | 1k–10k 条 |
| QLoRA 微调 | 4-bit 量化 + LoRA,显存需求降低 4x | Llama-3.1-70B | Llama-3.1-70B-QLoRA-Contract v1.0.0 | 1k–5k 条 |
| SFT 微调 | 监督微调,对齐指令格式 | DeepSeek-Coder-V2 | DeepSeek-Coder-V2-SFT-SQL v1.3.0 | 5k–50k 条 |
| RLHF 微调 | 基于人类反馈的强化学习 | Qwen3-8B | Qwen3-8B-RLHF-Safe v1.0.0 | 10k–50k 偏好对 |
| DPO 微调 | 直接偏好优化 | GLM-4-9B | GLM-4-9B-DPO-Persuasion v2.1.0 | 5k–20k 偏好对 |
base_model 字段,L3 自动构建模型血缘图谱。L4 模型网关可根据血缘关系做路由决策,如当基座模型有安全更新时自动禁用依赖该基座的所有微调模型。
5. 模型元数据标准
L3 使用统一的 JSON Schema 定义模型元数据,确保所有模型(开源、自训练、微调)以一致的结构注册和查询。以下展示完整的元数据 Schema 和一个基于 Qwen3-235B-A22B 的真实示例。
{
"model_id": "qwen3-235b-a22b", // 全局唯一模型标识符 (小写, 连字符)
"name": "Qwen3-235B-A22B", // 模型显示名称
"description": "通义千问 3 235B-A22B 指令模型,支持 128K 上下文、多语言、Function Calling", // 描述
"base_model": null, // 基座模型 ID (null 表示非微调模型)
"model_type": "open-source", // open-source | self-trained | fine-tuned
"task_type": ["text-generation"], // text-generation | embedding | reranker | image-generation | multimodal
"modality": ["text"], // text | image | audio | video | multimodal
"framework": "transformers", // transformers | vllm | tensorrt-llm | diffusers
"owner": {
"team": "ai-platform",
"maintainer": "alg-team@company.com",
"organization": "Alibaba Cloud"
},
"license": "Apache-2.0", // Apache-2.0 | MIT | Llama-3.1-Community | Gemma | custom
"versions": [
{
"version": "v1.0.0", // SemVer: MAJOR.MINOR.PATCH
"semver": {
"major": 1,
"minor": 0,
"patch": 0
},
"status": "published", // draft | review | published | deprecated | archived
"created_at": "2026-05-15T10:00:00Z",
"published_at": "2026-05-20T08:00:00Z",
"deprecated_at": null,
"weights": {
"source": "s3://model-weights/qwen3-235b-a22b/mlp_model_v1.0.0/", // L1 存储路径
"format": "safetensors", // safetensors | pt | bin | gguf | onnx
"quantization": "bf16", // bf16 | fp16 | fp8 | int4 | int8 | awq | gptq
"size": "144Gi", // 权重文件总大小
"files": 287, // 权重文件数量
"checksum": "sha256:3a7f...e9b2" // 目录级校验和
},
"config": {
"model_max_length": 131072, // 最大序列长度 (128K)
"vocab_size": 152064,
"hidden_size": 8192,
"num_attention_heads": 64,
"num_hidden_layers": 80,
"num_key_value_heads": 8, // GQA 配置
"intermediate_size": 29568,
"max_position_embeddings": 131072,
"rope_theta": 1000000.0,
"torch_dtype": "bfloat16"
},
"requirements": {
"min_gpu_memory": 80, // 最小 GPU 显存 (GB)
"recommended_gpus": 4, // 推荐 GPU 数量
"recommended_gpu_type": "A100-80G", // A100-80G | H100-80G | A800
"recommended_tp": 4, // 推荐张量并行度
"total_weights_memory": 144, // 权重占用量 (GiB)
"inference_memory_estimate": 256 // 推理运行总显存估计 (GiB, 含 KV Cache)
},
"evaluation": {
"status": "completed", // pending | running | completed | failed
"latest_report_id": "eval-20260520-001",
"scores": {
"mmlu": 85.3,
"ceval": 91.2,
"cmmlu": 89.7,
"gsm8k": 92.1,
"math": 76.5,
"humaneval": 80.5,
"mbpp": 78.3
}
},
"deployments": [
{
"target": "production", // production | staging | canary
"engine": "vllm", // vllm | tensorrt-llm | tgi | sglang
"endpoint": "https://api.internal/v1/chat/completions",
"status": "running", // running | deploying | failed | stopped
"deployed_at": "2026-05-20T10:00:00Z"
}
]
}
],
"tags": [ // 标签系统
{"key": "language", "value": "zh"},
{"key": "language", "value": "en"},
{"key": "capability", "value": "function-calling"},
{"key": "capability", "value": "code-generation"},
{"key": "domain", "value": "general"}
],
"created_at": "2026-05-15T10:00:00Z",
"updated_at": "2026-06-01T12:30:00Z"
}
5.1 元数据字段定义
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
| model_id | string | 是 | 全局唯一标识,小写字母+数字+连字符 |
| name | string | 是 | 人类可读的模型名称 |
| base_model | string|null | 否 | 微调模型的基座模型 ID,非微调模型为 null |
| model_type | enum | 是 | open-source | self-trained | fine-tuned |
| task_type | string[] | 是 | 支持的任务类型列表 |
| modality | string[] | 是 | 支持的模态类型列表 |
| framework | string | 是 | 训练/推理框架(transformers/vllm/diffusers 等) |
| owner | object | 是 | 团队信息与维护人联系方式 |
| license | string | 是 | 开源许可证类型或自训练模型的自定义许可证 |
| versions[] | array | 是 | 版本列表,至少包含一个版本 |
| versions[].version | string | 是 | SemVer 版本号 (vMAJOR.MINOR.PATCH) |
| versions[].status | enum | 是 | draft → review → published → deprecated → archived |
| versions[].weights | object | 是 | 权重存储信息(路径、格式、大小、校验和) |
| versions[].config | object | 否 | 模型架构配置(hidden_size, num_layers 等) |
| versions[].requirements | object | 否 | 推理部署的资源需求建议 |
| versions[].evaluation | object | 否 | 评测结果摘要 |
| versions[].deployments[] | array | 否 | 当前部署目标列表 |
| tags[] | object[] | 否 | 键值对标签系统,用于搜索和过滤 |
6. 评测平台
L3 内置标准化评测平台,支持多种开源基准测试和业务自定义评测,为每一个模型版本生成评测报告并同步更新排行榜。
6.1 基准测试体系
通用 MMLU
Massive Multitask Language Understanding — 覆盖 57 个学科(人文/社科/理工/医学)的多选题评测。衡量模型的世界知识和推理能力。满分 100%。
通用 C-Eval
中文基础模型评测基准 — 52 个学科的中文多选题,涵盖人文、社科、理工、医学等领域。中国本土知识评测标准。满分 100%。
通用 CMMLU
Chinese Massive Multitask Language Understanding — 针对中文语境的多任务理解评测,覆盖 67 个学科。满分 100%。
数学 GSM8K
Grade School Math 8K — 8.5K 小学数学应用题,评估模型数学推理能力。Chain-of-Thought 推理。满分 100%。
数学 MATH
Mathematical Aptitude Test of Heuristics — 12.5K 高中数学竞赛题目,7 个难度等级。评估高级数学推理。满分 100%。
代码 HumanEval
164 个手写 Python 编程题,评估函数级代码生成能力。使用 pass@1 指标,满分 100%。
代码 MBPP
Mostly Basic Python Programming — 974 个 Python 编程任务,评估模型基础编程能力。pass@1 指标。满分 100%。
推理 HellaSwag
评估模型对物理世界常识的理解,选择最合理的句子结尾。对抗性过滤。满分 100%。
推理 WinoGrande
Winograd Schema 挑战的更大规模版本(44K 问题),评估代词消歧能力。满分 100%。
业务自定义评测
| 评测名称 | 领域 | 评测任务 | 指标 | 数据规模 | 创建团队 |
|---|---|---|---|---|---|
| FinanceQA | 金融 | 金融领域问答(财报分析、市场解读、风险识别) | 准确率 + BLEU + 人工打分 | 5,000 对 | 金融AI组 |
| CustomerIntent | 客服 | 客服意图识别(退换货、投诉、咨询、售前) | F1-score + 意图准确率 | 10,000 条 | 智能客服组 |
| ContractExtract | 法务 | 合同关键信息抽取(金额、期限、违约责任、管辖法院) | 精确率 + 召回率 + F1 | 2,000 份 | 法务AI组 |
| MedicalQA | 医疗 | 医疗咨询问答(症状描述、药品信息、就医建议) | 准确率 + 安全性评分 | 8,000 对 | 医疗AI组 |
安全评测
| 评测名称 | 说明 | 指标 | 安全维度 |
|---|---|---|---|
| SafetyBench | 中文安全评测基准,覆盖 7 大安全类别(色情、暴力、违法、隐私、偏见等)共 11K 问题 | 安全通过率 (%) | 有害内容拒绝 · 偏见消除 · 隐私保护 |
| TruthfulQA | 评估模型生成真实回答的能力,避免产生常见的错误信念或误解。817 道问题 | 真实性得分 (%) | 事实正确性 · 避免虚假信息 |
| BBQ | Bias Benchmark for QA — 评估模型在不同社会群体上的偏见程度(种族、性别、年龄、宗教等) | 偏见分数 (越低越好) | 公平性 · 去偏见 |
| 内部红队测试 | 平台安全团队构造的对抗性测试用例池,覆盖越狱攻击、提示注入、有害内容绕过等场景 | 越狱成功率 (越低越好) | 安全护栏有效性 · 越狱防护 |
性能评测
| 指标 | 全称 | 说明 | 测量方式 |
|---|---|---|---|
| TTFT | Time to First Token | 从请求到达输出首个 token 的延迟,反映模型"思考"速度 | 端到端测量,含 Prefill 时间 |
| TPOT | Time Per Output Token | 每个生成 token 的间隔时间,反映生成速度 | 端到端 (total_time − ttft) / num_tokens |
| Throughput | Tokens Per Second | 单位时间内生成的 token 总数,衡量推理系统吞吐能力 | total_tokens / total_time |
| GPU 显存 | Peak GPU Memory | 推理期间 GPU 显存峰值占用,决定能否部署在特定 GPU 上 | nvidia-smi / PyTorch memory 统计 |
| QPS | Queries Per Second | 每秒成功处理的推理请求数 | total_requests / total_time |
6.2 模型排行榜
排行榜基于统一评测流水线生成,所有模型版本在相同环境下评测,确保公平对比。以下展示 5 个真实模型的综合得分。
| 排名 | 模型 | MMLU | C-Eval | CMMLU | GSM8K | MATH | HumanEval | MBPP | 综合得分 | 评测日期 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Qwen3-235B-A22B | 85.3 | 91.2 | 89.7 | 92.1 | 76.5 | 80.5 | 78.3 | 84.8 | 2026-05-20 |
| 2 | Llama-3.1-70B-Instruct | 83.7 | 68.5 | 71.2 | 88.9 | 72.3 | 78.9 | 75.6 | 77.0 | 2026-05-18 |
| 3 | DeepSeek-V2-Chat | 81.2 | 84.5 | 82.8 | 86.3 | 70.1 | 82.7 | 80.1 | 81.1 | 2026-05-15 |
| 4 | GLM-4-9B-Chat | 72.4 | 78.3 | 80.1 | 79.6 | 58.2 | 65.8 | 63.4 | 71.1 | 2026-05-12 |
| 5 | Mixtral-8x22B-Instruct | 79.8 | 60.2 | 65.3 | 84.1 | 66.8 | 74.5 | 72.0 | 71.8 | 2026-05-10 |
6.3 评测流水线
评测流水线全自动运行,从数据集准备到排行榜更新无需人工干预。以下是完整的流水线流程和关键组件。
// 评测任务 YAML 配置示例
apiVersion: eval.platform/v1
kind: EvaluationTask
metadata:
name: qwen3-235b-a22b-v1-full-eval
model_id: qwen3-235b-a22b
version: v1.0.0
spec:
# ── 基准评测集 ──
benchmarks:
- name: mmlu
subset: all # all | stem | humanities | social_sciences | other
few_shot: 5
metric: accuracy
- name: ceval
subset: all
few_shot: 5
metric: accuracy
- name: cmmlu
subset: all
few_shot: 5
metric: accuracy
- name: gsm8k
few_shot: 8
metric: accuracy
cot: true # Chain-of-Thought 推理
- name: math
level: [1, 2, 3, 4, 5] # 难度等级
few_shot: 4
metric: accuracy
cot: true
- name: humaneval
metric: pass@1
- name: mbpp
metric: pass@1
- name: hellaswag
few_shot: 10
metric: accuracy
- name: winogrande
few_shot: 5
metric: accuracy
# ── 业务自定义评测 ──
custom_benchmarks:
- name: finance-qa
dataset: s3://eval-datasets/finance-qa/v3/ # 评测数据集路径
metric: accuracy
max_samples: 5000
- name: customer-intent
dataset: s3://eval-datasets/customer-intent/v2/
metric: f1
# ── 安全评测 ──
safety_benchmarks:
- name: safety-bench
subset: all # all | 7 categories
- name: truthful-qa
- name: bbq
# ── 性能评测 ──
performance:
engine: vllm # 评测使用的推理引擎
gpu_type: A100-80G
gpu_count: 4
tp: 4
concurrency: [1, 8, 16, 32] # 不同并发度测试
input_lengths: [128, 512, 2048] # 不同输入长度
output_lengths: [128, 256, 512] # 不同输出长度
# ── 评测运行时 ──
runtime:
timeout: 7200 # 超时 (秒), 70B 模型约 2h
retry: 2
priority: normal # high | normal | low
notify:
on_complete:
- channel: feishu
to: ["alg-team"]
on_failure:
- channel: email
to: ["mlops@company.com"]
---
// 评测结果 (由评测引擎写入)
{
"report_id": "eval-20260520-001",
"model_id": "qwen3-235b-a22b",
"version": "v1.0.0",
"status": "completed",
"started_at": "2026-05-20T02:00:00Z",
"completed_at": "2026-05-20T04:15:00Z",
"duration_seconds": 8100,
"benchmark_results": {
"mmlu": {"score": 85.3, "num_samples": 14042, "few_shot": 5, "metric": "accuracy"},
"ceval": {"score": 91.2, "num_samples": 11928, "few_shot": 5, "metric": "accuracy"},
"cmmlu": {"score": 89.7, "num_samples": 11928, "few_shot": 5, "metric": "accuracy"},
"gsm8k": {"score": 92.1, "num_samples": 1319, "few_shot": 8, "cot": true, "metric": "accuracy"},
"math": {"score": 76.5, "num_samples": 5000, "few_shot": 4, "cot": true, "metric": "accuracy"},
"humaneval": {"score": 80.5, "num_samples": 164, "metric": "pass@1"},
"mbpp": {"score": 78.3, "num_samples": 974, "metric": "pass@1"},
"hellaswag": {"score": 87.2, "num_samples": 10042, "few_shot": 10, "metric": "accuracy"},
"winogrande": {"score": 85.6, "num_samples": 1267, "few_shot": 5, "metric": "accuracy"}
},
"custom_results": {
"finance-qa": {"score": 89.4, "metric": "accuracy", "num_samples": 5000},
"customer-intent": {"score": 92.1, "metric": "f1", "num_samples": 10000}
},
"safety_results": {
"safety-bench": {"overall_pass_rate": 97.2, "categories": {...}},
"truthful-qa": {"score": 82.5, "metric": "truthfulness"},
"bbq": {"bias_score": 3.2, "metric": "bias (lower is better)"}
},
"performance_results": {
"ttft_p50_ms": 120,
"ttft_p99_ms": 410,
"tpot_p50_ms": 26,
"tpot_p99_ms": 105,
"throughput_tokens_per_second": 3890,
"peak_gpu_memory_gb": 76.5,
"qps_max": 48
}
}
7. 版本管理
L3 的版本管理系统为每个模型版本分配语义版本号,支持别名映射和完整的生命周期管理。版本管理是 L3 连接 L2 部署和 L4 路由的核心枢纽。
7.1 语义版本 (SemVer)
模型版本使用 MAJOR.MINOR.PATCH 格式的语义版本号,遵循以下兼容性规则:
| 版本位 | 变更含义 | 示例 | 兼容性 | 自动升级 |
|---|---|---|---|---|
| MAJOR | 架构/能力重大变更(替换全部权重、模型结构变化、训练方法根本改变) | v1.0.0 → v2.0.0 | ❌ 不兼容 | 不能自动升级 |
| MINOR | 增量改进(继续训练、数据集扩展、评测得分显著提升、新增能力) | v1.0.0 → v1.1.0 | ✅ 前向兼容 | 可考虑自动升级 |
| PATCH | Bug 修复(权重修复、后处理优化、量化校准调整) | v1.0.0 → v1.0.1 | ✅ 完全兼容 | 推荐自动升级 |
7.2 别名系统
别名系统将语义版本号映射为语义化的标签,使上层消费者(L4 网关、L5 应用层)无须关心具体版本号即可指向正确的模型版本。
// 别名映射 JSON 示例 (存储在 PostgreSQL)
{
"model_id": "qwen3-235b-a22b",
"aliases": {
"production": {
"version": "v1.2.0",
"updated_at": "2026-05-25T10:00:00Z",
"updated_by": "alg-team",
"auto_upgrade": "minor" // none | patch | minor | major
},
"staging": {
"version": "v1.3.0-rc.1",
"updated_at": "2026-06-01T14:30:00Z",
"updated_by": "alg-team"
},
"latest": {
"version": "v1.3.0-rc.1",
"updated_at": "2026-06-01T14:30:00Z",
"auto_upgrade": "patch"
},
"canary": {
"version": "v2.0.0-beta.2",
"updated_at": "2026-05-30T09:00:00Z",
"updated_by": "risk-team"
}
}
}
别名的更新遵循以下规则:
- production 别名:只能由 MLOps 团队或审批流程更新,通常经过 staging 验证后手动推进
- staging 别名:在版本通过评测且 reviewed 状态后自动指向最新候选版本
- latest 别名:任何新发布的 published 版本会自动更新 latest 别名
- canary 别名:用于灰度验证的新版本,通常由算法工程师手动设置,验证通过后升级 production
- auto_upgrade:当符合兼容性规则时,别名可自动指向较新的版本号
7.3 生命周期状态机
每个模型版本经历从创建到归档的完整生命周期,状态转换受控于严格的规则和审批流程。
- Deprecated 状态的版本仍可被已有部署使用,但 L4 网关会记录警告日志并建议升级
- Archived 状态的版本的权重文件将从 L1 热存储移至冷存储(30 天后自动转移),元数据保留
- 版本从 Deprecated 到 Archived 有 30 天冷却期,期间可回退到 Published 状态
- 版本回退操作(Published → Review)需要极高级别权限,仅 MLOps 主管可操作
8. 模型存储策略
模型权重文件在 L1 基础设施层的对象存储中管理,L3 只存储元数据。以下是完整的存储分层策略:
存储层级详情
| 层级 | 存储介质 | 存储内容 | 容量 | 访问方式 | 延迟 | 数据持久性 |
|---|---|---|---|---|---|---|
| L3 元数据 | PostgreSQL HA | 模型元数据、版本信息、评测结果、别名映射、标签 | < 100 GB | SQL / REST API | < 10ms | 99.999% (HA + WAL 备份) |
| L1 对象存储 (热) | MinIO / Ceph RGW (SSD) | 活跃模型权重 (Published)、日常使用的 safetensors | 10–50 TB | S3 API / PVC CSI | 50–200ms | 99.999% (EC 4+2 纠删码) |
| L1 对象存储 (温) | Ceph RGW (HDD + Cache Tier) | 历史模型权重 (Deprecated)、归档前过渡存储 | 50–200 TB | S3 API | 200ms–1s | 99.9% (EC 3+1) |
| L1 对象存储 (冷) | Ceph RGW (HDD, 蓝光备份可选) | 归档模型权重 (Archived)、评测数据集备份 | 200 TB+ | S3 API (低频) | 1–5s | 99% (单副本 + 冷备) |
| L2 GPU 节点本地缓存 | NVMe SSD (节点本地) | 常用模型权重的副本,启动时从 L1 预加载 | 1–5 TB / 节点 | 本地文件系统 | < 1ms | 非持久 (重启后重新加载) |
| GPU 显存 | HBM2e / HBM3 (GPU 本地) | 推理运行的模型权重 + KV Cache | 80 GB / GPU (A100) | CUDA / PyTorch | < 1μs | 易失 (Pod 销毁即释放) |
- L3 绝不直接存储或缓存模型权重文件,所有权重操作通过 L1 对象存储的 S3 API 进行
- 权重文件的路径、校验和、格式等元数据在 L3 的 PostgreSQL 中维护,确保数据一致性和可溯源
- L2 推理节点通过 PVC (MinIO CSI Driver) 直接从 L1 挂载权重,不经过 L3 网络路径
- Archived 版本的权重在 30 天后自动从热存储迁移到冷存储,元数据永久保留在 L3
- LoRA adapter 权重作为独立对象存储在同一 MinIO Bucket 中,路径结构为
lora-adapters/{model_id}/{version}/
9. API 规范
L3 模型市场对外暴露 RESTful API,供 L4 模型网关、L5 应用平台和管理控制台调用。以下列出核心 API 端点。
模型 CRUD
版本管理
别名管理
// GET /api/v1/models/qwen3-235b-a22b/aliases/production/resolve
// 响应示例 (供 L4 网关使用)
HTTP/1.1 200 OK
Content-Type: application/json
{
"model_id": "qwen3-235b-a22b",
"alias": "production",
"resolved_version": "v1.2.0",
"weights": {
"source": "s3://model-weights/qwen3-235b-a22b/v1.2.0/",
"format": "safetensors",
"quantization": "bf16",
"size": "144Gi"
},
"deployments": [
{
"target": "production",
"engine": "vllm",
"endpoint": "https://api.internal/v1/chat/completions",
"status": "running"
}
],
"capabilities": {
"max_context_length": 131072,
"supported_languages": ["zh", "en"],
"function_calling": true,
"streaming": true
}
}
评测管理
搜索与过滤
// GET /api/v1/models/search?q=finance&task=text-generation&min_mmlu=70&page=1&size=10
// 搜索请求参数
// q 全文搜索关键词 (匹配 name/description/model_id)
// task 任务类型过滤 (text-generation | embedding | reranker | ...)
// modality 模态过滤 (text | image | multimodal)
// framework 框架过滤 (transformers | vllm | tensorrt-llm)
// min_mmlu 最低 MMLU 分数过滤
// tags 标签过滤 (key=value 格式, 可重复)
// status 版本状态过滤 (published | deprecated | ...)
// page 页码 (默认 1)
// size 每页大小 (默认 20, 最大 100)
// sort 排序字段 (score | name | created_at | updated_at)
// order 排序方向 (asc | desc)
HTTP/1.1 200 OK
Content-Type: application/json
{
"total": 3,
"page": 1,
"size": 10,
"results": [
{
"model_id": "qwen3-235b-a22b",
"name": "Qwen3-235B-A22B",
"description": "通义千问 3 235B-A22B 指令模型",
"type": "open-source",
"latest_version": "v1.2.0",
"highest_score": {"benchmark": "ceval", "score": 91.2},
"tags": [
{"key": "domain", "value": "general"},
{"key": "language", "value": "zh"}
]
},
{
"model_id": "finance-qa-7b",
"name": "FinanceQA-7B-Instruct",
"description": "金融领域问答专用模型,基于 Qwen3-8B 微调",
"type": "fine-tuned",
"base_model": "qwen3-8b",
"latest_version": "v1.0.0",
"highest_score": {"benchmark": "finance-qa", "score": 89.4},
"tags": [
{"key": "domain", "value": "finance"},
{"key": "capability", "value": "qa"}
]
}
]
}
部署协调
10. SLA / SLO 目标
L3 模型市场的 SLO 直接影响模型发现和版本路由的可用性和响应速度。作为元数据服务层,L3 的核心目标是保证元数据的强一致性和高可用。
| 类别 | SLI | SLO 目标 | 测量方式 | 窗口期 |
|---|---|---|---|---|
| 可用性 | 元数据 API 可用性 | ≥ 99.99% | 健康检查端点 /health 成功率 | 月度 |
| PostgreSQL 数据库可用性 | ≥ 99.995% | HA 切换时间 + 查询成功率 | 季度 | |
| 评测服务可用性 | ≥ 99.5% | 评测任务提交和完成率 | 月度 | |
| 性能 | 元数据查询延迟 P50 | < 10ms | GET /api/v1/models/{id} 响应时间 | 周度 |
| 元数据查询延迟 P99 | < 50ms | GET /api/v1/models/{id} 响应时间 | 周度 | |
| 别名解析延迟 P99 | < 20ms | 别名→版本号解析请求 | 周度 | |
| 搜索查询延迟 P99 | < 200ms | 全文搜索 + 多维过滤查询 | 周度 | |
| 数据一致性 | 元数据读写一致性 | 强一致性 | 写入后立即读取返回最新数据 | 实时 |
| 别名更新传播延迟 | < 1s | 别名更新 → L4 缓存失效 | 周度 | |
| 模型注册事务成功率 | ≥ 99.99% | 注册请求成功完成率 | 月度 | |
| 评测结果数据准确性 | 100% | 评测结果写入校验 (checksum + 审计) | 每评测任务 | |
| 评测 | 评测任务提交到开始时间 | < 5min | 评测任务入队 → 第一个 benchmark 启动 | 周度 |
| 评测流水线完成时间 (7B) | < 30min | 标准 9 项基准 + 3 项安全评测 | 周度 | |
| 评测流水线完成时间 (70B) | < 2h | 标准 9 项基准 + 3 项安全评测 | 周度 | |
| 容量 | 最大注册模型数 | ≥ 500 | PostgreSQL 表行数 | 季度 |
| 最大并发评测任务数 | ≥ 10 | 评测引擎队列长度 | 月度 |
11. 技术选型
以下表格列出了 L3 层所有技术组件的选型结果、版本和选型理由:
| 领域 | 选型 | 版本 | 备选 | 选型理由 |
|---|---|---|---|---|
| 模型注册中心 | MLflow Model Registry (自定制) | 2.14+ | HuggingFace Hub · HuggingFace Model Registry | MLflow 是业界最成熟的 ML 元数据管理框架;自定制以适配平台七层架构;原生支持模型版本管理、stage 别名、血缘追踪;REST API 成熟;Python SDK 与训练流水线无缝集成;与平台阿里云 EMR/PAI 生态兼容。 |
| 元数据存储 | PostgreSQL (HA + Patroni) | 16+ | MySQL 8.0 · TiDB | MLflow 原生支持 PostgreSQL 后端;强 ACID 事务保证元数据一致性;Patroni + etcd HA 方案成熟稳定;RPO < 1s, RTO < 30s;支持 JSONB 类型存储灵活的元数据扩展字段。 |
| 评测引擎 | lm-evaluation-harness | 0.4.6 | OpenCompass · C-Eval Harness | EleutherAI 出品,社区最广泛使用的 LLM 评测框架;支持 200+ 基准测试;统一的评测接口和标准化输出;内置 MMLU/GSM8K/HumanEval 等主流基准;可扩展自定义评测集;支持多种模型后端 (vLLM/TGI/HF)。 |
| 评测结果存储 | PostgreSQL (与元数据同库) | 16+ | MongoDB · InfluxDB | 评测结果与模型元数据同库,简化 join 查询排行榜;JSONB 存储评测评分明细;无需额外运维数据系统。 |
| 模型搜索/发现 | PostgreSQL FTS + 自定义索引 | — | Elasticsearch · MeiliSearch | 初期元数据量小(< 100GB),PostgreSQL 全文搜索足够;避免引入 ES 增加运维复杂度;中期可引入 ES 做增强搜索;搜索 QPS 预期 < 500/s。 |
| API 框架 | FastAPI | 0.111+ | Flask · Django REST · Gin | 异步原生 (async/await) 适合高并发 IO 密集型场景;Pydantic 模型自动生成 OpenAPI 文档;类型安全、自动请求校验;性能在 Python 框架中最佳。 |
| 权重存储 | MinIO + Ceph RGW | MinIO 2024+ / Ceph Reef | AWS S3 · Alibaba Cloud OSS | 开源 S3 兼容对象存储;S3 API 生态丰富 (MinIO CSI Driver, boto3);支持纠删码数据保护;单集群可扩展到 PB 级;权重文件为不可变对象,S3 语义天然匹配。 |
| 测评数据集存储 | HuggingFace Datasets 缓存 + MinIO | 2.20+ | — | 评测数据集统一管理;流式加载减少本地存储;支持自定义数据集注册。 |
| 别名/路由缓存 | Redis | 7.2+ | Memcached · Local Cache | 缓存别名→版本号映射,加速 L4 路由查询;发布/订阅机制通知 L4 缓存失效;缓存 TTL 可配置;与 MLflow Model Registry stage 映射一起管理。 |
| 任务队列 | Celery + Redis/SQS | 5.4+ | Argo Workflows · Prefect | 评测任务异步执行;任务优先级队列;失败重试和死信队列;与 FastAPI 原生配合;评测结果异步写回。 |
| 监控/可观测 | Prometheus + Grafana | Prometheus 2.52+ | OpenTelemetry · Datadog | FastAPI 原生暴露 Prometheus 指标;PostgreSQL exporter 监控数据库性能;预置 L3 仪表盘(API 延迟、QPS、数据库连接数、评测任务状态)。 |
| 容器编排 | Kubernetes (已有 L1 提供) | 1.30+ | — | 复用 L1 基础设施层的 K8s 集群;L3 服务以 Deployment + Service 形式部署;Celery worker 作为独立 Deployment 运行。 |
- MLflow Model Registry vs. HuggingFace Hub:HF Hub 在开源模型管理上有优势,但自训练模型和微调模型需要私有化存储和细粒度权限控制,MLflow 自托管更合适。平台同时集成 HF Hub 作为开源模型的数据源。
- lm-evaluation-harness vs. OpenCompass:OpenCompass 在中文评测生态上更丰富,但 lm-evaluation-harness 社区更国际化,支持的模型类型更广,插件式自定义评测扩展更灵活。两者可共存,以 lm-evaluation-harness 为主引擎。
- PostgreSQL vs. 专用搜索引擎:当前模型规模下 PostgreSQL 全文搜索完全满足需求。当模型数超过 2000 或搜索 QPS 超过 1000/s 时考虑引入 Elasticsearch。
- 权重存储不使用 L3 管理:权重文件的读/写走 L1 对象存储的高吞吐路径,L3 只管理元数据。这避免了 L3 成为数据传输瓶颈。