T2S: High-resolution Time Series Generation with Text-to-Series Diffusion Models
paper (5 May 2025) | source | dataset
Свежая статья с заявленной SOTA генерации временных рядов по текстовым описаниям. Научный руководитель - Ming Jin, который был автором TimeLLM, положившей начало использованию LLM для анализа временных рядов. И главное - все исходники и датасеты уже выложены. К прошлой SOTA, которая мне понравилась (TimeWeaver), исходники так и не выложили. Планирую попробовать T2S на своих данных, а пока - обзор теории. Если кто-то знает модели для генерации лучше - буду благодарен за ссылки.
Почему это важно?
1. Одна из ключевых проблем в облатси анализа временных рядов с помощью AI - отсутствие размеченных датасетов. Для разметки временных рядов нужны дорогие и редкие специалисты, это вам не светофоры на капче искать. Генерация даёт возможность обойти то ограничение, но для качественного обучения, сгенерированные датасеты должны быть действительно похожими на реальные данные.
2. Стресс-анализ и What-If анализ или простыми словами - генерация разных сценариев будущего, - важная задача в управлении любой сложной системой.
Датасет
Для генерации рядов, нужны датасеты с описаниями трёх уровней: отдельные точки (артефакты), фрагменты (патчи) и весь ряд. Для описания точек используется существующий датасет Time-MMD, для описания уровня ряда - дадасет SUSHI, а вот для описания уровня фрагментов сделали новый датасет TSFragment-600K. Для его генерации разбивали ряды на фрагменты и давали GPT-4o-mini для описания (Figure 1).
Архитектура
Два основных компонента (Figure 2):
Pretrained Length-Adaptive Variational Autoencoder (LA-VAE) - кодирует ряды переменной длины в латентное пространство и обратно.
T2S Diffusion Transformer (T2S-DiT) - diffusion transformer с flow matching для денойза и собственно генерации.
Метрики
Сравнивают с DiffusionTS, TimeVAE, GPT-4o-min и Llama3.1-8b как на коротких рядах (24/48/96), так и длинных (2048). Конкретные метрики приводить тут не буду, так как их слишком много, но по большинству датасетов T2S даёт хорошие приросты. Что не удивительно хотя бы потому, что завезли новый датасет.
paper (5 May 2025) | source | dataset
Свежая статья с заявленной SOTA генерации временных рядов по текстовым описаниям. Научный руководитель - Ming Jin, который был автором TimeLLM, положившей начало использованию LLM для анализа временных рядов. И главное - все исходники и датасеты уже выложены. К прошлой SOTA, которая мне понравилась (TimeWeaver), исходники так и не выложили. Планирую попробовать T2S на своих данных, а пока - обзор теории. Если кто-то знает модели для генерации лучше - буду благодарен за ссылки.
Почему это важно?
1. Одна из ключевых проблем в облатси анализа временных рядов с помощью AI - отсутствие размеченных датасетов. Для разметки временных рядов нужны дорогие и редкие специалисты, это вам не светофоры на капче искать. Генерация даёт возможность обойти то ограничение, но для качественного обучения, сгенерированные датасеты должны быть действительно похожими на реальные данные.
2. Стресс-анализ и What-If анализ или простыми словами - генерация разных сценариев будущего, - важная задача в управлении любой сложной системой.
Датасет
Для генерации рядов, нужны датасеты с описаниями трёх уровней: отдельные точки (артефакты), фрагменты (патчи) и весь ряд. Для описания точек используется существующий датасет Time-MMD, для описания уровня ряда - дадасет SUSHI, а вот для описания уровня фрагментов сделали новый датасет TSFragment-600K. Для его генерации разбивали ряды на фрагменты и давали GPT-4o-mini для описания (Figure 1).
Архитектура
Два основных компонента (Figure 2):
Pretrained Length-Adaptive Variational Autoencoder (LA-VAE) - кодирует ряды переменной длины в латентное пространство и обратно.
T2S Diffusion Transformer (T2S-DiT) - diffusion transformer с flow matching для денойза и собственно генерации.
Метрики
Сравнивают с DiffusionTS, TimeVAE, GPT-4o-min и Llama3.1-8b как на коротких рядах (24/48/96), так и длинных (2048). Конкретные метрики приводить тут не буду, так как их слишком много, но по большинству датасетов T2S даёт хорошие приросты. Что не удивительно хотя бы потому, что завезли новый датасет.
🔥3
Я устал, я <s>ухожу</s> напишу - просмотрщик датасетов с рядами и текстом.
Разбираясь в эвал датасетах ChatTS я немного сломал глаза и мозг, просматривая их глазами в JSON и решил написать свой, с блекджеком, картинками и статистикой.
Несколько вечеров вайбкодинга и вот - прошу любить и жаловать:
https://explorer.langotime.ai
Оказалось очень удобно и я думаю теперь добавить туда больше датасетов с временными рядами для удобного просмотра.
А что кроме Jupyter используете для просмотра таких датасетов вы?
Разбираясь в эвал датасетах ChatTS я немного сломал глаза и мозг, просматривая их глазами в JSON и решил написать свой, с блекджеком, картинками и статистикой.
Несколько вечеров вайбкодинга и вот - прошу любить и жаловать:
https://explorer.langotime.ai
Оказалось очень удобно и я думаю теперь добавить туда больше датасетов с временными рядами для удобного просмотра.
А что кроме Jupyter используете для просмотра таких датасетов вы?
👍5
В новой статье авторы делают следующий шаг и предлагают метод кодирования чисел, который (а) основан на внутреннем представлении чисел в трансформерах и (б) занимает ровно один токен/эмбеддинг (см Figure 1)
То, что всё число занимает один токен - важный момент, потому что при тренировке классических авторегрессионных трансформеров функция потерь не считается одинаково для каждого токена, а значит ошибка в первом и последнем разряде числа будет для модели "весить" одинаково. Т.е. если нужно вывести число 3197, а модель написала 4197, то для неё это будет ошибка такого же порядка как 3198, хотя на самом деле это три десятичных порядка разницы. Для решения этой проблемы предлагались разные подходы, в том числе добавляющие специальную функцию потерь для чисел, но не трогающие токенизатор. Например, недавний (28 Feb 2025) PDCE - Position-Dependent Cross-Entropy, который я попытался запустить на наших экспериментах с рядами, но устал синхронизировать его функцию потерь с функцией потерь и забил. Использование одного токена/эмбеддинга для всего числа интуитивно выглядит более правильным подходом.
Итак, FoNE:
Позволяет кодировать/декодировать числа в десятичной системе счисления с заранее заданным количеством знаков до и после запятой в один токен/эмбеддинг. А числа произвольной длины кодируются простым объединением нескольких токенов/эмбеддингов подряд. Числа 100% точно кодируются и декодируются без потери точности.
СFoNE трансформеры "магически" научаются точно складывать и умножать вещественные числа при размере датасета 64x меньше.
Эксперименты в статье приводятся как для тренировки небольших LLM с нуля, так и для тюнинга предобученной Llama-3.2-1B. Предобученная Llama учится медленнее, но в большинстве случаев достигает такой же точности (тёмно-синяя линия "finetune" на графиках) - см Figure 2, 3.
Что НЕ сделано в статье - полноценная интеграция в LLM на стороне декодирования эмбедингов в токены, чтобы научить модель определять, где в выводе вставлять FoNE токен, а где обычный. В своих экспериментах с предобученной Llama авторы "срезали углы" и при тренировке/эвалах ожидают на выходе модели всегда только FoNE токены (на вход подают смесь текста и закодированных FoNEчисел). В переписке авторы говорят, что "наверное надо тренировать отельный слой-классификатор... мы не пробовали, но вы попробуйте!" 😄
Результаты - фантастические (см последние две картинки).
Эксперименты авторов воспроизводятся и совпадают с опубликованными данными. На практических примерах попробуем завести.
Если вы тоже будете экспериментировать и получите позитивные или негативные результаты - дайте знать, сверим показания. 🤝
То, что всё число занимает один токен - важный момент, потому что при тренировке классических авторегрессионных трансформеров функция потерь не считается одинаково для каждого токена, а значит ошибка в первом и последнем разряде числа будет для модели "весить" одинаково. Т.е. если нужно вывести число 3197, а модель написала 4197, то для неё это будет ошибка такого же порядка как 3198, хотя на самом деле это три десятичных порядка разницы. Для решения этой проблемы предлагались разные подходы, в том числе добавляющие специальную функцию потерь для чисел, но не трогающие токенизатор. Например, недавний (28 Feb 2025) PDCE - Position-Dependent Cross-Entropy, который я попытался запустить на наших экспериментах с рядами, но устал синхронизировать его функцию потерь с функцией потерь и забил. Использование одного токена/эмбеддинга для всего числа интуитивно выглядит более правильным подходом.
Итак, FoNE:
Позволяет кодировать/декодировать числа в десятичной системе счисления с заранее заданным количеством знаков до и после запятой в один токен/эмбеддинг. А числа произвольной длины кодируются простым объединением нескольких токенов/эмбеддингов подряд. Числа 100% точно кодируются и декодируются без потери точности.
СFoNE трансформеры "магически" научаются точно складывать и умножать вещественные числа при размере датасета 64x меньше.
Эксперименты в статье приводятся как для тренировки небольших LLM с нуля, так и для тюнинга предобученной Llama-3.2-1B. Предобученная Llama учится медленнее, но в большинстве случаев достигает такой же точности (тёмно-синяя линия "finetune" на графиках) - см Figure 2, 3.
Что НЕ сделано в статье - полноценная интеграция в LLM на стороне декодирования эмбедингов в токены, чтобы научить модель определять, где в выводе вставлять FoNE токен, а где обычный. В своих экспериментах с предобученной Llama авторы "срезали углы" и при тренировке/эвалах ожидают на выходе модели всегда только FoNE токены (на вход подают смесь текста и закодированных FoNEчисел). В переписке авторы говорят, что "наверное надо тренировать отельный слой-классификатор... мы не пробовали, но вы попробуйте!" 😄
Результаты - фантастические (см последние две картинки).
Эксперименты авторов воспроизводятся и совпадают с опубликованными данными. На практических примерах попробуем завести.
Если вы тоже будете экспериментировать и получите позитивные или негативные результаты - дайте знать, сверим показания. 🤝
FoNE: Precise Single-Token Number Embeddings via Fourier Features
paper 13 Feb 2025 | blog | source code
У LLM традиционно проблемы с операциями с числами. И если с целочисленными значениями они ещё справляются, то с вещественными числами всё становится сильно хуже, что делает работу с временными рядами при помощи LLM проблематичной. Новая статься показывает, что это не обязательно принципиальная проблема LLM, а скорее - ограничение токенизации.
В своей прошлой работе (Pre-trained Large Language Models Use Fourier Features to Compute Addition, NeurIPS 2024) авторы показывают, что трансформер, прошедший широкий претрейнинг использует "фурье-представление" чисел и сложение по модулю для выполнения сложения чисел, где MLP-слои используют низкие "частоты" (моды) для примерной оценки области, в которой должен находиться ответ, а attention-слои используют высокие "частоты" - для получения точных десятичных цифр ответа (первые две картинки, Figure 1 и 4).
paper 13 Feb 2025 | blog | source code
У LLM традиционно проблемы с операциями с числами. И если с целочисленными значениями они ещё справляются, то с вещественными числами всё становится сильно хуже, что делает работу с временными рядами при помощи LLM проблематичной. Новая статься показывает, что это не обязательно принципиальная проблема LLM, а скорее - ограничение токенизации.
В своей прошлой работе (Pre-trained Large Language Models Use Fourier Features to Compute Addition, NeurIPS 2024) авторы показывают, что трансформер, прошедший широкий претрейнинг использует "фурье-представление" чисел и сложение по модулю для выполнения сложения чисел, где MLP-слои используют низкие "частоты" (моды) для примерной оценки области, в которой должен находиться ответ, а attention-слои используют высокие "частоты" - для получения точных десятичных цифр ответа (первые две картинки, Figure 1 и 4).
This Time is Different: An Observability Perspective on Time Series Foundation Models (20 May 2025)
blog | paper | HF model | HF Dataset | GitHub
DataDog, один из крупнейших облачных obervability сервисов, выпустил open weight TSFM модель Toto и большой тренировочный observability датасет BOOM, собранный из их данных.
Модель Toto
* 151млн параметров.
* Decoder-only архитектура.
* Probabilistic output (Student-T).
* Обещают существенно лучшие характеристики в области observability (см картинки).
Датасеты:
* Observability Metrics: ~1 trillion points from Datadog internal systems (no customer data)
* Public Datasets:
- GIFT-Eval Pretrain
- Chronos datasets
* Synthetic Data: ~1/3 of training data
Подробнее не успел посмотреть, но выглядит интересно. Жаль, что датасет не размеченный кажется.
blog | paper | HF model | HF Dataset | GitHub
DataDog, один из крупнейших облачных obervability сервисов, выпустил open weight TSFM модель Toto и большой тренировочный observability датасет BOOM, собранный из их данных.
Модель Toto
* 151млн параметров.
* Decoder-only архитектура.
* Probabilistic output (Student-T).
* Обещают существенно лучшие характеристики в области observability (см картинки).
Датасеты:
* Observability Metrics: ~1 trillion points from Datadog internal systems (no customer data)
* Public Datasets:
- GIFT-Eval Pretrain
- Chronos datasets
* Synthetic Data: ~1/3 of training data
Подробнее не успел посмотреть, но выглядит интересно. Жаль, что датасет не размеченный кажется.
🔥1
IGC: Integrating a Gated Calculator into an LLM to Solve Arithmetic Tasks Reliably and Efficiently
paper 1 Jan 2025
Ещё одна (после FoNE) необычная работа по повышению точности математических операций в LLM. В этот раз заходят не со стороны токенизации, а со стороны того, как эффективно проводить операции внутри самой LLM. Точнее - математические операции выносятся в "сопроцессор", встроенный между слоями LLM (между 1м и 2м в примере), и который выполняет операции на GPU напрямую.
Так как калькулятор не дифференцируем и прерывает поток градиентов, то для тренировки Input Mapping модуля используется специальный подход к тренировке.
Код не опубликован, а жаль. Результаты в статье выглядят неплохо, модель 8B бьёт по показателям модели на два порядка больше (585B). Но почему-то всё-равно не достигает 100%.
У FoNE результаты вроде бы не хуже. Интересно, какая архитектура окажется более широко распространённой?
paper 1 Jan 2025
Ещё одна (после FoNE) необычная работа по повышению точности математических операций в LLM. В этот раз заходят не со стороны токенизации, а со стороны того, как эффективно проводить операции внутри самой LLM. Точнее - математические операции выносятся в "сопроцессор", встроенный между слоями LLM (между 1м и 2м в примере), и который выполняет операции на GPU напрямую.
Так как калькулятор не дифференцируем и прерывает поток градиентов, то для тренировки Input Mapping модуля используется специальный подход к тренировке.
Код не опубликован, а жаль. Результаты в статье выглядят неплохо, модель 8B бьёт по показателям модели на два порядка больше (585B). Но почему-то всё-равно не достигает 100%.
У FoNE результаты вроде бы не хуже. Интересно, какая архитектура окажется более широко распространённой?