O que é PyTorch?

Copiar URL

O PyTorch é uma biblioteca de software open source que permite aos desenvolvedores combinar códigos para criar "cérebros" de IA capazes de aprender a identificar padrões nos dados. Em termos mais técnicos, com o PyTorch, os desenvolvedores podem usar camadas modulares para criar e treinar redes neurais complexas destinadas ao machine learning avançado. 

Conheça o Red Hat AI

O PyTorch ganhou popularidade porque prioriza a experiência do desenvolvedor e permite alterar a estrutura do modelo em tempo real. Os usuários interagem com ele usando o Python como linguagem de programação no front-end. O PyTorch usa C++ como linguagem de programação no backend para cálculos complexos e a CUDA quando há uma unidade de processamento gráfico NVIDIA disponível. Essa abordagem híbrida oferece uma interface de usuário simples combinada a um alto poder computacional.

O PyTorch é um recurso open source da PyTorch Foundation, que faz parte da Linux® Foundation. Por adotar um modelo de governança aberto, ele é de uso gratuito, recebe melhorias constantes da comunidade open source e permite auditoria completa. Os desenvolvedores podem inspecionar o código-fonte e verificar como o framework trata os dados. 

Além da origem open source, a arquitetura de base do PyTorch foi projetada para ser flexível, escalável e acessível a todos os usuários, em diferentes plataformas de hardware ou provedores de nuvem. 

Por que o futuro da IA depende de um ecossistema PyTorch

Quatro considerações importantes sobre a implementação da tecnologia de IA

O PyTorch oferece a base de que os desenvolvedores precisam para criar e implantar inteligência artificial. Em vez de obrigar os desenvolvedores a construir sistemas complexos do zero, o PyTorch se destaca pela abordagem intuitiva e nativa do Python, e pela biblioteca de modelos de machine learning prontos para uso. Seu principal atributo é a flexibilidade, que permite aos desenvolvedores modificar e testar modelos de IA em tempo real durante a execução. 

Agora, vamos analisar as etapas de desenvolvimento e execução de um modelo de machine learning para descobrir como o PyTorch opera:

Planejamento e preparação dos dados
O primeiro passo é definir o problema e preparar os dados. O PyTorch não é uma ferramenta de limpeza de dados, por isso os desenvolvedores recorrem a outras ferramentas, como o Pandas ou o SQL, para as informações. Eles podem usar o Docling para processar documentos e convertê-los em dados estruturados. O PyTorch recebe os dados tratados e alimenta as redes neurais com eles. 

Treinamento do modelo
Nesta fase, o PyTorch atua como o principal espaço de trabalho para o desenvolvedor criar e treinar um modelo de IA. Após a criação do código, o PyTorch atua como uma ponte universal e envia os tensores para o seu acelerador de hardware, seja uma GPU da NVIDIA usando a CUDA, uma GPU da AMD usando o ROCm ou sistemas equipados com chips Intel e Apple Silicon. (Mais sobre a CUDA e tensores em breve) Nos modelos de IA empresarial, é comum empacotar esse código de treinamento em um container Docker e enviá-lo a um cluster Kubernetes na nuvem. (Mais sobre Docker e Kubernetes em breve também.)

Avaliação do modelo
Nesta fase, os desenvolvedores usam o PyTorch para testar o desempenho do modelo com um novo conjunto de dados. É nesse momento que os desenvolvedores congelam as configurações internas do modelo (uma pausa no aprendizado) para avaliar seu desempenho preditivo real.

Implantação
Quando um desenvolvedor finaliza o treinamento de um modelo com o PyTorch, o resultado é um grande arquivo repleto de configurações matemáticas ajustadas. Esses são os pesos e vieses, também conhecidos como os parâmetros do modelo. É neste momento que a IA passa do treinamento à inferência. A partir desse ponto, ela para de aprender e começa a fazer previsões com base no treinamento. Para executá-la, você pode empacotar o "cérebro" da IA em uma imagem Docker em produção e enviá-lo a plataformas em nuvem como a Amazon Web Services (AWS), o Google Cloud ou o Microsoft Azure. Assim que o modelo chega à nuvem, o Kubernetes gerencia a infraestrutura e a escala, enquanto um motor de inferência como o vLLM otimiza a velocidade e o desempenho dos cálculos. 

