Time-LLM 开源项目完整教程

【免费下载链接】Time-LLM [ICLR 2024] Official implementation of " 🦙 Time-LLM: Time Series Forecasting by Reprogramming Large Language Models" 【免费下载链接】Time-LLM 项目地址: https://gitcode.com/gh_mirrors/ti/Time-LLM

项目简介

Time-LLM 是一个基于 ICLR 2024 的研究项目,通过重新编程大型语言模型来进行时间序列预测。该项目提出了一种创新的框架,将时间序列分析转化为"语言任务",从而能够有效利用现成的LLM模型进行预测。

项目结构分析

Time-LLM 项目采用模块化设计,主要目录结构如下:

Time-LLM/
├── data_provider/          # 数据提供模块
│   ├── data_factory.py     # 数据工厂
│   ├── data_loader.py      # 数据加载器
│   └── m4.py              # M4数据集处理
├── models/                 # 模型定义
│   ├── TimeLLM.py         # 核心Time-LLM模型
│   ├── Autoformer.py      # Autoformer基准模型
│   └── DLinear.py         # DLinear基准模型
├── layers/                 # 网络层组件
│   ├── AutoCorrelation.py  # 自相关层
│   ├── Transformer_EncDec.py # Transformer编码解码器
│   └── SelfAttention_Family.py # 自注意力家族
├── scripts/                # 运行脚本
│   ├── TimeLLM_ETTh1.sh   # ETT数据集运行脚本
│   ├── TimeLLM_Weather.sh # Weather数据集脚本
│   └── 其他数据集脚本
├── utils/                  # 工具函数
│   ├── metrics.py         # 评估指标
│   ├── losses.py          # 损失函数
│   └── tools.py           # 通用工具
└── dataset/prompt_bank/   # 提示词库
    ├── ETT.txt           # ETT数据集提示
    ├── Weather.txt       # Weather数据集提示
    └── 其他数据集提示

核心组件详解

1. 主要运行文件

run_main.py - 主训练脚本,包含完整的训练流程:

  • 参数解析和配置设置
  • 数据加载和预处理
  • 模型训练和验证循环
  • 学习率调度和早停机制

run_m4.py - M4数据集专用训练脚本 run_pretrain.py - 预训练脚本

2. 配置文件说明

项目使用命令行参数进行配置,主要参数包括:

# 基本配置
--task_name long_term_forecast  # 任务类型
--model TimeLLM                # 模型选择
--data ETTh1                   # 数据集

# 数据参数
--seq_len 512                  # 输入序列长度
--pred_len 96                  # 预测长度
--features M                   # 特征模式

# 模型参数
--llm_model LLAMA              # LLM模型选择
--llm_dim 4096                 # LLM维度
--d_model 32                   # 模型维度

3. 数据集准备

项目支持多种时间序列数据集:

  • ETT数据集 (ETTh1, ETTh2, ETTm1, ETTm2)
  • ECL (电力消耗数据)
  • Weather (天气数据)
  • Traffic (交通流量数据)
  • M4 (时间序列竞赛数据集)

Time-LLM框架图

快速开始指南

1. 环境安装

首先克隆项目并安装依赖:

git clone https://gitcode.com/gh_mirrors/ti/Time-LLM
cd Time-LLM
pip install -r requirements.txt

2. 数据集下载

从官方提供的Google Drive链接下载预处理好的数据集,并放置在./dataset目录下。

3. 运行示例

以ETTh1数据集为例,运行预测任务:

bash scripts/TimeLLM_ETTh1.sh

或者直接使用Python命令:

python run_main.py \
  --task_name long_term_forecast \
  --is_training 1 \
  --data ETTh1 \
  --root_path ./dataset/ETT-small/ \
  --data_path ETTh1.csv \
  --model TimeLLM \
  --features M \
  --seq_len 512 \
  --pred_len 96 \
  --llm_model LLAMA \
  --llm_dim 4096

4. 参数调优

项目支持多种调优选项:

  • 学习率调度: 使用--lradj参数选择调度策略
  • 批次大小: 调整--batch_size适应硬件
  • 模型维度: 通过--d_model控制模型复杂度
  • LLM层数: 使用--llm_layers选择使用的LLM层数

方法详细说明图

高级功能

多GPU训练

项目支持多GPU分布式训练:

accelerate launch --multi_gpu --num_processes 8 run_main.py [参数]

混合精度训练

启用混合精度训练以节省显存:

accelerate launch --mixed_precision bf16 run_main.py [参数]

提示工程

项目包含专门的提示词库,位于dataset/prompt_bank/目录,支持不同数据集的领域知识注入。

性能优化建议

  1. 显存优化: 对于大模型,建议使用--use_amp启用自动混合精度
  2. 数据加载: 调整--num_workers优化数据加载速度
  3. 批次大小: 根据GPU显存调整批次大小
  4. 序列长度: 合理设置输入序列长度以平衡性能和效果

常见问题解决

  1. 显存不足: 减小批次大小或使用梯度累积
  2. 训练不稳定: 调整学习率或使用学习率调度
  3. 数据加载慢: 增加--num_workers数量

项目扩展

Time-LLM框架具有良好的扩展性,可以:

  • 添加新的时间序列数据集
  • 集成不同的LLM骨干网络
  • 开发新的提示工程策略
  • 扩展到时序分类、异常检测等任务

通过本教程,您应该能够快速上手Time-LLM项目,并开始进行时间序列预测任务。项目的模块化设计使得定制化和扩展变得简单,适合研究和实际应用场景。

【免费下载链接】Time-LLM [ICLR 2024] Official implementation of " 🦙 Time-LLM: Time Series Forecasting by Reprogramming Large Language Models" 【免费下载链接】Time-LLM 项目地址: https://gitcode.com/gh_mirrors/ti/Time-LLM

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