TikTok es una aplicación para compartir videos que permite a los usuarios crear y compartir videos cortos. Impresiona a los usuarios con sus recomendaciones personalizadas precisamente “para ti”. Es altamente adictivo y muy popular entre los jóvenes.
Tal como hemos analizado otras populares plataformas de contenidos anteriormente tal como Netflix y Uber esta vez voy a escribir acerca de la ingeniería detrás de TikTok
La arquitectura de software de esta popular plataforma está compuesta básicamente por 3 pilares fundamentales: Big Data, Machine Learning (Aprendizaje automático) y Microservicios.
La mayoría de los datos provienen de los smartphones de los usuarios. Eso incluye el sistema operativo, la aplicación instalada, etc. Más importante aún, TikTok presta especial atención a los registros de actividad de los usuarios, como el tiempo de visualización, si deslizan o no en la pantalla, me gusta, compartir y comentarios.
Los datos de registro se recopilan y agregan a través de flume y scribe. Se canalizan a la cola de Kafka. Luego, Apache Storm procesa flujos de datos en tiempo real con otros componentes en el ecosistema Apache Hadoop.
El ecosistema Apache Hadoop es un sistema distribuido para el procesamiento y almacenamiento de datos. Esto incluye MapReduce, la primera generación de sistema de procesamiento de datos distribuido. Procesa datos en paralelo con el procesamiento por lotes. YARN es un marco para la programación de trabajos y la gestión de recursos de clúster. HDFS es un sistema de archivos distribuido. HBase es una base de datos distribuida escalable que admite el almacenamiento de datos estructurados para tablas grandes. Hive es una infraestructura de almacenamiento de datos que proporciona resúmenes y consultas de datos. Zookeeper es un servicio de coordinación de alto rendimiento.
A medida que los volúmenes de datos crecen rápidamente, los marcos de procesamiento de datos en tiempo real entran en escena. Apache Spark es el marco de trabajo de tercera generación que ayuda con el procesamiento distribuido casi en tiempo real para cargas de trabajo de big data. Spark mejora el rendimiento de MapReduce al realizar el procesamiento en la memoria. En los últimos dos años, TikTok aplica el marco Flink de cuarta generación. Está diseñado para realizar el procesamiento de transmisión en tiempo real de forma nativa.
Los sistemas de bases de datos incluyen MySQL, MongoDB y muchos otros.
Después de que se vierten grandes conjuntos de datos, lo siguiente es el análisis de contenido, la elaboración de perfiles de usuario y el análisis de contexto. Los marcos de aprendizaje profundo de redes neuronales, como TensorFlow, se utilizan para realizar la visión por computadora y el procesamiento del lenguaje natural ( NLP ). La visión por computadora descifrará imágenes con fotos y videos. La PNL incluye clasificación, etiquetado y evaluaciones.
Se utilizan los algoritmos clásicos de aprendizaje automático, incluida la regresión logística ( LR ), la red neuronal convolucional ( CNN ), la red neuronal recurrente ( RNN ) y los árboles de decisión de aumento de gradiente (GBDT). Se aplican los enfoques de recomendación comunes, como el filtrado basado en contenido ( CBF ), el filtrado colaborativo ( CF ) y la factorización matricial más avanzada ( MF ).
Pronto escribiré un artículo explicando estos algoritmos de ML usando Python y con ejemplos concretos
Las armas secretas que usa TikTok para leer tu mente son:
1. Plataforma experimental de algoritmos : los ingenieros experimentan la combinación de múltiples algoritmos de aprendizaje automático, como LR y DNN (Deep neural network). Luego ejecutan pruebas A/B y realizan los ajustes necesarios.
2. Amplia clasificación y etiquetado : los modelos se basan en la participación de los usuarios, como el tiempo de visualización, el deslizamiento, además de los “Me gusta” o las acciones compartidas comunes (no lo que dice en público, sino lo que hace como reflejo de su subconsciente dice más acerca de ti). La cantidad de funciones, vectores y categorías de usuarios supera a la mayoría de los sistemas de recomendación del mundo. Y siguen añadiendo más.
3. Motor de comentarios de los usuarios : actualiza los modelos después de recuperar los comentarios de los usuarios en múltiples iteraciones. La plataforma de gestión de la experiencia se basa en este motor y, en última instancia, mejora las perdiciones y las recomendaciones.
Para resolver el problema de arranque en frío en la recomendación, se utiliza la estrategia de recuperación. Es seleccionar miles de candidatos de decenas de millones de videos que han demostrado ser populares y de alta calidad.
Mientras tanto, parte del trabajo de IA se ha trasladado al lado del cliente para una respuesta súper rápida. Eso incluye entrenamiento en tiempo real, modelado y razonamiento en un tamaño más pequeño realizado en los dispositivos. Los marcos de aprendizaje automático como TensorFlow Lite o ByteNN se utilizan en el lado del cliente.
TikTok ha adoptado la infraestructura nativa de la nube. Los componentes de recomendación, como la creación de perfiles de usuarios, las predicciones, el arranque en frío, la recuperación y el motor de comentarios de los usuarios, funcionan como API. Los servicios están alojados en la nube con Amazon AWS y Microsoft Azure. Como resultado del sistema, la selección de videos se enviará a los usuarios a través de la nube.
TikTok emplea tecnología de contenedores basada en Kubernetes. Kubernetes se conoce como un orquestador de contenedores. Es el conjunto de herramientas para automatizar el ciclo de vida de las aplicaciones. Kubeflow se dedica a realizar implementaciones de flujos de trabajo de aprendizaje automático en Kubernetes.
Como parte de la pila nativa de la nube, Service Mesh es otra herramienta para manejar la comunicación de servicio a servicio. Controla cómo las diferentes partes de una aplicación comparten datos entre sí. Inserta funciones o servicios en las capas de la plataforma, en lugar de la capa de aplicación.
Debido al requisito de alta concurrencia, los servicios se crean con el lenguaje Go y gRPC. En TikTok, Go se ha convertido en el lenguaje dominante en el desarrollo de servicios debido a su buena red integrada y soporte de concurrencia. gRPC es un marco de control de procedimientos remotos para construir y conectar servicios de manera eficiente.
El éxito de Tiktok es que harían un esfuerzo adicional para brindar la mejor experiencia de usuario. Construyen herramientas internas para maximizar el rendimiento a bajo nivel (nivel del sistema). Por ejemplo, ByteMesh es una versión mejorada de Service Mesh, KiteX es un marco gRPC de Golang de alto rendimiento y Sonic es una biblioteca Golang JSON mejorada. Otras herramientas o sistemas internos incluyen servidores de parámetros, ByteNN, abase, por nombrar algunos.
Fuente (en inglés): https://www.lavivienpost.com/how-tiktok-works-architecture-illustrated/
En este tutorial te mostraré cómo crear un sistema de login con Python Flask de…
Aprende a crear un mantenedor completo y funcional en este Tutorial de Flask con Python,…
¿Quieres aprender a subir imágenes a un servidor con Python Flask de manera fácil y…
Cuando se crea un proyecto Python mediante programación orientada a objetos (POO), una parte importante…
Navegando en Twitter sobre temas de programación y tecnología encontré esta guía para entrevistas técnicas…
En el mundo de la programación de software, surgen los microservicios como una innovación clave.…