Categories
Developers Salesforce

Einstein Copilot para Tableau: Creación de la próxima generación de análisis basados en IA

En nuestra serie de preguntas y respuestas «Engineering Energizers», exploramos las extraordinarias trayectorias de líderes de la ingeniería que han alcanzado el éxito en sus ámbitos específicos. Hoy, nos reunimos con John He, vicepresidente de ingeniería de software, que dirige el desarrollo de Einstein Copilot para Tableauuna herramienta innovadora que redefine la forma en que los usuarios interactúan con sus datos, haciendo que los análisis complejos sean más sencillos e intuitivos que nunca.

Únete al equipo de IA de John mientras revoluciona esta herramienta, supera las complejidades de la infraestructura y lleva el análisis de datos al siguiente nivel.

Einstein Copotot para Tableau

¿Cuál es la misión de tu equipo de IA?

Nuestra misión es revolucionar el proceso de análisis de datos para los clientes de Tableau. Hemos desarrollado una interfaz conversacional impulsada por IA que hace que las herramientas de análisis sean accesibles para todos, eliminando la necesidad de un aprendizaje exhaustivo o de conocimientos previos de las herramientas de análisis.

Nuestra misión es revolucionar el proceso de análisis de datos para los clientes de Tableau

Con Einstein Copilot para Tableau, los usuarios pueden simplemente hacer preguntas sobre sus conjuntos de datos y recibir información rápida para comprender y tomar medidas sobre sus datos.

Nuestro objetivo principal es ayudar a los clientes de Tableau con las tareas de análisis, como descubrir oportunidades e investigar las razones detrás de eventos o tendencias. Por ejemplo, los equipos de ventas pueden aprovechar Einstein Copilot for Tableau para analizar datos, generar análisis, identificar oportunidades y obtener una comprensión más profunda del comportamiento de los consumidores. Con estos valiosos conocimientos, las empresas pueden tomar decisiones informadas para impulsar el crecimiento y el éxito.

¿Qué complejidades implicó la creación de la infraestructura de IA para Einstein Copilot para Tableau?

Uno de los principales retos fue priorizar el desarrollo de un sistema de benchmarking. Este sistema recopila datos de diversas fuentes y desempeña un papel crucial en la evaluación de la eficacia de las interacciones de preguntas y respuestas. Para optimizar el flujo de trabajo de procesamiento de datos, el equipo invirtió importantes recursos en el desarrollo de telemetría y canalizaciones de datos.

Otro objetivo clave fue mejorar las capacidades de inteligencia de Einstein Copilot para Tableau. Esto implicó:

  • Integración de modelos estándar y personalizados en el entorno de producción. Se utilizó Salesforce Einstein Trust Layer para proteger la solicitud y la respuesta. Para garantizar la idoneidad de estos modelos, el equipo se basó en el sistema de evaluación comparativa para evaluar el rendimiento de los modelos y tomar decisiones fundamentadas.
  • Salesforce Einstein Trust Layer
  • Fundamentación con datos de clientes autorizados. Enviamos de forma inteligente un mínimo de datos a los LLM manteniendo la seguridad de máximo nivel. Los metadatos se utilizan inicialmente para la identificación de campos, y el algoritmo puede examinar más a fondo el valor de las dimensiones, de modo que pueda establecer el contexto con mayor precisión
  • Generación de código a partir del contexto enriquecido, teniendo en cuenta las mejores prácticas de Tableau. El código incluía el cálculo o la especificación nocional y se convertían en visualización mediante la plataforma Viz. El equipo pretendía garantizar que los clientes pudieran beneficiarse de las mejores opciones disponibles y que la inteligencia proporcionada fuera transparente. Esto significaba evitar un enfoque de talla única y, en su lugar, adaptar los modelos para satisfacer las necesidades individuales de cada cliente.
  • El equipo de Viz se centró en el desarrollo de modelos de cálculo y visualización

¿A qué obstáculos se enfrenta su equipo en términos de precisión y eficiencia mientras desarrolla Einstein Copilot para Tableau?

En primer lugar, nos enfrentamos al reto de interpretar con precisión las preguntas de los usuarios y traducirlas al código adecuado en los lenguajes de programación de Tableau, incluidos VizQL y Notional Spec. Aunque tenemos un modelo de trabajo para esto, nos esforzamos continuamente por mejorar su precisión y reducir cualquier alucinación en la traducción.

Además, estamos abordando el problema de la generación de conocimiento en analítica. Esto implica mejorar el conocimiento previo, lo que incluye abordar la calidad de los datos, la fiabilidad, la precisión, las actualizaciones de las fuentes de datos, la cobertura de los datos y las posibles limitaciones o sesgos. También nos centramos en generar conocimiento descriptivo que proporcione resúmenes precisos e informativos específicos para diferentes dominios.

Por último, estamos trabajando en la automatización de la generación de visualizaciones basadas en datos y consultas de los usuarios, como Sora en OpenAI, que puede generar vídeos con unas pocas indicaciones. Para lograrlo, estamos desarrollando un modelo LLM supervisado de ajuste fino que puede transformar eficientemente los datos en respuestas multimodales con visualización. Esto reduce significativamente el tiempo y el esfuerzo necesarios para el análisis. Las visualizaciones resultantes se pueden renderizar en Tableau o presentar en el cuadro de chat de Copilot, proporcionando a los usuarios representaciones visuales rápidas y perspicaces de sus datos.

Datos de los usuarios

¿Cuáles fueron los retos técnicos clave para mejorar la IA y las capacidades básicas de Einstein Copilot para Tableau?

Uno de los principales retos era encontrar más datos para entrenar y mejorar la inteligencia del sistema. Para ello, el equipo se centró en:

  • Datos sintetizados. Perfeccionamos continuamente nuestros algoritmos de generación de datos analíticos para mejorar la calidad del modelo y agilizar el proceso.
  • Datos sintetizados
  • Tableau Public. Una plataforma impulsada por la comunidad que alberga millones de informes, visualizaciones y fuentes de datos. Esta plataforma atrae a una gran base de usuarios y recopila una diversa gama de datos. Al proporcionar acceso libre a la tecnología, la comunidad de Tableau también puede contribuir con sus datos, enriqueciendo aún más el conjunto de datos.

