Simple Science

Ciência de ponta explicada de forma simples

# Informática# Engenharia de software

Analisando Cadeias de Suprimento de Pacotes de Aprendizado Profundo

Um estudo sobre as dependências dos pacotes TensorFlow e PyTorch no ecossistema PyPI.

― 6 min ler


Análise da Cadeia deAnálise da Cadeia deSuprimentos com DeepLearningPyTorch.dependências dos pacotes TensorFlow eEstudo revela insights sobre as
Índice

A tecnologia de deep learning (DL) agora é parte chave de várias tarefas, como reconhecimento facial, tradução e geração de código de computador. Pra fazer essa tecnologia funcionar, os desenvolvedores contam com frameworks de DL. Esses frameworks são ferramentas de software que ajudam a desenhar e treinar modelos de forma mais fácil. TensorFlow e PyTorch são os frameworks de DL mais utilizados.

Tem muitos Pacotes de DL disponíveis no PyPI (Python Package Index), uma plataforma onde os desenvolvedores podem encontrar e compartilhar pacotes de software. Esses pacotes costumam estar interconectados; alguns dependem diretamente dos frameworks de DL, enquanto outros dependem de pacotes que já se ligam a esses frameworks. Essa rede de Dependências cria o que chamamos de "cadeia de suprimentos" (SC) para pacotes de DL. Entender como construir e manter essas cadeias é importante pra manter os frameworks competitivos.

Porém, ainda há muita coisa que não sabemos sobre como essas Cadeias de Suprimentos funcionam. Saber mais sobre elas poderia ajudar desenvolvedores e pesquisadores a resolver problemas comuns relacionados a dependências. Este estudo tem como objetivo preencher essa lacuna analisando as cadeias de suprimentos do TensorFlow e do PyTorch no PyPI.

Visão Geral da Pesquisa

Começamos analisando os metadados de quase seis milhões de pacotes do PyPI pra entender como essas cadeias de suprimentos estão estruturadas. Nosso foco está em dois frameworks principais: TensorFlow e PyTorch. Investigamos três áreas principais:

  1. Domínios: Quais tipos de tarefas os pacotes nessas cadeias resolvem?
  2. Clusters: Como esses pacotes estão agrupados com base em suas dependências?
  3. Desengajamento: Por que alguns pacotes escolhem sair da cadeia de suprimentos?

Respondendo essas perguntas, queremos oferecer insights que ajudem desenvolvedores a manter e gerenciar suas dependências de pacote de forma mais eficaz.

Domínios de Pacotes

O primeiro aspecto que exploramos é o domínio dos pacotes dentro das cadeias de suprimentos. Um domínio se refere ao tipo de tarefa que um pacote pode realizar. Esse conhecimento ajuda a entender quais áreas são bem atendidas por pacotes e quais podem precisar de mais recursos.

Através da nossa análise, identificamos 34 domínios diferentes, agrupados em oito categorias. A maioria dos pacotes populares (medidos por downloads) se encaixa em três categorias principais: Aplicações, Infraestrutura e Ciências. Juntas, essas três categorias representam mais de 85% dos pacotes populares nas cadeias do TensorFlow e do PyTorch.

  • Aplicações: Essa categoria inclui pacotes que ajudam em tarefas específicas, como processamento de linguagem natural e visão computacional. Notavelmente, o PyTorch tem uma proporção maior de pacotes na categoria de Aplicações em comparação ao TensorFlow.

  • Infraestrutura: Essa categoria consiste em ferramentas que suportam vários processos dentro do deep learning, incluindo treinamento e implantação de modelos. O TensorFlow apresenta uma presença mais forte em pacotes relacionados à Infraestrutura.

  • Ciências: Essa categoria apoia a aplicação de DL em várias disciplinas científicas, como biologia e física, com ambos os frameworks tendo um número notável de pacotes nessa área.

As diferenças entre o TensorFlow e o PyTorch em termos de distribuição de pacotes nos mostram que cada framework desenvolveu vantagens competitivas em certas áreas.

Clusters de Pacotes

Em seguida, olhamos como esses pacotes são agrupados em clusters com base nas dependências. Um cluster consiste em pacotes que estão intimamente ligados entre si, ou seja, dependem uns dos outros pra funcionar.

Usando um algoritmo de detecção de comunidades, descobrimos que existem 131 clusters na cadeia de suprimentos do TensorFlow e 100 no PyTorch. Esses clusters se encaixam principalmente em quatro formas: Flecha, Estrela, Árvore e Floresta.

  • Clusters de Flecha são os mais simples, geralmente contendo dois pacotes onde um depende diretamente do outro.

  • Clusters de Estrela têm um pacote central do qual vários outros pacotes dependem, formando uma estrutura parecida com uma estrela.

  • Clusters de Árvore mostram uma hierarquia mais complexa, onde um pacote raiz serve como base para vários outros.

  • Clusters de Floresta são ainda mais complexos, com múltiplos pacotes raiz, mostrando que muitos pacotes estão interconectados através de vários caminhos.

