provider.quantizations,即可只把请求路由到以你测试过的精度提供该模型的提供商:
量化改变了什么
量化用更小的数值类型存储模型权重。这样同一个模型需要的内存更少、推理更快,但输出质量会有一定损失。描述一个量化模型需要两点:格式(数值类型,例如FP8 或 INT4)和方法(权重如何转换成该格式,例如 AWQ 或 GPTQ)。
位数每减半,权重所需的内存就减半。对于一个 70B 参数的模型,仅权重大约需要:
这些数字是简单计算(参数数量 × 每个权重的字节数)得出的,不包括激活值和 KV 缓存,而提供商同样需要为它们分配内存。
比较精度格式
精度格式是提供商存储模型权重所用的数值类型。精度越低,占用内存越少、推理越快,但输出质量受影响的风险也越高。BF16 还是 FP16
两者都是 16 位。BF16 保留了更大的指数范围,因此更稳定;FP16 常见且快速,但在某些工作负载上不够稳定。当提供商提供 BF16 时,对质量要求高的流量选择它更稳妥。
FP8 和 FP4
FP8 带来很大的效率提升,并在大多数任务上保持可用的质量。FP4 更进一步,但质量下降更频繁,尤其是在细致的推理、长上下文和严格的结构化输出上。
INT8 和 INT4
整数格式为推理吞吐量和内存而设计。它们能保持多少质量取决于量化方法、校准数据和模型架构。INT8 比 INT4 更容易安全地部署。
读懂模型的标签
提供商会把变体标记为bf16、fp16、fp8、int8、q4、4bit、8bit 等。这些命名并不统一:4bit 可能指 FP4,也可能指 INT4。请查看提供商的文档以确认确切的变体。
比较量化方法
INT4 这样的格式是精度目标;AWQ 或 GPTQ 这样的方法是权重转换到该格式的方式。AWQ INT4 和 GPTQ INT4 以不同方式达到同一目标,因此表现可能差别很大。方法会影响保留多少准确度、哪些运行时可以提供该模型、内存布局和推理速度,以及是否需要校准数据。
要针对你自己的工作负载比较各种方法:
- 先选择运行时:选你能可靠部署的那个。
- 只保留该运行时支持的方法类别。
- 在同一精度目标下对多种方法进行基准测试。
- 跟踪失败模式,而不只是平均基准分数:结构化输出的正确性、长上下文的忠实度、工具调用的可靠性、安全与审核行为,以及负载下的尾部延迟。
路由到某一种精度
provider.quantizations 筛选器检查的是每个提供商对该模型的具体报价,而不只是提供商名称:
- 匹配时忽略大小写、空格、
-和_。 不存在歧义的别名也能匹配:bfloat16对应BF16,float16对应FP16,float8对应FP8。4bit这样的标签不会被视为FP4或INT4。 - 没有量化元数据的报价永远不会匹配。
- 不会回退到其他精度。 如果没有匹配的报价,请求会失败并返回
400 unsupported_model_or_endpoint,原因为quantization_not_available。错误会列出可用的精度,并在routing_diagnostics.quantization下说明哪些提供商被排除以及原因。 - 也可以用
routing.quantizations代替provider.quantizations。
选择精度
你不需要所有场景都用同一种精度。客户支持和关键决策保留较高精度,高流量的分类或摘要则可以接受较低精度。
1
设定成功标准
设定质量阈值(任务准确率、通过率、结构化输出有效性)、延迟和成本目标,以及你不能接受的失败模式。
2
测量高精度基准
从
BF16 或 FP16 开始。记录输出质量、中位数和尾部延迟以及 token 成本。所有更低的精度都与这个基准比较。3
一次降低一级
接下来尝试
FP8 或 INT8。只有在需要额外的成本或吞吐量节省时,才转向 FP4 或 INT4。除非你已有证据表明最小的变体适合你的工作负载,否则不要直接跳到它。4
用接近生产环境的提示词测试
包括长提示词、多步推理、工具调用,以及来自支持工单的边缘情况。
5
发布并持续观察
在你自己的客户端中保留一个备用模型或精度,以应对没有匹配报价的情况;发布后监控质量;当提供商的运行时或模型修订版本变化时重新测试。选定精度后,再在此基础上调整推理参数。