X опубликовал исходный код алгоритма рекомендаций «For You»: практическое руководство по управлению аккаунтами в Twitter с помощью алгоритма

Маск (Elon Musk) 15 мая в X объявил, что последняя версия алгоритма X опубликована на GitHub. Согласно репозиторию xAI xai-org/x-algorithm, который компания разместила на GitHub, главная тема опубликованного контента — это ключевая рекомендательная система, которая питает ленту «For You» на платформе X. Система сочетает контент изнутри платформы, на который пользователи уже подписаны (отслеживают), а также контент извне, добываемый с помощью машинного обучения из глобальной базы контента; после этого она выполняет ранжирование с помощью transformer-модели на основе архитектуры Grok.

Проект распространяется под лицензией Apache 2.0, в основном он написан на Rust и Python; на момент запроса GitHub показывает около 2,1 тыс. stars и 3 800 forks.

Архитектура рекомендаций For You: Thunder находит отслеживаемый контент, Phoenix добывает контент извне

Согласно описанию в документации репозитория, лента For You на X состоит в основном из двух источников кандидатов.

Во-первых, это контент внутри платформы, за который отвечает модуль Thunder. Thunder — это оперативное хранилище постов и конвейер оперативного сбора данных: он потребляет посты из Kafka, чтобы создавать и удалять события, отслеживает последние посты всех пользователей и предоставляет запрашивающему кандидаты на контент из его отслеживаемых аккаунтов. В документации подчеркивается, что Thunder может выполнять запросы кандидатов на контент внутри платформы на уровне миллисекунд (sub-millisecond) без обращения к внешним базам данных.

Во-вторых, это контент извне, за который отвечает Phoenix Retrieval. Phoenix находит в глобальной базе контента посты, которые, вероятно, заинтересуют пользователя, но при этом не исходят от отслеживаемых аккаунтов. На этапе извлечения используется двухбашенная модель (Two-Tower Model): User Tower кодирует характеристики пользователя и историю взаимодействий в векторы, Candidate Tower кодирует кандидатов-постов в векторы, а затем с помощью сходства по скалярному произведению находит наиболее релевантный контент.

Эти кандидаты попадают в Home Mixer — слой координации ленты For You. Home Mixer отвечает за запрос контекста пользователя, получение кандидатов, подстановку данных о посте и авторе, фильтрацию неподходящего контента, вызов модели ранжирования, применение корректировок к оценкам; в итоге выбираются посты, которые будут показаны пользователю на странице For You. В документации также указано, что Home Mixer внешне предоставляет gRPC-эндпоинт ScoredPostsService, предназначенный для возврата уже ранжированных постов конкретному пользователю.

Архитектура Grok — в основе рекомендательной системы

Самое обсуждаемое на этот раз — то, что рекомендательная система X явно внедрила Grok.

В README на GitHub указано, что контент ленты For You ранжируется Phoenix. Phoenix — это transformer-модель на базе Grok, которая прогнозирует вероятность того, что каждый пост вызовет взаимодействие, а затем эти прогнозы взвешенно объединяются в итоговый балл. В документации также отмечается, что реализация transformer в этом репозитории перенесена из открытого Grok-1 от xAI и адаптирована под сценарии использования рекомендательной системы, например добавлены настраиваемые входные embeddings и attention mask для изоляции кандидатов.

Однако это не означает, что X полностью раскрыла в открытом доступе модель целиком, используемую в промышленной (production) среде. В Phoenix README прямо сказано, что на этот раз выпущена mini version: в production используется более крупная модель с большим числом слоёв и более широкими embeddings. Одновременно опубликованный checkpoint — это снапшот, замороженный в конкретный момент из непрерывного процесса обучения, тогда как Phoenix в production будет продолжать обучаться по актуальным данным в реальном времени.

Обновление от 15 мая: исполняемый end-to-end инференс, мини-модель Phoenix, рекламная система смешивания

Согласно примечаниям к обновлению на GitHub, версия от 15 мая добавила несколько ключевых компонентов.

