news 2026/8/20 17:27:34

Kairos-23M输入输出与超参数完全指南:context、patch、quantiles一次讲清

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Kairos-23M输入输出与超参数完全指南:context、patch、quantiles一次讲清

Kairos-23M输入输出与超参数完全指南:context、patch、quantiles一次讲清

【免费下载链接】kairos_23m-npu项目地址: https://ai.gitcode.com/atlasleong/kairos_23m-npu

面对一个只有 2300 万参数的时间序列预测模型,新手往往最先被它的输入输出形状绕晕:past_target到底是什么?context_length该设多少?输出的 9 个通道是什么意思?别担心,这篇Kairos-23M 输入输出与超参数指南会带你从零上手,把contextpatchquantiles三大核心概念一次讲清,让你能快速读懂模型并跑通自己的第一次零样本时序预测

一、Kairos-23M 是什么:一个为时序预测而生的基础模型

Kairos-23M 是一个 2300 万参数的时间序列基础模型,核心能力是零样本(zero-shot)时间序列预测——也就是说,不需要针对你的数据重新训练,直接喂入历史观测值,它就能输出未来一段时间的预测,并且以9 分位数(quantile)的形式给出预测的不确定性区间。

它的架构是 T5 风格的 encoder-decoder,配合动态分块(dynamic patching)、MoE tokenizer 和实例级 RoPE 位置编码,属于时序基础模型(TSFM)家族的最新实践。模型本体代码位于 modeling_kairos.py,配置定义在 configuration_kairos.py,推理入口脚本是 inference.py。

二、模型输入详解:past_target 与 context_length

Kairos-23M 的输入非常简洁,核心只有一个张量past_target,也就是你手中那段历史时间序列。

输入的形状

past_target: (batch_size, context_length) float32
  • batch_size:一次预测多少个序列,默认取 1。
  • context_length:喂入的历史窗口长度,也就是上下文长度
  • dtype:全程float32(昇腾 NPU 不支持 fp64,不要改成 float64)。

context_length 超参数怎么设置?

配置里的默认值是context_length=2048,这是模型支持的最大上下文上限;超过上限的输入会被自动截断为末尾 2048 个点(在 modeling_kairos.py 的 encode 方法中处理)。而实际交付的推理入口默认使用CONTEXT_LENGTH = 512(见 _job_bootstrap.py),这是一个兼顾速度与精度的折中选择。

新手建议:先用 512 起步,跑通流程后再根据任务复杂度调整。context 越长,模型能看到的历史规律越多,但显存和耗时也会上升。

输入还可以带掩码

除了past_target,前向函数还接受可选的past_is_pad(padding 标记)和past_observed_values(有效值标记)。简单说:序列中的 NaN 会被自动视为缺失值,模型会用有效观测做预测,这在真实工业数据中非常实用。

三、patch 超参数:input_patch_size 与 input_patch_stride

Kairos-23M 不像传统方法那样直接处理每一个时间点,而是把输入序列切分成一个个 patch(块),再交给模型。这能显著降低计算量并提升对局部模式的捕捉能力。

两个关键配置

超参数默认值含义
input_patch_size128每个 patch 包含多少个时间点
input_patch_stride128patch 之间的滑动步长

stride == size时,patch 之间没有重叠,512 个点的输入会被切成 4 个 patch。此外,模型内部使用**动态分块(DynamicPatch)**机制(见 modeling_kairos.py 中的DynamicPatch类):MoE 路由会决定哪些 patch 需要进一步细分,从而自适应地处理不同"粒度"的时序模式,这就是它擅长时间序列预测的原因之一。

四、模型输出详解:9 分位数预测的结构

模型前向的输出是KairosOutput对象,其中最核心的字段是prediction_outputs

输出的形状

prediction_outputs: (batch_size, num_quantiles=9, prediction_length)

例如实际推理日志里的PREDICTION_SHAPE=1,9,64,含义就是:

  • batch = 1:1 个样本;
  • 9:9 个分位数通道;
  • 64:预测未来 64 个时间点(即prediction_length=64)。

每个通道代表什么?

模型预测的不是一条线,而是 9 条分位数曲线,对应quantiles=[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]

  • q=0.1:未来值有 10% 概率低于此线(下界);
  • q=0.9:未来值有 90% 概率低于此线(上界);
  • q=0.5(索引 4)中位数预测,通常作为最终的点预测结果。