Además, el equipo necesitaba equilibrar la precisión, la velocidad y la creatividad de Copilot, lo que requería un cuidadoso ajuste. El equipo desarrolló una novedosa especificación analítica que mejora la velocidad de interpretación de la intención del usuario para las capacidades del sistema Tableau, al tiempo que mantiene la precisión. Para equilibrar precisión y creatividad en Einstein Copilot para Tableau, el equipo aprovechó el concepto de temperatura de los LLM. Ajustando la temperatura, que representa el nivel de creatividad en las respuestas de la IA, pueden controlar la precisión de las respuestas proporcionadas. Esto garantiza que las respuestas se generen a partir de información objetiva y cumplan las expectativas del usuario. Mantener la temperatura más baja reduce el riesgo de alucinaciones y proporciona a los usuarios ideas fiables y precisas.

La mejora continua fue otro aspecto crucial que el equipo priorizó. Para mejorar la experiencia de usuario de Einstein Copilot para Tableau, se utilizó una plataforma experimental llamada Zeus. Esta plataforma facilita la ingeniería sistemática, la detección de intenciones y la generación de conocimientos, lo que permite al equipo identificar áreas de mejora y mejorar continuamente las capacidades de Copilot.

Einstein Copilot para Tableau

Einstein Copilot para la arquitectura de extremo a extremo de Tableau.

Einstein Copilot para la arquitectura de extremo a extremo de Tableau

¿Puede explicar la colaboración entre el equipo de Einstein Copilot para Tableau y el equipo de investigación de IA de Salesforce?

Puede explicar la colaboración entre el equipo de Einstein Copilot para Tableau y el equipo de investigación de IA de Salesforce

La colaboración es clave para abordar el difícil reto técnico de mejorar la relevancia de las preguntas y la calidad de las respuestas de Einstein Copilot para Tableau. Para abordarlo, el equipo recopila preguntas que pueden no estar relacionadas con la consulta del usuario. Estas preguntas problemáticas se remiten al equipo AI Research, que utiliza los datos para crear modelos que ayuden a mejorar la calidad de las respuestas de Copilot con el tiempo.

AI Research

Un ejemplo de colaboración tuvo que ver con la clasificación de intenciones. Aunque Einstein Copilot para el software de Tableau podía admitir múltiples intenciones, seguía existiendo una tasa de error de alrededor del 20 % a la hora de clasificar con precisión la intención del usuario. Para solucionarlo, nuestro equipo recopiló datos de feedback, incluidos los comentarios de los usuarios y los casos de prueba, y los compartió con el equipo de investigación de IA, que creó un modelo de lenguaje más pequeño y ajustado específicamente para la clasificación de intenciones, con el objetivo de mejorar la precisión y reducir la tasa de error

¿Cómo enfocan las pruebas de IA y la garantía de calidad de Einstein Copilot para Tableau?

Como ya hemos mencionado, hemos desarrollado un sistema de evaluación comparativa sobre el que construimos continuamente. Este activo cubre varios dominios y datos del sector, lo que nos permite probar a fondo diferentes escenarios y garantizar una alta cobertura.

A continuación, aprovechamos las capacidades de IA del propio Einstein Copilot for Tableau para realizar pruebas. Utilizamos un modelo para generar respuestas y luego empleamos otro para calificarlas. Este enfoque de pruebas cruzadas nos ayuda a validar la precisión y fiabilidad de las respuestas generadas por la IA.

Además, los comentarios de los clientes y los datos de etiquetado de los proveedores se utilizan para optimizar Einstein Copilot para los modelos de Tableau y mejorar sus capacidades listas para usar

Al combinar estos enfoques, garantizamos resultados precisos y mantenemos los más altos estándares de calidad.

Más información

  • ¿Hambre de más contenido sobre Tableau? Descubra cómo el equipo de Tableau Pulse revolucionó Tableau al abordar los desafíos de integración de IA/ML y los obstáculos de escalabilidad, llevando el análisis a nuevos clientes
  • Manténgase conectado: únase a nuestra Comunidad de talentos
  • Consulta nuestros equipos de Tecnología y Producto para saber cómo puedes participar.
Categories
Developers Tutoriales de Salesforce

La versión Spring ’24: Una guía completa para desarrolladores de Salesforce ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores, consultores, administradores y arquitectos de Salesforce para toda Iberoamérica.

El enlace a la publicación original, lo encontrarás al final de este artículo.

La versión Spring ’24 ya está disponible, y Salesforce ha proporcionado una guía para que los desarrolladores conozcan las nuevas funciones y mejoras. La guía incluye información sobre las actualizaciones de Salesforce Platform, las incorporaciones de Apex, las mejoras de Lightning Web Components (LWC), los entornos de desarrollo, las herramientas de desarrollo de la plataforma, los aspectos destacados de Data Cloud, las API y las integraciones, etc.

Algunos de los aspectos más destacados de la versión Spring ’24 para desarrolladores incluyen:

– La introducción del operador de coalescencia de nulos (??) en Apex, que simplifica el código con comprobaciones verbales de nulos.
– La disponibilidad de una clase de sistema UUID en Apex para generar identificadores únicos universales (UUID) de la versión 4.
– La capacidad de realizar una llamada HTTP después de revertir operaciones DML mediante el nuevo método Database.releaseSavepoint.
– Funciones de vista previa para desarrolladores como la clase ZipWriter para comprimir y extraer archivos en Apex y la clase FormulaEval para construir y evaluar fórmulas en tiempo de ejecución de Apex.
– Mejoras en Lightning Web Components, incluida la disponibilidad de Lightning Web Components Workspace API para gestionar pestañas y subpestañas en aplicaciones de Lightning Console, y la disponibilidad del componente Lightning Record Picker para buscar y seleccionar fácilmente registros de Salesforce.
– La introducción de Scratch Org Snapshots (Beta), que permite a los desarrolladores replicar rápidamente Scratch Orgs con las dependencias de proyecto necesarias.
– Actualizaciones de la CLI de Salesforce, incluido un comando para activar/desactivar el seguimiento en archivos de origen entre un proyecto y una org, y mensajes de error y advertencia más claros cuando se utilizan comandos obsoletos.
– Actualizaciones de Einstein para desarrolladores (Beta), incluidas las directrices de escritura rápida para el asistente de codificación Einstein Studio AI, y próximas funciones como la generación de código de prueba y autocompletar en línea para LWC y Apex.
– La retirada de la herramienta de migración Ant en favor del uso de la CLI de Salesforce para despliegues y recuperaciones.
– La recomendación de sustituir Workbench por herramientas modernas como Code Builder o la CLI de Salesforce.

La guía también proporciona información sobre las actualizaciones de Spring ’24 de Data Cloud, incluida la integración de modelos generativos de IA y la posibilidad de enviar datos a Data Cloud mediante Flows. También destaca las actualizaciones de las API y las integraciones, como la compatibilidad con objetos adicionales en Change Data Capture y las mejoras en la API GraphQL.