Você pode usar o PyTorch para desenvolver aplicações de machine learning e deep learning. Ele é amplamente usado no treinamento de:

Large Language Models (LLMs). O PyTorch foi usado na criação dos primeiros modelos do GPT da OpenAI e da série Llama da Meta.

Visão computacional. Carros autônomos, imagens médicas e softwares de reconhecimento facial frequentemente usam o PyTorch (em especial o pacote da biblioteca TorchVision) para criar pipelines que exigem ajuda na classificação de imagens e detecção de objetos. 

Geradores de imagens. Você pode treinar modelos text-to-image com o PyTorch. Ele possui a base matemática necessária para analisar milhões ou bilhões de imagens e ensinar a IA a criar conteúdo visual. 

Processamento de linguagem natural (PLN) e fala. Você pode treinar modelos text-to-speech e speech-to-text com o PyTorch. Ele interpreta a conexão entre ondas sonoras e texto estruturado e legível. Também é possível usar o PyTorch para criar ferramentas de tradução.

Os tensores são a base da IA moderna. Cada palavra, imagem, vídeo e onda sonora é convertido em um tensor antes do processamento por um modelo de IA. 

O PyTorch às vezes é descrito como uma biblioteca para programar com tensores, que são conjuntos estruturados de números representando os dados brutos e parâmetros do modelo. Ele oferece as ferramentas para desenvolver e executar redes neurais profundas. Ao alimentar essas redes com tensores estruturados, o PyTorch dá vida ao "cérebro" computacional de um modelo de IA. 

Em termos mais simples, um tensor é um container para números. Um tensor pode variar de um único número (também chamado de escalar) a uma estrutura multidimensional de números. Os tensores podem apresentar diferentes tamanhos, de acordo com o número de dimensões que eles têm:

  • Um escalar é um tensor com zero dimensões. É um único número.
  • Um vetor é um tensor com uma dimensão. É uma linha de escalares, ou seja, de números.
  • Uma matriz é um tensor com duas dimensões. É uma estrutura de números, como uma planilha.
  • Um tensor com três ou mais dimensões é considerado um tensor de alta dimensão. É uma pilha de estruturas encaixadas umas nas outras, como um cubo mágico. 
A diagram illustrating tensors from 0D to 3D as a scalar, a vector, a matrix, and a cube

Os tensores podem ter mais dimensões, como tensores 4D e 5D. Com tensores de alta dimensão o PyTorch pode combinar e estruturar dados complexos, como imagens coloridas e sequências de vídeo.

 

A diagram of tensors: a single 3D cube, a row of 4D cubes, and a 3x3 block of 5D cubes

Mas por que estamos falando sobre dimensões?

Quando o PyTorch processa dados, ele retrata as informações como tensores em algo chamado de espaço de alta dimensão. Um espaço de alta dimensão é um domínio matemático abstrato com dezenas ou até milhares de direções e dimensões. É nele que um modelo de IA pode planejar e analisar conceitos mapeando e medindo coordenadas.

Como vivemos em um mundo tridimensional, é difícil para os humanos imaginar um espaço multidimensional. No entanto, nos computadores, com o uso da álgebra linear, a IA aprende com o mapeamento de dados em um espaço de alta dimensão e o cálculo das relações espaciais entre os pontos. 

Com o PyTorch, você transforma os dados em uma estrutura organizada de números (os tensores) que percorre uma rede neural. À medida que a rede neural processa esses dados, ela os usa para ajustar gradualmente parâmetros internos, que podem variar de dezenas a trilhões, dependendo do modelo. Esse processo ensina o modelo a reconhecer padrões e relações nos dados. Com os padrões aprendidos, o modelo consegue fazer previsões sobre informações que nunca viu antes. Esse comportamento aprendido forma o "cérebro da IA".