Во-первых, это end-to-end пайплайн инференса. Новый phoenix/run_pipeline.py заменяет ранее раздельные run_ranker.py и run_retrieval.py. Его можно использовать как единый вход, чтобы связать процесс «извлечение → ранжирование», и выполнять его на exported checkpoints, моделируя, как в production эти два этапа комбинируются.

Во-вторых, предобученные артефакты модели. На этот раз выпущенная mini Phoenix model размещена через Git LFS. В документации говорится, что она содержит 256-мерные embeddings, 4 attention heads и 2 слоя transformer, объём около 3GB. Это позволяет разработчикам делать inference «из коробки» без самостоятельного обучения модели. Phoenix README также указывает, что опубликованный demo corpus — это датасет спортивных постов примерно из 537 тыс. записей, взятых из 6-часового окна, который используется для демонстрации этапа retrieval.

Кроме того, в репозитории добавлен Grox content-understanding pipeline для задач понимания контента, таких как spam detection, post-category classification и PTOS policy enforcement; параллельно добавлена рекламная система смешивания Home Mixer, отвечающая за вставку рекламы в ленту и расстановку позиций, и при этом она учитывает отслеживание brand safety.

Ранжирующая модель за один раз предсказывает 15 видов взаимодействий — а не только единый «скоррелированность/релевантность» балл

Ранжирующая модель Phoenix — это не просто выдача абстрактного «балла релевантности». Вместо этого она одновременно предсказывает вероятность наступления множества типов взаимодействий.

Согласно документации, модель предсказывает, в том числе, favorite, reply, repost, quote, click, profile click, video view, photo expand, share, dwell, follow author, а также not interested, block author, mute author, report — всего 15 типов действий.

Далее Weighted Scorer объединяет эти вероятности взаимодействий с помощью весов в итоговый балл: позитивные действия, такие как лайк, репост, шаринг, получают положительные веса, а негативные действия, такие как блокировка, мут, жалоба — отрицательные веса, тем самым «опуская» контент, который пользователь, вероятно, не оценит.

После вычисления баллов моделью система также применяет дополнительные корректировки. Например, Author Diversity Scorer снижает оценки повторяющихся авторов, чтобы поддерживать разнообразие ленты; OON Scorer корректирует out-of-network контент — то есть оценки контента не от отслеживаемых аккаунтов.

Это означает, что «For You» на X — это не просто поднятие вверх постов, которые с наибольшей вероятностью будут лайкнуты. Вместо этого взаимодействия разных типов разлагаются на отдельные предсказания, а затем с помощью весового дизайна формируется итоговый порядок. Также это означает, что истинная ценностная оценка алгоритма существует не только в самой модели, но и в том, как построены веса взаимодействий и правила последующей обработки.

Изоляция кандидатов: оценки постов не должны зависеть от других постов в той же партии

Особенно важно в документации «изолирование кандидатов» (Candidate Isolation).

В Phoenix README указано, что на этапе ranking кандидаты-посты не могут attend друг к другу: они могут обращать внимание только на пользователя и его историю. Цель этой конструкции — гарантировать, что оценка отдельно взятого поста не меняется из‑за того, с какими другими постами этот пост оказывается в одном batch. Иными словами, оценка поста должна определяться тем, как он связан с пользователем, а не тем, какие конкурирующие посты случайно оказались в той же партии.

Это имеет и потенциальный смысл для создателей контента. Раньше многие сообщества предполагали, что время публикации следует избегать событий «на пике» или постов с высокой вовлечённостью, чтобы сильный контент в «пуле рекомендаций» не подавил новый материал. Но если Candidate Isolation реализована, как описано в документации, то по крайней мере на уровне инференса оценка отдельного поста не должна напрямую изменяться из-за того, что в той же партии появились другие сильные посты.

Однако это не означает, что время публикации полностью не важно. Потому что на итоговую выдачу всё ещё могут влиять такие факторы, как предварительный recall кандидатов, свежесть постов, временной период, когда пользователь онлайн, фильтрация «уже просмотренного контента», внимание к конкурирующим популярным событиям и т.п.

Дискуссия вокруг нарратива «без ручных признаков»: помимо сортировки остаются ручные правила