Se anima a los desarrolladores a explorar la guía completa para obtener más información sobre la versión Spring ’24 y su impacto en sus proyectos de desarrollo.

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2024/01/spring24-developers.html

Categories
Developers Tutoriales de Salesforce

Mejore su experiencia MuleSoft con IA ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores, consultores, administradores y arquitectos de Salesforce para toda Iberoamérica

El enlace a la publicación original, lo encontrarás al final de este artículo.

MuleSoft está mejorando sus capacidades de integración, gestión de API e IA en el mundo en rápida evolución de la IA. Aunque los modelos de generación de código existentes han mejorado la eficiencia en muchos sectores, no son adecuados para generar código en lenguajes específicos del ecosistema de MuleSoft, como DataWeave, RAML y OAS.

En esta entrada de blog, exploraremos la sinergia entre MuleSoft y la IA. También hablaremos de las ventajas y limitaciones de modelos existentes como CodeX y CodeGen, y de cómo un modelo interno de IA centrado en MuleSoft puede abordar estos retos.

La generación de código supone un reto en el ecosistema MuleSoft. Los modelos de generación de código de código abierto basados en IA, como CodeX y CodeGen, han demostrado su eficacia con lenguajes de programación populares como Java y Python. Sin embargo, no son eficaces con lenguajes como Go, Julia o lenguajes específicos de dominio (DSL) utilizados en MuleSoft. Los lenguajes específicos de MuleSoft como DataWeave, RAML y OAS requieren un enfoque diferente que los modelos de IA de propósito general pueden tener dificultades para proporcionar. Además, hay varias áreas en las que los desarrolladores de MuleSoft pueden necesitar ayuda.

Identifiquemos algunos problemas comunes a los que se enfrentan los desarrolladores al empezar con MuleSoft e integrarlo en sus proyectos, y veamos cómo puede ayudar la IA.

1. Primeros pasos: A muchos desarrolladores les resulta difícil empezar a utilizar MuleSoft debido a su naturaleza especializada. Puede que no estén familiarizados con lenguajes de diseño de API como RAML y OAS, y puede resultar difícil construir una API perfecta siguiendo las mejores prácticas y estándares. La paleta de Mule consta de varios conectores y componentes, por lo que resulta abrumador para los nuevos desarrolladores decidir cuáles utilizar.

2. DataWeave: Algunas transformaciones de DataWeave pueden ser complejas, implicando cargas útiles anidadas y mapeos intrincados. Los desarrolladores necesitan conocer varias funciones de DataWeave y adquirir experiencia práctica en el campo de juego de DataWeave para realizar mapeos de forma eficiente.

3. Depuración y pruebas: La depuración de aplicaciones Mule puede llevar mucho tiempo, especialmente cuando se trata de un vasto ecosistema de integración que implica múltiples sistemas finales y API. Aunque existen herramientas como Test recorder para automatizar los casos de prueba, la validación de los casos de prueba unitarios con MUnits y la búsqueda de la máxima cobertura de pruebas pueden resultar complejas.

4. Obtener ayuda: Los desarrolladores y arquitectos suelen necesitar ayuda para elegir el patrón de integración y los conectores adecuados, así como para optimizar sus soluciones.

5. Documentación: Redactar documentación para las especificaciones de las API y los proyectos de Mule puede llevar mucho tiempo. También es esencial mantener y actualizar esta documentación para alinearla con los cambios en las API y las aplicaciones Mule.

Para hacer frente a estos retos, MuleSoft ha desarrollado su propio Modelo de Aprendizaje de Lenguajes (LLM). Los modelos de IA de terceros, como GPT 3.5 y GPT 4, permiten conversaciones similares a las humanas con chatbots, pero no están adaptados al ecosistema de MuleSoft. El LLM de MuleSoft reentrena continuamente los modelos con los datos más recientes de MuleSoft, lo que garantiza un conocimiento actualizado de las versiones en evolución de MuleSoft. El conjunto de datos de formación prioriza la profundidad sobre la amplitud y elimina los datos obsoletos, alineándose con el cumplimiento de confianza y seguridad de Salesforce.

MuleSoft también está trabajando en otras capacidades de IA, como Einstein para Anypoint Code Builder, que convierte el lenguaje natural en flujo y fragmentos de código, reduciendo el tiempo de desarrollo. Intelligent Document Processing (IDP) permite una automatización perfecta para extraer e interpretar datos de PDF y documentación con precisión. API Management for AI permite crear políticas personalizadas para aplicaciones API mediante LLM, así como IA generativa para casos de uso específicos.

En conclusión, combinar el conocimiento del ecosistema de MuleSoft con un modelo interno dedicado de IA es la clave para acelerar el desarrollo de la integración. Esta solución proporciona herramientas excepcionales para la generación de código, depuración, pruebas y soporte, desbloqueando nuevas posibilidades para una integración y desarrollo de aplicaciones sin fisuras.

Para obtener más recursos e información, consulte la entrada del blog. El autor de este artículo es Akshata Sawant, Senior Developer Advocate en Salesforce y miembro activo de la comunidad MuleSoft.

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2024/01/accelerate-your-mulesoft-journey-with-ai.html

Categories
Discover Magazine Enterprise Software Inteligencia Artificial Salesforce

Modelado de secuencias largas con XGen: Un LLM de 7B entrenado con secuencias de entrada de 8K de longitud

TLDR

Entrenamos una serie de 7B LLMs llamados XGen-7B con atención densa estándar en hasta 8K de longitud de secuencia para hasta 1.5T tokens. También afinamos los modelos en datos de instrucción de dominio público. Los principales resultados son:

  • En pruebas estándar de PNL, XGen consigue resultados comparables o mejores que los LLM de código abierto más avanzados (por ejemplo, MPT, Falcon, LLaMA, Redpajama, OpenLLaMA) de tamaño de modelo similar.
  • Nuestra evaluación específica sobre modelos de secuencias largas muestra los beneficios de nuestros modelos 8K-seq sobre los modelos 2K- y 4K-seq.
  • XGen-7B archiva resultados igualmente sólidos tanto en texto (por ejemplo, MMLU, QA) como en tareas de código (HumanEval).
  • Coste de formación de 150.000 dólares en tokens de 1T según los precios de Google Cloud para TPU-v4.

Por escrito: https://arxiv.org/abs/2309.03450
Codebase: https://github.com/salesforce/xGen
Model Checkpoint: https://huggingface.co/Salesforce/xgen-7b-8k-base


Por qué XGen-7B con 8K de longitud de secuencia

