← 算法与模型总览

用途与适用负载

通过 HTTP 调用外部时序模型。模型管理中配置服务,模块中选择预测方式。服务不可用时本次候选失败,其他算法继续按资格参与。

历史数据与运行条件

平台至少 30 点,服务可能另有上下文限制;finetune_min_points 仅决定何时提交微调,不是预测的最低点数。

输入应是等间隔、无缺口且数值有限的序列。输出保留输入指标单位,例如 CPU 核、内存字节或每秒请求数;采样步长决定步数对应的真实时间。最低样本数仅表示可运行,不代表预测可靠。

此方法不使用协变量;分别预测各目标指标。

参数说明

窄屏可左右滑动参数表,查看完整说明。

参数 / 类型默认值 / 范围 / 单位含义与使用
endpoint
string
必填,无默认值
无额外范围限制
模型服务的地址,如 http://chronos:8000,不带结尾斜杠。
protocol
string
"finetune"
finetune / unitshub_chronos / unitshub_timesfm
服务的接口协议:finetune = scripts/tsfm-eval/finetune 的服务(支持微调);unitshub_chronos、unitshub_timesfm = kingfs/unitshub 的现成容器(只预测)。
api_key_env
string
""
无额外范围限制
保存访问密钥的环境变量名(平台进程的环境变量),预测时作为 Bearer 密钥发给服务;留空表示服务不需要密钥。密钥本身不存进算法参数。
timeout_seconds
int
30
≥ 1; ≤ 600; s
一次预测请求的超时时间。
service_quantile
float
0
≥ 0; ≤ 0.99
0 = 用服务给的均值预测;0.5~0.99 = 用服务给的这个分位数(如 0.9 = 实际值不超过这条线)。分位数预测按 pinball 损失和覆盖率回测。
finetune_interval_hours
int
0
≥ 0; ≤ 720; h
微调间隔:服务上微调后的模型超过这么久,平台就重新提交数据微调一次;0 = 不微调,一直用预训练模型。只有 finetune 协议的服务支持。微调在后台进行,期间预测仍用旧的微调模型(没有就用预训练模型)。
finetune_mode
string
"full"
full / lora
微调方式:full = 全参数微调;lora = 低秩适配(服务端要装 peft,没装会让微调失败)。
finetune_steps
int
30
≥ 1; ≤ 2000; steps
每次微调的训练步数;增加会提高训练耗时,也可能过拟合。
finetune_learning_rate
float
1e-05
≥ 1e-08; ≤ 0.01
微调的学习率。全参数微调用很小的值(1e-5 量级)。
finetune_batch_size
int
16
≥ 1; ≤ 256
微调每步用的窗口数。
finetune_context_length
int
256
≥ 16; ≤ 8192; steps
微调时每个训练窗口读取的最近步数。
finetune_min_points
int
200
≥ 60; ≤ 100000; points
序列至少有这么多点才提交微调;更短的序列微调只会学到噪声,继续用预训练模型。

配置示例

在“模型管理”编辑参数。以下仅为参数对象,不是 config.yaml 全文;周期示例按 5 分钟采样,需按实际步长调整。未列出的可选参数使用上表默认值。

JSON
{
  "endpoint": "http://chronos:8000",
  "protocol": "finetune",
  "timeout_seconds": 30,
  "service_quantile": 0,
  "finetune_interval_hours": 0
}

调参与取舍

要启用后台微调,可从以下配置开始。服务端须已部署并支持对应协议;示例地址需要替换为自己的服务。24 小时是此示例的微调间隔,不是平台默认值。

JSON
{
  "endpoint": "http://chronos:8000",
  "protocol": "finetune",
  "timeout_seconds": 30,
  "finetune_interval_hours": 24,
  "finetune_mode": "full",
  "finetune_steps": 30,
  "finetune_learning_rate": 0.00001,
  "finetune_batch_size": 16,
  "finetune_context_length": 256,
  "finetune_min_points": 200
}

finetune 协议支持后台微调;unitshub_chronos 与 unitshub_timesfm 仅预测,微调间隔必须为 0。密钥放平台进程环境变量,api_key_env 只填写变量名。回测与回放使用预训练模型,微调效果查看在线预测的实测回填。

通用参数:变化重置与分位校准

参数 / 类型默认值 / 范围 / 单位含义与使用
reset_on_change
bool
false
无额外范围限制
水平突变后重置:检测历史里最后一次水平突变(发布、扩缩容、流量切换),只用突变之后的历史预测。关闭时用全部历史(现状)。突变之后至少要有 6 步才会被确认;突变后的历史不够算法所需时,取算法所需的最新一段。
change_threshold
float
8
≥ 3; ≤ 50
突变阈值:突变幅度(扣除前一段趋势后)超过噪声的多少倍才算,越大越不容易误报,噪声由相邻步变化的稳健标准差估计。仅 reset_on_change=true 时使用。
change_min_shift
float
0.2
≥ 0; ≤ 5
最小突变幅度:突变至少是水平的这个比例(0.2 = 20%),很干净的序列上的微小跳变不算。仅 reset_on_change=true 时使用。
quantile_level
float
0
≥ 0; ≤ 0.99
推荐分位数:0 = 点预测(现状);0.9 等 = 预测「实际值有约 90% 的把握不超过」的线(保形预测:用本算法在这个负载最近几个窗口里的真实误差校准,需要更多历史和时间)。必须大于 0.5。
calibration_windows
int
8
≥ 3; ≤ 50
校准窗口数:用最近多少个历史窗口测本算法的误差;越多越稳,也越慢(每个窗口多跑一次预测)。仅推荐分位数大于 0 时使用。

quantile_level 是 0~1 的分位点,percentile 是 1~100 的百分数,二者不是同一参数。分位校准会额外运行历史预测;增加校准窗口前检查历史与运行预算,覆盖率是评估目标而非保证。

在模块中使用

  1. 保存参数,检查历史窗口、采样步长和预测范围。
  2. 打开模块的“启用预测”;固定算法只运行指定方法,动态算法使用平台已启用的方法。
  3. 先运行滚动回测,通过版本晋升后才会采用;修改影响模型版本的参数后重新回测。
  4. 在仅观察或仅推荐下检查误差、峰值低估、耗时与采用原因,再分别授权准入和副本执行。

历史不足、参数不合法、运行超时或输出无效时,检查算法运行原因;没有合格预测时按模块的固定周期、兜底与保护规则处理。

回测与效果评估 · 推荐与前瞻决策