La programación y la inteligencia artificial

Pedro Luis Martín Olivares – Formada en 2015 como una organización sin fines de lucro, OpernAI es un laboratorio en San Francisco de inteligencia artificial (IA) que ha desarrollado un verdadero monstruo. Generative Pre-Trained Transformer 3, conocido como GPT3, es un modelo de lenguaje, que se entrenó en una masa de texto sin precedentes para enseñarle la probabilidad de que una palabra dada siga a las palabras anteriores. Cuando se le da una “sugerencia” de texto breve, produce una prosa asombrosamente coherente escrita en un estilo similar.

El lenguaje es crucial para dar sentido al mundo cotidiano, para el ser humano es la herramienta más efectiva para comunicarse y compartir ideas. GPT-3 puede crear cualquier cosa que tenga una estructura de idioma, puede responder preguntas, escribir ensayos e incluso crear códigos de computadora. Sin embargo, el acceso a GPT-3 está restringido. En primer lugar, dice Jack Clark, exjefe de políticas de la organización, podría usarse para producir noticias falsas en masa. Pero Openai también sabe que GPT-3 es comercialmente valioso. El año pasado, el laboratorio comenzó a permitir que las empresas examinadas compraran su producción para usos aprobados. Estos incluyen producir respuestas a preguntas mecanografiadas sobre productos y potenciar el discurso de personajes de ficción en mundos virtuales. Pero quizás lo más importante es que GPT-3 también se puede usar para escribir códigos de computadora, es decir, programarlas.

Varias empresas ya están usando GPT-3 y su predecesor GPT-2 para agregar IA al software que sus programadores usan para escribir códigos. Gran parte de lo que escriben estos programadores ya se ha escrito en otro lugar en algún momento del pasado. Esto significa que al introducir montones de código preexistente en dichos paquetes, se les puede entrenar para predecir las líneas que un programador necesita a continuación. A medida que un programador escribe, en la pantalla aparecen posibles «finalizaciones de código» de una o unas pocas líneas.
Una empresa que ha creado una función de finalización de inteligencia artificial de este tipo es Tabnine, de Tel Aviv. Tabnine usó GPT-2 para alimentar códigos a su software de programación, también llamado Tabnine, que este software ganó una especie de «conocimiento mundial». Esto describe una noción bastante buena de cómo se comporta el mundo, al menos cuando se trata de programación. El software Tabnine puede detectar que un usuario ha comenzado a escribir códigos para manejar, digamos, órdenes de compra. Luego, sugerirá un código para mostrar los nombres y precios de los productos, así como un código para crear campos que se completarán con cantidades, pagos y datos de entrega. Funciona a pesar de que Tabnine nunca recibió instrucciones específicas para hacerlo.

Algunas secuencias de codificación son raras. En estos casos, Tabnine alarga su lista emergente de finalizaciones sugeridas para aumentar la probabilidad de ofrecer una útil. Al hacer clic en uno que sea apropiado, el programador le enseña a Tabnine a funcionar mejor. La versión profesional de Tabnine parece «casi inteligente» en su capacidad para comprender la intención de un programador, según lo expresa Dror Weiss, el jefe de la empresa.

Tabnine no está solo en el mercado, el pasado 17 de junio Microsoft lanzó una nueva versión de una función de finalización de IA que se integra en un software de codificación llamado Visual Studio. La versión original, lanzada en 2018 y denominada IntelliCode, se entrenó en unos pocos miles de repositorios en línea en los que se almacena el código para proyectos de programación. Microsoft entrenó su sistema actualizado en más de medio millón de tales repositorios. Amanda Silver, una de las ejecutivas a cargo de Visual Studio, dice que esas grandes cantidades adicionales de material de entrenamiento permiten que la nueva versión recopile mejor la intención de las sugerencias en el código que un programador ya ha escrito.

El propósito es ahorrar tiempo. Kite, una empresa de San Francisco, afirma que sus productos de finalización de inteligencia artificial reducen el número de pulsaciones de teclas necesarias para algunas tareas a casi la mitad. Sin embargo, las ganancias generales de eficiencia son menores. Vitaly Khudobakhshov, jefe de productos de inteligencia artificial en la oficina de JetBrains en San Petersburgo, un desarrollador checo de software de programación, ve un ahorro de tiempo del 10% al 20%. En opinión de Sharif Shameem, el jefe de Debuild, una empresa de San Francisco que utiliza GPT-3 para ayudar a crear sitios web, la tecnología también reduce la «sobrecarga cognitiva». Seleccionar entre múltiples opciones es menos exigente que idear soluciones desde cero.