A medida que los LLM se hacen omnipresentes, sus aplicaciones a secuencias largas han sido un punto clave, especialmente para aplicaciones como el resumen de texto (potencialmente intercalado con otras fuentes de datos como tablas e imágenes), la escritura de código y la predicción de secuencias de proteínas, que requieren que el modelo considere eficazmente las dependencias estructurales de larga distancia. Un contexto amplio permite a un LLM preentrenado examinar datos de clientes (por ejemplo, documentos que el LLM no utilizó en el entrenamiento) y responde a consultas útiles de búsqueda de información.

Aún así, la mayoría de los LLM de código abierto (por ejemplo, LLaMA, MPT, Falcon) han sido entrenados con un máximo de 2K tokens de longitud de secuencia, lo que supone una limitación clave en el modelado de secuencias largas. Aún no se han evaluado soluciones de tiempo de inferencia como ALiBi para modelos más grandes (por ejemplo, MPT-7b-StoryWriter-65k+). Trabajos recientes sobre el escalado de modelos han demostrado que, para un presupuesto de computación determinado, los mejores resultados no se obtienen necesariamente con los modelos más grandes, sino con modelos más pequeños entrenados con más datos (medidos por el número de tokens). Por lo general, también se prefiere un modelo más pequeño por la eficacia de la inferencia durante el servicio, incluido el servicio en el dispositivo. En vista de ello, entrenamos una serie de LLM de 7B denominados XGen con atención densa estándar en secuencias de hasta 8K de longitud para un máximo de 1,5T tokens. También afinamos los modelos XGen en datos de instrucción de dominio público, creando sus homólogos afinados por instrucción (XGen-7B-inst).

Modelo

Descripción 

XGen-7B-4K-base

Entrenamos para 800B tokens con una longitud de secuencia de 2k tokens primero, luego para otros 400B tokens (total 1.2T tokens) con 4k. Liberado bajo Apache-2.0.

XGen-7B-8K-base

Inicializado con XGen-7B-4K-base y entrenado para 300B tokens más (total 1.5T tokens) con 8K de longitud de secuencia. Liberado bajo Apache-2.0.

XGen-7B-{4K,8K}-inst

XGen-7B-{4K,8K}-inst

Supervised fine tuned on public domain instructional data including databricks-dolly-15k, oasst1, Baize and GPT-related datasets. Publicado únicamente con fines de investigación.


Datos de pre-entrenamiento

Empleamos una estrategia de entrenamiento en dos etapas, en la que cada etapa utiliza una mezcla de datos diferente.

Primera etapa (1,37T tokens)

Los datos de lenguaje natural son una mezcla de datos disponibles públicamente. Los datos de código son una mezcla del subconjunto de GitHub del conjunto de datos de RedPajama y los datos de código de Apex que recopilamos.

Segunda etapa (110B tokens)

Para apoyar mejor las tareas de generación de código, en la segunda etapa mezclamos más datos de código de Starcoder con los datos de la Etapa 1.

Nombre del conjunto de datos

Número efectivo de fichas (B)

Muestreo prop. (%)

Datos en lenguaje natural

1309,99

95,31

Datos del código

64,53

4,69

Total

1374,52

100

Nombre del conjunto de datos

Número de fichas utilizadas (B)

Prop. de muestreo. (%)

Datos de la fase 1

55

50%

BigCode Starcoder

55

50%

Usamos tiktoken de OpenAI para tokenizar nuestros datos. Añadimos tokens adicionales para espacios en blanco consecutivos y tabuladores, así como los tokens especiales descritos en el artículo de Starcoder.


Detalles del entrenamiento

Los modelos XGen-7b se entrenan con nuestra biblioteca interna JaxFormer, que facilita un entrenamiento eficiente de los LLM bajo un paralelismo tanto de datos como de modelos optimizado para el hardware TPU-v4. La receta de entrenamiento y la arquitectura del modelo siguen el modelo LLaMA, mientras que nosotros realizamos dos exploraciones adicionales. En primer lugar, investigamos la aparición de los denominados «picos de pérdida» [PaLM, loss spikes] durante el entrenamiento, es decir, la pérdida estalla de repente temporalmente mientras se desconoce la causa raíz de estos picos. En segundo lugar, los modelos XGen admiten secuencias de hasta 8.192 tokens (en lugar de los 2.048 habituales), por lo que introducimos el entrenamiento por etapas.

Picos de pérdida

A medida que los modelos se escalan a tamaños mayores, el propio entrenamiento es cada vez más sensible a las inestabilidades, que provocan un rendimiento deficiente del modelo si no se abordan con cuidado. En nuestra exploración, hemos reunido pruebas de varios factores que contribuyen individualmente a un entrenamiento inestable. Estos hallazgos preliminares incluyen «circuitos secuenciales sobre paralelos», «swish-GLU sobre GeLU», «RMS-Norm sobre Layer-norm». Específicamente, los circuitos paralelos ampliamente utilizados, que paralelizan el cómputo de autoatención y feed-forward como se adoptó en [GPT-J, PaLM, CodeGen] pueden afectar a la estabilidad del entrenamiento.

La figura anterior muestra la pérdida en términos de entropía cruzada a lo largo del tiempo siguiendo las conocidas leyes de escalado. Sorprendentemente, el entrenamiento no sufre inestabilidades ni picos de pérdida. Los dos picos de pérdida representados en la figura se esperan cuando se amplía la longitud de la secuencia, por ejemplo de 2k a 4k tokens, ya que el modelo necesita adaptarse a secuencias más largas.

Longitud de la secuencia

El entrenamiento con secuencias más largas es computacionalmente desproporcionadamente costoso ya que la complejidad de la autoatención es cuadrática, es decir, el proceso de entrenamiento es lento. Para mitigar la lentitud del entrenamiento, introducimos el entrenamiento por etapas con una longitud de secuencia creciente. Primero, se observan 800B tokens con una secuencia de 2k tokens, luego 400B tokens con 4k, finalmente, 300B tokens con 8k de longitud.

Verificamos la adaptación a secuencias más largas calculando la perplejidad media en cada posición de token en un conjunto de validación retenido que contiene documentos de 8k de longitud de secuencia o más. Si el modelo aprende a utilizar la secuencia completa, es de esperar que la perplejidad disminuya con la longitud de la secuencia, ya que los tokens anteriores contienen información para el siguiente token previsto. Es decir, para una frase larga, cuanto más contexto se proporcione en forma de palabras anteriores, más fácil será adivinar la palabra siguiente. La figura anterior muestra que XGen, en cada etapa, aprende a utilizar contextos más largos, de hasta 8k de longitud de secuencia.


Resultados en Benchmarks Estándar

