ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

CPU 与 NPU 精度对比实战:Timer-S1 在昇腾上 max_abs_error 仅 0.0125

CPU 与 NPU 精度对比实战:Timer-S1 在昇腾上 max_abs_error 仅 0.0125 CPU 与 NPU 精度对比实战Timer-S1 在昇腾上 max_abs_error 仅 0.0125【免费下载链接】timer-s1-npu项目地址: https://ai.gitcode.com/atlasleong/timer-s1-npuTimer-S1 是字节跳动开源的时间序列基础模型采用 decoder-only 的 MoE Transformer 架构总参数约 8.3B、每 token 仅激活 0.75B可零样本输出 9 个分位的预测结果。在将 Timer-S1 迁移到昇腾 NPU 的实战中我们通过 CPU 与 NPU 精度对比验证了推理数值的一致性在固定输入下max_abs_error 仅 0.0125mean_abs_error 0.0031离散分类输出完全一致。本文完整复盘这次 CPU 与 NPU 精度对比的评测方法、判定标准与复现步骤帮你在昇腾 NPU 上快速建立大模型推理精度验证的完整流程。认识 Timer-S1用基础模型做时间序列预测 Timer-S1 是一个亿级参数的时间序列基础模型Time Series Foundation Model与 LLM 类似它经过海量时序数据预训练可以直接对未见过的数据集做零样本zero-shot预测无需额外微调。它的核心特性包括架构decoder-only MoE Transformer24 个基础层 16 个 MTP 层规模总参数约 8.3B激活参数约 0.75B32 个专家、每 token 激活 2 个输入原始浮点时间序列(batch, lookback)本项目固定为(1, 288)输出分位数预测 logits形状(1, 9, 16)即 9 个分位0.10.9× 16 个预测步在 model/README.md 中可以看到官方的 Quickstart 用法加载模型后直接model.generate(seqs, max_new_tokens256, revinTrue)即可得到分位数预测。模型的定制实现代码位于 model/modeling_TimerS1.py、model/configuration_TimerS1.py 与 model/ts_generation_mixin.py。为什么要做 CPU 与 NPU 精度对比大模型在 CPU 上通常以 float32 精度计算而昇腾 NPU 为了提升吞吐和显存效率常以 bfloat16 精度进行前向推理。两种精度的浮点表示范围与舍入方式不同迁移后输出数值可能产生微小偏差。对于时间序列预测这类对数值敏感的任务需要回答一个问题同样的权重、同样的输入NPU 算出来的结果和 CPU 参考结果差多少还能不能信任这正是 CPU 与 NPU 精度对比的价值所在——它不是能不能跑通的冒烟测试而是量化级的数值一致性验证。CPU 与 NPU 精度对比的评测方法 本项目的精度对比遵循严格的可复现流程保证结果真实可信固定输入固定随机种子 42生成确定性输入序列(1, 288)输入前 8 个值为1.9269, 1.4873, 0.9007, -2.1055, ...确保每次运行完全一致同一权重快照CPU 与 NPU 使用同一份固定 revision 的模型权重4 个 safetensors 分片共约 16.6 GB对比对象对position_logits逐元素计算绝对误差并对比离散派生输出class_ids判定指标max_abs_error最大绝对误差mean_abs_error平均绝对误差discrete_outputs_equal离散分类输出是否一致核心结果max_abs_error 仅 0.0125 ✨这是整个 CPU 与 NPU 精度对比中最亮眼的数据全部来自真实测量README.md 第 6.1 节指标实测值position_logits形状(1, 9, 16)max_abs_error0.012511014938354492约 0.0125mean_abs_error0.0031260023824870586discrete_outputs_equaltrueCPU / NPU 的class_ids均为[8]NaN / Inf无重复前向max_abs_diffCPU / NPU 各自为0.0也就是说NPU 上 bf16 推理与 CPU 参考输出相比最大单点误差只有 0.0125平均误差仅 0.0031且重复前向结果完全确定0.0 差异说明昇腾 NPU 上的推理结果稳定可靠。为了让结论更扎实项目还做了10 样本回归测试10 个独立子进程、共 1440 个元素max_abs_error为 0.0197mean_abs_error为 0.0030离散输出匹配 10/10。最终判定acceptedtrue阈值max_abs_error≤1.0、mean_abs_error≤0.1、discrete_agreement_min≥0.8实测精度远超阈值要求。NPU 推理结果实测证据 下图是模型在昇腾 NPU 上最终适配验收的真实日志截图可以看到完整的输出标记输入序列特征、分位数预测FORECAST、离散分类PREDICTED_CLASS8以及INPUT_DEVICEnpu:0、CPU_FALLBACKfalse、EXIT_CODE0等关键状态日志中INFERENCE_WALL_MS391.713642是单次同步前向的墙钟耗时分位数预测的中位行均值FORECAST_MEAN0.075945、标准差0.022661与精度对比阶段的证据完全吻合。昇腾 NPU 设备与运行环境 ⚙️本次 CPU 与 NPU 精度对比运行在昇腾 910B4 上。下图为npu-smi设备快照展示了 NPU 芯片的功耗、温度、HBM 内存占用以及推理进程状态组件版本硬件Ascend 910B4-1逻辑npu:0操作系统openEuleraarch64CANN8.5.1torch / torch_npu2.9.0transformers4.57.6Python3.11.14注意交付脚本通过torch.npu.is_available()强校验 NPU 可用不降级到 CPUCPU_FALLBACKfalse保证了精度对比的双方确实是NPU 真实计算而非 CPU 回退。端到端适配工作流 从模型下载、源码安全审计、CPU/NPU 精度对比到性能评测与最终交付整个过程被记录为可追溯的适配工作流。下图展示了各阶段的执行记录整个流程的关键结论模型是纯 PyTorch 实现、无 CUDA 专属 API通过torch_npu注册的 NPU 后端即可运行无需打迁移补丁这也是精度对比结果如此干净的前提之一。如何复现 CPU 与 NPU 精度对比 ️如果你想亲手复现这份精度对比结果操作非常简单git clone https://gitcode.com/atlasleong/timer-s1-npu cd timer-s1-npu python inference.py仓库内的核心文件inference.py交付推理脚本自包含、无外部依赖执行权重完整性校验CHECK_WEIGHTS_OK4/4→ warmup 前向 → 计时前向 → 证据落盘校验ASSETS_VERIFIEDtruemodel/完整模型快照4 个 safetensors 分片 配置文件 定制建模代码assets/推理证据数组与摘要inference_summary.json 记录了median_forecast、forecast_mean、inference_wall_ms等真实结果requirements.txt交付运行依赖torch / torch_npu 由昇腾 worker 镜像固定不从 PyPI 安装复现完成后你可以对比position_logits.npy与 CPU 参考输出自行计算max_abs_error——预计你会得到与本文一致的结论约 0.0125。总结 ✅通过这次 CPU 与 NPU 精度对比实战我们可以确认Timer-S1 在昇腾 NPU 上以 bf16 精度推理与 CPU float32 参考结果的最大绝对误差仅 0.0125平均误差 0.0031离散分类输出完全一致完全满足大模型推理的数值一致性要求。这套固定种子 同一权重 双端对比 阈值判定的精度验证方法论同样适用于其他大模型在昇腾 NPU 上的迁移验证。如果你正在做 NPU 推理适配建议把max_abs_error作为每次发布的必查指标——数据会告诉你迁移是否真正无损。【免费下载链接】timer-s1-npu项目地址: https://ai.gitcode.com/atlasleong/timer-s1-npu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表