В документации xAI заявляет, что система устранила все ручные признаки дизайна и большую часть эвристических правил, опираясь в основном на Grok-based transformer, который учится релевантности по последовательности взаимодействий пользователей. В документе также перечислены пять ключевых проектных решений: отсутствие ручных признаков, изоляция кандидатов на этапе ранжирования, хэшные embeddings, предсказание многовидовых действий и модульная (компонуемая) архитектура pipeline.

Но это утверждение требует более точной интерпретации. Из той же документации видно, что перед ранжированием лента For You проходит через множество pre-scoring filters. Например, удаляются дубликаты постов, слишком старые посты, посты самого пользователя, контент от заблокированных или замьюченных аккаунтов, замьюченные ключевые слова, контент, который пользователь уже видел или который недавно уже появлялся, а также неподходящая по условиям подписка. После ранжирования применяются post-selection filters, такие как удаление веток с треш/мошенничеством (spam), с насилием и сценами жестокости, а также ветки с дублированием диалоговых тредов и т.д.

Поэтому точнее было бы сформулировать так: X заявляет, что «кандидатное ранжирование релевантности контента» в основном получается за счёт обучения Grok-based transformer, без опоры на традиционные ручные признаки; при этом вся лента For You всё равно содержит множество продуктовых правил, фильтров, весов и механизмов постобработки. Эти правила тоже формируют то, какой контент пользователь в итоге увидит.

Практическое обучение: как использовать алгоритм X для ведения аккаунта

На практике, если создатели хотят «вести аккаунт в соответствии с алгоритмом», акцент уже не только на том, чтобы добиваться лайков или репостов. Важно понимать, что For You система одновременно оценивает множество сигналов взаимодействий. Позитивные сигналы включают время просмотра (dwell), клики, ответы (reply), репосты, подписку на авторов, просмотр видео и раскрытие изображений. Негативные сигналы — это not interested, мут, блокировка и жалобы.

Это означает, что нельзя рассчитывать только на «кричащие» заголовки для кликов: если пользователь зайдёт, быстро пролистает, нажмёт not interested или даже заблокирует автора, это может ухудшить дальнейшие результаты рекомендаций.

Для тех, кто ведёт аккаунт, более эффективная стратегия — повышать «качество взаимодействия»: в первые несколько секунд нужно удержать внимание, текст должен побуждать читать дальше, а в конце можно оформить позицию/вывод так, чтобы читателю естественно хотелось отвечать или делиться, а не чтобы он был вынужден взаимодействовать. При этом из-за корректировок на разнообразие авторов плотные серии публикаций в короткий промежуток времени не обязательно линейно увеличат охват — иногда это может быть размыто понижением веса за того же автора. Более рационально — контролировать ритм публикаций, чтобы у каждого поста был чёткий фокус, достаточная информационная плотность и позиция, которую можно репостнуть.

Наконец, рекомендации контента извне означают, что аккаунт не обязан опираться только на уже существующих подписчиков: если контент удерживает внимание незнакомой аудитории, вызывает клики и подписку, он может быть продвинут в более крупный пул трафика For You. Но условие — избегать низкокачественных фермерских материалов, дубликатов контента и чрезмерно спорных манипуляций, потому что как только такие действия запускают мут, блокировку или жалобы, «наказание» со стороны алгоритма обычно оказывается тяжелее, чем краткосрочный бонус от охвата.

Эта статья — X публикует исходный код рекомендательного алгоритма «For You»: практическое руководство по ведению Twitter-аккаунта с опорой на алгоритм. Впервые опубликовано на Lianxin ABMedia.

Отказ от ответственности: Информация на этой странице может поступать от третьих лиц и не отражает взгляды или мнения Gate. Содержание, представленное на этой странице, предназначено исключительно для справки и не является финансовой, инвестиционной или юридической консультацией. Gate не гарантирует точность или полноту информации и не несет ответственности за любые убытки, возникшие от использования этой информации. Инвестиции в виртуальные активы несут высокие риски и подвержены значительной ценовой волатильности. Вы можете потерять весь инвестированный капитал. Пожалуйста, полностью понимайте соответствующие риски и принимайте разумные решения, исходя из собственного финансового положения и толерантности к риску. Для получения подробностей, пожалуйста, обратитесь к Отказу от ответственности.
комментарий
0/400
Нет комментариев