Kronos-small NPU 推理输出完全解析:FORECAST、DIAGNOSTIC_DIRECTION 与机器契约标记逐个读懂
2026/8/23 17:10:59 网站建设 项目流程

Kronos-small NPU 推理输出完全解析:FORECAST、DIAGNOSTIC_DIRECTION 与机器契约标记逐个读懂

【免费下载链接】kronos-small-npu用户可直接在华为昇腾 NPU 上运行 Kronos-small 模型,用于金融 K 线(OHLCV)时间序列的预测与趋势方向判断。项目提供自包含交付仓,支持 NPU 端到端推理,确保 CPU 与 NPU 逐位一致,并内置精度校验与确定性输出。项目地址: https://ai.gitcode.com/atlasleong/kronos-small-npu

本文以运行在华为昇腾 NPU 上的Kronos-small K线(OHLCV)时间序列预测模型为例,逐行拆解 NPU 推理输出:FORECAST=主预测值、DIAGNOSTIC_DIRECTION=趋势方向,以及INPUT_DEVICECPU_FALLBACKEXIT_CODE等机器契约标记,帮助新手快速读懂金融时序预测的推理结果。

🎯 先看整体输出:NPU 推理结束后你得到什么

执行推理入口inference.py后,标准输出由两大部分组成:任务语义输出(模型真正预测的东西)与机器契约标记(供自动化校验读取的KEY=VALUE行)。实际验收结果如下:

输出的骨架长这样(FORECAST数值过长,此处仅示意):

INPUT_DEVICE=npu:0 MODEL_DEVICE=npu:0 OUTPUT_DEVICE=npu:0 CPU_FALLBACK=false FORECAST=[[102.18, 102.57, 102.09, 102.47, 2336.81, 257176.30], ...] # 共 8 行 6 列 DIAGNOSTIC_DIRECTION=[1, 1, 1, 1, 1, 1, 1] CPU_NPU_BITWISE_EQUAL=True EXIT_CODE=0

这些标记分别回答三个问题:预测值是什么?在哪块设备上算出来的?结果可信吗?下面逐个拆开。

📊 FORECAST:主输出——8×6 的连续 K 线预测值

FORECAST=是唯一的声明主输出,为npu:0上真实前向产生的连续预测值:

  • 形状[8, 6]:预测未来 8 个时间步(HORIZON=8),每步 6 列;
  • 6 列含义FORECAST_COLUMNS=open,high,low,close,volume,amount,即开/高/低/收、成交量与成交额;
  • 生成方式:确定性贪心解码(argmax)。模型先把 64 步历史窗口(CONTEXT_LEN=64)经 Tokenizer 量化为离散 token,再逐位置自回归预测 8 步,最后解码并反归一化还原为连续价格。

以真实输出为例,第 1 个预测步为:

[102.1837158203125, 102.57278442382812, 102.08567810058594, 102.46661376953125, 2336.805908203125, 257176.296875]

读法很直观:预测下一根 K 线开盘 102.18、最高 102.57、最低 102.09、收盘 102.47,成交量约 2337,成交额约 25.7 万。对应的输入首行由INPUT_SEQUENCE=给出(即历史窗口第一根 K 线),完整的输入上下文与 NPU 主输出分别落盘在assets/input_context.npyassets/forecasts_npu.npy,可随时复核。

💡 提示:由于采用贪心解码 + 固定种子,同一输入的输出是确定的——这正是跨设备精度对比的前提。

🔢 DIAGNOSTIC_DIRECTION:收盘价的涨跌方向(推导值)

DIAGNOSTIC_DIRECTION=[1, 1, 1, 1, 1, 1, 1]forecasts确定性推导的诊断角色,并非独立预测

  • 取 8 步预测的 close 列,做相邻差值diff >= 0,得到 7 个 0/1 值([pred_len-1]int64);
  • 1表示该步收盘不跌0表示下跌;
  • 本次 8 步收盘价单调上升(102.47 → 102.89),所以是 7 个连续的1——趋势方向判断就是"一眼看懂"的涨/跌序列。

推导逻辑见runner_lib.py中的direction_from_forecasts函数。

🖥️ 设备标记:确认 NPU 真的在干活

三个设备标记 + 一个回退开关,是判断"推理是否真在 NPU 上执行"的核心证据:

标记实测值含义
INPUT_DEVICEnpu:0输入张量真实驻留设备
MODEL_DEVICEnpu:0模型与 Tokenizer 参数所在设备
OUTPUT_DEVICEnpu:0主输出张量设备(.cpu()迁移前捕获)
CPU_FALLBACKfalseCPU 回退被禁止,主前向只在 NPU

设备调用过程可被npu-smi直接观测到——下面的快照中,python3.11推理进程正占用 NPU 0~3 卡:

✅ 机器契约标记:精度、性能与退出码一眼核对

除语义输出外,还有一组供流水线校验的契约行,逐项解释如下:

标记实测值说明
CPU_NPU_MAX_ABS_ERROR0.000000000CPU 参考 vs NPU 输出的最大绝对误差(阈值 0.01)
CPU_NPU_BITWISE_EQUALTrue两设备预测值逐位一致
CPU_NPU_DIRECTION_EQUALTrue两设备方向推导一致
NPU_TIMING_MEDIAN_MS542.673 次同步计时(1 次 warmup)的中位耗时
OUTPUT_FINITETrue输出无 NaN/Inf
EXIT_CODE0命令成功退出

"逐位一致"并非偶然:解码路径已被替换为 CPU/NPU 舍入行为一致的确定性实现,10 个独立样本回归验证中 480 个元素误差全部为 0。完整的适配、测试与验收流程记录如下:

🚀 快速复现:一条命令跑通 NPU 推理

仓库为自包含交付仓,克隆后即可运行:

git clone https://gitcode.com/atlasleong/kronos-small-npu source /usr/local/Ascend/ascend-toolkit/set_env.sh # 加载 CANN 环境 pip install --no-deps -r requirements.txt python3 inference.py

关键文件速查:

  • inference.py—— 推理入口:NPU 前向、计时、打印全部机器契约标记;
  • runner_lib.py—— 共享 helper:确定性贪心解码、方向推导、上下文构建;
  • requirements.txt—— 21 个精确 pin 的运行时依赖闭包;
  • README.md—— 完整交付说明(固定 revision、SHA-256、实测数据);
  • model/config.json—— 模型超参(8 层 / d_model 512 / 8 头)。

📝 小结

读懂 Kronos-small 的 NPU 推理输出,只需记住三步:

  1. FORECAST=[8, 6]连续 K 线预测值,6 列对应 open/high/low/close/volume/amount;
  2. DIAGNOSTIC_DIRECTION=:由收盘价推导的 7 个 0/1 趋势方向,1为不跌;
  3. 看契约标记:设备均为npu:0CPU_FALLBACK=false、误差为 0、EXIT_CODE=0,即可确认这是一次真实、可信的昇腾 NPU 推理结果。

【免费下载链接】kronos-small-npu用户可直接在华为昇腾 NPU 上运行 Kronos-small 模型,用于金融 K 线(OHLCV)时间序列的预测与趋势方向判断。项目提供自包含交付仓,支持 NPU 端到端推理,确保 CPU 与 NPU 逐位一致,并内置精度校验与确定性输出。项目地址: https://ai.gitcode.com/atlasleong/kronos-small-npu

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询