多层感知机选择
概览
mlp 在 CPU 上运行已训练的神经分类器,把请求映射到候选模型。
参考:它与 KNN、KMeans 和 SVM 同属基于 ML 的模型选择家族。
主要优势
- 学习线性方法(KNN、线性核 SVM)无法捕获的复杂非线性决策边界。
- 在路由器内部用 Go 运行,只需要模型运行时给出的查询向量。
- 支持自定义隐藏层大小,以平衡模型容量和推理速度。
- 与其他选择算法接入同一
decision.algorithm表面。
算法原理
MLP 使用带可配置 隐藏层的前馈神经网络,把查询分类到候选模型:
- 特征工程:查询嵌入(预计算或按需)与可选的类别 one-hot 编码拼接,形成输入特征向量。
- 前向传播:特征向量经过带 ReLU 激活的隐藏层,产出候选模型上的概率分布。
- 选择:输出概率最高的模型被选中。
Input: query_embedding (dim) + category_one_hot (num_categories)
↓
Hidden Layer 1: Linear(dim, h1) → ReLU
↓
Hidden Layer 2: Linear(h1, h2) → ReLU
↓
Output Layer: Linear(h2, num_models) → Softmax
↓
Output: P(model_i | query) for each candidate
选择流程
解决什么问题?
有些路由边界是非线性的,静态排序或更简单的线性规则无法很好捕获。mlp 从历史数据中学习这些更复杂的查询到模型边界,同时把推理保持在选择层内。
何时使用
- 需要捕获查询到模型映射中的复杂非线性模式。
- 你有代表性的已标注查询到模型数据集。
- 该路由可以接受 CPU 推理成本。
- KNN/KMeans/SVM 决策边界不足以覆盖你的工作负载。
已知限制
- 需要预训练模型权重;没有训练数据无法从零开始。
- 当前决策工厂始终构造 CPU 选择器。已接受的
device字段未接到请求时选择。 - 与 KNN 不同,MLP 是“黑盒” — 更难解释为何选中特定模型。
- 训练需要单独的
modelselection训练流水线;见 ML Model Selection。