TorchRec Sharding: un marco para construir sistemas de recomendación a gran escala

Estás leyendo la publicación: TorchRec Sharding: un marco para construir sistemas de recomendación a gran escala

TorchRec es una de las bibliotecas de Pytorch que se utiliza para crear sistemas de recomendación dispersos y de gran escala. La biblioteca admite la fragmentación, lo que significa que las tablas grandes se pueden fragmentar en GPU y entrenar. Por lo tanto, los problemas asociados con las tablas de entidades de mayor dimensión y el exceso de capacidad de memoria de GPU se pueden superar mediante el uso de TorchRec Sharding. Por lo tanto, al usar TorchRec Sharding, se puede lograr el entrenamiento distribuido del modelo en plataformas basadas en aceleradores. En este artículo, entendamos sobre la fragmentación de TorchRec con respecto a este contexto.

Tabla de contenido

  1. Introducción a TorchRec Sharding
  2. Beneficios de TorchRec Sharding
  3. Varios esquemas de TorchRec Sharding
  4. Resumen

Introducción a TorchRec Sharding

TorchRec Sharding es una de las bibliotecas de Pytorch estructuradas para superar los problemas asociados con los sistemas de recomendación a gran escala. Algunos de los sistemas de recomendación a gran escala pueden requerir la representación de incrustaciones de mayor dimensión. Estas incrustaciones a veces pueden encontrar el uso máximo de memoria de GPU.

Entonces, para evitar los problemas asociados con las incrustaciones de mayor dimensión y las limitaciones de memoria de la GPU, PyTorch ha estructurado una biblioteca de un solo disparo, especialmente para los sistemas de recomendación a gran escala, donde los sistemas de recomendación se pueden construir compartiendo el proceso de entrenamiento del modelo de recomendación entre las GPU. Las diferentes incrustaciones de sistemas de recomendación a gran escala de Pytorch se representan mediante el uso de la función incorporada de Pytorch denominada torch.nn.EmbeddingBag.

¿Está buscando un repositorio completo de bibliotecas de Python utilizadas en ciencia de datos, echa un vistazo aquí.

Una bolsa de incrustación es básicamente una colección de varias incrustaciones de datos. Por lo tanto, esta colección de incrustaciones se usa para configurar las entidades requeridas adecuadas para los sistemas de recomendación. Por lo tanto, las entidades de datos requeridas se fragmentarán en diferentes GPU con un tamaño de bloque de 64 y una dimensión de incrustación de 4096. Esto beneficia a las entidades requeridas para que se entrenen más rápido y evita el consumo máximo de memoria de aceleradores como las GPU.

🔥 Recomendado:  El programa de tutoría de marketing digital de Exposure Ninja reabre para 2023

Comprender la API de fragmentación

La biblioteca TorchRec admite el intercambio de datos de mayor dimensión entre aceleradores y entrena sistemas de recomendación a gran escala. Entonces, para distribuir datos a través de múltiples aceleradores y facilitar el entrenamiento paralelo, TorchRec ha formulado una API llamada DistributedModelParallelDistributedModelParallel. La API se encarga de llevar a cabo dos funcionalidades. Son los siguientes.

i) Toma de decisiones sobre cómo fragmentar el modelo en los aceleradores. La API recopilará todos los fragmentadores disponibles y presentará una forma óptima de fragmentar las tablas incrustadas en todas las plataformas.

ii) La API también será responsable de asignar memoria a través de plataformas aceleradoras y será responsable de asignar tablas relacionales a través de plataformas.

Beneficios de TorchRec Sharding

Los beneficios de la fragmentación de TorchRec se enumeran a continuación.

  • El modelado de tablas de incrustación de mayor dimensión en varias plataformas basadas en aceleradores, como GPU, acelera el proceso de capacitación de las entidades requeridas de los sistemas de recomendación.
  • Kernels optimizados para sistemas de recomendación a gran escala con la capacidad de realizar operaciones dispersas y cuantificadas.
  • Varios fragmentadores ayudan a particionar varias tablas para sistemas de recomendación con diversas estrategias, como fragmentación por filas y columnas.
  • Compartir tablas de incrustación en plataformas distribuidas ayuda a acelerar el proceso de capacitación de tablas de incrustación más grandes.
  • Regula el entrenamiento de la tubería a través de una función incorporada llamada TrainPipelineSparseDist lo que ayuda a aumentar el rendimiento y permite el procesamiento paralelo de datos en todas las plataformas aceleradoras.

Una descripción general de varios esquemas de TorchRec Sharding

La fragmentación de TorchRec básicamente utiliza dos esquemas para incrustar tablas en todas las plataformas. Los dos esquemas que utiliza TorchRec se conocen como EmbeddingPlanner y DistributedModelParallelDistributedModelParallel. Entonces, intentemos comprender los beneficios de este esquema que utiliza TorchRec Sharding para manejar sistemas de recomendación a gran escala.

🔥 Recomendado:  ¿Qué hace que JAX sea tan impresionante?

Planificador de incrustaciones

El esquema Embedding Planner de TorchRec sharding hace uso de una colección de incrustaciones disponibles en EmbeddingBagCollection. En este esquema, hay dos tablas que se utilizan principalmente, conocidas como tablas grandes y pequeñas, que se diferencian en función de la diferencia en los tamaños de las filas.

Algunos de los parámetros de la tabla están configurados para ayudar en la toma de decisiones acertadas para la fragmentación en varias plataformas de aceleración. Este esquema hace uso de varias técnicas de fragmentación para comunicarse entre las diversas tablas incrustadas y facilitar la fragmentación en consecuencia.

DistributedModelParallelDistributedModelParallel

El esquema Distributed Model Parallel opera según el principio de SPMD. SPMD abrevia para programa único y datos múltiples. El esquema utiliza algún código estándar para fragmentar el modelo de forma colectiva entre varios procesos y fragmenta las tablas en múltiples aceleradores como GPU en función de las especificaciones estándar. Esto también es compatible con el multiprocesamiento y la fragmentación de tablas para algunas de las características importantes de los sistemas de recomendación.

Los dos esquemas de fragmentación finalmente priorizan el manejo de tablas de dimensiones más grandes y distribuyen dimensiones más grandes a varias plataformas aceleradoras de procesamiento en paralelo para acelerar el proceso de capacitación.

Resumen

TorchRec sharding es una de las bibliotecas de Pytorch formuladas para modelar sistemas de recomendación a gran escala y entrenarlos en múltiples GPU para evacuar los problemas asociados con una sobrecarga de consumo de memoria de las plataformas basadas en aceleradores. Facilita el entrenamiento en múltiples dispositivos al dividir enormes incrustaciones de sistemas de recomendación. Esto permite que el sistema de recomendación se entrene más rápido. Esta biblioteca aún se encuentra en la fase de investigación y se pueden esperar más mejoras en el futuro, lo que facilitará el modelado de sistemas de recomendación a gran escala.

🔥 Recomendado:  15 increíbles ideas de presentación para sorprender a tu audiencia

Resumen