На днях, а именно, 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.
А вы что скажете, уважаемые читатели?

