На днях, а именно, 31 августа, вышла новая модель работы с временными рядами от Google — TimesFM-3 (Time Series Foundational Model).
Если вкратце, задача моделей семейства TimesFM — прогнозировать дальнейшее поведение системы на основе ретроспективных данных. Интересно, что для этого исследователи Google применяют токенизацию групп временных отсчетов, а сам трансформер TimesFM — decoder‑only. Также в третьей версии TimesFM заявлена поддержка одновременно множественных переменных (multi‑variate).
Так я был в отпуске и мне было скучно, я вспомнил про старую задачу полуторагодовалой давности: классификация сценариев поведения пользователя на основе данных энергопотребления. Сразу скажу, что задача ну совсем нетипичная для TimesFM — ведь эта модель была создана не для классификации, а для предсказания эволюции. Но, повторюсь, мне было скучно, а еще мне было интересно посмотреть, насколько быстро и качественно современные ИИ‑агенты позволят мне решить эту задачу. В итоге получился экспресс‑тест нескольких разных подходов к вайб‑кодингу:
Стандартный чат DeepSeek, которому скормил ссылку на GitHub Google Research и на свой прошлогодний колаб
ИИ‑агент OpenCode с подключением к LLM Nemotron 3.5-Lightning и Nemotron 3.0 Ultra
ИИ‑агент Freebuff
Все эти инструменты доступны бесплатно и поддерживают русский язык.
DeepSeek — быстро и сердито
DeepSeek, недолго порассуждав и поискав связанные страницы, довольно бодро (минут за пять) выдал мне следующий Colab. Предложенный подход заключается в разбиении массива отсчетов (в прошлый раз мы определили, что оптимальное количество точек для классификации равно 90) на ретроспективные и тестовые данные (45 и 45), по которым TimesFM пытался бы выделить признаки (среднее, стандартное отклонение, минимум, максимум, линейный тренд, среднее абсолютное изменение), и дерево решений (Decision Tree Classifier), которое, собственно, и классифицирует сценарий на основе этих признаков. Как водится, пришлось поправить (всего) две ошибки, чтобы ноутбук заработал и выдал следующую Confusion Matrix:

Для старта неплохо. Но можно лучше: использовать все 90 отсчетов для подсчета признаков (нам нет нужды делать предсказание и сравнивать с актуальными величинами), а также попросив DeepSeek изучить документацию по TimesFM и расширить набор доступных для классификации признаков (добавились квантили), получаем чуть лучший результат:

Любопытно, что, и как в случае с LightAutoML + FFT, самый хорошо определяемый сценарий — «бездействие» (Idle), только точность все же похуже, чем с переходом в частотное представление.
Еще любопытно, что DeepSeek написала код применения эмбеддингов — ну а вдруг у decoder‑only трансформера есть функция эмбеддинга (если кто не понял, это сарказм). Что, в целом, логично для задачи классификации, но, увы, у TimesFM встроенной функции генерации эмбеддингов нет. В итоговый ноутбук я этот код по понятным причинам включать не стал.
DeepSeek — почти зачет. Код, после двух исправлений — рабочий. Быстро, дешево, результативно. Хотя и чуть хуже результата с FFT‑преобразованием исходных данных.
OpenCode
OpenCode — кодинговый ИИ‑агент с открытым кодом. «Из коробки» предлагает несколько нейронных сетей бесплатно. Можно также подключить свою собственную через oLLAMA — локально или на удаленном сервере. Сперва я попробовал Nemotron 3.5 Lightning. Агент за полтора часа попытался что‑то сообразить, постоянно пытаясь создать новые папки вне пределов выделенного для проекта пространства, но итоговый.ipynb так и не получился.

Увы, но и с Nemotron 3 Ultra OpenCode не смог сделать читабельный.ipynb, и поэтому в итоге сошел с дистанции.
Freebuff
Freebuff — бесплатный ИИ‑агент, предоставляющий подписку на премиальные LLM за счет показа рекламы. Будет интересно посмотреть, будет ли он работать в России, но в Турции, куда меня закинуло на время отпуска — сработал. Первая же версия предложенного кода — запустилась без ошибок, но вот результат не впечатляет:

А все потому, что разбиение на обучающую и тестовые выборки проведено некорректно:

Исправляем ошибку разбиения на классы, результат пока все еще далек от «сырого» DeepSeek:

Но спасибо FreeBuff за то, что попытался использовать логистическую регрессию для этой задачи (без сарказма, было интересно).
Если кому интересно, исправленный ноутбук доступен по ссылке.
Наблюдения и выводы.
Сама по себе модель TimesFM — легковесная и быстрая, занимает порядка 1,5 Гбайт VRAM, на T4 в Google Colab выдает до 5 итераций в секунду (с учетом ограничений на размер контекста — в моем случае это было 90 точек, а всего поддерживается — до 2048 точек).
До самой «мякотки» я добраться не успел и оценить предсказательную мощь данной модели мне пока не удалось, равно как и понять, сколько отдельных переменных она может держать в своем окне внимания — получился такой экспресс‑забег по разным инструментам вайб‑кодинга, в котором пока что по точности итогового решения победил «сырой» DeepSeek, хотя Freebuff и выдал безупречный с точки зрения работоспособности вариант, но существенно уступающий по метрикам точности. Жаль, что OpenCode выступил не очень в этой специфичной для себя задаче, но у меня есть подозрение, что он не очень хорошо умеет адаптировать Bash‑команды к кросс‑платформенным условиям (он многократно пытался запускать Linux‑специфичные команды в терминале Windows, естественно, с ошибкой).
Буду рад комментариям и предложениям задач, на которых можно было бы попробовать новую модель предсказаний значений временных рядов от Google.
А вы что скажете, уважаемые читатели?