Timer 是来自论文 Timer: Generative Pre-trained Transformers Are Large Time Series Models 的时间序列基础模型。
本模型是 84M 参数版本,在 260B 时间点上预训练得到,是一个轻量级的生成式 Transformer,用于零样本点预测。
| 属性 | 值 |
|---|---|
| 模型类型 | TimerForPrediction (Causal Transformer) |
| 参数量 | 84.14M |
| 隐藏层维度 | 1024 |
| Transformer 层数 | 8 |
| Attention 头数 | 8 |
| Context Length | up to 2880 |
| Patch Length | 96 |
| 预测长度 | 96 |
| 权重精度 | float32 |
(batch_size, lookback_length) 的时间序列(浮点数)(batch_size, forecast_length) 的预测序列| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| 操作系统 | CentOS 7.6+ / Ubuntu 18.04+ | 支持主流 Linux 发行版 |
| CANN | 5.0.RC2+ | 华为昇腾计算架构 |
| Python | 3.10 / 3.12 | 推荐 3.10+ |
| PyTorch | 2.0.0+ | 推荐 2.10 |
| torch_npu | 与 PyTorch 版本匹配 | 昇腾 PyTorch 扩展 |
| transformers | 4.40.1 | 模型加载(必须此版本) |
| accelerate | 0.20+ | device_map 需要 |
# 1) 激活已预装 torch / torch_npu 的 conda 环境
conda activate pt2100
# 2) 安装模型依赖(使用华为云源)
pip install --index-url https://repo.huaweicloud.com/repository/pypi/simple \
transformers==4.40.1 accelerate
# 3) 验证环境
python -c "
import torch, torch_npu
print('torch:', torch.__version__)
print('torch_npu:', torch_npu.__version__)
print('NPU 可用:', torch.npu.is_available())
"# 进入适配目录
cd /workspace/agent/timer-base-84m-ascend
# 确认上游权重存在
ls -la /workspace/agent/timer-base-84m/
# 期望输出:config.json model.safetensors (~321MB) modeling_timer.py ...# 检查 NPU 设备状态
npu-smi info
# 验证 torch_npu 安装
python -c "import torch; import torch_npu; print('NPU 可用:', torch.npu.is_available())"# 基本用法:默认参数 (lookback=2880, forecast=96)
python inference.py --device npu:0
# 查看 NPU 显存使用
python inference.py --device npu:0 --show_npu_memory
# 自定义参数
python inference.py --device npu:0 --lookback 2880 --forecast 192
# 指定其他 NPU 卡
python inference.py --device npu:1
# CPU 模式(仅在 NPU 不可用时使用)
python inference.py --device cpuconda activate pt2100
cd /workspace/agent/timer-base-84m-ascend
python inference.py --device npu:0 --show_npu_memory --lookback 2880 --forecast 96实际输出:
[W819 02:20:38.558097590 FunctionLoader.cpp:48] Warning: LD_PRELOAD detected...
[W819 02:20:44.298203430 NPUCachingAllocator.cpp:198] Warning: The current CANN and Soc Version require processing for 32 padding size...
[设备] npu:0
NPU设备数量: 1
设备 0: Ascend910B2
[权重信息] 文件: /workspace/agent/timer-base-84m/model.safetensors
[配置] 模型类型: timer
[配置] hidden_size: 1024
[配置] num_hidden_layers: 8
[配置] input_token_len: 96
[配置] output_token_lens: [96]
[配置] torch_dtype: float32
[参数量] 84.14M
加载模型 (使用 trust_remote_code)...
模型: Timer (时间序列预测)
- 任务: 时间序列预测 (Generative Transformer)
- 参数量: 84.14M
- Lookback长度: 96 (patched)
- 预测长度: [96]
[NPU显存 · 模型加载后] 总显存=61.0GB | 已分配=401.0MB | 缓存=482.00MB | 峰值=401.0MB
构建测试输入: 随机时间序列 (lookback=2880)
输入形状: (1, 2880)
运行推理...
- Forecast长度: 96
[NPU显存 · 推理完成后] 总显存=61.0GB | 已分配=401.1MB | 缓存=486.00MB | 峰值=404.1MB
==============================================================================
输出摘要
==============================================================================
模型: Timer (时间序列预测)
输入形状: (1, 2880)
输出形状: (1, 96)
预测长度: 96
总耗时: 0.27s
输出 finite: True
输出均值: -0.0309
输出标准差: 0.0799
输出范围: [-0.2603, 0.1052]✅ 验证要点:
(1, 96): 预测长度为 96解决方案:
source /usr/local/Ascend/ascend-toolkit/latest/set_env.sh)npu-smi info 检查设备状态解决方案:Timer 模型依赖 ts_generation_mixin.py 中的特定 API 兼容性,该 API 在 transformers 4.40.1 中经过验证。更高版本可能存在兼容性问题(如 DynamicCache.seen_tokens)。
解释:
解释:Timer 的 context length 最大为 2880,但不必须是倍数。模型会自动处理任意长度的输入。
解释:当前实现主要针对单变量时间序列预测。
timer-base-84m-ascend/
├── inference.py # 推理脚本(torch_npu 推理)
├── README.md # 本文档
├── requirements.txt # 依赖列表
└── assets/ # 资源占位目录上游权重目录(只读,未被修改):
/workspace/agent/timer-base-84m/
├── config.json # TimerConfig
├── model.safetensors # 权重(84.14M, ~321MB)
├── modeling_timer.py # 模型实现
├── configuration_timer.py # 配置类
├── ts_generation_mixin.py # 生成 Mixin
├── generation_config.json # 生成配置
└── README.md # 原始文档# Timer-Base-84M 昇腾 NPU 推理环境依赖
# 注意: 需要 transformers 4.40.1 版本(与模型代码兼容)
# 核心依赖(必须)
torch>=2.0.0
torch_npu>=2.0.0
transformers==4.40.1
accelerate>=0.20.0
safetensors>=0.4.0
numpy>=1.21.0使用方式:
# 激活环境
conda activate pt2100
# 安装依赖(华为云源)
pip install --index-url https://repo.huaweicloud.com/repository/pypi/simple -r requirements.txt