Este repositorio contiene los activos que complementan el artículo " fuera de línea en línea: almacenamiento de características para sistemas de recomendaciones en tiempo real con Nvidia Merlin " escrito originalmente para el blog de desarrolladores de NVIDIA.
Brindamos ejemplos de arquitecturas de sistemas de recomendación y proporcionamos instrucciones de implementación en la nube para el uso de producción. Cada uno de los ejemplos se basa en Redis y el Marco Nvidia Merlin que proporciona una serie de bloques de construcción para crear sistemas de recomendación.
Hay 3 ejemplos dentro de este repositorio
La gran escala se expande en la segunda arquitectura para los casos de uso que exigen capacitación o inferencia a gran escala (> 1 GPU).
Cada uno de los ejemplos está diseñado para ejecutarse localmente en un sistema habilitado para la GPU de NVIDIA con Docker y Docker-Compose. Recomendamos ejecutar todo lo siguiente en una instancia de nube con una GPU NVIDIA (idealmente el AWS Pytorch ami)
Sin embargo, también proporcionamos un conjunto de scripts de terraza y cuadernos Ansible que pueden implementar la infraestructura necesaria para ejecutar los ejemplos en instancias de AWS.

Los sistemas de recomendación "fuera de línea" utilizan la computación por lotes para procesar grandes cantidades de datos y luego almacenarlos para una recuperación posterior. El diagrama anterior muestra un ejemplo de dicho sistema que utiliza un enfoque de dos torres para generar recomendaciones y luego las almacena dentro de una base de datos Redis para una recuperación posterior.
El cuaderno fuera de línea proporciona métodos para construir este tipo de sistema de recomendación, así como trenes y exporta los modelos necesarios para ejecutar el sistema de recomendaciones en línea en la siguiente sección.
Para ejecutar el cuaderno, ejecute lo siguiente
$ cd offline-batch-recsys/
$ docker compose up # -d to daemonizeLuego abra el enlace generado por Jupyter en un navegador.

Un sistema de recomendaciones "en línea" genera recomendaciones a pedido. A diferencia de los sistemas orientados a lotes, los sistemas en línea están limitados por la latencia. Al diseñar estos sistemas, la cantidad de tiempo para producir recomendaciones es probablemente el factor más importante. Comúnmente limitado alrededor de 100-300 ms, cada parte del sistema necesita componentes que no solo son eficientes sino escalables para millones de usuarios y elementos. La creación de un sistema de recomendación en línea tiene significativamente más restricciones que los sistemas por lotes, sin embargo, el resultado a menudo son mejores recomendaciones ya que la información (características) se puede actualizar en tiempo real. El diagrama anterior muestra un ejemplo de esta arquitectura.
El ejemplo anterior de las recomendaciones por lotes genera los modelos y conjuntos de datos para este cuaderno, pero también puede descargar activos previamente capacitados con la CLI de AWS de la siguiente manera
aws s3 cp s3://redisventures/merlin/merlin-recsys-data.zip ./data
Para ejecutar el cuaderno, ejecute lo siguiente
$ cd online-multi-stage-recsys/
$ docker compose up # -d to daemonizeEsta sección contiene dos cuadernos: uno para implementar el almacén de funciones (Redis) y crear el índice Vector (Redis) y otro para definir y ejecutar el modelo de conjunto para ejecutar toda la tubería (Triton).
Nota: Asegúrese de ejecutar el primer cuaderno antes del segundo o el modelo no se ejecutará.

El último cuaderno que muestra cómo manejar conjuntos de datos muy grandes cuando los modelos de entrenamiento como DLRM para sistemas de recomendación. Las grandes empresas a menudo tienen millones de usuarios y artículos. Toda la tabla de incrustación de un modelo puede no encajar en una sola GPU. Para esto, Nvidia creó el marco de Hugectr.
Hugectrías es parte de un marco Nvidia Merlin y agrega instalaciones para capacitación distribuida y servicio de modelos de recomendación. El cuaderno detallado aquí se centra en la implementación y el servicio de Hugectrías y proporciona una versión previa al DLRM que puede usarse para el ejemplo. Puede encontrar más información sobre la capacitación distribuida con Hugectremect.
Para ejecutar el cuaderno local, ejecute lo siguiente
$ cd large-scale-recsys/
$ docker compose up # -d to daemonizeEsta carpeta incluye scripts de terraza y libros de jugadas ansibles que implementan
Todo en Amazon Web Services.

Los ejemplos presentados en este repositorio se pueden ejecutar en la infraestructura terraformada con cambios mínimos. Este es un método rápido para implementar esta infraestructura para probar las tuberías del sistema de recomendación detalladas aquí. Vea el ReadMe dentro del depósito de nubes para obtener más información.
Los modelos de este tutorial se pueden recuperar con la AWS CLI ejecutando
aws s3 cp s3://redisventures/merlin/merlin-recsys-data.zip ./data
El siguiente enlace de repostorios al código/activos utilizados en artículos y cuadernos
Los cuadernos aquí se basan en el trabajo de muchos cuadernos preexistentes como
Recomendamos encarecidamente leer