Los que escriben códigos tampoco son los únicos beneficiarios. Los desarrolladores pasan casi tanto tiempo buscando errores en lo que han escrito como escribiendo. Un modelo de aprendizaje automático que está construyendo Brendan Dolan-Gavitt de la Universidad de Nueva York puede acelerar el proceso de depuración.

Para entrenarlo, Dolan-Gavitt está recopilando código etiquetado como defectuoso por GitHub, una subsidiaria de Microsoft que alberga la mayor colección de código de «fuente abierta» no propietario del mundo. Según una estimación, GitHub contiene al menos mil millones de fragmentos de código identificados como portadores de un error. El modelo de Dolan-Gavitt, llamado provisionalmente GPT-CSRC, procesará ese código antes de noviembre.
Otro modelo de detección de errores está en desarrollo en el Instituto Tecnológico de Massachusetts (MIT). Shashank Srikant, un estudiante de doctorado que trabaja en el proyecto, dice que el objetivo es entrenar el modelo para que reconozca no solo errores involuntarios, sino también vulnerabilidades insertadas maliciosamente. Los empleados deshonestos a veces están detrás de engaños de este tipo, que tienen la intención de hacer cosas como obtener acceso en secreto a las contraseñas. Sin embargo, la práctica es más común en proyectos de programación de código abierto en los que cualquiera puede contribuir. Los revisores humanos suelen tener dificultades para detectar estas «inyecciones de vulnerabilidad», como a veces se las conoce.

La razón, dice Srikant, es que, en un intento por dejar pasar su trabajo a los revisores, los codificadores tortuosos a menudo usan nombres engañosos, pero puramente cosméticos para cosas como las variables manejadas por un programa. Por lo tanto, el equipo del MIT está entrenando su modelo para señalar las discrepancias entre las etiquetas de los fragmentos y su funcionalidad real. La dificultad es que los buenos ejemplos de tales travesuras son mucho más raros que los errores ordinarios.
Sin embargo, hay una señal adicional de que puede estar acechando una inyección de vulnerabilidad. Los codificadores maliciosos a menudo los ocultan escribiendo código superfluo destinado a confundir a los revisores, por lo que Srikant también está alimentando el modelo del MIT con ejemplos de este tipo de código potencialmente revelador, que describe como «colgando» y «muerto».

El claro destino de toda esta actividad es la creación de programadores de software que puedan, como la variedad humana, tomar una idea y convertirla en código. Un sitio web creado por el Dr. Dolan-Gavitt proporciona una idea de lo que vendrá. Llamado «Este código no existe», pide a los programadores que determinen si las secciones de código de decenas de líneas fueron escritas por un humano o un modelo basado en GPT-2 que él mismo ha construido. De más de 329.200 evaluaciones realizadas, menos del 51% han sido correctas. Eso es solo un tono mejor que el aleatorio.

Resulta que las máquinas ahora pueden escribir secuencias de código funcional incluso más largas. Como ha tuiteado John Carmack, un destacado ingeniero informático estadounidense, reflexionar sobre este desarrollo «genera un ligero escalofrío». Como era de esperar, varias empresas ven una oportunidad de negocio.

Uno es una firma parisina llamada Sourceai. Se trata de diseñar software en el que los usuarios escriben, en lenguaje natural, una solicitud de código, como algo que calculará el valor de los números en una fórmula matemática llamada secuencia de Fibonacci. Al acceder a GPT-3, el software del mismo nombre de Sourceai produce las líneas de código deseadas en una variedad de lenguajes de programación.

Debuild está probando la misma idea. Está intentando crear un software que permita a los no programadores describir, en un lenguaje sencillo, un programa que quieren crear y luego escribirlo. Una solicitud de, digamos, una aplicación de barbería que permite a los clientes elegir un barbero y un espacio para citas ya puede producir más o menos eso. Shameem dice que el objetivo es eliminar las minucias de la mecanografía de código, para que las personas puedan concentrarse en lo que quieren que se haga, no en cómo instruir a las computadoras para que lo hagan.

Por su parte, Microsoft también está utilizando GPT-3 para impulsar lo que llama programación «sin código / código bajo». Charles Lamanna, quien dirige el trabajo, prevé un futuro brillante de software más barato creado por «desarrolladores ciudadanos» no capacitados. Algunas personas temen un resultado alternativo y más oscuro.

Sabías que puedes leer este artículo  y otros en Telegram

Telegram Messenger 1 - Black Friday: ofertas para la comunidad de Bitcoin y criptomonedas

Pedro Luis Martín Olivares
Economía y Finanzas

Sé el primero en comentar en «La programación y la inteligencia artificial»

Deja un comentario

Tu dirección de correo electrónico no será publicada.


*


*