#NPU #Ascend #Ascend910
模型:ibm-granite/granite-timeseries-patchtsmixer(revision 90dc5a88d45f032b7dceefb5d814ca2af54f2ff9)
任务:多变量时间序列预测(time-series-forecasting),ETTh1 数据集,context=512 小时 → prediction=96 小时。
架构:PatchTSMixerForPrediction(transformers 内置实现,MLP-Mixer 轻量时序预测模型)。权重约 0.75MB,可轻松运行于单卡昇腾 910B。
PatchTSMixer 是一种基于 MLP-Mixer 的轻量多变量时间序列预测模型(KDD 2023)。本仓库在单卡昇腾 NPU(Ascend 910B)上完成了该模型的真实推理适配:使用 ETTh1 测试集真实序列,基于官方 TSFM 预处理契约(per-channel StandardScaler,在训练集前 8640 行上拟合),在 npu:0 上完成 512→96 步多通道点预测,并完成 CPU-NPU 数值一致性验证与性能测试。
f18de3ad269cef59bb07b5438d79bb3042d3be49bdeecf01c1cd6d29695ee066,共 17420 行 + 表头。date, HUFL, HULL, MUFL, MULL, LUFL, LULL, OT(7 个通道,按此固定顺序,不改变列序)。[0, 8640)、验证 [8640-512, 11520)、测试 [11008, 14400)。StandardScaler(z-score)在训练集上拟合;测试窗口先标准化再输入模型。past_values 形状 [1, 512, 7],dtype float32;模型内部自带 MeanScaler(scaling: true),输出为已逆缩放的点预测。npu:0),实测 2 卡环境,每卡 64GB HBM。pip install -r requirements.txt
# 昇腾 NPU 需先安装对应 CANN Toolkit + torch_npu,并验证:
python -c "import torch, torch_npu; print(torch.npu.is_available())"python inference.py # 自动下载模型权重与 ETTh1 数据,在 npu:0 推理
python inference.py --device npu:0 --seed 42
# 也可使用本地权重/数据:
python inference.py --model-dir /path/to/model --data-csv /path/to/ETTh1.csv默认输出到 outputs/:forecast.npy(原始尺度预测 [96,7])、forecast_scaled.npy(标准化尺度模型输出 [1,96,7])、ground_truth.npy。退出码 0 表示成功。
模型输出 [1, 96, 7],指标基于原始尺度对比真实标签(ETTh1 测试集):
| 指标 | 值 |
|---|---|
| MAE(原始尺度) | 1.53418 |
| RMSE(原始尺度) | 2.49243 |
| MSE(标准化尺度) | 0.26028 |
| 稳定推理时延(均值) | 1.70 ms |
| 峰值显存 | 1.34 MB |
| 首轮编译时延 | 0.17 s |
OT 通道前 5 步预测:[11.987, 11.993, 12.038, 12.377, 12.754]。
相同权重、相同数据窗口、相同预处理、相同 dtype(float32)、相同随机种子下:
| 指标 | 值 |
|---|---|
| max_abs_error | 3.33e-05 |
| mean_abs_error | 1.02e-05 |
| atol / rtol | 1e-4 / 1e-3 |
| 结论 | 通过(passed=true) |
未发生 CPU fallback;模型全部参数与输入张量位于 npu:0。
预热 3 次后正式测试 12 次(每轮前后 torch.npu.synchronize()):
| 指标 | 值 |
|---|---|
| 首轮(含编译) | 0.173 s |
| avg / min / max | 1.698 / 1.638 / 1.941 ms |
| p50 / p90 / p95 | 1.684 / 1.698 / 1.808 ms |
| 峰值显存 | 1.34 MB |
| 吞吐(约) | 588 windows/s |
batch=1,context=512,prediction=96,channels=7,dtype=float32。计时不含 CSV 读取与数据预处理。
以下图片由 xterm.js 根据本次真实运行日志渲染,非手工绘制:
assets/agent_workflow.png:完整适配流程(侦察 → 数据检查 → 下载 → 加载 → NPU 推理 → 一致性 → benchmark → 提交校验)。assets/npu_device_call.png:NPU 设备调用证据(npu-smi、torch.npu.is_available()、模型参数 device/dtype、输入输出 Tensor device)。assets/model_result.png:默认 python inference.py 的真实完整输出(schema、真实预测、同步耗时、状态)。config.loss="mse" 使模型为确定性点预测(distribution_output=None),因此使用 forward() 而非 generate()。