(i) MMLU

En primer lugar consideramos el benchmark Measuring Massive Multitask Language Understanding (ver ejemplos aquí), que es más reciente que otros, por lo que podría decirse que es menos susceptible a la contaminación de datos, como se ha informado en estudios recientes (véase la página 32 del documento GPT-4 y una discusión relacionada aquí), y se ha utilizado sistemáticamente como punto de referencia de evaluación. Recientemente, sin embargo, se ha informado de incoherencias en la notificación de las puntuaciones MMLU, lo que dio lugar a clasificaciones erróneas en la tabla de clasificación Open LLM de Hugginface; de hecho, Huggingface tuvo que escribir más tarde un blog para aclararlo. En nuestro trabajo, seguimos el estándar MMLU original, que es coherente con los resultados publicados (es decir, en LLaMA).

Resultados del aprendizaje en contexto de 5 disparos MMLU: En primer lugar, mostramos los resultados en el escenario de evaluación original (y recomendado) de 5 disparos, en el que el LLM recibe 5 demostraciones. XGen consigue los mejores resultados en la mayoría de las categorías, también en media ponderada.

Modelos

Humanidades

STEM

Ciencias Sociales

Otros

Promedio ponderado

XGen-7b

33.8

30,7

40,0

41.5

36,3

LLaMA-7b

33.9

30,6

38,2

38,2

35.1

OpenLLaMA-7b

28.1

28,5

31,2

32.8

29,9

Falcon-7b

26,5

25.4

29.2

26.8

26.9

MPT-7b

25.9

26,2

26,9

28,1

26.7

Redpajama-7b

26.1

25.2

27.4

26.7

26,3

Cerebras-GPT-13b

26,1

26.5

25,8

26,6

26.2

Dolly-v2-12b

26.9

25,7

25,3

26,5

26.2

OPT-13b

26,2

24,3

23.4

26

25.1

GPT-J-6b

25,9

24.0

24.0

25.8

25.1

Resultados de 0 disparos de la MMMLU: En MMLU tiro cero, de forma similar vemos buenos resultados aunque la diferencia con LLaMA es generalmente menor aquí.

Modelos

Humanidades

Humanidades

STEM

Ciencias Sociales

Otros

Promedio ponderado

XGen-7b

31.4

27,8

32,1

37.2

32,1

LLaMA-7b

32.3

27,1

31,3

36.8

32,0

OpenLLaMA-7b

28.0

27,6

28,9

30,1

28.6

MPT-7b

27,4

25.2

26.0

30.7

27.4

Redpajama-7b

27.5

25.5

24,2

25,0

25.8

GPT-J-6b

25,3

24.5

25,5

27,6

25.7

Dolly-v2-12b

26.2

26.0

24.0

24.9

25.4

Cerebras-GPT-13b

24,3

25.0

23.0

26.0

24.6

OPT-13b

26,3

23,3

23.6

23.6

24.4

Falcon-7b

24.8

21.7

24.0

24,4

23.9

(ii) General Zero-shot Results

A continuación, presentamos los resultados generales de zero-shot en tareas generales de PLN que implican razonamiento de sentido común y GC.

Modelos

MMLU

-wavg

ARC_ch

Hella Swag

Winogrande

TruthfulQA

BoolQ

PiQA

OpenBookQA

XGen-7b

32.1

41.2

74.2

64,9

39,1

74.3

75,5

40,2

LLaMA-7b

32.0

44,8

76,2

69.6

34

74,9

78,7

44.2

Falcon-7b

23.9

43.4

76,4

67,2

34,3

73.8

79,4

44,0

MPT-7b

27.4

41,7

76,1

68.6

33,4

74,1

79.1

41,8

OpenLLaMA-7b

28.6

38,7

71,8

67.0

35,2

70,6

76.0

39.0

Redpajama-7b

25.8

39.1

70.3

63.8

33,3

69,3

76.9

40,0

GPT-neox-20b

24.5

41,1

70,5

66.1

31,4

64,9

76,7

38.8

OPT-13b

24.4

35.8

69,9

64,7

33,9

65.0

75,7

39.8

GPT-J-6b

25,7

36,3

66.2

64,5

36,0

65,4

75.4

38,2

Dolly-v2-12b

25.4

39.6

70.8

61.8

34,4

56,3

75.4

39,2

Cerebras-GPT-13b

24.6

32.4

59.4

60.8

39,2

61,1

73.5

35,8

StableLM-alpha-7b

24.4

27,0

40,7

51.5

41,7

59,0

65,8

32.4

(iii) Resultados en la generación de código

Para evaluar la capacidad de generación de código de XGen a partir de instrucciones en lenguaje natural (docstrings), lo evaluamos en el conocido benchmark HumanEval. Fijamos la temperatura de muestreo en 0,2, p en 0,95 (para muestreo top-p), y num_samples_per_task (n) en 200. Informamos de los resultados estándar de cero disparos con la métrica pass@1.

Modelos

pass@1

XGen-7b

14.20

LLaMA-7b

10,38

OpenLLaMA-7b

0 (Los espacios en blanco consecutivos se tratan como uno, rompiendo la sintaxis de Python)

Falcon-7b

0 (no generó código con sentido)

MPT-7b

15.90

Redpajama-7b

5.24


Resultados en tareas de generación de secuencias largas

Para seguir evaluando nuestro modelo XGen-7b 8k en comparación con las líneas de base que se limitan a entradas de 2k, pasamos a la generación de diálogos largos, el resumen de textos y la garantía de calidad. Todas estas tareas se benefician del procesamiento y la comprensión de un contexto largo para generar una respuesta correcta. Hay que tener en cuenta que, para estas tareas, la mayoría de los modelos base preentrenados no consiguieron generar una respuesta plausible debido a la dificultad de la tarea. Por tanto, utilizamos modelos ajustados a las instrucciones.

Diálogo

Para evaluar las capacidades de comprensión y resumen de diálogos largos, presentamos los resultados de tres tareas de resumen de diálogos: AMI, ForeverDreaming (FD) y TVMegaSite (TMS). La longitud media de las fuentes de estos conjuntos de datos es de aproximadamente 5.570, 6.466 y 7.653, respectivamente. Evaluamos específicamente muestras de menos de 8K de longitud utilizando varios modelos ajustados a las instrucciones. En particular, cuando no se aplicó el truncamiento de la entrada, tanto MPT-7b-inst como Alpaca-inst no obtuvieron buenos resultados en este escenario. Nuestro modelo (XGen-7B-inst) obtuvo las puntuaciones ROUGE más altas en todas las métricas.

Modelo

