← Últimos artigos
🤖 AI

ML in a Box: Analyzing Containerization Practices in Open Source ML Projects

Este artigo apresenta o primeiro estudo empírico em larga escala de 1.993 Dockerfiles de ML de código aberto, revelando que, embora os contêineres desempenhem papéis distintos nos fluxos de trabalho de ML, eles são frequentemente grandes e ineficientes devido a reconstruções frequentes desencadeadas pela experimentação, motivando a identificação de sete padrões de refatoração específicos para melhorar a eficiência da construção e reduzir a pegada.

Autores originais: Faten Jebari, Emna Ksontini, Amine Barrak, Wael Kessentini

Publicado 2026-07-14
📖 6 min de leitura🧠 Leitura aprofundada

Autores originais: Faten Jebari, Emna Ksontini, Amine Barrak, Wael Kessentini

Artigo original dedicado ao domínio público sob CC0 1.0 (http://creativecommons.org/publicdomain/zero/1.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você é um chef comandando uma cozinha tecnológica e massiva. No mundo do Aprendizado de Máquina (ML), suas "receitas" são o código, seus "ingredientes" são dados e modelos, e sua "cozinha" é um contêiner. Um contêiner é como uma caixa de cozinha autossuficiente e portátil que contém tudo o que você precisa para cozinhar um prato específico, garantindo que ele tenha o mesmo sabor, esteja você cozinhando em Nova York, Tóquio ou em uma nave espacial.

Por muito tempo, as pessoas sabiam que essas caixas de cozinha eram úteis. Mas ninguém realmente sabia o tamanho delas, quanto tempo levavam para serem embaladas ou com que frequência os chefs tinham que jogar a caixa inteira fora e começar do zero só porque mudaram um único pote de tempero.

Uma equipe de pesquisadores decidiu espiar dentro de 1.993 dessas caixas de cozinha de ML de 392 projetos diferentes para ver o que realmente estava acontecendo. Aqui está o que eles encontraram, servido com uma dose de realidade.

O Tamanho das "Caixas de Cozinha": É um Grande Problema

Primeiro, eles pesaram as caixas. Você pode pensar que um contêiner é leve e ágil, mas essas caixas de ML são gigantes.

  • Em média, um contêiner pesa 10,27 GB. Isso é como carregar uma biblioteca inteira de enciclopédias em sua mochila apenas para fazer um sanduíche.
  • As caixas de "Treinamento" (onde a IA aprende) são as mais pesadas, com média de 17,25 GB. Alguns desses monstros chegam a atingir 125 GB!
  • As caixas de "Inferência" (onde a IA apenas realiza o trabalho) são menores, cerca de 1,72 GB, mas ainda não são exatamente de bolso.

E embalar essas caixas? Isso leva tempo. O "build frio" médio (embalar uma caixa do zero) leva 8,84 minutos. Para as grandes caixas de treinamento, pode levar mais de 14 minutos. É muito tempo de espera apenas para ver se seu código funciona.

O Momento "Ops": Por Que Jogamos as Caixas Fora

Aqui está a parte complicada. Em uma cozinha normal, se você muda uma receita, basta ajustar as instruções. Mas no mundo do ML, a cozinha trabalha com um sistema rigoroso de "camadas". Imagine construir uma torre de blocos. Se você mudar a cor do terceiro bloco, terá que desmontar o terceiro, o quarto, o quinto e todos até o topo, mesmo que os blocos do topo não tenham mudado nada.

Os pesquisadores descobriram que 44,4% de todas as mudanças que os desenvolvedores faziam em seus projetos disparavam uma reconstrução total do contêiner. Isso significa que, quase metade das vezes, eles estavam jogando fora todo aquele trabalho duro e começando do zero.

O que causou o descarte?
Não era geralmente a receita (o Dockerfile) em si. Eram os ingredientes!

  • 96,4% das reconstruções aconteceram porque alguém mudou um arquivo que foi copiado dentro da caixa (como um conjunto de dados ou um arquivo de código).
  • Apenas 1,1% das reconstruções foram causadas pela mudança nas instruções reais de como construir a caixa.

O Desperdício: 70% do Trabalho é para Nada

Esta é a parte mais triste da história. Quando a "torre de camadas" quebra, a cozinha tenta reutilizar os blocos que já construiu. Mas os pesquisadores descobriram que 71% do trabalho foi desperdiçado.

  • Pense nisso da seguinte forma: Você gasta 10 minutos construindo uma torre de blocos. Você derruba o terceiro bloco. Você tenta reutilizar os dois primeiros blocos, mas então tem que reconstruir o restante. No final, você só reutilizou cerca de 30% do seu esforço. Os outros 70% foram apenas refazer um trabalho que você já tinha feito.

Por que isso acontece?
Depende do que você está mudando.

  • Se você está ajustando o experimento (mudando o cérebro ou os dados da IA), você é o mais propenso a quebrar a torre. Isso acontece 46% das vezes para as caixas de treinamento.
  • Se você está atualizando a infraestrutura (como o encanamento ou a eletricidade da cozinha), você quase sempre quebra a torre e perde quase todo o seu progresso.

A Boa Notícia: Chefs Inteligentes Encontraram Atalhos

Apesar da bagunça, os pesquisadores descobriram que alguns chefs inteligentes já estavam resolvendo esses problemas. Eles observaram as "melhores" cozinhas (aquelas que desperdiçavam menos tempo) e encontraram 7 truques específicos que elas usavam para deter o desperdício. Estes não são apenas palpites; são mudanças reais que os desenvolvedores fizeram e que realmente funcionaram.

Aqui estão os 7 truques:

  1. Não embale os mantimentos: Em vez de copiar enormes conjuntos de dados dentro da caixa, apenas diga à caixa onde encontrá-los quando ela começar a cozinhar.
  2. Não embale o modelo: O mesmo vale para o próprio modelo de IA. Não o incorpore na caixa; carregue-o de fora quando necessário.
  3. Mova o trabalho pesado: Se você precisar baixar um modelo grande, faça isso cedo na receita. Dessa forma, se você mudar um arquivo pequeno depois, o download grande permanecerá em cache (salvo).
  4. Divida a cozinha: Se você precisa de uma caixa tanto para CPUs quanto para GPUs, não faça uma caixa gigante com tudo. Faça duas caixas menores e especializadas.
  5. Escolha as ferramentas certas: Não instale a versão "GPU" de uma ferramenta se você só precisa da versão "CPU". Isso economiza um espaço enorme.
  6. Mova o que é volátil: Se você altera seus arquivos de configuração com frequência, coloque-os depois das grandes instalações na receita, para que não quebrem as camadas pesadas.
  7. Não baixe todo o histórico: Ao buscar código da internet, não baixe o histórico inteiro do projeto. Pegue apenas o snapshot (instantâneo) mais recente.

O Veredito Final

O artigo não diz que esses problemas estão "resolvidos". Ele diz que, no momento, os contêineres de ML são enormes, lentos e frágeis. Os desenvolvedes estão desperdiçando uma quantidade massiva de tempo (cerca de 70% de seu esforço de reconstrução) porque estão embalando coisas demais na caixa e quebrando o cache cedo demais.

Mas a boa notícia é que sabemos como consertar isso. Ao usar esses 7 truques, as equipes podem tornar seus contêineres menores e suas construções mais rápidas. Não é mágica; é apenas uma melhor organização. Os pesquisadores mediram tudo isso construindo as caixas e contando os minutos, então sabemos que esses números são reais. Na próxima vez que vir um projeto de aprendizado de máquina, lembre-se: não é apenas sobre o código; é sobre como você embala a cozinha.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →