Cos'è PyTorch?
PyTorch è una libreria software open source che consente agli sviluppatori di combinare diversi componenti di codice per creare un'IA capace di riconoscere gli schemi presenti nei dati. Più esattamente PyTorch permette agli sviluppatori di utilizzare livelli modulari per creare e addestrare reti neurali complesse e ottenere capacità di machine learning avanzate.
Perché utilizzare PyTorch?
PyTorch è un framework che trova oggi ampia diffusione grazie a un'esperienza di sviluppo semplificata e alla possibilità di modificare la struttura del modello agevolmente e in tempo reale. Il linguaggio di programmazione per il front end è Python, ma nel backend PyTorch sfrutta C++ (e CUDA quando è disponibile un'unità di elaborazione grafica NVIDIA) per eseguire calcoli intensivi. Questo approccio ibrido consente di ottenere un'interfaccia utente intuitiva e la massima potenza di calcolo.
PyTorch è una libreria open source gestita dalla PyTorch Foundation, che fa parte della Linux® Foundation. Questo significa che il sistema è di libero utilizzo, beneficia del contributo continuo dalla community open source ed è interamente verificabile. Gli sviluppatori possono quindi esaminare il codice sorgente e verificare il modo in cui il framework gestisce i dati.
Oltre alla sua natura open source, è l'architettura stessa di PyTorch a essere progettata per garantire flessibilità, scalabilità e accessibilità su diverse tipologie di piattaforme hardware e soluzioni cloud.
4 elementi chiave da considerare per l'implementazione dell'IA
Cosa si può fare con PyTorch?
PyTorch fornisce gli elementi costitutivi necessari agli sviluppatori per progettare e adottare l'intelligenza artificiale. Anziché creare complessi sistemi da zero, gli sviluppatori possono affidarsi a PyTorch che offre un approccio intuitivo e Python native, oltre a una libreria di modelli di machine learning pronti all'uso. Punto di forza del framework è la flessibilità per cui gli utenti possono sperimentare con i modelli di IA e modificarli in tempo reale mentre sono in esecuzione.
Ripercorriamo ora il processo di creazione ed esecuzione di un modello di machine learning per scoprire dove PyTorch può offrire il suo contributo:
Pianificazione e preparazione dei dati
Il processo inizia con la preparazione dei dati. PyTorch non è uno strumento di pulizia dei dati per cui gli sviluppatori devono ricorrere ad altre soluzioni (come Pandas o SQL). Ad esempio, possono utilizzare Docling per elaborare i documenti e convertirli in dati strutturati. PyTorch si occuperà successivamente di fornire tali dati ripuliti alle reti neurali.
Addestramento del modello
Gli sviluppatori possono servirsi di PyTorch come ambiente di lavoro principale per la progettazione e l'addestramento del modello di IA. Una volta scritto il codice, PyTorch si occupa di trasferire i tensori di dati all'acceleratore hardware, collegando il codice alle risorse di calcolo disponibili. L’acceleratore può essere di diversi tipi: una GPU NVIDIA che utilizza CUDA, una GPU AMD che utilizza ROCm o anche un sistema basato su Intel e Apple Silicon (il ruolo di CUDA e dei tensori sarà approfondito più avanti). In contesti aziendali il codice di addestramento viene generalmente inserito in un container Docker e inviato a un cluster Kubernetes nel cloud (anche il ruolo di Docker e Kubernetes sarà approfondito più avanti).
Valutazione del modello
Gli sviluppatori possono sfruttare PyTorch per testare le prestazioni del modello utilizzando un nuovo set di dati. In questa fase gli sviluppatori bloccano le impostazioni interne del modello, cioè ne sospendono l'apprendimento, per poterne valutare le prestazioni predittive grezze.
Deployment
Una volta concluso l'addestramento del modello con PyTorch, gli sviluppatori si ritrovano con un file enorme contenente le impostazioni matematiche ottimizzate (pesi e bias, noti anche come parametri del modello). A questo punto si passa alla fase diinferenza, ovvero la fase in cui l'IA inizia a elaborare delle previsioni in base a quanto acquisito nell'addestramento. A tale scopo, gli sviluppatori possono inserire l'IA in un'immagine Docker pronta per la produzione e inviarla a una delle principali piattaforme cloud, come Amazon Web Services (AWS), Google Cloud o Microsoft Azure. Nel cloud, Kubernetes si occuperà di gestire l'infrastruttura e garantire la scalabilità mentre un motore di inferenza come vLLM ottimizzerà velocità di calcolo e prestazioni.
Cosa si può creare con PyTorch?
Con PyTorch si possono sviluppare applicazioni di machine learning e deep learning. Il framework è ampiamente utilizzato per l'addestramento di:
Modelli linguistici di grandi dimensioni (LLM). PyTorch è alla base dei primi modelli GPT di OpenAI e la serie Llama di Meta.
Visione artificiale. Nell'ambito dei sistemi di guida autonoma, diagnostica per immagini e software di riconoscimento facciale si ricorre spesso a PyTorch, in particolare al pacchetto TorchVision, per realizzare pipeline che richiedono funzionalità di classificazione delle immagini e rilevamento di oggetti.
Generatori di immagini. Con PyTorch è possibile addestrare modelli text-to-image. Il framework fornisce le basi matematiche necessarie per analizzare milioni o anche miliardi di immagini e insegnare all'IA a creare contenuti visivi.
Elaborazione del linguaggio naturale (NLP) e del parlato. Con PyTorch è possibile addestrare modelli di sintesi vocale e di riconoscimento vocale perché riescano a interpretare la relazione tra le onde sonore e il testo strutturato e leggibile. Con PyTorch si possono creare anche strumenti di traduzione.
Cosa sono i tensori in PyTorch?
I tensori sono le unità fondamentali dell'IA moderna. Ogni parola, immagine, video e onda sonora viene infatti tradotta in un tensore prima che il modello di IA possa elaborarla.
I tensori sono disposizioni organizzate di numeri che rappresentano dati grezzi e parametri del modello e costituiscono un elemento chiave per il funzionamento di PyTorch. PyTorch fornisce gli strumenti per creare ed eseguire reti neurali profonde e, alimentando queste reti con tensori strutturati, aiuta a sviluppare la mente computazione del modello di IA.
Volendo semplificare al massimo, possiamo immaginare un tensore come un contenitore di numeri che può spaziare da un singolo numero (anche detto scalare) a una griglia multidimensionale di numeri. I tensori si differenziano in base a quante dimensioni possiedono:
- Uno scalare è un tensore con 0 dimensioni. Corrisponde a un singolo numero.
- Un vettore è un tensore con 1 dimensione. Corrisponde a una sequenza di scalari, ovvero una riga di numeri.
- Una matrice è un tensore con 2 dimensioni. Corrisponde a una griglia di numeri, come un foglio di calcolo.
- Un tensore con 3 o più dimensioni viene definito tensore ad alta dimensionalità. Corrisponde a una pila di griglie annidate, come un cubo di Rubik.