AMI

FD

TMS

R-1

R-2

R-L

R-1

R-2

R-L

R-1

R-2

R-L

XGen-7b-inst

31.34

8.25

17.00

29.34

5.39

16.43

26.39

3.94

13.71

Falcon-7b-inst

14.89

1,97

9,28

18,90

1.80

9,37

18,90

1,80

9.37

MPT-7b-inst

11,95

1,88

8.10

14.27

1.40

8.89

19.80

2,39

10,23

Alpaca-7b-inst

9.69

1,77

6,43

16,26

1.56

10.66

12.26

1.15

7.30

Control de calidad de forma larga

A continuación, evaluamos nuestro XGen-7b-inst en una tarea de control de calidad de forma larga que hemos diseñado internamente. Pedimos a ChatGPT que genere preguntas a partir de (a) documentos largos de Wikipedia que abarcan cuatro dominios: Física, Ingeniería, Historia y Entretenimiento, y (b) resúmenes de estos documentos. A continuación, consultamos los LLM para generar respuestas a estas preguntas. Las respuestas suelen tener hasta 256 tokens. Utilizamos GPT-4 para evaluar la calidad de las respuestas en términos de coherencia (estructura y organización) y relevancia (relevancia de la respuesta generada para la pregunta y el documento contextual) en una escala de 0 a 3. A partir de los resultados que se muestran a continuación, vemos que nuestro modelo obtiene puntuaciones más altas en diferentes aspectos en comparación con las líneas de base consideradas.

Modelo

Métricas

Coherencia

Relevancia

Avg. Ratings

XGen-7b-inst

2,55

2,52

2.54

MPT-7b-inst

2,5

2.45

2,48

Alpaca-7b-inst

1.65

1,91

1.78

Falcon-7b-inst

2,26

2.13

2,19

Resumen

Aquí evaluamos nuestro modelo en dos conjuntos de datos de resumen de texto incluidos en el SCROLLS Benchmark, a saber, QMSum y GovReport. Cubren dos ámbitos diferentes: conversaciones en reuniones e informes gubernamentales. Además, los datos de QMSum incluyen consultas específicas en lenguaje natural que indican al modelo los aspectos clave del documento fuente que deben incluirse en el resumen. Vemos que nuestro modelo XGen-7b supera a otras líneas de base en estas tareas.

Modelo

QMSum

InformesGov

R-1

R-2

R-L

R-1

R-2

R-L

XGen-7b-inst

27.96

5,66

24.26

21.28

8.19

20.08

Falcon-7b-inst

15.68

2,81

14,01

17.8

6,13

16,66

MPT-7b-inst

21.75

4.38

19.29

18.11

6.96

17.11

Redpajama-7b-inst

19.81

2.66

17.58

19.63

6,93

18,48

Como vemos resultados alentadores de nuestros modelos XGen-7b en estas tareas de secuencias largas, nos gustaría señalar que como estos modelos no están entrenados con los mismos datos de instrucción, no son estrictamente comparables.


Nota sobre Riesgos Potenciales

Por último, a pesar de nuestro esfuerzo por abordar los riesgos de sesgo, toxicidad y alucinaciones tanto en las etapas de pre-entrenamiento como de ajuste fino, al igual que otros LLMs, los modelos XGen-7b no están libres de dichas limitaciones. Esperamos que nuestra base de código de código abierto ayude a otros investigadores a comprender mejor estos retos y a mejorar estas limitaciones clave para que la IA sea beneficiosa para todos.

Categories
Developers Tutoriales de Salesforce

Dentro de CodeGen: Nuestro LLM interno de código abierto ☁️

Esta es una traducción que desde EGA Futura ofrecemos como cortesía a toda la Ohana y comunidad de programadores, consultores, administradores y arquitectos de Salesforce para toda Iberoamérica.

El enlace a la publicación original, lo encontrarás al final de este artículo.

El artículo trata sobre CodeGen, un modelo de lenguaje de código abierto (LLM) desarrollado por Salesforce para la comprensión y generación de código. Proporciona una visión general de las características de CodeGen y sus diferentes versiones, incluidas CodeGen 1.0, CodeGen 2.0 y CodeGen 2.5. El artículo también menciona cómo CodeGen potencia Einstein for Developers, una plataforma de herramientas para desarrolladores impulsada por IA. Destaca las capacidades adicionales del LLM utilizado en Einstein for Developers, como el aprendizaje continuo de Apex y la fundamentación contextual. El artículo concluye mencionando los planes de futuro para CodeGen y Einstein for Developers, incluidas las próximas funciones y mejoras. Anima a los lectores a ver un vídeo de la sesión de Dreamforce sobre CodeGen y proporciona enlaces para acceder al código de fuente abierta y probar Einstein for Developers. Al final del artículo también se ofrecen los datos del autor.

Esta es una traducción realizada por EGA Futura, y este es el link a la publicación original: https://developer.salesforce.com/blogs/2023/11/inside-codegen-our-in-house-open-source-llm.html

Categories
Discover Magazine Enterprise Software Inteligencia Artificial Salesforce

CodeGen2.5: pequeño, pero poderoso

Contribución igual entre Erik Nijkamp y Hiroaki Hayashi.

Paper
Code
Tweet

Abstract

La familia de modelos CodeGen de Salesforce crece con CodeGen2.5 – ¡un modelo pequeño pero poderoso! Aunque ha habido una tendencia reciente de grandes modelos de lenguaje (LLM) de tamaño cada vez mayor, demostramos que un modelo pequeño puede obtener un rendimiento sorprendentemente bueno, cuando se entrena bien.

Las contribuciones clave hacia la producción de estos modelos son:

  • Lanzamiento de CodeGen2.5 LLM con el estado del arte en HumanEval para 7B parámetros.
  • CodeGen2.5 con 7B está a la par con >15B modelos de generación de código (CodeGen1-16B, CodeGen2-16B, StarCoder-15B), menos de la mitad del tamaño.
  • Con robusto muestreo de relleno, es decir, el modelo puede leer texto tanto del tamaño de la mano izquierda como de la derecha de la posición actual.
  • Optimizado para muestreo rápido bajo atención Flash para un servicio optimizado y despliegue local en máquinas personales.
  • Licencia permisiva en Apache 2.0.

Motivación

En 2022, Salesforce Research lanzó CodeGen [1,2], uno de los primeros LLM para Síntesis de Programas con parámetros 16B. El modelo CodeGen permite a los usuarios «traducir» lenguaje natural, como el inglés, a lenguajes de programación, como Python. Para este tipo de modelos, desde el descubrimiento de las leyes de escalado, leyes de potencia que relacionan el tamaño de un modelo y el conjunto de datos, la tendencia dominante ha sido escalar los LLM a tamaños mayores.

