news 2026/8/23 14:01:37

贪心还是采样?Kronos-small NPU 确定性解码的取舍与temperature/top-p概率预测启用方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
贪心还是采样?Kronos-small NPU 确定性解码的取舍与temperature/top-p概率预测启用方法

贪心还是采样?Kronos-small NPU 确定性解码的取舍与temperature/top-p概率预测启用方法

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

想在华为昇腾 NPU 上跑 Kronos-small K 线(OHLCV)预测?本文解析本项目中确定性贪心解码temperature / top-p 采样预测的取舍:为什么交付版选择 argmax 贪心解码以保证 CPU 与 NPU 逐位一致,以及如何在自己的脚本里启用 temperature / top-p 概率预测。

Kronos-small 预测原理:从 OHLCV 到离散 token 的两级解码

Kronos-small 是首个开源的金融 K 线基础模型(MIT 许可),核心是decoder-only 自回归 Transformer,预测分两级完成:

  1. 量化KronosTokenizer(VQ-VAE + 球面二值量化)把连续 OHLCV 窗口编码为分层离散 token——s1/s2 各 1024 类(model/config.json 中s1_bits=10s2_bits=10);
  2. 自回归预测:模型逐位置先预测 s1 token,再预测 s2 token,最后经tokenizer.decode反归一化还原为连续的 8×6 预测值(open/high/low/close/volume/amount)。

正因为"每步预测一个 token 类别",解码策略(贪心 or 采样)就决定了输出的确定性与多样性——这正是本文的主题。

为什么选贪心解码?NPU 逐位一致的 3 个理由

本项目交付的推理路径 inference.py 使用了确定性贪心解码。关键改动在 runner_lib.py:forecast_once镜像了官方KronosPredictor.predict,但把随机的 multinomial 采样替换为torch.argmax

  • s1:sample_pre = torch.argmax(s1_logits, dim=-1)(L177)
  • s2:sample_post = torch.argmax(s2_logits, dim=-1)(L181)

配合固定种子(FIXED_SEED=42,每次前向前重新set_seed),得到三个硬好处:

收益说明
CPU/NPU 逐位一致贪心输出是离散索引,跨设备无随机差异。实测 10 个样本 480 个元素,max_abs_error=0.0BITWISE_EQUAL=True
完全可复现相同输入必然得到相同FORECAST=输出,便于回归测试与审计
精度校验闭环inference.py 从磁盘重载数组后硬断言max_abs_error <= 0.01,超阈值即失败

⚠️ 若启用采样,随机性会让 CPU 与 NPU 结果不再逐位可比,跨设备一致性校验(本项目的验收红线)也就无从谈起。详见 README.md 的局限性说明。

实测:确定性贪心解码的 NPU 输出长什么样

运行python3 inference.py(入口在 inference.py),日志会打印完整的机器契约标记。以真实交付日志为例:

INPUT_DEVICE=npu:0 MODEL_DEVICE=npu:0 OUTPUT_DEVICE=npu:0 CPU_FALLBACK=false FORECAST_SHAPE=[8, 6] FORECAST=[[102.1837..., 102.5727..., ...], ...] # 8 步 × 6 列 OHLCV DIAGNOSTIC_DIRECTION=[1, 1, 1, 1, 1, 1, 1] # close 价逐步涨跌(1=涨) CPU_NPU_MAX_ABS_ERROR=0.000000000 CPU_NPU_BITWISE_EQUAL=True NPU_TIMING_MEDIAN_MS=542.671882 EXIT_CODE=0

几个要点:

  • CPU_FALLBACK=false:主推理只跑在 npu:0,CPU 前向仅作数值参考;
  • DIAGNOSTIC_DIRECTION是由forecasts确定性推导的诊断输出(close 价方向),不是模型直接预测的主输出;
  • 单卡npu:0上自回归 8 步 + tokenizer 编/解码的中位耗时约543 ms

原始预测数组以.npy形式落盘:assets/forecasts_npu.npy(NPU 主输出)与 assets/forecasts_cpu.npy(CPU 参考),二者逐位一致。

如何启用 temperature / top-p 概率预测

贪心解码只给"最可能的单一路径"。若你想做概率预测 / 不确定性量化(例如输出 20 条候选路径取均值),可以使用官方KronosPredictor.predict内置的采样接口(参数说明见 model/README.md):