O PyTorch e o TensorFlow são ferramentas open source que ajudam os computadores a aprender transformando dados em tensores, que são mapeados em um espaço digital. O PyTorch prioriza a flexibilidade e a usabilidade, e o TensorFlow prioriza a escalabilidade e a estrutura. 

O PyTorch foi lançado como uma solução open source pela Meta (antigo Facebook) em 2017. No início, ele era uma ferramenta interna, criada do zero como um framework voltado para pesquisa, servindo como uma maneira mais rápida e flexível de testar arquiteturas de redes neurais. O PyTorch ganhou popularidade porque os desenvolvedores o consideraram mais fácil e rápido de usar do que o TensorFlow.

O TensorFlow foi lançado como uma solução open source pelo Google em 2015. No início, ele era uma ferramenta interna de pesquisa e produção, criada para execução em grandes sistemas empresariais. Isso popularizou o TensorFlow em ambientes corporativos com milhões de usuários e grandes servidores em nuvem.

Hoje, o PyTorch e o TensorFlow compartilham muitas funcionalidades e se inspiram um no outro para melhorarem ao longo do tempo. 

A CUDA (Compute Unified Device Architecture) é uma plataforma de software que permite aos desenvolvedores escrever código executável em GPUs NVIDIA para processamento paralelo. O PyTorch usa a CUDA como uma ponte digital para transferir cálculos do processador principal do computador para GPUs NVIDIA. Isso permite a execução rápida de bilhões de cálculos. 

No entanto, você não precisa de uma placa de vídeo ou CUDA para usar o PyTorch. Quando não há uma plataforma de GPU compatível, como a CUDA ou o ROCm, o PyTorch automaticamente executa as cargas de trabalho na unidade central de processamento (CPU) do seu computador. Usar o PyTorch com uma CPU é adequado para depuração ou execução de modelos pequenos. No entanto, para processar dados por meio de redes neurais de grande escala em milissegundos, a CUDA é a parceira ideal do PyTorch. 

Um grafo computacional é um mapa visual de etapas matemáticas. Ele rastreia o fluxo de dados em um sistema matemático e ajuda a indicar quais operações o PyTorch executou em cada nó, destacando as dependências entre as camadas da rede.

No desenvolvimento de IA, é o grafo computacional que disponibiliza o modelo para aprendizado. Ele rastreia como as entradas se tornam saídas, dando ao computador um caminho claro para seguir sempre que precisar calcular erros e ajustar os parâmetros internos.

O que é um grafo computacional dinâmico (DCG)?

O PyTorch usa grafos computacionais dinâmicos (DCGs) para executar modelos de deep learning. A diferença entre DCGs e grafos computacionais comuns, também chamados de grafos estáticos, é a flexibilidade. 

Para entender a diferença entre grafos computacionais dinâmicos e estáticos, imagine que os dados são um trem e a arquitetura do modelo de deep learning são os trilhos. 

Um grafo estático seria como construir os trilhos antes que um trem possa percorrê-los. Cada trem deve seguir a mesma rota, qualquer desvio ou curva deve ser previsto e construído com antecedência. Se um trem chegar carregando dados que exigem uma rota para a qual você ainda não construiu trilhos, o sistema falhará e você precisará reconstruir a linha. Em outras palavras, um grafo estático força você a criar o modelo completo antes de processar dados nele. 

Em um grafo dinâmico, você constrói uma nova rota para cada trem um pouco antes da partida, personalizando o trajeto conforme a carga. Se os dados forem uma frase curta, o PyTorch cria um pequeno trilho para transportar os dados pelo modelo. Se os dados forem um grande parágrafo de texto, o grafo dinâmico no PyTorch cria um trilho mais longo.

A vantagem de uma abordagem dinâmica é a flexibilidade a cada iteração e uma depuração mais simples. Como o PyTorch cria os trilhos linha por linha em tempo real, se algo der errado, o trem vai parar na linha em que ocorreu o erro. 

Nos grafos estáticos, os erros só acontecem após a construção completa dos trilhos e não há uma indicação clara do que deu errado. Naturalmente, isso pode causar frustração. 

O que é autograd?

