Retrieval of Temporal Event Sequences from Textual Descriptions (17 Oct 2024)
paper | datasets | code
Для архива. Искал работы по использованию трансформеров/LLM для работы с event sequences, такими как логи софта, события в телеком сетях и т.п. Это второй важный тип временных рядов в нашей области, после регулярных (типа метрик), и важно уметь как делать для них RAG, так и рассуждать о происходящем.
В статье предлагается простой способ получения эмбеддингов для RAG для event sequences, где к каждому события прикреплена метка времени.
1. В качестве backbone берут стандартную LLM (TinyLlama-1.1B-Intermediate-Step-1431k-3T и TinyLlama-1.1B-Chat-v1.0) в 4-битовой квантизации.
2. На LLM добавляют LoRA адаптер (rank of 16).
3. Последовательности описывают как обычные эмбеддинги описания + Temporal Embeddings для привязки ко времени.
4. Тренируют при помощи contrastive loss.
иии..... получают SOTA по целому набору стандартных датасетов.
Минусы
Модель большая, так как это полноценная LLM (см таблицу со сравнением размеров). Тренируемых параметров почти ничего, но инференс скорее всего будет сильно медленнее более мелких моделей. Жаль, что измерений скорости инференса в статье не привели.
Насколько я понимаю, основная мысль в том, что таким нехитрым способом можно получить универсальную модель, которая достаточно хорошо (пусть и медленно) работает на самых разнообразных датасетах и не требует каждый раз обучения с нуля.
PS Работа основана на более ранней работе тех же авторов TPP-LLM (paper, 2 Oct 2024), где они использую ровно такую же архитектуру + текстовый промпт, чтобы предсказывать вероятности событий в тех же самых event streams (Temporal Point Processes по-научному).
paper | datasets | code
Для архива. Искал работы по использованию трансформеров/LLM для работы с event sequences, такими как логи софта, события в телеком сетях и т.п. Это второй важный тип временных рядов в нашей области, после регулярных (типа метрик), и важно уметь как делать для них RAG, так и рассуждать о происходящем.
В статье предлагается простой способ получения эмбеддингов для RAG для event sequences, где к каждому события прикреплена метка времени.
1. В качестве backbone берут стандартную LLM (TinyLlama-1.1B-Intermediate-Step-1431k-3T и TinyLlama-1.1B-Chat-v1.0) в 4-битовой квантизации.
2. На LLM добавляют LoRA адаптер (rank of 16).
3. Последовательности описывают как обычные эмбеддинги описания + Temporal Embeddings для привязки ко времени.
4. Тренируют при помощи contrastive loss.
иии..... получают SOTA по целому набору стандартных датасетов.
Минусы
Модель большая, так как это полноценная LLM (см таблицу со сравнением размеров). Тренируемых параметров почти ничего, но инференс скорее всего будет сильно медленнее более мелких моделей. Жаль, что измерений скорости инференса в статье не привели.
Насколько я понимаю, основная мысль в том, что таким нехитрым способом можно получить универсальную модель, которая достаточно хорошо (пусть и медленно) работает на самых разнообразных датасетах и не требует каждый раз обучения с нуля.
PS Работа основана на более ранней работе тех же авторов TPP-LLM (paper, 2 Oct 2024), где они использую ровно такую же архитектуру + текстовый промпт, чтобы предсказывать вероятности событий в тех же самых event streams (Temporal Point Processes по-научному).
👍1
Language-TPP: Integrating Temporal Point Processes with Language Models for Event Analysis (11 Feb 2025)
paper | code (весов на момент написания поста ещё нет)
И ещё одна работа, похожая как брат близнец на TPP-LLM из прошлого поста. Причём TPP-LLM в списке литературы упоминается, но сравнения с ней нет 🤷🏻 Только с более старыми NHP, SAHP и THP.
Всё так же, как и в TPP-LLM поток событий описывается как <описание события, тип события, время события> (см Figure 2).
Отличия от TPP-LLM:
1. Задачу описывает специальный Task Token, который ставят в конец последовательности. Поддерживаются “<|description prediction|>”, “<|type prediction|>” и “<|time prediction|>”.
2. Temporal tokenization: Время из Float32 превращают в четыре hex digits, которые уже и кодируются токенами (для этого 256 byte tokens добавили в словарь).
3. В качестве базовой LLM используется base (НЕ instruct) Qwen2.5-0.5B.
Тренировка
Тренируют в три стадии:
1) претрен на последовательностях;
2) файнтюнинг на предсказание следующего события;
3) тренировка projection layer для генерации intensity distribution.
В отличие от "классических" TPP, тренируют на смеси всех датасетов сразу, чтобы получить универсальный предсказатель.
Ещё один интересный момент - размер имеет значение. А точнее - модель 0.5B внезапно показывает результаты лучше, чем бОльшая 1.5B (см Table 3). Авторы объясняют это тем, что датасет маловат и большая моделька успевает на нём научиться генерализации,подайте датасетов бедным ресёрчерам, а то аж переночевать негде.
Ну и конечно же, заявляют уверенную SOTA по сравнению с "классикой", иначе как жы.
paper | code (весов на момент написания поста ещё нет)
И ещё одна работа, похожая как брат близнец на TPP-LLM из прошлого поста. Причём TPP-LLM в списке литературы упоминается, но сравнения с ней нет 🤷🏻 Только с более старыми NHP, SAHP и THP.
Всё так же, как и в TPP-LLM поток событий описывается как <описание события, тип события, время события> (см Figure 2).
Отличия от TPP-LLM:
1. Задачу описывает специальный Task Token, который ставят в конец последовательности. Поддерживаются “<|description prediction|>”, “<|type prediction|>” и “<|time prediction|>”.
2. Temporal tokenization: Время из Float32 превращают в четыре hex digits, которые уже и кодируются токенами (для этого 256 byte tokens добавили в словарь).
3. В качестве базовой LLM используется base (НЕ instruct) Qwen2.5-0.5B.
Тренировка
Тренируют в три стадии:
1) претрен на последовательностях;
2) файнтюнинг на предсказание следующего события;
3) тренировка projection layer для генерации intensity distribution.
В отличие от "классических" TPP, тренируют на смеси всех датасетов сразу, чтобы получить универсальный предсказатель.
Ещё один интересный момент - размер имеет значение. А точнее - модель 0.5B внезапно показывает результаты лучше, чем бОльшая 1.5B (см Table 3). Авторы объясняют это тем, что датасет маловат и большая моделька успевает на нём научиться генерализации,
Ну и конечно же, заявляют уверенную SOTA по сравнению с "классикой", иначе как жы.
👍2
From News to Forecast: Integrating Event Analysis in LLM-Based Time Series Forecasting with Reflection (26 Sept 2024, NeurIPS 2024)
paper | code
Я часто говорю, что без понимания контекста и смысла происходящего, невозможно по настоящему качественно предсказывать ряды. И вот интересная работа о том, как отбирать события (в данном случае - новости), влияющие на предсказания. Если всё, написанное в статье - правда, то авторы провели серьёзную работу по доведению (достаточно очевидной) идеи до работающего PoC.
В основе системы лежит (Figure 1):
1. Обогащение данных вспомогательной информацией типа погодных условий, курсов валют, национальных праздников и т.п. на момент измерений.
2. Обогащение избранными новостями и цикл обратной связи по отбору этих новостей из всего потока.
Новости делятся на три типа: (а) Short-Term Effect, (б) Long-Term Effect, и (в) бесполезные (Figure 2).
В цикле обратной связи предсказанная кривая сравнивается с оригинальной, и модель просят найти "пропущенные новости", которые не были включены в изначальный список новостей для предсказания, но могут влиять на предсказания (см Prompt 3). Больше примеров - в статье.
В качестве модели для предсказаний используется обычная llama-2-7b, затюненная на предсказания за сутки на 1xA100.
В авторских экспериментах показатели с каждой из 3-4 итерацией улучшались (Table 2) и в конце модель с существенным перевесом обходила deep learning модели предсказания (Table 3).
Мы недавно обсуждали внутри, что не очень понятно, как строить CoT рассуждения для тренировки рассуждающих моделей на рядах, и подобный подход возможно даст возможность такие цепочки генерировать в достаточном для обучения количестве.
PS Все промпты и весь код опубликованы, можно экспериментировать 🙂
paper | code
Я часто говорю, что без понимания контекста и смысла происходящего, невозможно по настоящему качественно предсказывать ряды. И вот интересная работа о том, как отбирать события (в данном случае - новости), влияющие на предсказания. Если всё, написанное в статье - правда, то авторы провели серьёзную работу по доведению (достаточно очевидной) идеи до работающего PoC.
В основе системы лежит (Figure 1):
1. Обогащение данных вспомогательной информацией типа погодных условий, курсов валют, национальных праздников и т.п. на момент измерений.
2. Обогащение избранными новостями и цикл обратной связи по отбору этих новостей из всего потока.
Новости делятся на три типа: (а) Short-Term Effect, (б) Long-Term Effect, и (в) бесполезные (Figure 2).
В цикле обратной связи предсказанная кривая сравнивается с оригинальной, и модель просят найти "пропущенные новости", которые не были включены в изначальный список новостей для предсказания, но могут влиять на предсказания (см Prompt 3). Больше примеров - в статье.
В качестве модели для предсказаний используется обычная llama-2-7b, затюненная на предсказания за сутки на 1xA100.
В авторских экспериментах показатели с каждой из 3-4 итерацией улучшались (Table 2) и в конце модель с существенным перевесом обходила deep learning модели предсказания (Table 3).
Мы недавно обсуждали внутри, что не очень понятно, как строить CoT рассуждения для тренировки рассуждающих моделей на рядах, и подобный подход возможно даст возможность такие цепочки генерировать в достаточном для обучения количестве.
PS Все промпты и весь код опубликованы, можно экспериментировать 🙂
👍1
Когда ждать динамические патчи для временных рядов? 🤪
https://t.me/gonzo_ML_podcasts/447
https://t.me/gonzo_ML_podcasts/447
Telegram
gonzo_ML_podcasts
Dynamic Chunking for End-to-End Hierarchical Sequence Modeling
Sukjun Hwang, Brandon Wang, Albert Gu
Статья: https://arxiv.org/abs/2507.07955
Код: https://github.com/goombalab/hnet
Модель: https://huggingface.co/cartesia-ai
Англ версия: https://arxiviq.…
Sukjun Hwang, Brandon Wang, Albert Gu
Статья: https://arxiv.org/abs/2507.07955
Код: https://github.com/goombalab/hnet
Модель: https://huggingface.co/cartesia-ai
Англ версия: https://arxiviq.…
Time to Embed: Unlocking Foundation Models for Time Series with Channel Descriptions (CHannel-Aware Representation Model, CHARM)
paper | blog p1 | blog p2 | blog p3
Недавно вышла очень интересная и подробная статья про фундаментальную модель для эмбеддингов многомерных временных рядов. Это кажется первая архитектура фундаментальной модели с прицелом на понимание рядов, а не на предсказание, - через выразительные эмбеддинги и интерпретируемость. В блоге компании основные примеры как раз про анализ аномалий, поиск похожих ситуаций и т.п. - очень похожие кейсы на то, что делаем мы.
Веса и исходные коды не доступны, но статья настолько подробная, что мы взяли её за основу и сделали свою модель с блекджеком и поддержкой нерегулярных временных рядов. Когда завершим тренировку - скорее всего выложим модель в открытый доступ.
Если у вас есть задачи, где такая модель может пригодиться - напишите мне, пожалуйста. Мы ищем больше downstream tasks, на которых можно проверить качество натренированной модели на реальных кейсах.
Теперь к сути. Архитектура модели (Figure 1):
- Contextual ТCN (Temporal Convolutional Network) + Contextual Attention. Инновация в contextual части (см ниже).
- Модель-encoder (non-causal attention).
- Вместе с рядами в модель подаются текстовые описания каждого ряда (тот самый контекст).
- Новомодная JEPA тренировка (Self-Supervised Learning)
- Эмбеддинги на каждую точку, но хорошо агрегируются в общие эмбеддинги.
Параметры модели:
7М параметров, 8 слоёв, 128 размерность эмбеддингов
Почему JEPA?
1. Намного проще масштабировать, так как не нужны размеченные данные, не нужны негативные примеры как в contrastive learning. Только обычные неразмеченные данные, которых на порядки больше в доступе.
2. Устойчивость к шуму. Утверждается, что в отличие от моделей, натренированных на восстановление последовательности, при обучении JEPA модель не переобучается на шум, всегда присутствующий в данных с реальных датчиков.
3. Так как при тренировке задача JEPA - предсказание (хоть и в латентном пространстве эмбеддингов), то модель отлично работает как для задач классификации, так и для задач предсказания.
Contextual Temporal Convolutional Network (TCN)
Построены на основе обычных иерархических свёрточных сетей (dilated TCNs), с двумя "но" (Figure 2):
1. Свёрточные ядра генерируются простым линейным преобразованием из эмбеддингов описаний каждого канала временного ряда.
2. Веса для каждого канала и уровня свёртки тоже генерируются из описаний каналов временного ряда.
Contextual Attention Layer
Построен на механизме self-attention с двумя дополнениями на основе эмбеддингов описаний каналов:
1. Для каждой пары каналов по описаниям генерируется вес, определяющий, насколько эти каналы между собой связаны.
2. Для каждой пары каналов и задержки между ними генерируется вес, определяющий, насколько эти два канала связаны между собой Δt между отсчётами. Он отвечает на вопрос: «Если значение на канале A изменилось сейчас, как сильно это повлияет на канал B через Δt шагов во времени?» Например, для датчиков «Давление в насосе» и «Температура двигателя» логично предположить, что резкий скачок давления приведёт к повышению температуры, но не мгновенно, а спустя какое-то время (сдвиг Δt).
Визуализируя эти веса, можно наглядно наблюдать, как модель выучивает, какие каналы взаимодействую друг с другом, и как (Figure 7).
И главное - этот механизм позволяет подавать каналы на вход модели в разном порядке и в разном количестве, что очень удобно в практике и без чего не может быть по-настоящему фундаментальной time series модели. До сих пор моделям приходилось "догадываться", какой канал что означает. Теперь же, у модели по сути есть понимание, как разные физические величины в мире взаимодействуют, и для каждой величины есть свой шаблон взаимодействия.
Кроме того, утверждается, что это позволяет существенно повысить качество как для предсказаний, так и для классификафии на основе эмбеддингов модели (Figure 14).
paper | blog p1 | blog p2 | blog p3
Недавно вышла очень интересная и подробная статья про фундаментальную модель для эмбеддингов многомерных временных рядов. Это кажется первая архитектура фундаментальной модели с прицелом на понимание рядов, а не на предсказание, - через выразительные эмбеддинги и интерпретируемость. В блоге компании основные примеры как раз про анализ аномалий, поиск похожих ситуаций и т.п. - очень похожие кейсы на то, что делаем мы.
Веса и исходные коды не доступны, но статья настолько подробная, что мы взяли её за основу и сделали свою модель с блекджеком и поддержкой нерегулярных временных рядов. Когда завершим тренировку - скорее всего выложим модель в открытый доступ.
Если у вас есть задачи, где такая модель может пригодиться - напишите мне, пожалуйста. Мы ищем больше downstream tasks, на которых можно проверить качество натренированной модели на реальных кейсах.
Теперь к сути. Архитектура модели (Figure 1):
- Contextual ТCN (Temporal Convolutional Network) + Contextual Attention. Инновация в contextual части (см ниже).
- Модель-encoder (non-causal attention).
- Вместе с рядами в модель подаются текстовые описания каждого ряда (тот самый контекст).
- Новомодная JEPA тренировка (Self-Supervised Learning)
- Эмбеддинги на каждую точку, но хорошо агрегируются в общие эмбеддинги.
Параметры модели:
7М параметров, 8 слоёв, 128 размерность эмбеддингов
Почему JEPA?
1. Намного проще масштабировать, так как не нужны размеченные данные, не нужны негативные примеры как в contrastive learning. Только обычные неразмеченные данные, которых на порядки больше в доступе.
2. Устойчивость к шуму. Утверждается, что в отличие от моделей, натренированных на восстановление последовательности, при обучении JEPA модель не переобучается на шум, всегда присутствующий в данных с реальных датчиков.
3. Так как при тренировке задача JEPA - предсказание (хоть и в латентном пространстве эмбеддингов), то модель отлично работает как для задач классификации, так и для задач предсказания.
Contextual Temporal Convolutional Network (TCN)
Построены на основе обычных иерархических свёрточных сетей (dilated TCNs), с двумя "но" (Figure 2):
1. Свёрточные ядра генерируются простым линейным преобразованием из эмбеддингов описаний каждого канала временного ряда.
2. Веса для каждого канала и уровня свёртки тоже генерируются из описаний каналов временного ряда.
Contextual Attention Layer
Построен на механизме self-attention с двумя дополнениями на основе эмбеддингов описаний каналов:
1. Для каждой пары каналов по описаниям генерируется вес, определяющий, насколько эти каналы между собой связаны.
2. Для каждой пары каналов и задержки между ними генерируется вес, определяющий, насколько эти два канала связаны между собой Δt между отсчётами. Он отвечает на вопрос: «Если значение на канале A изменилось сейчас, как сильно это повлияет на канал B через Δt шагов во времени?» Например, для датчиков «Давление в насосе» и «Температура двигателя» логично предположить, что резкий скачок давления приведёт к повышению температуры, но не мгновенно, а спустя какое-то время (сдвиг Δt).
Визуализируя эти веса, можно наглядно наблюдать, как модель выучивает, какие каналы взаимодействую друг с другом, и как (Figure 7).
И главное - этот механизм позволяет подавать каналы на вход модели в разном порядке и в разном количестве, что очень удобно в практике и без чего не может быть по-настоящему фундаментальной time series модели. До сих пор моделям приходилось "догадываться", какой канал что означает. Теперь же, у модели по сути есть понимание, как разные физические величины в мире взаимодействуют, и для каждой величины есть свой шаблон взаимодействия.
Кроме того, утверждается, что это позволяет существенно повысить качество как для предсказаний, так и для классификафии на основе эмбеддингов модели (Figure 14).