如何把真实数据喂给test-patchtsmixer-npu:past_values(512×7)输入构造指南
如何把真实数据喂给test-patchtsmixer-npupast_values(512×7)输入构造指南【免费下载链接】test-patchtsmixer-npu用户可直接运行此项目在华为昇腾NPU上执行PatchTSMixer多变量时序预测获取96步未来预测值含位置logits与类别argmax并验证模型精度与性能。项目包含完整迁移交付物模型权重、推理脚本、输出校验全程无CPU回退实测单次前向仅需10.58毫秒。项目地址: https://ai.gitcode.com/atlasleong/test-patchtsmixer-nputest-patchtsmixer-npu 是一个可以直接在华为昇腾 NPU 上运行的 PatchTSMixer 多变量时序预测项目给它一份past_values512 步 × 7 通道的历史输入它就能在 NPU 上完成一次完整前向输出96 步未来预测值含位置 logits 与每位置的通道 argmax。本指南带你从零理解这个输入契约并把真实业务数据一步步构造、喂进模型全程无需 CPU 回退。先看懂输入契约past_values 到底是什么一句话模型只认形状为 (1, 512, 7) 的 float32 张量即batch1 × 512 个历史时间点 × 7 个变量通道。这些数字不是拍脑袋定的全部固化在 model/config.json 里参数值含义context_length512历史上下文窗口长度时间步数num_input_channels7变量通道数沿袭 ETTh1 预训练的 7 变量prediction_length96一次前向输出 96 步未来预测patch_length/patch_stride16 / 16512 点会被切成 32 个 patch 送入混合网络scalingtrue模型按“已标准化”的数据训练输入建议 z-score翻译成人话就是三条硬规则512必须给满最近 512 个点且按时间顺序排列旧 → 新最新在尾部77 个变量通道顺序与上游预训练ibm/patchtsmixer-etth1-pretrain保持一致输出position_logits (1, 96, 7)连续预测 class_ids (1, 96)每个预测位置在通道维上的 argmax逻辑见 common.py 的run_forward()快速核对昇腾 NPU 环境喂数据之前先用npu-smi info确认设备在线。推理脚本 inference.py 在检测不到 NPU 时会直接抛出RuntimeError设计上就没有 CPU 回退路径所以环境这一步不能省运行依赖见 requirements.txttransformers5.15.0 等 5 个 pintorch / torch_npu 2.9.0 与 CANN 8.5.1 由昇腾 worker 镜像提供。模型权重快照在本地 model/model.safetensorsfp32196,144 参数36 个张量以local_files_onlyTrue加载运行时不访问网络。尚未拉取项目的同学先执行git clone https://gitcode.com/atlasleong/test-patchtsmixer-npu四步构造真实数据 past_values(512×7)第一步截取最近 512 个历史点从你的数据集中取最后 512 行保持时间顺序、最新点放在末尾——模型是从最后一个点往后继续预测的顺序放反等于把“未来”喂成了“过去”。第二步对齐 7 个通道顺序7 列变量必须与预训练时一致上游为 ETTh1 的 7 个变量如 Hu、Hl、LH、Ll、VL、VQ、PV 等。换成自己的业务变量时按模型预期的通道顺序填列不要随意重排。第三步标准化最容易被忽略的关键步config.json中scalingtrue且项目内置的合成输入是标准正态随机数均值 ≈ 0、std ≈ 1见 common.py 的make_input()。因此真实数据应先做z-score 标准化(x - mean) / std统计量用这 512 点窗口或全量历史计算。跳过这步输出分布会整体漂移。第四步构造张量并放到 NPUimport numpy as np import torch window my_data[-512:, :7] # 真实数据 (512, 7) window (window - window.mean(axis0)) / window.std(axis0) # 标准化 past_values ( torch.from_numpy(window.astype(float32)) # 必须是 float32 .unsqueeze(0) # 加 batch 维 → (1, 512, 7) .to(npu:0) )⚠️ 注意Ascend 910B 不支持 fp64全程保持 float32 即可无需改 dtype。喂给模型并验证输出默认情况下 inference.py 用固定种子20260815生成的确定性合成输入做验收前向换成真实数据时把main()中past_values common.make_input(...)这一行替换为你自己构造的张量即可其余加载与前向逻辑都不用动with torch.no_grad(): out model(past_valuespast_values) position_logits out.prediction_outputs.float() # (1, 96, 7)96 步预测运行后重点看终端输出的这几个标记INPUT_SEQUENCE(1, 512, 7);mean...—— 确认模型实际吃到的输入形状与均值换成真实数据后mean 会不再是合成输入的 -0.021139这是正常的FORECAST/FORECAST_COUNT672—— 前 8 个真实预测值与总预测元素数96×7INFERENCE_WALL_MS—— 单次前向同步墙钟实测约10.58 毫秒常见坑位清单形状不是 (1, 512, 7)给了 511 或 513 个点、只有 6 个通道都会直接被模型拒绝时间顺序反了最新点放开头预测结果会整体错位用了 fp64NPU 不支持统一 float32忘记标准化原始数据量级大几十、几百时输出分布漂移没有 NPU 却想跑脚本会抛RuntimeError拒绝回退这是设计意图而非 bug交付流水线如何校验你的输入项目的完整流水线从模型审计 → CPU 基线 → NPU 前向 → CPU/NPU 精度对比max_abs_error 0.01→ 多样本回归 → 性能实测全部标记都由真实张量运行时计算得出非写死。你换入真实数据后的输出可以对照 README.md 中记录的 21 行机器契约标记逐条核对小结past_values(1, 512, 7)float32最近 512 点按时间序、7 个变量按预训练通道顺序先 z-score 标准化到均值 0、std 1再.to(npu:0)用终端的INPUT_SEQUENCE与FORECAST标记确认输入生效、输出合理单次前向约 10.58 ms一次输出 96 步未来预测 每位置通道 argmax【免费下载链接】test-patchtsmixer-npu用户可直接运行此项目在华为昇腾NPU上执行PatchTSMixer多变量时序预测获取96步未来预测值含位置logits与类别argmax并验证模型精度与性能。项目包含完整迁移交付物模型权重、推理脚本、输出校验全程无CPU回退实测单次前向仅需10.58毫秒。项目地址: https://ai.gitcode.com/atlasleong/test-patchtsmixer-npu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考