O autograd é o mecanismo integrado do PyTorch que realiza cálculos de derivadas e gradientes automaticamente. O PyTorch usa uma abordagem específica chamada sistema baseado em fitas (ou gravador), semelhante à função de uma fita cassete ou de vídeo. 

Quando você insere dados em um modelo PyTorch durante o treinamento, o autograd ativa o forward-pass ou a função de "gravador" para registrar todas as operações matemáticas e a ordem em que elas ocorrem. Ele também pode executar um backward-pass ou a função "rewind". Ao executar operações matemáticas na ordem inversa, o autograd calcula o quanto cada parâmetro contribuiu para o erro e como ajustá-lo. 

Quando o autograd "rebobina" a gravação, ele age como um professor de matemática corrigindo a prova de um aluno. A partir da resposta final incorreta, ele verifica cada cálculo para identificar onde a fórmula falhou e fazer os ajustes para a próxima tentativa. 

Otimize o treinamento do PyTorch com o autograd

Conseguir uma resposta correta usando um modelo de IA é apenas metade do processo. As organizações também precisam entender por que um modelo chega à determinada decisão. Ao priorizar a transparência e a explicabilidade, os desenvolvedores criam sistemas de IA que não são apenas tecnicamente avançados, mas também seguros e alinhados com os valores ​​e necessidades humanos. 

Embora as funcionalidades fundamentais do PyTorch, como o grafo computacional dinâmico e o autograd, rastreiem o fluxo matemático de dados passo a passo, eles não foram desenvolvidos para serem legíveis por humanos. Para resolver isso, o PyTorch oferece uma biblioteca dedicada à IA explicável chamada Captum. A Captum usa dados do autograd para calcular qual entrada teve a maior influência matemática no resultado final, ajudando os desenvolvedores a analisar a caixa preta dos modelos de IA. 

Essa transparência traz os seguintes benefícios:

Solução rápida de problemas. Quando os cientistas de dados conseguem entender a lógica usada por um modelo na hora de gerar uma saída, o desenvolvimento, a depuração e a tomada de decisões se tornam mais rápidos e fáceis.

Melhor conformidade regulatória. A IA explicável ajuda as empresas a cumprir com as regulamentações e as leis de privacidade.

Mais confiança. Para implementar tecnologias como os agentes de IA, é preciso confiar no algoritmo.

Um caminho para a IA soberana. Ter IA soberana é poder controlar seus próprios sistemas de IA. Isso exige visibilidade profunda sobre como um modelo processa os dados e gera insights. 

Arquitetura de IA soberana: como escalar o treinamento distribuído? 

Você pode instalar e executar o PyTorch em sistemas locais e plataformas de nuvem. Mas primeiro é preciso instalar o Python. Para quem está familiarizado com a programação em Python, o PyTorch é bem intuitivo, mesmo para iniciantes. 

Você também pode acessar o PyTorch por meio de ambientes em nuvem baseados em navegador, como o Google Colab, que inclui o PyTorch e acesso à GPU pré-instalados. Ao começar, você vai logo perceber que o ecossistema do PyTorch abrange ferramentas conhecidas, como:

  • Hugging Face: os desenvolvedores podem fazer o download de modelos PyTorch pré-treinados, em vez de criá-los do zero.
  • PyTorch Lightning: um "wrapper" que opera em uma camada acima do PyTorch, escondendo o código de engenharia mais complexo para oferecer uma experiência de desenvolvimento mais enxuta.
  • Open Neural Network Exchange (ONNX): converte modelos PyTorch em um modelo padronizado para leitura e execução em diferentes sistemas de software ou chips de hardware, sem a necessidade de rescrever códigos. 

Conheça os tutoriais oficiais do PyTorch → 

O Docker é como um container digital que armazena um snapshot do ambiente de um computador. O objetivo de usar um fluxo de trabalho baseado no Docker com PyTorch é compartilhar código entre máquinas, o que evita erros de configuração e travamentos do sistema.

Mover o código PyTorch para um arquivo de imagem Docker permite empacotar tudo o que é necessário para executar esse código em um container isolado do restante da máquina. Ao enviar esse container para um colega de equipe ou para um servidor na nuvem, ele será transferido e executado com todas as configurações necessárias.

