Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.8%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Basic Info
  • Host: GitHub
  • Owner: mauricekraus
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 397 KB
Statistics
  • Stars: 82
  • Watchers: 4
  • Forks: 5
  • Open Issues: 1
  • Releases: 0
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme Citation

README.md

xLSTM-Mixer

Architecture Overview

This repository provides the supplemental code for the paper "xLSTM-Mixer: Multivariate Time Series Forecasting by Mixing via Scalar Memories".

arXiv

Abstract

Time series data is prevalent across numerous fields, necessitating the development of robust and accurate forecasting models. Capturing patterns both within and between temporal and multivariate components is crucial for reliable predictions. We introduce xLSTM-Mixer, a model designed to effectively integrate temporal sequences, joint time-variate information, and multiple perspectives for robust forecasting. Our approach begins with a linear forecast shared across variates, which is then refined by xLSTM blocks. These blocks serve as key elements for modeling the complex dynamics of challenging time series data. xLSTM-Mixer ultimately reconciles two distinct views to produce the final forecast. Our extensive evaluations demonstrate xLSTM-Mixer's superior long-term forecasting performance compared to recent state-of-the-art methods. A thorough model analysis provides further insights into its key components and confirms its robustness and effectiveness. This work contributes to the resurgence of recurrent models in time series forecasting.

Table of Contents

  1. Datasets
  2. Setup
  3. Running the Project
  4. Experiments
  5. Citation

Used Datasets

We used commonly available benchmark datasets, which can be downloaded from Google Drive. The environment expects the benchmark datasets to be located in the /common-ts directory on a Linux-based system or container.

Setup

Note: This package is based on PyTorch 2.4 and was tested with Python 3.11.

Non-Docker Installation

The code was tested on an Ubuntu 22.04 machine with CUDA 12.1. The Python requirements are listed in requirements.txt and lighting_requirements.txt. Both can be installed using pip:

bash pip install -r requirements.txt pip install -r lighting_requirements.txt

Docker Installation

The repository contains a Dockerfile to install the required environment. You can build the Docker image and run a container to ensure consistency across setups.

Build the Container

bash docker build -t xlstm-mixer-code -f .docker/Dockerfile .

Attach to the Container

bash docker run --gpus device=0 -it -v /storage-01/common-ts:/common-ts -v $(pwd):/workspaces/xlstm_mixer xlstm-mixer-code bash

VSCode Environment

The repository also includes a devcontainer.json, allowing you to attach to the project using VSCode for a consistent development environment. The source path needs to be adapted according to ones system.

CUDA Requirements

For the CUDA version of sLSTM, a Compute Capability of 8.0 or higher is required. For more details on CUDA support, check this list (e.g., A100 GPUs are supported).

Running the Project

The project provides a Lightning-based CLI, which is also used for the experiments in the scripts folder. To get general help on utilizing the CLI, run:

bash python -m xlstm_mixer --help

For specific model or data argument configurations, use:

bash python -m xlstm_mixer fit --help

Experiments

Predefined scripts with hyperparameters are available in the scripts folder.

Quick Experiment Check

To verify that all requirements are met, pass the --dev flag to any script, e.g.,

bash bash ./scripts/long_term_forecasting/ett/m1.sh --dev

This will run a test batch to confirm the setup is functioning correctly. Full seed runs are organized by dataset in the scripts folder.

Example Commands

Run the following scripts for specific experiments:

bash bash ./scripts/long_term_forecasting/weather.sh

bash bash ./scripts/long_term_forecasting/ett/m1.sh

Citation

If you find this work helpful, please consider citing our paper using the following BibTeX entry:

bibtex @article{krausxLSTM-Mixer2024, author = {Maurice Kraus and Felix Divo and Devendra Singh Dhami and Kristian Kersting}, title = {xLSTM-Mixer: Multivariate Time Series Forecasting by Mixing via Scalar Memories}, journal = {arXiv preprint}, year = {2024}, url = {https://arxiv.org/abs/2410.16928}, }

Owner

  • Name: Maurice Kraus
  • Login: mauricekraus
  • Kind: user
  • Location: Germany
  • Company: TU-Darmstadt

PhD student @ AIML - TU Darmstadt

Citation (CITATION.cff)

cff-version: 1.2.0
message: If you use this software, please cite it as below.
authors:
  - given-names: Maurice
    family-names: Kraus
  - given-names: Felix
    family-names: Divo
  - given-names: Devendra Singh
    family-names: Dhami
  - given-names: Kristian
    family-names: Kersting
title: "xLSTM-Mixer: Multivariate Time Series Forecasting by Mixing via Scalar Memories"
version: 1.0.0
date-released: 2024-10-24
url: https://github.com/mauricekraus/xLSTM-Mixer
preferred-citation:
  type: article
  authors:
    - given-names: Maurice
      family-names: Kraus
    - given-names: Felix
      family-names: Divo
    - given-names: Devendra Singh
      family-names: Dhami
    - given-names: Kristian
      family-names: Kersting
  doi: 10.48550/arXiv.2410.16928
  title: "xLSTM-Mixer: Multivariate Time Series Forecasting by Mixing via Scalar Memories"
  year: 2024
  month: 10
  journal: arXiv preprint
  url: https://arxiv.org/abs/2410.16928
  publisher:
    name: arXiv

GitHub Events

Total
  • Issues event: 9
  • Watch event: 70
  • Issue comment event: 15
  • Member event: 1
  • Push event: 5
  • Public event: 1
  • Pull request review event: 1
  • Pull request event: 4
  • Fork event: 8
Last Year
  • Issues event: 9
  • Watch event: 70
  • Issue comment event: 15
  • Member event: 1
  • Push event: 5
  • Public event: 1
  • Pull request review event: 1
  • Pull request event: 4
  • Fork event: 8

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 5
  • Total pull requests: 1
  • Average time to close issues: 19 days
  • Average time to close pull requests: 5 days
  • Total issue authors: 5
  • Total pull request authors: 1
  • Average comments per issue: 1.6
  • Average comments per pull request: 3.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 5
  • Pull requests: 1
  • Average time to close issues: 19 days
  • Average time to close pull requests: 5 days
  • Issue authors: 5
  • Pull request authors: 1
  • Average comments per issue: 1.6
  • Average comments per pull request: 3.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • bchan930 (1)
  • Duonijo (1)
  • eliotpbrenner (1)
  • Luosq-gan (1)
  • Huang-zhenxuan (1)
Pull Request Authors
  • felixdivo (1)
  • benjaminbraun212 (1)
Top Labels
Issue Labels
Pull Request Labels
enhancement (1)

Dependencies

.docker/Dockerfile docker
  • mkrausio/ml_research base-3.11-cuda-12.1.0 build
lightning_requirements.txt pypi
  • hydra-core *
  • jsonargparse *
  • lightning *
  • omegaconf *
requirements.txt pypi
  • aim ==3.18.1
  • black *
  • captum *
  • darts *
  • debugpy *
  • einops *
  • ipykernel *
  • ipywidgets *
  • jupyter *
  • matplotlib *
  • numpy *
  • optuna *
  • optuna-dashboard *
  • patool *
  • plotly *
  • pynvim *
  • pyrootutils *
  • python-dotenv *
  • reformer_pytorch *
  • rich *
  • scikit-learn *
  • seaborn *
  • sktime *
  • torchinfo *
  • torchmetrics *
  • wandb *
  • xlstm ==1.0.3
setup.py pypi