Cuello de botella de los datos. Aunque el tamaño de los conjuntos de datos se ha escalado de acuerdo con estas leyes, este escalado de los datos se ha limitado a la cantidad de datos disponibles. Es decir, un conjunto de datos puede contener como máximo un millón de documentos. Durante el entrenamiento, una iteración sobre este millón de documentos se denomina «una época». Anteriormente, se creía que un modelo sólo debía observar un documento una vez durante el entrenamiento, lo que implicaba que se debía entrenar como máximo durante «una época». Esta limitación agota rápidamente los datos disponibles en el mundo, ya que son finitos. Nosotros cuestionamos esta creencia y entrenamos durante «más de una época» con una receta especializada. Esto puede permitir entrenar un modelo más pequeño con más datos, en lugar de un modelo más grande, que es costoso de servir y mantener en entornos de producción. La afirmación de «ver una observación una sola vez» para un entrenamiento óptimo puede seguir siendo cierta, pero, en nuestro entorno, creamos variantes (o alteraciones) de estas observaciones, de tal manera que el modelo puede ser entrenado para múltiples épocas. Aunque no afirmamos que este aumento de datos sea estrictamente necesario para eliminar las restricciones de datos, los siguientes resultados empíricos indican que, efectivamente, se puede entrenar un modelo pequeño pero muy potente con esta receta.

Muestreo de relleno. La creación de código fuente es un proceso único que implica editar y mejorar continuamente el código a lo largo del tiempo, corrigiendo errores y mejorando su calidad. Esto significa que el modelo de generación de código debe tener en cuenta no sólo el código anterior a la ubicación de edición, sino también el código posterior, permitiendo el relleno dentro del código existente. El relleno se consigue formateando la secuencia de entrada de manera que prediga el contexto que se va a rellenar utilizando los contextos de prefijo y sufijo [2,3,4]. Sin embargo, hemos observado que el enfoque «fill-in-the-middle» [3] a veces puede tener dificultades para determinar cuándo dejar de rellenar. Esta capacidad es crucial, especialmente en casos prácticos. CodeGen2.5 emplea en su lugar la corrupción de span [2,4], que no sufre esta tendencia.

Muestreo rápido. En productos como los asistentes para la finalización de código, los usuarios finales esperan ver las finalizaciones en, digamos, dos segundos. Internamente, las finalizaciones tienen que ser muestreadas a partir del modelo LLM. Este proceso es lento, ya que cada token (o «palabra») tiene que ser muestreado secuencialmente, es decir, generar una compleción de 32 tokens requiere 32 llamadas al modelo, lo que puede incurrir en una latencia significativa en el muestreo. Para hacer frente a este reto, el modelo CodeGen2.5 se optimizó específicamente para un muestreo rápido bajo autoatención con computación Flash [5] y compatibilidad con NVIDIA Triton [6]. El modelo no sólo es pequeño, lo que reduce la latencia de muestreo, sino que también goza de optimización interna para obtener mayores ganancias.

Despliegue local. En el futuro, estos asistentes se ejecutarán en la máquina local, como los MacBook con chips M2. Este despliegue local no sólo permite una alta personalización de los modelos para cada usuario, sino que también garantiza la privacidad de los datos. Con marcos técnicos recientes como llama.cpp, que está optimizado para el despliegue local de LLM pequeños, CodeGen2.5 disfruta de un rendimiento similar al de LLaMA-7B en un MacBook equipado con un chip M1. ¡Esto hace que el despliegue de asistentes basados en CodeGen en máquinas locales sea factible hoy en día.

ValoraciónHumana (n=200)

Modelo

Pass@1

Pass@10

Pass@100

Modelos generales de gran lenguaje

MPT-7B [7]

15.90

MPT-30B [9]

25.00

LLaMA-7B [8]

10.50

LLaMA-13B [8]

15.80

LLaMA-33B [8]

23.70

PaLM-540B [8]

26.20

Multi-lingual Code Models

Replit-code-v1-3B [7]

17.10

CodeGeeX-13B [8]

22.90

Codex-12B [1]

28.81

46,81

72.31

StarCoderBase-15.5B

30.09

55.91

80.11

CodeGen1.0-16B-multi

18.32 

32.07 

50.80

CodeGen2.0-16B-multi

20,46

36,50

56.71

CodeGen1.0-7B-multi

18,16 

28.71

44.85

CodeGen2.0-7B-multi

18.83

31,78

50,41

CodeGen2.5-7B-multi

28,36

47,46

75.15

Modelos de código monolingüe

StarCoder-15.5B

33,21

61,03

84.68

CódigoT5+-16B-mono

30,90

51,60

76.70

CodeGen1.0-16B-mono

29.28

49.86

75.00

CodeGen1.0-7B-mono

26.13

42,29

65,82

CodeGen2.¡5-7B-mono

33,39

58,38

82,71

Tabla 1: HumanEval pass-rates with n=200, Un punto de referencia que mide si los programas generados a partir de un modelo son funcionalmente correctos. Obsérvese que CodeGen2.5, con sólo 7B parámetros, supera a modelos anteriores de más del doble de su tamaño. Los modelos multilingües se entrenan con diversos lenguajes de programación. Los modelos monolingües sólo se ajustan en Python. ¡

HumanEval-Infill (n=40)

Model

Pass@1

Pass@10

StarCoderBase-15.5B

78,60

89,76

CodeGen2.0-16B-multi

69.28

78.73

CodeGen2.0-7B-multi

65.18

75.00

CodeGen2.5-7B-multi

70.97

79.01

Tabla 2: Índices de aprobación de relleno de línea simple de HumanEval con n=40. La prueba comparativa mide la capacidad de un modelo para «rellenar el centro» de un fragmento de código cuyo «centro» se ha enmascarado. ¡Tenga en cuenta, para la productización, CodeGen2.5 introduce un token centinela especializado para el truncamiento y cuenta con un rendimiento de relleno muy alto.

HumanEval (n=200)

Code-cushman-001 [8]

33.50

54,30

77,40

WizardCoder-15B [7]

57.00

CodeT5+-16B-instruct

35.00

54,50

77.90

CodeGen2.5-7B-instruct

36.20

60.87

85,98

Tabla 3: Tasas de aprobación de HumanEval con n=200, en modelos ajustados a las instrucciones. Nuestros modelos ajustados a las instrucciones se ajustan en conjuntos de datos de instrucciones específicas para mejorar la capacidad de generar código basado en instrucciones en inglés.

