1 pontos por GN⁺ 2024-09-26 | 1 comentários | Compartilhar no WhatsApp
  • XKCD 1425 “Tasks” é uma tirinha sobre a intuição do desenvolvimento de software, mostrando que algo pode parecer fácil à primeira vista, mas ter uma dificuldade real completamente diferente; em 24 de setembro de 2024, ela completou 10 anos
  • Na tirinha, “verificar se uma foto é de um pássaro” era, na época, um problema de nível de doutorado, mas hoje se tornou uma tarefa fácil de resolver com vision LLMs, CLIP, ResNet+ImageNet etc.
  • O exemplo específico mudou com o avanço da tecnologia, mas ainda é necessária experiência profunda para julgar quais problemas são fáceis ou difíceis
  • LLMs têm áreas fracas, como matemática ou consulta factual, tornando ainda mais difícil julgar intuitivamente quais tarefas podem ser delegadas a eles de forma confiável
  • Na programação assistida por IA, como no caso da limitação de análise de imagens do Claude Artifact, é preciso entender não apenas as capacidades do modelo, mas também restrições de segurança web como cabeçalhos CSP

A pergunta que o XKCD 1425 ainda deixa 10 anos depois

  • XKCD 1425 “Tasks” é uma tirinha que mostra como, no desenvolvimento de software, é difícil julgar sem experiência quais tarefas são fáceis e quais são difíceis
  • O exemplo representativo da tirinha, “verificar se uma foto é de um pássaro”, era no passado um problema de nível de doutorado, mas hoje pode ser resolvido facilmente com várias tecnologias de visão computacional
  • O exemplo em si mudou com o avanço da tecnologia, mas a capacidade de distinguir problemas fáceis de problemas difíceis ainda exige muita experiência

Novas dificuldades criadas por LLMs e pela programação assistida por IA

  • Não é intuitivo julgar quais tarefas um LLM consegue resolver de forma confiável
    • LLMs são sistemas computacionais, mas são fracos em matemática
    • Também não realizam consultas factuais de forma confiável
  • Com a disseminação de ferramentas de programação assistida por IA, mais pessoas começaram a criar seus próprios softwares customizados
  • Os novos programadores iniciantes assistidos por IA se encontram em uma situação em que precisam aprender rapidamente a diferença entre tarefas fáceis e difíceis
  • Há o caso em que o próprio Claude consegue analisar imagens, mas não é possível criar uma ferramenta de análise de imagens no Claude Artifact
    • Para entender isso, é preciso saber que os cabeçalhos CSP usados ao servir Artifacts bloqueiam chamadas externas à API de LLM pelo código gerado