pred_df = predictor.predict( df=x_df, # 历史 K 线(open/high/low/close/volume/amount) x_timestamp=x_timestamp, y_timestamp=y_timestamp, pred_len=pred_len, T=1.0, # temperature:越大分布越平坦、越"大胆" top_p=0.9, # 核采样:只保留累计概率达 0.9 的最小 token 集合 sample_count=1 # 生成并平均的预测路径数,增大可做集成预测 )

参数速查:

参数作用调参建议
T(temperature)缩放 logits 后再归一化T<1更保守贴近贪心;T>1更发散
top_p核采样截断阈值0.9 常用;越接近 1 候选集越大
sample_count多条随机路径平均10~20 条可平滑单路径噪声,用于不确定性估计

💡注意:本交付仓的 runner_lib.py 是特意把采样换成 argmax 的。若在自己的业务脚本中启用采样,请直接用kronos_src中的KronosPredictor.predict(不要改forecast_once),并接受两点后果:

  1. 输出不再逐位可复现(即使固定随机种子,采样路径跨设备也不保证一致);
  2. 本项目"CPU vs NPU 逐位一致"的校验逻辑不再适用,需改用区间/统计一致性验收。

贪心 vs 采样:金融场景选型建议

场景推荐策略理由
跨设备一致性验收、回归测试✅ 贪心(argmax)逐位可比、结果可审计
生产环境点预测、方向判断✅ 贪心或低 T 采样输出稳定,方向诊断(DIAGNOSTIC_DIRECTION)可靠
不确定性量化、波动率估计⚠️ 采样(T=1.0, top_p=0.9, sample_count≥10)多条路径的分布宽度即不确定性
集成预测、平滑单路径噪声⚠️ 采样 + sample_count 平均官方推荐用法

一句话总结:要"确定性"选贪心,要"概率分布"选采样;本项目交付版选了前者,就是为了在昇腾 NPU 上守住"CPU 与 NPU 逐位一致"这条验收线。

昇腾 NPU 运行环境与文件导航

本项目是自包含交付仓,端到端推理固定跑在npu:0(Ascend 910B4、CANN 8.5.1、torch_npu 2.9.0)。下图为真实npu-smi设备调用快照:

核心文件导航:

  • inference.py —— 交付入口:NPU 推理、warmup + 同步计时、CPU/NPU 精度校验
  • runner_lib.py —— 确定性贪心预测实现(argmax 替换采样)
  • model/config.json —— 模型结构参数(8 层 / d_model 512 / 词表 1024)
  • model/README.md —— 上游 Kronos 模型卡(含 predict 采样参数文档)
  • requirements.txt —— 21 个精确 pin 的依赖闭包
  • README.md —— 精度对比与性能实测数据

小结:Kronos-small 在昇腾 NPU 上的确定性解码策略,本质是在"逐位一致的可验收性"与"概率预测的灵活性"之间做的工程取舍——默认贪心,按需切采样,两条路都已在本文给出。

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

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

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

HackRF驱动问题排查:3步跑起来

HackRF驱动问题排查&#xff1a;3步跑起来 【免费下载链接】hackrf low cost software radio platform 项目地址: https://gitcode.com/gh_mirrors/ha/hackrf 把 HackRF 插到 Windows 机器上&#xff0c;最常见的开源硬件驱动问题就三类&#xff1a;设备管理器里根本看不…

作者头像 李华
网站建设 2026/8/23 13:56:45

PDFMathTranslate:免费公式级PDF论文翻译

PDFMathTranslate&#xff1a;免费公式级PDF论文翻译 【免费下载链接】PDFMathTranslate [EMNLP 2025 Demo] PDF scientific paper translation with preserved formats - 基于 AI 完整保留排版的 PDF 文档全文双语翻译&#xff0c;支持 Google/DeepL/Ollama/OpenAI 等服务&…

作者头像 李华
网站建设 2026/8/23 13:55:46

单链表专题

前言 顺序表和单链表都是两种常见的数据结构&#xff0c;他们的区别究竟在哪里&#xff1f; 顺序表&#xff1a;顺序表是一种连续的存储结构&#xff0c;数据元素在内存中占据一块连续的空间。因为连续空间存储的特性&#xff0c;顺序表可以直接通过下表遍历元素。 单链表&a…

作者头像 李华
网站建设 2026/8/23 13:52:02

从awesome-python3-webapp到iOS App:跨平台开发实战经验完整指南

从awesome-python3-webapp到iOS App&#xff1a;跨平台开发实战经验完整指南 【免费下载链接】awesome-python3-webapp 小白的Python入门教程实战篇 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-python3-webapp awesome-python3-webapp 是一个面向小白的 Pyth…

作者头像 李华