Curiosamente, a maioria dos pacotes é encontrada em clusters de Árvore e Floresta, indicando que a maioria dos pacotes está interconectada.

Por Que Pacotes Saem da Cadeia de Suprimentos

Outra consideração importante é por que alguns pacotes se desengajam da cadeia de suprimentos. Identificamos várias razões pelas quais pacotes param de depender do TensorFlow ou do PyTorch.

  1. Problemas de Dependência: Muitos pacotes saem devido a conflitos ou incompatibilidade com suas dependências. Por exemplo, um pacote pode ter problemas pra funcionar com certas versões do TensorFlow.

  2. Melhorias Funcionais: Os desenvolvedores costumam buscar maneiras de melhorar o desempenho. Às vezes, isso significa cortar laços com um framework pra simplificar as funcionalidades do pacote ou fazê-lo rodar mais rápido.

  3. Facilidade de Instalação: Se um pacote se torna muito complexo de instalar devido a várias dependências, os desenvolvedores podem escolher se desengajar da cadeia de suprimentos pra torná-lo mais amigável ao usuário.

No geral, descobrimos que o número de pacotes saindo das cadeias de suprimentos está aumentando, mostrando que tanto o TensorFlow quanto o PyTorch enfrentam problemas contínuos de gerenciamento de dependências.

Implicações para Desenvolvedores e Pesquisadores

As descobertas dessa pesquisa têm implicações significativas para quem trabalha com frameworks de deep learning.

  • Fortalecendo Cadeias de Suprimentos: Entender os domínios e clusters de pacotes pode ajudar os fornecedores de frameworks a priorizar quais áreas apoiar melhor, levando a ecossistemas mais robustos em torno de seus frameworks.

  • Gerenciando Dependências: Com o conhecimento das razões comuns de desengajamento, os desenvolvedores podem tomar medidas pra melhorar a sustentabilidade de seus pacotes, garantindo que eles permaneçam na cadeia de suprimentos.

  • Incentivando Colaboração: Como certos pacotes mostram dependências tanto no TensorFlow quanto no PyTorch, fomentar a colaboração entre os dois frameworks pode levar a ferramentas e recursos mais integrados.

Conclusão

Este estudo ilumina as complexidades das cadeias de suprimentos de pacotes de deep learning dentro do ecossistema PyPI. Ao caracterizar os domínios, clusters e tendências de desengajamento no TensorFlow e no PyTorch, fornecemos uma estrutura pra entender melhor essas cadeias de suprimentos.

À medida que a tecnologia de deep learning continua a evoluir, manter uma cadeia de suprimentos saudável será crucial para o desenvolvimento e implantação contínuos desses frameworks. Desenvolvedores, pesquisadores e fornecedores podem usar esses insights pra fomentar um ambiente que apoie eficiência, colaboração e inovação no campo do deep learning.

Através de uma análise cuidadosa dos domínios de pacotes, formatos de cluster e razões de desengajamento, esperamos contribuir com conhecimento valioso que pode levar a uma manutenção e gestão mais eficaz dos pacotes de deep learning no futuro.

Fonte original

Título: Characterizing Deep Learning Package Supply Chains in PyPI: Domains, Clusters, and Disengagement

Resumo: Deep learning (DL) package supply chains (SCs) are critical for DL frameworks to remain competitive. However, vital knowledge on the nature of DL package SCs is still lacking. In this paper, we explore the domains, clusters, and disengagement of packages in two representative PyPI DL package SCs to bridge this knowledge gap. We analyze the metadata of nearly six million PyPI package distributions and construct version-sensitive SCs for two popular DL frameworks: TensorFlow and PyTorch. We find that popular packages (measured by the number of monthly downloads) in the two SCs cover 34 domains belonging to eight categories. Applications, Infrastructure, and Sciences categories account for over 85% of popular packages in either SC and TensorFlow and PyTorch SC have developed specializations on Infrastructure and Applications packages respectively. We employ the Leiden community detection algorithm and detect 131 and 100 clusters in the two SCs. The clusters mainly exhibit four shapes: Arrow, Star, Tree, and Forest with increasing dependency complexity. Most clusters are Arrow or Star, but Tree and Forest clusters account for most packages (Tensorflow SC: 70%, PyTorch SC: 90%). We identify three groups of reasons why packages disengage from the SC (i.e., remove the DL framework and its dependents from their installation dependencies): dependency issues, functional improvements, and ease of installation. The most common disengagement reason in the two SCs are different. Our study provides rich implications on the maintenance and dependency management practices of PyPI DL SCs.

Autores: Kai Gao, Runzhi He, Bing Xie, Minghui Zhou

Última atualização: 2023-12-20 00:00:00

Idioma: English

Fonte URL: https://arxiv.org/abs/2306.16307

Fonte PDF: https://arxiv.org/pdf/2306.16307

Licença: https://creativecommons.org/licenses/by-sa/4.0/

Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.

Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.

Mais de autores

Artigos semelhantes