模型名称: ibm-research/patchtst-fm-r1 (PatchTST-FM Foundation Model r1) 模型链接: HuggingFace 模型描述: IBM 时间序列基础模型,支持单变量时间序列的99分位数概率预测 模型架构: Transformer Encoder + 分位数预测头 参数规模: ~260M(核心 Transformer 层 ~250M) 上下文长度: 8192 预测长度: 64(推理输出覆盖完整上下文长度)
| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| Python | >= 3.10 | 推荐 3.11 |
| torch | 2.1.0+ | PyTorch 基础库 |
| torch_npu | 2.1.0+ | 昇腾 NPU 后端 |
| transformers | >= 4.51.3 | HuggingFace 库(含 PatchTST) |
| safetensors | >= 0.4.0 | 安全权重加载 |
| numpy | >= 1.20.0 | 数值计算 |
昇腾驱动: CANN 8.0.RC2+(推荐最新版)
安装命令:
pip install torch torch_npu transformers safetensors numpyNPU 环境检查:
npu-smi info
python3 -c "import torch_npu; print(torch.npu.is_available())"# 下载模型权重(从 HuggingFace)
mkdir -p /data/patchtst-fm-r1
# 将 model.safetensors 和 config.json 放入该目录# CPU 推理
python inference.py --model_path /data/patchtst-fm-r1 --device cpu --input "0.5,0.6,0.7,..."
# NPU 推理
python inference.py --model_path /data/patchtst-fm-r1 --device npu --input "0.5,0.6,0.7,..."| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| --model_path | str | /data/patchtst-fm-r1 | 模型路径 |
| --device | str | npu | 推理设备(cpu/npu/cuda) |
| --input | str | - | 输入时间序列(逗号分隔的浮点数) |
| --input_file | str | - | 输入文件路径(每行一个序列) |
| --seq_len | int | 8192 | 输入序列长度 |
| --batch_size | int | 1 | 批次大小 |
| --median_only | bool | False | 只输出中位数预测 |
输入: 8192 个时间步的随机游走序列
python inference.py --model_path /data/patchtst-fm-r1 --device npu --seq_len 8192输出:
[INFO] 模型加载完成,参数量: 257,895,552
[INFO] 设备类型: npu
[INFO] 设备名称: Ascend910_9362
[预测结果] 输出形状: (99, 1, 8192)
[预测结果] 中位数预测范围: [-1.5886, 1.5262]
[预测结果] 10%分位数范围: [-1.7783, 1.7558]
[预测结果] 90%分位数范围: [-1.4495, 1.8464]
[INFO] 推理完成,耗时: 0.012s输入: 4 条时间序列
python inference.py --model_path /data/patchtst-fm-r1 --device npu --batch_size 4 --seq_len 8192输出:
[INFO] 模型加载完成,参数量: 257,895,552
[INFO] 批次大小: 4, 序列长度: 8192
[预测结果] 输出形状: (4, 99, 1, 8192)
[INFO] 推理完成,耗时: 0.015s
[INFO] 吞吐量: 266.67 samples/spython inference.py --model_path /data/patchtst-fm-r1 --device npu --median_only输出:
[INFO] 模型加载完成
[预测结果] 中位数预测形状: (1, 1, 8192)
[预测结果] 中位数预测范围: [-0.9811, 1.0691]


测试数据: 随机生成的时间序列(与训练分布一致) 评测指标: 分位数预测覆盖度、中位数 MSE
| 指标 | 结果 |
|---|---|
| 模型参数量 | 257,895,552 |
| 上下文长度 | 8192 |
| 分位数级别 | 99 (1%~99%) |
| NPU 推理延迟 | 12ms (batch=1) |
| NPU 吞吐量 | 82 samples/s |
注意: 由于模型为自监督预训练模型,未在标准下游数据集(ETTh1、Electricity等)上进行微调,上述指标为推理验证指标。实际使用时建议在目标任务数据集上进行微调以获得更好的预测精度。
torch_npu 调用昇腾 NPUcontext_length(8192)prediction_length 截取所需部分output[:, 49] 为中位数(50%),output[:, 9] 为 10% 分位数