- 深度学习
- 人工智能
【免费下载链接】UniTS
UniTS 是一个面向时序领域的统一基础模型(Unified Time Series Model,NeurIPS 2024),单个共享模型即可同时处理长期预测、插补、异常检测和分类任务,无需任何任务专用模块。它采用"预训练 + Prompt Learning(提示学习)"两阶段范式,并提供x32 / x64 / x128三种模型规模供不同算力条件选择。本文带你彻底读懂这套流程,并给出清晰的选型建议。
🎯 UniTS 预训练在做什么?
与"每个任务各训一个模型"不同,UniTS 的核心思想是:用一个统一骨干网络 + 统一的 Prompt/Mask 表示,让任意任务都变成"填空"。
- 每个数据集会被注入一组可学习的prompt tokens和mask tokens(形状为
enc_in × prompt_num × d_model),定义见 models/UniTS.py - 骨干网络由序列注意力(Seq Attention)+ 变量注意力(Var Attention)+ 动态线性算子(Dynamic Linear)组成,通过
patch_len=16 / stride=16将原始序列切块处理 - 预训练目标是最简的掩码重建:随机遮盖序列右侧 70%~80% 的内容,让模型学会"补全",逻辑见 exp/exp_pretrain.py
这意味着预训练得到的权重是任务无关、领域通用的,后续无论做预测还是插补,只需轻量适配。
📊 三种规模差异一览表
三个预训练脚本位于 scripts/pretrain_prompt_learning/ 目录,核心差异只有模型宽度d_model:
| 模型规格 | d_model | n_heads | e_layers | 预训练卡数 | 权重文件(约) |
|---|---|---|---|---|---|
| x32 | 32 | 4 | 3 | 1 张卡 | ~18 MB |
| x64 | 64 | 8 | 3 | 2 张卡 | ~14 MB |
| x128 | 128 | 8 | 3 | 2 张卡 | ~96 MB |
对照表也可参考官方推理指南:GPU_Inference_Guide.md。
仓库中已附带可直接下载/复用的权重示例:
- units_x32_pretrain_checkpoint.pth
- units_x64_supervised_checkpoint.pth
- units_x128_pretrain_checkpoint.pth
🚀 一键预训练 + Prompt Learning 完整流程
以最常用的 x64 为例,执行一条命令即可跑完两个阶段:
bash ./UniTS-GPU/scripts/pretrain_prompt_learning/UniTS_pretrain_x64.sh三个规模脚本参数几乎完全一致,分别见 UniTS_pretrain_x32.sh、UniTS_pretrain_x64.sh、UniTS_pretrain_x128.sh。
阶段一:多任务预训练(run_pretrain.py)
- 入口:run_pretrain.py,数据配置为 multi_task_pretrain.yaml(覆盖 NN5、ECL、ETT 等多领域数据集)
- 关键超参:
train_epochs=10、learning_rate=5e-5、batch_size=32、acc_it=128(梯度累积等效放大 batch)、min_mask_ratio=0.7、max_mask_ratio=0.8 - 每轮验证掩码重建损失,自动保存两个 checkpoint(保存逻辑见 exp/exp_pretrain.py):
checkpoints/<实验名>/pretrain_best.pth:验证损失最优pretrain_checkpoint.pth:最近一轮(可用于断点续训)
阶段二:Prompt Tuning(run.py)
预训练结束后,脚本自动进入 prompt tuning 阶段:
--lradj prompt_tuning:冻结整个骨干网络,只训练各数据集的 prompt/mask tokens--pretrained_weight auto:自动加载上一步产出的最佳权重- 只需
prompt_tune_epoch=2,即可在多任务基准(multi_task.yaml)上完成适配——这正是 Prompt Learning 的精髓:几行参数级别的轻量适配,成本远低于微调
🧭 选型指南:x32、x64 还是 x128?
结合仓库内的精度验证数据(GPU_Inference_Guide.md 中 ETTh1 预测 96 步 MSE 参考值),三种规模的定位如下:
⚡ x32:轻量快速验证之选
- 单卡即可预训练(脚本中
--nproc-per-node 1),显存友好 - 适合:快速跑通全流程、小数据集实验、NPU/边缘场景部署验证
- 精度:ETTh1 p96 MSE ≈ 0.375,与论文报告值偏差 <0.1%
🏆 x64:均衡默认推荐
- 精度与 x32 基本持平(p96 MSE ≈ 0.375),容量更大更稳
- 官方预训练权重即采用 x64(如 weights/units_x64_supervised_checkpoint.pth),可作为多数下游任务的起点
🚀 x128:追求精度上限
- p96 MSE ≈ 0.350,相比 x32/x64 提升约 6.7%,是三者中精度最高的规格
- 代价:权重 ~96 MB,预训练需要 2 张卡,推理显存占用更高
- 适合:数据量大、精度敏感、资源充足的正式生产实验
💡 30 秒决策清单
- 只有 1 张卡 / 想 1 天跑完 →x32
- 常规下游任务、需要官方对齐结果 →x64(默认)
- 精度优先、双卡以上 →x128
⚠️ 新手必知的 4 个避坑点
- 推理参数必须与训练权重一致:加载 x32 权重时务必传
--d_model 32 --n_heads 4 --e_layers 3,x64/x128 则是--d_model 64/128 --n_heads 8,错配会直接报 shape mismatch - 单卡环境记得改进程数:把脚本中的
--nproc-per-node改为 1(NPU 单卡同理) - wandb 可关闭:脚本中
wandb_mode=online,本地调试可改为disabled - 昇腾 NPU 用户:本项目已提供完整的 Ascend 适配版本 UniTS-npu/,预训练脚本同样在 UniTS-npu/scripts/pretrain_prompt_learning/,配合 npu_adapter.py 即可在 NPU 上复现相同流程
📚 延伸阅读
- 项目总览与任务脚本说明:UniTS-GPU/README.md
- 自有数据使用教程:Tutorial.md
- 推理与精度验证指南:GPU_Inference_Guide.md
- 零样本新数据推理脚本:scripts/zero_shot/
选对规模,一条命令起步——UniTS 让时序基础模型的预训练与提示学习,真正做到了"开箱即用"。
- 深度学习
- 人工智能
【免费下载链接】UniTS
相关推荐
MatterGen预训练Checkpoints终极指南:9个模型怎么选?mattergen_base到属性模型全解析
MatterGen预训练Checkpoints终极指南:9个模型怎么选?mattergen_base到属性模型全解析 MatterGen 是微软研究院发布的无机
VisionHOPE模型规格全解析:Tiny/Small/Base三大骨干到底怎么选
VisionHOPE模型规格全解析:Tiny/Small/Base三大骨干到底怎么选 VisionHOPE 是"视觉骨干作为自修改学习系统(Visual Bac
InternVideo-1.0 模型家族全解:B-16 与 L-14 两种规格到底怎么选
InternVideo 1.0 模型家族全解:B 16 与 L 14 两种规格到底怎么选 刚接触 InternVideo 1.0 的多模态视频模型时,很多人会盯
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考