I tensori possono avere anche più dimensioni, come nel caso dei tensori 4D e 5D. Questa alta dimensionalità consente a PyTorch di impilare e strutturare dati complessi, quali immagini a colori o sequenze video.

Perché le dimensioni dei tensori rivestono un ruolo chiave?
Quando elabora i dati, PyTorch rappresenta le informazioni sotto forma di tensori all'interno di quello che viene definito uno spazio ad alta dimensionalità. Uno spazio ad alta dimensionalità è un ambiente matematico astratto caratterizzato da decine o addirittura migliaia di direzioni e dimensioni. È in questo contesto che un modello di IA può collocare e analizzare i concetti, mappandone e misurandone le coordinate.
Per gli esseri umani, abituati a vivere in un mondo tridimensionale, immaginare uno spazio in cui esistono migliaia di dimensioni può essere difficoltoso. I computer invece grazie all'algebra lineare sono in grado di mappare i dati in uno spazio ad alta dimensionalità e calcolare le relazioni spaziali tra i punti.
Con PyTorch i dati vengono trasformati in una griglia strutturata di numeri (tensori) e i tensori vengono inseriti in una rete neurale. Mentre elabora i dati, la rete neurale li utilizza per regolare gradualmente i suoi parametri interni (che possono essere decine, centinaia o addirittura bilioni, a seconda del modello). Questo processo consente al modello di imparare a riconoscere schemi e relazioni nei dati e, in base agli schemi appresi in futuro, sarà in grado di elaborare previsioni su nuove informazioni mai riscontrate prima. Questo è il processo con cui si formano le capacità cognitive dell'IA.
Che differenza c'è fra PyTorch e TensorFlow?
PyTorch e TensorFlow sono entrambi strumenti open source che supportano l'apprendimento dei computer con un processo che prevede la trasformazione dei dati in tensori e la mappatura di tali tensori in uno spazio digitale. PyTorch garantisce flessibilità e usabilità, mentre TensorFlow si concentra maggiormente su scalabilità e struttura.
PyTorch è stato rilasciato come framework open source da Meta (in precedenza Facebook) nel 2017. Progettato da zero, è nato come strumento interno per la ricerca ed era impiegato per testare le architetture di reti neurali in maniera rapida e flessibile. Ha poi trovato ampia diffusione per la sua facilità di utilizzo rispetto a TensorFlow e perché consentiva l'iterazione rapida.
TensorFlow è stato rilasciato come framework open source da Google nel 2015. Nato come strumento interno per la ricerca e la produzione, è stato progettato per operare in sistemi aziendali di grandi dimensioni. Per questo motivo, TensorFlow si è affermato negli ambienti enterprise che gestiscono milioni di utenti e infrastrutture cloud di grandi dimensioni.
Nel corso degli anni PyTorch e TensorFlow si sono evoluti influenzandosi a vicenda e oggi presentano funzionalità simili.
Cos'è CUDA e come viene utilizzata da PyTorch?
CUDA (acronimo di Compute Unified Device Architecture) è una piattaforma software che permette agli sviluppatori di scrivere il codice per l'elaborazione parallela su GPU NVIDIA. PyTorch utilizza CUDA per trasferire i calcoli dal processore principale del computer alla GPU NVIDIA, sfruttandone la potenza di elaborazione. In questo modo è in grado di eseguire miliardi di calcoli molto rapidamente.
Scheda grafica e CUDA non sono comunque indispensabili. Senza una piattaforma GPU supportata, come CUDA o ROCm, PyTorch funziona ugualmente ed esegue i carichi di lavoro sulla CPU del computer. Occorre sottolineare però che l'uso della sola CPU è sufficiente per attività come il debug o per l'esecuzione di modelli di piccole dimensioni, ma per ottenere reti neurali efficienti, capaci di elaborare dati su larga scala in millisecondi anziché in ore, CUDA è la scelta ideale.
Cos'è un grafo computazionale?
Un grafo computazionale è una rappresentazione visiva di una serie di passaggi matematici. Tiene traccia del flusso di dati all'interno di un sistema matematico e indica quali operazioni PyTorch ha eseguito in ciascun nodo, evidenziando le dipendenze tra i livelli della rete.
Nel caso dell'IA il grafo computazionale fornisce lo schema per l'apprendimento. Registra il modo in cui gli input si trasformano in output e offre quindi al computer un percorso chiaro da seguire a ritroso ogni volta che deve individuare gli errori e regolare i propri parametri interni.
Cos'è un grafo computazionale dinamico (DCG)?
Per l'esecuzione dei modelli di deep learning, PyTorch utilizza grafi computazionali dinamici (DCG). La differenza rispetto ai grafi computazionali standard, o statici, è la loro flessibilità.
Per capire meglio la differenza tra grafi computazionali statici e dinamici, è utile paragonare i dati a un treno e l'architettura del modello di deep learning ai binari su cui viaggia questo treno.
Quando si sceglie un grafo statico si è obbligati a costruire l'intero tracciato ferroviario prima che i treni possano percorrerlo. Ogni treno è costretto a seguire il medesimo percorso ed eventuali deviazioni o svolte devono essere previste e realizzate a priori. Se infatti dovesse arrivare un treno che trasporta dati per cui non è stato predisposto un binario, il sistema andrebbe in blocco e sarebbe necessario ricostruire il tracciato. In altre parole, un grafo statico costringe a costruire il modello nella sua totalità prima di potervi far transitare i dati.
Un grafo dinamico consente invece di progettare un nuovo percorso per ciascun treno prima che parta e personalizzare l'itinerario in base al carico che trasporta. Ad esempio, se si trova davanti una frase breve, PyTorch costruisce un percorso breve per far transitare i dati attraverso il modello. Se al contrario ha di fronte un paragrafo più lungo, il grafo dinamico di PyTorch creerà un percorso più lungo.
Il vantaggio dell'approccio dinamico risiede nella flessibilità per singola iterazione e nella maggiore facilità di debug. Infatti, considerato che PyTorch costruisce il percorso riga per riga in tempo reale, se si verifica un problema, l'esecuzione si arresta esattamente sulla riga che ha causato l'errore.
Nel caso dei grafi statici, invece, gli errori sono riscontrati solo dopo aver completato l'intero tracciato e non vi è alcuna indicazione su cosa possa non aver funzionato. Questo può generare frustrazione e ritardi.
Cos'è autograd?
Autograd è il motore integrato di PyTorch che esegue automaticamente il calcolo di derivate e gradienti. PyTorch adotta un approccio specifico noto come sistema "tape-based" (o basato su nastro) perché ricorda il funzionamento dei vecchi registratori a nastro.
Quando si forniscono dati a un modello PyTorch durante l'addestramento, autograd attiva la funzione "registrazione" per memorizzare ogni operazione matematica e la sequenza in cui queste avvengono. Il sistema è dotato però anche della funzione "riavvolgimento" che gli consente di eseguire le operazioni matematiche a ritroso e calcolare in che misura ciascun parametro ha contribuito a un eventuale errore e come modificarlo.
Quando autograd "riavvolge il nastro", si comporta come un insegnante di matematica che esamina il lavoro svolto dai suoi studenti. A partire dalla risposta finale sbagliata ripercorre tutti i calcoli per individuare l'errore e dove apportare le modifiche in vista del tentativo successivo.
PyTorch e l'IA spiegabile
Ottenere un modello di IA che fornisca risposte corrette e pertinenti è solo un aspetto della questione. Le organizzazioni devono anche riuscire ad avere visibilità sul ragionamento che ha portato il modello a prendere una determinata decisione. Dando priorità ad aspetti quali trasparenza ed esplicabilità, è possibile creare un'IA che non sia solo avanzata tecnicamente, ma che sia anche sicura, equa e in linea con i valori e le esigenzedegli esseri umani.
Per quanto le funzionalità fondamentali di PyTorch, come il grafo computazionale dinamico e autograd, tengano traccia in maniera minuziosa del flusso matematico dei dati, non sono progettate per essere comprensibili agli esseri umani. Per ovviare al problema, PyTorch offre una libreria dedicata all'IA spiegabile definita Captum. Captum utilizza i dati provenienti da autograd per calcolare quale input abbia esercitato maggiore influenza matematica sull'output finale, aiutando così gli sviluppatori ad avere visibilità sulla "scatola nera" dei modelli di IA.
La trasparenza del modello offre numerosi vantaggi:
Risoluzione dei problemi più rapida. Comprendere la logica del modello e il processo che ha generato un determinato risultato contribuisce a snellire le operazioni di sviluppo, debugging e i processi decisionali.
Conformità normativa. L'IA spiegabile permette alle aziende di operare sempre nel rispetto delle normative vigenti e delle leggi sulla privacy.
Maggiore fiducia. Per adottare con efficacia tecnologie quali l'Agentic AI, gli utenti devono potersi fidare degli algoritmi che utilizzano.
Introduzione all'IA sovrana. L'IA sovrana riguarda la possibilità di mantenere il controllo sui propri sistemi di IA. A tale scopo, occorre avere la massima visibilità sul modo in cui un modello elabora i dati e genera le informazioni.
Come iniziare a utilizzare PyTorch?
È possibile installare ed eseguire PyTorch sia su sistemi locali che su piattaforme cloud, ma prima occorre installare Python. Per gli utenti che hanno dimestichezza con il linguaggio Python, PyTorch risulterà fin da subito molto intuitivo.
È inoltre possibile accedere a PyTorch tramite ambienti cloud basati su browser come Google Colab, che include PyTorch e l'accesso alla GPU. Con l'utilizzo gli utenti potranno notare come l'ecosistema PyTorch si estende a strumenti molto conosciuti. Di seguito alcuni esempi.
- Hugging Face: qui gli sviluppatori possono scaricare modelli PyTorch preaddestrati anziché crearli da zero.
- PyTorch Lightning: interfaccia di alto livello per PyTorch che nasconde il codice complesso e offre un'esperienza di sviluppo più lineare.
- ONNX: l'Open Neural Network Exchange (ONNX) converte i modelli PyTorch in schemi standardizzati, consentendone la lettura e l'esecuzione su diversi sistemi software o chip hardware senza bisogno di riscrivere il codice.
Workflow basato su Docker con PyTorch
Un container Docker è un sistema che consente il trasferimento di un'istantanea dell'ambiente di un computer. Adottare un flusso di lavoro basato su Docker con PyTorch semplifica la condivisione del codice tra macchine diverse e previene errori di configurazione e arresti anomali del sistema.
Inserire il codice PyTorch in un'immagine Docker permette di accorpare tutti gli elementi essenziali per la sua esecuzione in un container isolato dal resto della macchina. Ciò significa che il container si può inviare senza problemi a colleghi o tramite server cloud perché dispone già di tutte le configurazioni necessarie.
I creatori e i membri della community PyTorch mettono a disposizione immagini Docker ufficiali e precompilate. Questo semplifica ulteriormente lo sviluppo e il deployment poiché è possibile scaricare l'immagine Docker di PyTorch senza dover installare PyTorch sul proprio computer.
Workflow basato su Kubernetes con PyTorch
Per estendere PyTorch a milioni di utenti occorre un parco server capace di gestire il carico di lavoro. Una volta inserito il modello PyTorch in un'immagine Docker insieme a tutto ciò che serve per eseguirlo, Kubernetes interviene per distribuire il container dove necessario. Eseguire i carichi di lavoro dell'IA su Kubernetes permette di:
Automatizzare l'orchestrazione delle risorse. I modelli PyTorch richiedono importanti risorse di elaborazione, come GPU, CPU, memoria e larghezza di banda. Kubernetes garantisce l'operatività continua dei modelli PyTorch monitorando le risorse disponibili sui diversi server e pianificando i carichi di lavoro in base alla disponibilità. Se un server si blocca, Kubernetes è in grado di rilevare immediatamente l'errore e reindirizzare il traffico dati senza bisogno di intervento umano.
Migliorare la scalabilità. I carichi di lavoro dell'IA sono imprevedibili. Se un modello riceve improvvisamente un volume elevato di traffico, Kubernetes è in grado di creare duplicati del container Docker su più server in modo da gestire il picco di richieste. Quando invece il traffico è ridotto, Kubernetes ridimensiona le risorse per contenere i costi.
Supportare l'addestramento distribuito. Quando un modello di IA è troppo grande per essere addestrato su un singolo computer, gli sviluppatori possono utilizzare i container per distribuire il carico di lavoro su più macchine. Inserendo il modello in un container Docker e sfruttando l'architettura cloud, PyTorch è in grado di distribuire il lavoro di elaborazione su un cluster di GPU interconnesse.
Kubernetes si occupa di gestire la rete di container Docker permettendo loro di comunicare, sincronizzare i tensori ed eseguire calcoli come un unico "cervello" unificato. Questo tipo di elaborazione parallela aiuta a ridurre i tempi dell'addestramento.
Il ruolo di Red Hat
Red Hat® AI è progettato per un'inferenza rapida, flessibile ed efficiente tramite un server basato su vLLM. Collega in modo affidabile i modelli ai dati per unificare la personalizzazione e lo sviluppo di agenti specializzati su un'unica piattaforma. Realizzati su una base open source, i nostri prodotti offrono il pieno controllo dei flussi di lavoro dell'IA, dall'inizio alla fine, su qualsiasi scala.
Red Hat AI Portfolio include Red Hat AI Enterprise, una piattaforma per il deployment, la gestione e la scalabilità dell'inferenza IA, i flussi di lavoro Agentic AI e le applicazioni basate sull'IA su qualsiasi infrastruttura.
Artificial Intelligence (AI)
See how our platforms free customers to run AI workloads and models anywhere