- XKCD 1425 “Tasks” es una historieta sobre la intuición del desarrollo de software: aunque algo parezca fácil a simple vista, su dificultad real puede ser completamente distinta, y el 24 de septiembre de 2024 cumplió su 10.º aniversario
- En la historieta, “verificar si una foto es de un pájaro” era en ese momento un problema de nivel doctoral, pero hoy es una tarea que puede resolverse fácilmente con vision LLM, CLIP, ResNet+ImageNet y otras tecnologías
- Aunque algunos ejemplos concretos cambiaron con el avance tecnológico, para juzgar qué problemas son fáciles o difíciles sigue siendo necesaria una experiencia profunda
- Los LLM todavía tienen puntos débiles, como las matemáticas o la consulta de hechos, así que se vuelve más difícil juzgar intuitivamente qué tareas se les pueden confiar de forma estable
- Como muestra la limitación de análisis de imágenes en Claude Artifact, en la programación asistida por IA hay que entender no solo la capacidad del modelo, sino también restricciones de seguridad web como los encabezados CSP
La pregunta que XKCD 1425 sigue dejando 10 años después
- XKCD 1425 “Tasks” es una historieta que muestra que, en el desarrollo de software, sin experiencia es difícil juzgar qué tareas son fáciles y cuáles son difíciles
- Uno de sus ejemplos más representativos, “verificar si una foto es de un pájaro”, antes era un problema de nivel doctoral, pero hoy puede resolverse fácilmente con varias tecnologías de visión por computadora
- Aunque los ejemplos en sí cambiaron con el avance tecnológico, la capacidad de distinguir entre problemas fáciles y difíciles sigue requiriendo mucha experiencia
Las nuevas dificultades creadas por los LLM y la programación asistida por IA
- No es intuitivo juzgar qué tareas puede resolver un LLM de forma confiable
- Un LLM es un sistema informático, pero es débil en matemáticas
- Tampoco puede hacer consultas de hechos de manera confiable
- A medida que se expanden las herramientas de programación asistida por IA, más personas empiezan a crear su propio software personalizado
- Los nuevos programadores principiantes asistidos por IA se encuentran en una situación donde deben aprender rápido la diferencia entre tareas fáciles y difíciles
- Hay casos en los que Claude sí puede analizar imágenes, pero no se puede crear una herramienta de análisis de imágenes dentro de Claude Artifact
- Para entenderlo, hay que saber que los encabezados CSP usados al servir Artifacts bloquean las llamadas desde el código generado a APIs externas de LLM
1 comentarios
Opiniones de Hacker News
Sorprende cuánto se ha movido el criterio de lo que se considera impresionante en AI/ML
Hace 10 años, cuando salió el paper de GAN, todos estaban emocionados diciendo que la calidad de las imágenes generadas era increíble: https://arxiv.org/abs/1406.2661
La cantidad de avances desde entonces es realmente difícil de creer
Por ejemplo, como un niño puede hacer aritmética básica y una computadora también puede hacer aritmética básica, si el niño también puede hablar, entonces piensan que la computadora obviamente también podrá hablar
Pero las capacidades de una computadora son resultados alcanzados de una manera completamente distinta. Curiosamente, con los LLM el contorno de sus capacidades se volvió más parecido al humano, pero la forma en que llegan al resultado sigue siendo totalmente diferente
El ejemplo más terrible fueron unas 180 mil recetas en texto generado por usuarios que el cliente quería normalizar. Había que extraer cantidades, unidades, ingredientes, pasos, etc., para ajustar porciones, calcular información nutricional y demás
Hizo falta una montaña de expresiones regulares para el preprocesamiento y una cadena de herramientas con un ejército de pasantes normalizando todo uno por uno, y arreglar el caos que crearon los pasantes tomó todavía mucho más tiempo
Con LLM habría sido una tarea que se habría terminado casi de inmediato. En muchísimas tareas en las que había que convertir montones de basura total en datos utilizables, probablemente los LLM simplemente lo habrían hecho
El dolor de aquella época se alivió un poco porque, viendo esta tendencia, compré NVDA por entonces
Antes, los nuevos modelos de aprendizaje automático los discutían profesionales con contexto, así que podían entender por qué una mejora aparentemente pequeña era importante y cuáles eran expectativas razonables
Ahora, los nuevos modelos de aprendizaje automático, no, de “IA”, los evalúa el público general, que no conoce el trasfondo técnico pero sí las exageraciones de marketing. Aunque les des un excelente modelo de lenguaje que arrasa en benchmarks relacionados con el lenguaje, como sus expectativas son absurdas, siempre terminan decepcionados
Todavía me sorprende cuando un modelo de lenguaje logra hacer cosas relativamente “simples” de gramática y sintaxis, como entender a qué se refiere un pronombre. Pero la mayoría nunca ha pensado en el lenguaje ni en las computadoras desde esa perspectiva, así que no ve lo difícil e impresionante que es
Esta viñeta siempre me pareció un poco extraña. La humanidad pasó miles de años resolviendo problemas de navegación
Esta viñeta existe en un breve período en el que una tarea por fin se estaba “resolviendo” y la otra apenas empezaba
Si piensas que entrenar modelos consume mucha energía, también habría que pensar en lanzar flotas de cohetes para mantener una constelación de satélites
Varias veces en mi carrera, un requisito improvisado que salió en una reunión cambió las estimaciones de un proyecto por meses
Por ejemplo, el buscador de tiendas de un sitio web o app minorista normalmente solo calcula la distancia en línea recta entre tu ubicación actual y la tienda, y muestra en orden de distancia las tiendas dentro de cierto rango
Eso es un problema en lugares al oeste de Puget Sound, como Kingston cerca de Seattle. El buscador de tiendas de Walgreens muestra 10 tiendas al buscar cerca de Kingston, y 9 de ellas están del otro lado de Puget Sound, hacia Seattle. Si vas en auto, tienes que tomar un ferry de unos 20 dólares por trayecto y 30 minutos
La única que aparece al oeste es la tienda de Bainbridge Island, que no es un lugar al que alguien de Kingston iría normalmente. En realidad, la tienda de Silverdale está más cerca por distancia de carretera, pero un poco más lejos en línea recta
Las tiendas de Silverdale, 3 en Bremerton y 1 en Port Orchard están mucho más cerca de Kingston que las tiendas del lado de Seattle en términos de tiempo y costo de viaje, pero solo aparecen en el mapa si presionas el botón “load more”
La función para consultar inventario local es parecida: muchas veces dice que un producto está “cerca”, pero en realidad solo está disponible en tiendas al otro lado de Puget Sound
En cambio, algo que en apariencia es más simple podía tomar años porque no se había resuelto fácilmente ni se ofrecía como API. Claro que ahora ya es posible
La idea es que a alguien que no desarrolla le resulta difícil saber qué tareas resuelve trivialmente la tecnología actual y cuáles no puede resolver. Con el tiempo, la distribución entre ambas categorías cambia, pero el hecho de que la gente común no pueda saberlo fácilmente sigue igual
Todo lo que hacemos hoy también sería extremadamente difícil si hubiera que recrearlo desde cero, pero en la práctica no hace falta hacerlo desde cero, así que no es algo difícil de hacer
Se podría decir que “no envejeció bien”, pero creo que el punto real, “es difícil explicar la diferencia entre lo fácil y lo prácticamente imposible”, más bien se reforzó.
Casi irónicamente, las tareas difíciles y las fáciles se intercambiaron. ¿Quién lo habría previsto hace 10 años?
https://en.wikipedia.org/wiki/DeepFace
Si no recuerdo mal, unas semanas o meses después salió un paper de Yahoo/Flickr sobre este problema, es decir, la identificación de aves, y a partir de ahí todo pareció explotar de la noche a la mañana. Sé que en realidad no fue así, pero a mí me lo pareció.
Entender qué tareas pueden resolver de forma confiable los LLM y cuáles no sigue siendo muy difícil y poco intuitivo.
Hace poco mi hija estaba preparando una presentación y me preguntó: “Papá, ¿puedes encontrarme una foto que forme la palabra HELLO con verduras?”.
Pensé: “Claro que sí, esto es trabajo para ChatGPT”, pero aunque ChatGPT puede crear una imagen de un gato con traje espacial bebiendo un martini, definitivamente no pudo crear una imagen que formara HELLO con verduras.
Al final hice que generara por separado imágenes de cada letra del alfabeto hecha con verduras, y mi hija las pegó para formar la palabra que necesitaba en la presentación.
Es exactamente la misma razón por la que no puede contar bien las letras de STRAWBERRY. No es porque no entienda el concepto de frutas o verduras, ni porque no comprenda conceptos complejos como metáforas o memes.
El modelo no ve “hello” como una palabra formada por letras individuales, sino como un solo token; en gpt-4o, como el token con ID 24912. Conoce el significado de ese token y su relación con otros tokens, pero fundamentalmente no sabe cuáles son las letras que componen esa palabra, salvo que lo haya aprendido por separado o aproveche alguna relación accidental adicional en los datos de entrenamiento.
Este es el resultado de usar flux-pro en Replicate con “vegetables spelling out the word "HELLO"”: https://ibb.co/1RVKmdk
https://ideogram.ai/assets/image/lossless/response/v_LgyXI1Q...
https://ideogram.ai/assets/image/lossless/response/V4RRDJZJS...
La zanahoria de la primera imagen da un poco de risa.
Bonus de Hacker News: https://ideogram.ai/assets/image/lossless/response/SW0B7y4jR...
https://i.imgur.com/mvnusFd.jpeg
Copié el prompt tal cual del comentario de arriba: https://chatgpt.com/share/66f530b0-3fb8-800a-8af9-8a3e48a31a...
Basta con detectar si la foto contiene colores de aves comunes y lanzarlo. Después de aplastar a la competencia, lo arreglas más tarde.
Hice esta serie de tutoriales para entender el contexto y los fundamentos del deep learning, y la primera clase consistía justamente en crear el clasificador de aves de esta tira.
Fue realmente fácil y divertido, y todo el curso es excelente. Lo recomiendo mucho para cualquiera que tenga experiencia en programación y quiera una introducción sólida al deep learning.
https://course.fast.ai/
Nadie lo menciona, pero los LLM avanzaron tanto en la primera parte de la solicitud como en la segunda.
ChatGPT te escribe una función
is_point_in_national_parky hasta te indica el shapefile correspondiente en unos 30 segundos. Es cientos de veces más rápido que las “unas horas” de la tira.Los LLM de visión son realmente sorprendentes.
Tuve un proyecto que consistía en describir y catalogar más de 20 mil imágenes.
Con el método tradicional hecho por personas, habría tomado meses y costado una fortuna. Las descripciones tenían que tener calidad apta para que las leyeran clientes.
La API de visión de OpenAI lo procesó por unos centavos por imagen, y el costo total probablemente fue de menos de 200 dólares.
Me pregunto si llegará el día en que la alfabetización tecnológica alcance un punto crítico tal que este tipo de malentendidos desaparezcan en gran medida.
Hace 10 años habría dicho que sí, pero ahora creo que los avances en UX/UI y la conversión de todo en apps han aislado a la persona promedio de los detalles.
Desde la perspectiva de cada producto, eso es algo bueno, pero en conjunto puede generar expectativas poco realistas. He escuchado a gente joven preguntar “¿por qué x simplemente no hace y?”, una pregunta que antes habría esperado oír solo de una generación de padres muy poco técnica.
En los 80, las computadoras eran casi magia para mucha gente, pero la mayoría no tenía necesidad de interactuar realmente con ellas. Sus expectativas sobre las computadoras tenían tan poco impacto como mis expectativas sobre la vida extraterrestre.
Pero temo que el pensamiento mágico sobre la tecnología tenga consecuencias mayores, tanto a nivel personal como social.
@simonw, si de casualidad estás leyendo esto, me pregunto si podría pedirte un pequeño favor.
¿Sería demasiado pedir que hicieras streaming en vivo de alguna tarea de programación que puedas compartir públicamente?
Siento que habría muchísimo que aprender, especialmente en torno al ecosistema actual: Python, datos en SQLite y JavaScript.