Os criadores e membros da comunidade PyTorch fazem a manutenção das imagens Docker oficiais prontas para uso. Isso simplifica o desenvolvimento e a implantação, porque você pode fazer o download da imagem Docker do PyTorch sem precisar instalar o PyTorch no computador. 

Quando estiver tudo pronto para escalar seu modelo PyTorch para milhões de usuários, será necessária uma frota de servidores para lidar com a carga de trabalho. Depois que você empacota seu modelo do PyTorch em uma imagem Docker com tudo o que ele precisa para funcionar, o Kubernetes ajuda a levar o container para onde ele precisa ir. Executar cargas de trabalho de IA no Kubernetes ajuda a:

Automatizar a orquestração de recursos. Os modelos PyTorch precisam de diversos recursos computacionais para operar, como GPUs, CPUs, memória e largura de banda de rede. O Kubernetes ajuda a manter os modelos PyTorch em execução, com rastreamento de recursos disponíveis em todos os servidores e programação de cargas de trabalho nos locais apropriados. Se um servidor falhar, o Kubernetes detecta o erro instantaneamente e redireciona o tráfego de dados sem intervenção humana. 

Escalar. Cargas de trabalho de IA são imprevisíveis. Se um modelo, de repente, receber um grande influxo de tráfego, o Kubernetes pode aumentar a escala criando cópias do seu container Docker em vários servidores para atender à demanda. Quando o tráfego estiver baixo, o Kubernetes reduzirá os recursos para economizar orçamento.

Viabilizar o treinamento distribuído. Quando um modelo de IA é muito grande para ser treinado em um único computador, os desenvolvedores podem usar containers e escalar a carga de trabalho por várias máquinas. Ao inserir o modelo em containers Docker e usar uma arquitetura de nuvem, o PyTorch distribui o processamento matemático pesado por um cluster de GPUs interconectadas.

A partir daí, o Kubernetes gerencia a comunicação em rede entre os containers Docker para que eles conversem entre si, sincronizem seus tensores e calculem como um único "cérebro". Esse processamento paralelo reduz o tempo total de treinamento.

Execute treinamento de IA distribuído no Red Hat OpenShift

O Red Hat® AI foi criado para oferecer inferências rápidas, flexíveis e eficientes por meio de um servidor com tecnologia vLLM. Ele conecta modelos aos seus dados de maneira confiável para unificar a personalização e o desenvolvimento de agentes especializados em uma plataforma. Desenvolvidas sobre uma base open source, nossas soluções oferecem controle total dos fluxos de trabalho de IA de ponta a ponta em qualquer escala. 

O Red Hat AI Portfolio agora inclui o Red Hat AI Enterprise: uma plataforma para implantar, gerenciar e escalar inferência de IA, fluxos de trabalho de agentic AI e aplicações com IA em qualquer infraestrutura.

Conheça o Red Hat AI

Blog

Artificial Intelligence (AI)

See how our platforms free customers to run AI workloads and models anywhere

Aproveite a IA com a Red Hat: expertise, treinamento e suporte em todos os estágios da jornada de IA

Conheça o portfólio exclusivo de IA da Red Hat. O Red Hat AI ajuda você a atingir seus objetivos empresariais e de TI com a inteligência artificial (IA).

Leia mais

O que é IA generativa?

IA generativa é um tipo de tecnologia de inteligência artificial que se baseia em modelos de deep learning treinados com grandes conjuntos de dados para criar novos conteúdos.

RAG e ajuste fino

A RAG e o ajuste fino são métodos diferentes para melhorar os LLMs. A RAG evita alterar o modelo, enquanto o ajuste fino exige modificar parâmetros.

Tudo sobre a AIOps

AIOps, sigla em inglês que significa IA para operações de TI, é uma abordagem que usa machine learning e outras técnicas avançadas de IA para automatizar operações de TI.

Inteligência artificial: conteúdo adicional

Produto em destaque

  • Red Hat AI

    Soluções flexíveis que aceleram o desenvolvimento e a implantação de aplicações de IA em ambientes de nuvem híbrida.