1 comentários

 
GN⁺ 2024-09-26
Opiniões no Hacker News
  • É impressionante como os critérios do que é considerado impressionante em AI/ML mudaram tanto
    Há 10 anos, quando o artigo sobre GANs saiu, todo mundo ficou empolgado dizendo que a qualidade das imagens geradas era incrível: https://arxiv.org/abs/1406.2661
    A quantidade de progresso desde então é realmente difícil de acreditar

    • Há uma piada que ficou na memória: pessoas comuns costumam interpretar mal as capacidades dos computadores convertendo-as em equivalentes humanos
      Por exemplo, uma criança consegue fazer aritmética básica e um computador também consegue fazer aritmética básica; então, se a criança também consegue falar, as pessoas pensam que o computador obviamente também deveria conseguir falar
      Mas as capacidades do computador são resultados alcançados de uma forma completamente diferente. Curiosamente, com os LLMs o contorno das capacidades ficou mais próximo do humano, mas a forma de chegar aos resultados ainda é totalmente diferente
    • Nem consigo expressar quanto trabalho eu teria poupado no meu negócio 10–15 anos atrás se existissem os LLMs de hoje
      O exemplo mais terrível foram cerca de 180 mil receitas em texto gerado por usuários que o cliente queria normalizar. Era preciso extrair quantidades, unidades, ingredientes, etapas etc. para ajustar porções, calcular informações nutricionais e assim por diante
      Foi necessária uma cadeia de ferramentas com uma montanha de regex para pré-processamento e um exército de estagiários normalizando tudo item por item; e levou ainda muito mais tempo para corrigir a bagunça criada pelos estagiários
      Com um LLM, teria sido uma tarefa concluída quase imediatamente. Em inúmeros trabalhos em que era preciso transformar um monte de lixo completo em dados utilizáveis, é bem provável que o LLM simplesmente desse conta
      A dor daquela época foi um pouco amenizada por eu ter visto essa tendência e comprado NVDA por volta daquele período
    • Depois que a OpenAI lançou o ChatGPT, todo mundo passou a esperar dinheiro e fechou suas pesquisas, então a sensação é de que a velocidade de avanço caiu de repente
    • A mudança de expectativas parece estar muito ligada à mudança do público
      Antigamente, novos modelos de aprendizado de máquina eram discutidos por profissionais com conhecimento de base, então eles conseguiam entender por que uma melhoria aparentemente pequena era grande e quais expectativas eram razoáveis
      Hoje, novos modelos de aprendizado de máquina, ou melhor, de “IA”, são avaliados pelo público geral, que não conhece o contexto técnico, mas conhece exageros de marketing. Mesmo que você entregue um excelente modelo de linguagem que supera benchmarks relacionados a linguagem, as expectativas são absurdas, então ele sempre decepciona
      Ainda me surpreendo quando um modelo de linguagem consegue fazer coisas relativamente “simples” de gramática e sintaxe, como entender a que referente um pronome se refere. Mas a maioria das pessoas nunca pensou em linguagem ou computadores por esse ângulo, então não vê o quanto isso é difícil e impressionante
    • A frase “as pessoas superestimam o que dá para fazer em 1 ano e subestimam o que dá para fazer em 5 ou 10 anos” também parece se encaixar bem nas expectativas sobre IA
  • Esse quadrinho sempre me pareceu meio estranho. A humanidade passou milhares de anos resolvendo problemas de navegação
    O quadrinho existe em um breve período em que uma tarefa finalmente foi “resolvida” e outra estava apenas começando
    Se você acha que treinar modelos consome muita energia, também deve considerar o lançamento de uma frota de foguetes para manter uma constelação de satélites

    • Entendi como uma fala sobre a diferença no que pessoas que não são técnicas percebem como difícil
      Várias vezes na minha carreira, uma exigência improvisada surgida em uma reunião mudou as estimativas de um projeto em meses
    • Mesmo em problemas de navegação ainda há dificuldades que a maioria dos apps não trata direito
      Por exemplo, o localizador de lojas de sites ou apps de varejo geralmente calcula apenas a distância em linha reta entre a localização atual e a loja, e mostra as lojas dentro de um certo raio ordenadas por distância
      Isso vira um problema em lugares a oeste de Puget Sound, como Kingston, perto de Seattle. O localizador da Walgreens mostra 10 lojas em uma busca perto de Kingston, e 9 delas ficam do outro lado de Puget Sound, na região de Seattle. Se você for de carro, precisa pegar uma balsa de cerca de 20 dólares por trecho e 30 minutos
      A única mostrada a oeste é a loja de Bainbridge Island, que não é um lugar plausível para alguém de Kingston ir. Na prática, a loja de Silverdale é mais próxima por distância rodoviária, mas fica um pouco mais distante em linha reta
      Silverdale, 3 lojas em Bremerton e 1 em Port Orchard são muito mais próximas de Kingston em tempo e custo de deslocamento do que as lojas do lado de Seattle, mas só aparecem no mapa se você apertar o botão “load more”
      A função de verificar estoque local é parecida: muitas vezes aparece que o produto está “perto”, mas na prática só existe em lojas do outro lado de Puget Sound
    • Isso é exatamente próximo do ponto principal. Para pessoas comuns, algo como navegação parece muito mais complexo, mas hoje qualquer um consegue fazer em poucas horas
      Por outro lado, uma tarefa que parece mais simples podia levar anos porque ainda não tinha sido resolvida facilmente nem oferecida como API. Claro, agora isso já é possível
    • Acho que o ponto não é GPS, e sim GIS. Ou seja, não é um problema de navegação, mas o problema “este ponto está dentro deste polígono?”, e isso é um pouco mais fácil
    • Essa observação não contradiz o ponto do quadrinho. No geral, ele não fala de quais tarefas são difíceis, mas de o que é difícil com a tecnologia atual
      Quer dizer que, para quem não é desenvolvedor, é difícil saber quais tarefas a tecnologia atual resolve de forma trivial e quais ela não consegue resolver. Com o tempo, a distribuição entre as duas categorias muda, mas o fato de isso não ser fácil de perceber para o público geral permanece
      Tudo que fazemos hoje também seria extremamente difícil se tivéssemos que reconstruir do zero, mas, na prática, não precisamos reconstruir do zero, então não é algo difícil de fazer
  • Dá para dizer que “não envelheceu bem”, mas acho que o ponto de verdade — “é difícil explicar a diferença entre o que é fácil e o que é praticamente impossível” — ficou ainda mais forte
    Quase ironicamente, as tarefas difíceis e as fáceis trocaram de lugar. Quem teria previsto isso há 10 anos?

    • Acho que envelheceu bem. Na prática, esse problema ficou fácil 5 anos depois da publicação
    • Vale ver o texto alternativo do próprio xkcd: nos anos 60, Marvin Minsky encarregou alguns alunos de graduação de criar, durante o verão, um programa que identificasse objetos em uma cena usando uma câmera. Ele achava que o problema estaria resolvido até o fim do verão, mas, meio século depois, ainda estamos lidando com ele
    • Mesmo em 2014, já estava claro que, para identificar pássaros, era preciso muito dado de treinamento de aves, mais do que novas pesquisas em si
      https://en.wikipedia.org/wiki/DeepFace
    • Pessoalmente, não consigo me livrar da sensação de que foi justamente essa tirinha que disparou a revolução da IA
      Se minha memória não falha, algumas semanas ou meses depois saiu um artigo do pessoal do Yahoo/Flickr sobre esse problema — identificar pássaros — e, a partir daí, pareceu que tudo explodiu da noite para o dia. Sei que na prática não foi assim, mas para mim pareceu
    • Olhando para a quantidade de computação e energia envolvida em cada tarefa, ainda é verdade que os problemas que parecem simples para humanos são os mais difíceis de resolver
  • Entender quais tarefas os LLMs conseguem resolver de forma confiável, e quais não, continua sendo muito difícil e pouco intuitivo
    Um tempo atrás, minha filha estava preparando uma apresentação e perguntou: “Pai, você consegue achar uma foto em que a palavra HELLO seja formada com legumes?”
    Pensei: “Claro, com certeza, isso é trabalho para o ChatGPT”, mas o ChatGPT consegue criar a imagem de um gato de traje espacial tomando martíni, e ainda assim definitivamente não conseguia criar uma imagem de HELLO feito de legumes
    No fim, fiz ele criar separadamente imagens de cada letra do alfabeto feita de legumes, e minha filha juntou tudo para formar a palavra que usaria na apresentação

    • Essas histórias são sempre divertidas quando você sabe como o ChatGPT realmente funciona. Quando se entende tokenização, fica óbvio por que isso não é uma tarefa adequada para o ChatGPT
      É exatamente o mesmo motivo pelo qual ele não consegue contar direito as letras de STRAWBERRY. Não é por não conhecer o conceito de frutas ou legumes, nem por não entender conceitos complexos como metáforas ou memes
      O modelo não vê “hello” como uma palavra composta de caracteres individuais, mas como um único token — no caso do gpt-4o, o token de ID 24912. Ele conhece o significado desse token e suas relações com outros tokens, mas fundamentalmente não sabe quais são as letras que compõem a palavra. Exceto quando aprendeu isso separadamente ou quando consegue aproveitar alguma relação adicional acidental nos dados de treinamento
    • Com flux.1, é possível. Pelo que sei, no momento é o melhor modelo de imagem para lidar com texto
      Resultado usando flux-pro no Replicate com “vegetables spelling out the word "HELLO"”: https://ibb.co/1RVKmdk
    • Ideogram v2 saiu assim na primeira tentativa:
      https://ideogram.ai/assets/image/lossless/response/v_LgyXI1Q...
      https://ideogram.ai/assets/image/lossless/response/V4RRDJZJS...
      A cenoura da primeira imagem é meio engraçada
      Bônus Hacker News: https://ideogram.ai/assets/image/lossless/response/SW0B7y4jR...
    • Grok 2 Mini Beta se saiu bem decentemente
      https://i.imgur.com/mvnusFd.jpeg
    • Acabei de testar com o ChatGPT 4o, e já no primeiro prompt saiu um resultado bom o suficiente
      Copiei o prompt exatamente do comentário acima: https://chatgpt.com/share/66f530b0-3fb8-800a-8af9-8a3e48a31a...
  • Basta lançar detectando se a foto contém cores comuns de pássaros. Depois de destruir os concorrentes, você corrige isso mais tarde

  • Fiz esta série de tutoriais para pegar o contexto e os fundamentos de deep learning, e a primeira aula era justamente construir o classificador de pássaros dessa tirinha
    Foi realmente fácil e divertido, e o curso inteiro é excelente. Recomendo muito para quem tem base em programação e quer uma introdução sólida a deep learning
    https://course.fast.ai/

  • Ninguém comenta isso, mas os LLMs evoluíram tanto na primeira parte da solicitação quanto na segunda
    O ChatGPT escreve a função is_point_in_national_park e ainda indica o shapefile correspondente em cerca de 30 segundos. Ou seja, centenas de vezes mais rápido do que as “algumas horas” mencionadas na tirinha

  • LLMs de visão são realmente impressionantes
    Tive um projeto para descrever e catalogar mais de 20 mil imagens
    Pelo método tradicional, com humanos fazendo o trabalho, isso teria levado meses e custado uma fortuna. As descrições precisavam ter qualidade suficiente para serem lidas por clientes
    A API de visão da OpenAI processou tudo por alguns centavos por imagem, e o custo total provavelmente ficou abaixo de 200 dólares

    • Fico curioso se houve revisão humana para verificar se as descrições da OpenAI estavam corretas
  • Fico me perguntando se algum dia a alfabetização tecnológica vai atingir um ponto crítico em que esse tipo de mal-entendido praticamente desapareça
    Dez anos atrás eu teria dito que sim, mas hoje acho que a evolução de UX/UI e a transformação de tudo em app isolaram a pessoa média dos detalhes
    Do ponto de vista de cada produto, isso é algo bom, mas, no geral, pode gerar expectativas pouco realistas. Já ouvi pessoas jovens perguntando “por que x simplesmente não faz y?”, uma pergunta que eu antes achava que só ouviria de uma geração de pais muito pouco técnica
    Nos anos 80, computadores eram quase mágicos para muita gente, mas a maioria não precisava de fato interagir com eles. As expectativas sobre computadores tinham tão pouco impacto quanto as minhas expectativas sobre vida extraterrestre
    Mas temo que o pensamento mágico em relação à tecnologia tenha consequências maiores, tanto pessoalmente quanto socialmente

  • @simonw, se por acaso você estiver lendo isto, queria saber se posso fazer um pequeno pedido
    Seria pedir demais que você fizesse live streaming de alguma tarefa de programação que possa ser compartilhada publicamente?
    Acho que haveria muito a aprender, especialmente no ecossistema atual em torno de Python, dados em SQLite e JavaScript