Findings

Calidad del modelo. Como se ha señalado anteriormente, los LLM están ávidos de datos. Aunque entrenar modelos durante una época, es decir, sólo una iteración sobre los datos, puede ser eficiente, este lujo es inviable en entornos con datos limitados, como las síntesis de programas en las que sólo existe una cierta cantidad de código en el mundo. En su lugar, nuestra hipótesis es que el entrenamiento con los siguientes ingredientes puede conducir a un modelo competitivo de menor tamaño: (1) múltiples épocas, (2) aumento de datos, (3) altas tasas de aprendizaje. Para las épocas múltiples, durante el entrenamiento recorremos el iterador de datos varias veces en idéntico orden.

Entrenamos el modelo en StarCoderData, un conjunto de datos de lenguaje de programación desarrollado por BigCode [10]. Como muestra la Figura 1, una epoch constituye unos 300B tokens, mientras que el modelo está preentrenado para 1,4T tokens, alcanzando más de 4 epochs. Además, incorporamos nuestro formato de relleno específico [2] en la función objetivo, que puede servir como forma de aumento de datos en el entrenamiento de varias épocas. Es decir, de forma similar a la corrupción de span, algunos tokens de una secuencia observada se mueven a diferentes posiciones, de forma que la misma secuencia no se observa dos veces. Aunque se trata de una hipótesis, esta forma de corrupción o aumento de los datos puede mitigar las limitaciones de los datos. Por último, la función de decaimiento de la tasa de aprendizaje se programa para un presupuesto de tokens significativamente mayor, lo que hace que el modelo se entrene con tasas de aprendizaje más altas durante un periodo más largo. Aunque se puede argumentar que un modelo funciona mejor cuando se entrena hasta la convergencia, observamos un rendimiento muy competitivo o incluso igual al principio del entrenamiento, por lo que un entrenamiento más largo con presupuestos de fichas mucho mayores parece una receta razonable. En concreto, el índice de aprobados de la Figura 1 parece aumentar de forma constante tanto con índices de aprendizaje elevados como con un régimen de entrenamiento multipunto.

El rendimiento final en la prueba de referencia HumanEval, que refleja la capacidad de un modelo para generar un programa funcionalmente correcto, se resume en las Tablas 1. Mientras que CodeGen2.5 sólo tiene un modelo de referencia, CodeGen2.5 no tiene un modelo de referencia. Aunque CodeGen2.5 sólo contiene 7B parámetros de modelo, supera significativamente a CodeGen1.0 y 2.0 con modelos de 16B parámetros, más del doble de su tamaño, y está a la par con el reciente modelo StarCoder 15.5B. CodeGen2.5 es pequeño, ¡pero puede!

Figure 1: HumanEval pass@1 con n=40 en miles de millones de tokens de entrenamiento. Esta prueba mide la capacidad de un modelo para generar programas o fragmentos de código funcionalmente correctos. Una epoch constituye unos 300B tokens, de modo que el modelo se entrenó durante más de 4 epochs. Obsérvese que el rendimiento aumenta de forma constante hasta 1,2T tokens a pesar de entrenar con altas tasas de aprendizaje y múltiples épocas.

Muestreo de relleno. CodeGen2.5 adopta el mismo objetivo de entrenamiento que CodeGen2, lo que permite el muestreo de relleno, es decir, el muestreo de texto teniendo en cuenta el contexto pasado y futuro. También observamos una mejora en las tasas de aprobación de la tarea HumanEval-SingleLineInfill, una tarea de completado de código python de una sola línea. La Tabla 2 resume la comparación con otros modelos con capacidad de relleno.

Ajuste de instrucciones. Además, utilizamos CodeGen2.5-7B-mono y lo ajustamos en conjuntos de datos de instrucciones públicas para mejorar la capacidad de generación de código basado en instrucciones en inglés. Los resultados se resumen en la Tabla 3. Observamos una mejora continua con respecto al modelo monolingüe.

Latencia de muestreo. CodeGen2.5 adopta el forward pass del modelo LLaMA. Esto nos permite disfrutar de las ventajas del servidor de inferencia NVIDIA Triton [6], un rápido marco de inferencia en GPUs NVIDIA. ¡Con FlashAttention activado, conseguimos una inferencia el doble de rápida y un mejor rendimiento en comparación con CodeGen2.0-16B, como se muestra en la Tabla 4.

CodeGen2.0-16B


Latencia bajo Atención Flash (ms)

Modelo

16 fichas

32 fichas

64 fichas

CodeGen2.0-7B

610

860

1.394

1.136

1.602

2.544

CodeGen2.¡5-7B

522

760

1.226

Tabla 4: Latencia de muestreo en milisegundos con varios marcos de inferencia que admiten Flash attention bajo NVIDIA Triton. La longitud del contexto es de 2.000 tokens y el tamaño del lote está fijado en 2. El número variado de tokens representa una configuración realista para los productos de asistente de código. CodeGen2.5 presenta una latencia más baja, lo que permite mejorar la experiencia del usuario.

Conclusión

La familia de modelos CodeGen da la bienvenida a un nuevo miembro: CodeGen2.5, pequeño pero poderoso. Demostramos que el entrenamiento multipunto puede mitigar las limitaciones de los datos y dar lugar a modelos pequeños pero potentes. Además de su tamaño relativamente pequeño, CodeGen2.5 presenta un robusto muestreo de relleno y un muestreo rápido optimizado para servir con atención Flash, que permiten la productización de estos modelos para asistentes de codificación. En el futuro, ampliaremos los límites de estos modelos.

Explore More

Salesforce AI Research le invita a profundizar en los conceptos tratados en esta entrada de blog (enlaces más abajo). Conéctese con nosotros en las redes sociales y en nuestro sitio web para obtener actualizaciones periódicas sobre éste y otros proyectos de investigación.

Referencias

[1] CodeGen1 (https://arxiv.org/abs/2203.13474)
[2] CodeGen2 (https://arxiv.org/abs/2305.02309)
[3] FIM OpenAI (https://arxiv.org/abs/2207.14255)
[4] InCoder (https://arxiv.org/abs/2204.05999)
[5] Flash Attention (https://arxiv.org/abs/2205.14135)
[6] NVIDIA Triton (https://developer.nvidia.com/triton-inference-server)
[7] abacaj/code-eval (https://github.com/abacaj/code-eval)
[8] StarCoder (https://arxiv.org/abs/2305.06161)
[9] MPT-30B (https://www.mosaicml.com/blog/mpt-30b)
[10] StarCoderData (https://huggingface.co/datasets/bigcode/starcoderdata)