- X: sistema de recomendación basado en machine learning desarrollado para mejorar la calidad de las recomendaciones de contenido personalizado del feed "For You"
- El feed se construye combinando dos fuentes: cuentas seguidas (Thunder) y contenido de cuentas no seguidas (Phoenix Retrieval)
- Todos los posts candidatos se evalúan con Phoenix, un modelo Transformer basado en Grok, para producir el ranking final
- Este modelo predice la probabilidad de interacción de cada publicación
- En el sistema se eliminaron todas las funciones diseñadas manualmente y la mayoría de los algoritmos heurísticos
- Analiza el historial de actividad del usuario (me gusta, respuestas, compartidos) para identificar contenido relevante
Arquitectura del sistema
- Home Mixer es la capa de orquestación que coordina todo el pipeline
- Incluye la etapa Query Hydration, que recopila el historial de comportamiento del usuario y la información de seguimiento
- Gestiona una serie de etapas: recuperación de candidatos, enriquecimiento de datos, filtrado, puntuación y selección final
- Devuelve publicaciones ordenadas por usuario mediante ScoredPostsService basado en gRPC
- Thunder es un almacenamiento en memoria que recopila publicaciones en tiempo real mediante Kafka event streams
- Mantiene almacenamiento por usuario para publicaciones originales, respuestas/reposts y publicaciones de video
- Proporciona candidatos de publicaciones in-network desde cuentas que el usuario solicitante sigue
- Entrega las publicaciones más recientes de las cuentas seguidas con latencia ultrabaja
- Logra rendimiento de consulta a nivel submilisegundo sin acceder a bases de datos externas
- Phoenix es el componente principal de ML de la recomendación, y consta de dos etapas: Retrieval y Ranking
- Búsqueda: usa un modelo Two-Tower para calcular la similitud entre embeddings de características/historial de interacción del usuario y embeddings de publicaciones, y recuperar los posts Top-K
- Ranking: usa una arquitectura Transformer with Candidate Isolation diseñada para que cada candidato se evalúe de forma independiente
- Recibe como entrada el contexto del usuario (historial de interacción) y la publicación candidata
- Predice para cada publicación probabilidades de múltiples acciones como me gusta, respuesta, repost, clic, etc.
- Candidate Pipeline es un framework reutilizable de pipeline de recomendación
- Define traits como
Source, Hydrator, Filter, Scorer y Selector
- Incorpora ejecución en paralelo, manejo de errores y logging para asegurar escalabilidad y estabilidad
Cómo funciona
-
Etapas del pipeline
- 1. Obtener datos de consulta: recupera el historial reciente de actividad del usuario y metadatos (por ejemplo, la lista de cuentas seguidas)
- 2. Descubrimiento de candidatos: busca publicaciones candidatas en las siguientes fuentes
- Thunder: publicaciones recientes de cuentas seguidas (dentro de la red)
- Phoenix Retrieval: publicaciones descubiertas con machine learning en el corpus global (fuera de la red)
- 3. Hydration de candidatos usando la siguiente información:
- Datos clave de la publicación (texto, medios, etc.)
- Información del autor (nombre de usuario, estado de verificación)
- Duración del video (en el caso de publicaciones de video)
- Estado de suscripción
- 4. Filtro previo a la puntuación: elimina publicaciones que cumplan con las siguientes condiciones
- Duplicadas
- Demasiado antiguas
- Del propio espectador
- De cuentas bloqueadas/silenciadas
- Que incluyan palabras clave silenciadas
- Ya vistas o servidas recientemente
- Contenido no disponible para suscripción
- 5. Método de puntuación: aplica varios scorers de forma secuencial
- Phoenix Scorer: obtiene predicciones de machine learning usando el modelo Transformer Phoenix
- Calculador de puntaje ponderado: combina las predicciones para producir el puntaje final de relevancia
- Calculador de puntaje de diversidad de autores: reduce el impacto de puntajes repetidos del mismo autor para favorecer la diversidad
- OON Scorer: ajusta el puntaje del contenido fuera de la red
- 6. Selección: ordena por puntaje y selecciona los K candidatos principales
- 7. Procedimiento posterior a la selección: validación final de las publicaciones candidatas
-
Puntuación y ranking
- Los valores predichos por el modelo Phoenix se combinan mediante una suma ponderada
- Las acciones positivas (me gusta, compartidos, etc.) reciben mayor peso, mientras que las acciones negativas (bloqueos, reportes, etc.) restan puntos
-
Filtrado en dos etapas
- Filtro antes del cálculo del puntaje: elimina duplicados, publicaciones más antiguas que el umbral, publicaciones propias, contenido de pago no visible, publicaciones ya vistas o servidas, cuentas bloqueadas, palabras clave silenciadas, etc.
- Filtro después de la selección: elimina publicaciones borradas, spam, contenido violento, publicaciones gráficas y duplicados de múltiples ramas dentro del mismo hilo de conversación
Principios clave de diseño
- Eliminación de la feature engineering manual; el Transformer aprende directamente de las secuencias de comportamiento del usuario
- Evaluación independiente de candidatos (Candidate Isolation) para producir puntajes consistentes y facilitar el caching
- Embeddings basados en hash; tanto la recuperación como el ranking usan múltiples funciones hash en la consulta de embeddings
- Predicción multiacción (Multi-Action Prediction); en lugar de un único puntaje de "relevancia", se predicen múltiples acciones
- Arquitectura modular de pipeline
- Separa la ejecución y el monitoreo del pipeline de la lógica de negocio
- Permite ejecución paralela de etapas independientes y manejo adecuado de errores
- Facilita agregar nuevas fuentes, hydration, filtros y scorers
Licencia
2 comentarios
"Rust 62.9%"
트위터의 추천알고리즘을 오픈소스로 공개
¿Será algo distinto a esto también? Tendré que hacerme un tiempo el fin de semana para leerlo...