La fábrica de LLM: surgida de la colaboración entre Snowflake y NVIDIA

Snowflake anunció hace poco su cooperación con NVIDIA para facilitar la ejecución de workloads de procesamiento acelerado de NVIDIA directamente en las cuentas de Snowflake. Un caso de uso de interés consiste en entrenar, personalizar e implementar large language models (LLM) de forma segura en Snowflake. Esto es posible gracias a nuestra nueva función, Snowpark Container Services, actualmente disponible en vista previa privada, junto con la plataforma NVIDIA AI.
A muchos de nuestros clientes les gustaría ejecutar LLM en Snowflake para usarlos con sus datos de Snowflake sin tener que llamar a API externas. Además de poder usar los LLM, nuestros clientes también quieren ajustar LLM previamente entrenados, incluidos los modelos que se ofrecen con el marco NVIDIA NeMo, así como los modelos Llama de Meta, con los datos de su propia empresa y de Snowflake. En esta entrada de blog vamos a hablar sobre las posibilidades que se abren para nuestros clientes, mostraremos una visión detallada de su funcionamiento y veremos algunos de los casos de uso iniciales que analizamos con los pioneros en su incorporación.
Snowpark Container Services: ejecución de procesamientos de GPU de NVIDIA en Snowflake
Nuestra nueva función, Snowpark Container Services, te permite ejecutar contenedores Docker dentro de Snowflake, incluidos los acelerados con GPU de NVIDIA. NVIDIA incluye contenedores Docker predefinidos y gratuitos para distintos workloads de inteligencia artificial (IA), entre ellos los que usan el marco NeMo para los LLM.
Solo tienes que poner en marcha una de las imágenes de contenedor de NVIDIA AI Enterprise que se incluyen con esta licencia de evaluación de 90 días en Snowpark Container Services para poder ejecutarla de forma segura y directamente en tu cuenta y con tus datos de Snowflake. Como el contenedor se ejecuta en Snowflake, las organizaciones pueden ofrecer a los usuarios funciones definidas por estos (user defined functions, UDF), que pueden llamarse desde SQL para ejecutar procesamientos avanzados en el contenedor sin que esto suponga una carga operativa.
Snowpark Container Services te ofrece una flexibilidad casi ilimitada para que incluso ejecutes herramientas de desarrollo de código abierto, como cuadernos de Jupyter, con los que se pueden usar y ajustar LLM de forma sencilla.
Entrenamiento previo y ajuste de LLM en Snowflake
Los LLM listos para usar se conocen como “modelos previamente entrenados”, lo que implica que alguien se ha encargado de recopilar una gran cantidad de datos de entrenamiento y ha entrenado el modelo previamente. Estos modelos, como en el caso de NVIDIA NeMo y de los modelos Llama de Meta, son generalistas, es decir, muestran fluidez tanto en inglés como en otros idiomas y cuentan con distintos grados de conocimientos sobre diversos temas, por lo que pueden conocer, en cierta medida, tu sector y su jerga, procesos y necesidades, aunque no sea de una forma muy exhaustiva. Además, suelen incluir poca o ninguna información sobre tu empresa en concreto, tus productos o tus clientes.
Suelen estar optimizados para llevar a cabo determinados tipos de tareas, como responder preguntas, elaborar resúmenes, redactar trabajos, chat general, etc. Se trata de “soluciones para todo” si su finalidad es un uso general, pero no suelen contar con los conocimientos suficientes para ejecutar casos de uso empresariales planteados con un gran nivel de precisión y conocimientos.
Es aquí donde entran en juego el entrenamiento previo y el ajuste de los LLM. El entrenamiento previo suele implicar entrenar un LLM desde cero a partir de un amplio conjunto de datos. Como entrenador, puedes curar estos datos para generar un modelo que tenga los conocimientos relevantes para ti. Aunque algunos modelos previamente entrenados pueden seguir entrenándose para que aprendan más sobre un determinado dominio, esto suele suponer la necesidad de realizar ajustes.
El marco NVIDIA NeMo, que se incluye con la plataforma de software NVIDIA AI Enterprise, permite llevar a cabo este ajuste en Snowflake. Debe tenerse en cuenta que, a menudo, ajustar los modelos existentes genera suficientes resultados, dado que el entrenamiento previo puede exigir muchos datos y recursos. El marco NeMo admite varias técnicas de ajuste, desde un ajuste completo hasta un ajuste eficiente de parámetros (parameter-efficient fine-tuning, PEFT). Algunas de las técnicas de ajuste completo son el ajuste supervisado y el aprendizaje reforzado a partir de la retroalimentación humana (reinforcement learning with human feedback, RLHF). Entre las técnicas de PEFT admitidas se incluyen el aprendizaje de instrucciones, que incluye el ajuste de instrucciones y el ajuste de parámetros, los adaptadores, la adaptación de bajo rango e IA3.
Ajuste seguro de los datos de tu empresa
Ajustar un modelo resulta útil para enseñarle a llevar a cabo una tarea nueva, o bien para adaptar la forma en que realiza una tarea existente, pero no tiene la misma utilidad para enseñar a un modelo un nuevo conocimiento base. Si tienes que incluir un nuevo conocimiento base en el LLM y no quieres entrenar previamente un nuevo LLM, otra opción sería analizar los métodos de generación aumentada de recuperación (retrieval augmented generation, RAG), como los que aparecen en esta entrada sobre Frosty, nuestro chatbot de ejemplo.
Sin embargo, el ajuste es una forma excelente de cambiar la manera en que un LLM elabora sus respuestas o adaptarlo a nuevas tareas. Por ejemplo, si estuvieras creando un chatbot para el servicio de atención al cliente y quisieras que se comportara y escribiera de una determinada forma, podrías ajustarlo para ello. Tendrías que tomar datos de tu cuenta de Snowflake, crear un conjunto de ejemplos de entrenamiento sobre cómo deseas que se comporte y escriba para, a continuación, invocar el proceso de ajuste que, finalmente, crearía un nuevo modelo.
Luego, podrías probar el nuevo modelo para compararlo con el modelo base y ver si se comporta como esperabas. El ajuste de modelos suele ser un proceso relativamente rápido, de unas pocas horas si se usan las GPU Tensor Core de NVIDIA H100, A100 o A10, en función del tamaño del modelo base y de la cantidad de ejemplos que implique el ajuste, para que puedas probarlos y comprobar cuál se ajusta mejor a tus necesidades. Compáralo con lo que implica entrenar previamente un modelo desde cero, que puede suponer días o semanas y para lo que se necesitan varias GPU funcionando a la vez.
Obtención de los datos de entrenamiento de ajuste en Snowflake
Lo que más tarda en ajustarse es la creación del conjunto de datos de entrenamiento, es decir, los ejemplos de cómo deseas que el LLM con ajuste responda en determinadas circunstancias. Existen conjuntos de ajuste de ejemplo, pero si lo que deseas es un modelo personalizado, necesitarás un conjunto de ajuste también personalizado. En determinados casos de uso, puedes obtener este tipo de datos de ajuste en tu cuenta de Snowflake. Por ejemplo, si tienes almacenado en Snowflake el historial de chats del servicio de atención al cliente, transcripciones o mensajes de correo electrónico enviados a los clientes y recibidos de estos, podrías indicarle al método de ajuste que use los ejemplos del historial mejor valorados o con los que se consiguieran los mejores resultados.
El ajuste se produce directamente en los nodos de GPU que se ejecutan en contenedores de Snowpark de tu cuenta de Snowflake, por lo que los datos de entrenamiento confidenciales no salen en ningún momento de tu cuenta, sino que permanecen en las tablas o archivos de almacenamiento temporal de Snowflake, donde se suelen encontrar habitualmente. Del mismo modo, el modelo resultante, que ahora se basa en los aprendizajes obtenidos de tu información confidencial, se queda dentro de Snowflake en una ubicación temporal segura y puede ofrecerse desde los contenedores de Snowpark.
Al conservarse los procesos integrales de entrenamiento previo, ajuste, almacenamiento de los modelos resultantes y entrega de modelos dentro de Snowflake, puedes aprovechar las tecnologías de LLM de código abierto más novedosas que ofrecen NVIDIA y otros proveedores sin tener que preocuparte de que los datos salgan de tu organización.
Consulta esta entrada de Medium para ver una guía técnica sobre cómo funciona el ajuste de parámetros con NeMo en Snowpark Container Services.
Distintos casos de uso posibles
Son muchos los clientes de Snowflake que han empezado a trabajar con los LLM y algunos de ellos ya están entrenándolos y ajustándolos. Algunos de los casos de uso más interesantes son:
- Clasificación en el servicio de atención al cliente, generación de respuestas y, finalmente, experiencias de chat completo, como se describe anteriormente
- Generación creativa de publicidad personalizada para cada cliente, basándose en todo lo que conoces de cada cliente de Snowflake
- Chatbots de análisis de datos para crear consultas SQL y responder preguntas, basados en tus datos y esquemas de Snowflake
- Ayuda a vendedores para que conozcan mejor a sus clientes y clientes potenciales, así como para que creen comunicaciones y campañas de venta más efectivas
- Formación y respuestas a preguntas de los nuevos empleados (y de los actuales) basadas en los documentos, las políticas y el historial de la empresa, así como en los datos de Snowflake
- Ingesta y comprensión de los datos e informes financieros para las posteriores respuestas a preguntas financieras
- Modelo de detección de fármacos de Snowpark para la generación de distintas combinaciones de moléculas y proteínas
- Gestión de un LLM multimodal para tu amplia gama de aplicaciones
Estamos entusiasmados por nuestra colaboración con NVIDIA para ofrecer estas aplicaciones de LLM ―y otras muchas― a nuestros clientes en el Data Cloud. Si bien nos encontramos en la fase inicial en muchos de estos casos, estamos muy contentos de empezar a trabajar con nuestros clientes para que todos estos casos de uso puedan materializarse.