两条分位数曲线之间的宽度,就是模型给出的不确定性区间——区间越窄,模型越有把握。实际推理时,inference.py 正是取索引 4(q=0.5)的中位数通道作为 FORECAST 输出。

五、quantiles 超参数:按需定制你的预测区间

quantiles列表本身也是一个可配置超参数,定义在 configuration_kairos.py 中。默认是 0.1 到 0.9 的 9 等分,但你完全可以自定义,比如想要更细的尾部风险分析,可以改为[0.05, 0.1, ..., 0.9, 0.95]

训练损失也用 quantiles

模型训练时使用分位数损失(quantile loss):每个分位数的预测误差会按对应权重惩罚,这让每个通道都"各司其职"地学会刻画不同概率水平。因此量化输出的覆盖度(比如 0.1~0.9 区间实际应覆盖约 80% 的真实未来值)是评估模型质量的重要指标。

六、其他关键超参数速查表

除了三大主角,下面这些超参数也值得了解(完整清单见 model/config.json):

超参数默认值说明
d_model384隐藏层维度
d_ff1536前馈网络维度
num_layers/num_decoder_layers4 / 4encoder / decoder 层数
num_heads8注意力头数
num_decoder_segments2解码分段数,决定单次最大预测长度
n_activated_experts3MoE 激活专家数
dtypefloat32全模型精度

一个容易踩坑的点:单次生成的最大预测长度是num_decoder_segments × prediction_length = 2 × 64 = 128。如果你需要的预测长度超过 128,模型内部会自动把中位数预测回填到输入、进行自回归续推(见 modeling_kairos.py 的_autoregressive_generate),超出的部分会打印 warning,不影响运行。

七、真实运行示例:输入输出一次看懂

以仓库自带的 inference.py 在昇腾 NPU(Ascend 910B4)上的实际输出为例:

INPUT_DEVICE=npu:0 MODEL_DEVICE=npu:0 OUTPUT_DEVICE=npu:0 CPU_FALLBACK=false PREDICTION_SHAPE=1,9,64 TEST_INPUT=context_len=512,last_observed=1.062244 FORECAST=-0.086745,-0.254155,-0.401681,-0.506220,-0.554450,... EXIT_CODE=0

对照本指南就能轻松解读:输入是 512 个时间点的历史序列(最后一个观测值 1.062244),输出是(1, 9, 64)的 9 分位数预测,FORECAST显示的是中位数(q=0.5)通道的前 8 个预测值。整个前向在 NPU 上中位耗时约114ms

八、新手避坑清单 🧭

  1. 保持 float32:模型全程 float32,改为 float64 会在昇腾 NPU 上报错;
  2. 固定 transformers 版本:Kairos 建模代码依赖 transformers 4.56.x(详见 README 注意事项),升级到 5.x 会因 API 移除而失败;
  3. context 别超上限:超过context_length会自动截断,取的是末尾部分,记得把最新数据放在序列尾部;
  4. NaN 用掩码处理:不要手动删除缺失点,把缺失位置留 NaN 即可,模型自动忽略;
  5. 中位数通道是索引 4:取点预测结果时认准 q=0.5(索引 4)通道。

总结:一张图记住输入输出

最后帮你把全文浓缩成一句话:输入(batch, context)的历史序列,模型输出(batch, 9, prediction_length)的 9 分位数预测,其中context_length决定看多长历史,input_patch_size/stride决定怎么切分,quantiles决定预测的粒度与不确定性。掌握这三点,你就能自信地使用 Kairos-23M 开启自己的零样本时间序列预测之旅了。🎯

【免费下载链接】kairos_23m-npu项目地址: https://ai.gitcode.com/atlasleong/kairos_23m-npu

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 17:25:40

微信聊天记录导出:一篇搞定的保姆级教程

微信聊天记录导出:一篇搞定的保姆级教程 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChatMsg 先接…

作者头像 李华
网站建设 2026/8/20 17:18:36

Python全栈学习路线图:从零基础到实战项目精讲

很多同学在入门编程时,面对海量的教程和资料,常常感到无从下手,既怕内容太浅学不到东西,又怕内容太深跟不上节奏。特别是对于Python这样应用广泛的语言,如何从零开始,系统性地掌握从基础语法到全栈开发、数…

作者头像 李华