OpenAI estrena un nuevo lenguaje de programación de IA impulsado por NVIDIA

El laboratorio de investigación de inteligencia artificial OpenAI LLC ha presentado hoy Triton, un lenguaje de programación diseñado para crear redes neuronales.

La primera versión de Triton se presentó hace dos años en un artículo académico del científico de OpenAI Philippe Tillet. Como parte del lanzamiento de hoy, OpenAI ha lanzado una edición significativamente mejorada denominada Triton 1.0 con optimizaciones que están pensadas para proyectos de aprendizaje automático empresarial.

La gran mayoría de los modelos de IA para empresas se ejecutan en unidades de procesamiento gráfico de NVIDIA Corp. Los desarrolladores utilizan el software suministrado por NVIDIA para construir esos modelos. Uno de los programas más importantes de NVIDIA es el marco de trabajo CUDA, que proporciona los bloques de construcción de software básicos que las aplicaciones de IA utilizan para realizar cálculos con las GPU.

El problema que aborda OpenAI con Triton es que el marco CUDA se considera bastante difícil de utilizar. En concreto, el principal reto es maximizar el rendimiento de un modelo de IA para que procese los datos lo más rápido posible. Para los equipos de desarrolladores que utilizan CUDA, maximizar el rendimiento de la IA requiere realizar optimizaciones complicadas y precisas en su código que se consideran difíciles de implementar incluso con años de experiencia.

El lenguaje de programación Triton de OpenAI es la solución. Según el laboratorio, el lenguaje realiza muchas optimizaciones de código de IA de forma automática para ahorrar tiempo a los desarrolladores.

OpenAI promete dos ventajas principales para los equipos de software. La primera es que Triton puede acelerar los proyectos de IA, ya que los desarrolladores tienen que dedicar menos tiempo a optimizar su código. La otra, según OpenAI, es que la relativa simplicidad de Triton puede permitir a los equipos de software sin una amplia experiencia en programación con CUDA crear algoritmos más eficientes de lo que podrían hacer normalmente.

“Triton permite alcanzar el máximo rendimiento del hardware con relativamente poco esfuerzo”, ha explicado hoy Tillet, de OpenAI, en una entrada de su blog. “Por ejemplo, puede utilizarse para escribir núcleos de multiplicación matricial FP16 que igualan el rendimiento de cuBLAS -algo que muchos programadores de GPU no pueden hacer- en menos de 25 líneas de código”. Los kernels de multiplicación matricial son un mecanismo de software del que dependen en gran medida los algoritmos de aprendizaje automático para realizar los cálculos.

Triton mejora el rendimiento de la IA optimizando tres pasos fundamentales del flujo de trabajo con el que un algoritmo de aprendizaje automático que se ejecuta en un chip NVIDIA procesa los datos.

El primer paso es la tarea de mover los datos entre los circuitos de memoria DRAM y SRAM de la GPU. Las GPUs almacenan la información en la DRAM cuando no se utiliza activamente y la transfieren a la memoria SRAM para realizar los cálculos. Cuanto más rápido se puedan transferir los datos entre los dos componentes, más rápido se ejecutarán los algoritmos de aprendizaje automático, razón por la que los desarrolladores dan prioridad a la optimización de este aspecto del flujo de trabajo computacional como parte de los proyectos de IA.

El proceso de optimización consiste en fusionar los bloques de datos que pasan de la DRAM a la SRAM en grandes unidades de información. Según OpenAI, Triton realiza esta tarea de forma automática, lo que ahorra tiempo a los desarrolladores.

El segundo paso del proceso de cálculo que optimiza Triton es la tarea de distribuir los bloques de datos entrantes en los circuitos SRAM de la GPU de forma que sea posible analizarlos con la mayor rapidez posible.

Uno de los principales retos de este paso es evitar los llamados conflictos de bancos de memoria. Así se denomina la situación en la que dos piezas de software intentan escribir datos en el mismo segmento de memoria de forma accidental. Los conflictos en los bancos de memoria retrasan los cálculos hasta que se resuelven, lo que significa que si se reduce la frecuencia de estos errores, los desarrolladores pueden acelerar el rendimiento de sus algoritmos de IA.

“Los datos deben ser almacenados manualmente en la SRAM antes de ser reutilizados y gestionados para minimizar los conflictos en los bancos de memoria compartidos al recuperarlos”, explicó Tillet.

La tercera y última tarea que Triton ayuda a automatizar no tiene que ver con las celdas de memoria de las GPU, sino con sus núcleos CUDA, los circuitos de computación responsables de realizar los cálculos sobre los datos almacenados en la memoria. Una sola GPU de NVIDIA para centros de datos tiene miles de estos circuitos. Permiten al chip realizar un gran número de cálculos al mismo tiempo. Para maximizar el rendimiento de un modelo de IA, los desarrolladores deben configurarlo para repartir los cálculos entre varios núcleos CUDA de forma que puedan realizarse al mismo tiempo en lugar de uno tras otro. Triton también automatiza esta tarea, aunque sólo en parte. La razón por la que no automatiza todo el flujo de trabajo es que OpenAI ha querido dar a los desarrolladores la flexibilidad necesaria para personalizar manualmente el proceso para sus proyectos.




Newsletter

Contacto | Diario TI es una publicación de MPA Publishing International Ltd.