Vai al contenuto principale

È arrivato PyTorch 2.0: tutto quello che sappiamo

Esplora l’ultima release di PyTorch, più veloce, più Pythonic e più dinamica.
Aggiornato 29 set 2026  · 6 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

PyTorch è un framework di deep learning open-source guidato dalla community che offre un modo flessibile ed efficiente per creare modelli di machine learning. Ha un’interfaccia intuitiva, un ampio supporto della community e un’integrazione perfetta con l’ecosistema Python.

PyTorch 2.0 ha introdotto cambiamenti fondamentali nelle operazioni del compilatore core, mantenendo però lo stesso livello di familiarità e semplicità per gli sviluppatori. Questo ultimo miglioramento promette prestazioni accelerate e maggiore supporto per Dynamic Shapes e Distributed.

Cosa c’è di nuovo in PyTorch 2.0?

PyTorch sta spostando parti dal C++ di nuovo in Python, rendendolo più veloce e più hackable. Con la versione 2.0 è stato introdotto torch.compile, che ha cambiato il modo in cui PyTorch opera a livello di compilatore. Questa funzionalità è opzionale e non influisce sul tuo vecchio codice.

PyTorch 2.0 Compile

Per fornire una solida base alla funzionalità torch.compile, sono state introdotte nuove tecnologie:

  • TorchDynamo. Un compilatore JIT (Just-in-Time) a livello Python progettato specificamente per accelerare PyTorch. Integrandosi con la frame evaluation API in CPython, modifica dinamicamente il bytecode Python a runtime, consentendo un’esecuzione più rapida del codice.
  • AOTAutograd. Un toolkit che aiuta gli sviluppatori ad accelerare l’addestramento dei modelli su PyTorch. Traccia in anticipo sia i grafi forward che backward. Inoltre, AOTAutograd offre meccanismi semplici per compilare senza soluzione di continuità i grafi estratti utilizzando compilatori di deep learning all’avanguardia.
  • PrimTorch. Riducendo in modo significativo il numero di operatori PyTorch da oltre 2000 a un set conciso di circa 250 operatori primitivi, PrimTorch ha semplificato notevolmente il processo di sviluppo di funzionalità o backend per PyTorch.
  • TorchInductor. Un compilatore di deep learning nativo di PyTorch che mappa automaticamente i modelli PyTorch in codice generato per molteplici accelerator e backend. TorchInductor usa OpenAI Triton come blocco di base per l’accelerazione GPU.

Tutte le nuove tecnologie sono scritte in Python e supportano le Dynamic shapes. Rendono il nuovo PyTorch più veloce nell’eseguire il codice, più flessibile e facilmente hackable, abbassando la barriera d’ingresso.

Esempi di codice

Vediamo l’implementazione rapida e semplice del PyTorch Compiler.

Senza torch.compile

import torch
model = torch.hub.load("pytorch/vision", "resnet50", weights="IMAGENET1K_V2")

Senza torch.compile

Per aumentare le prestazioni del modello, ti basta aggiungere il wrapper torch.compile attorno al modello per ottenere un modello compilato. È plug-and-play.

import torch
model = torch.hub.load("pytorch/vision", "resnet50", weights="IMAGENET1K_V2")
compiled_model = torch.compile(model)

Impara a creare modelli di deep learning con la libreria PyTorch seguendo il corso Deep Learning with PyTorch.

Puoi semplicemente addestrare il tuo modello senza cambiare nulla.

import torch
model = torch.compile(model)
for batch in dataloader:
    run_epoch(model, batch)

Oppure puoi eseguire l’inferenza del modello.

model = torch.compile(model)
model(**input)

La funzione torch.compile() dispone di parametri aggiuntivi:

  1. mode: puoi specificare su cosa il compilatore debba ottimizzare durante la compilazione.
  2. dynamic: si usa per abilitare il percorso di codice per le Dynamic Shapes.
  3. fullgraph: compila il programma in un singolo grafo.
  4. backend: per impostazione predefinita usa TorchInductor, ma puoi specificare altri backend di compilazione disponibili.
def torch.compile(model: Callable,
  *,
  mode: Optional[str] = "default",
  dynamic: bool = False,
  fullgraph:bool = False,
  backend: Union[str, Callable] = "inductor",
  **kwargs
) -> torch._dynamo.NNOptimizedModule

Impara le basi delle API PyTorch e crea da zero una semplice rete neurale con il nostro tutorial su PyTorch.

Benchmark

Per iniziare con PyTorch 2.0, gli sviluppatori hanno usato 163 progetti open-source (46 HuggingFace Transformers, 61 TIMM e 56 TorchBench) per creare benchmark prestazionali della nuova funzionalità di compilazione. Il benchmark include compiti come classificazione di immagini, generazione di immagini, language modeling, sistemi di raccomandazione e reinforcement learning.

Il risultato mostra prestazioni notevolmente migliorate durante l’addestramento su GPU NVIDIA A100.

Nota: al momento, il backend predefinito supporta solo CPU e le serie di GPU Nvidia Volta e Ampere.

Benchmark del compilatore PyTorch su GPU NVIDIA A100

Benchmark del compilatore PyTorch su GPU NVIDIA A100

È un inizio, e nei prossimi aggiornamenti vedrai ulteriori miglioramenti a prestazioni e scalabilità.

Come installare PyTorch 2.0

Puoi installare facilmente una versione più recente di PyTorch usando pip.

Copia e incolla il comando qui sotto nel tuo terminale.

Per GPU: CUDA 11.8

Si scopre che le versioni più recenti di GPU hanno mostrato prestazioni drasticamente migliori.

pip3 install numpy --pre torch torchvision torchaudio --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cu118

Per GPU: CUDA 11.7

pip3 install numpy --pre torch torchvision torchaudio --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cu117

Per CPU:

pip3 install numpy --pre torch torchvision torchaudio --force-reinstall --index-url https://download.pytorch.org/whl/nightly/cpu

Per la verifica:

git clone https://github.com/pytorch/pytorch
cd tools/dynamo
python verify_dynamo.py

Accelerare Hugging Face con PyTorch 2.0

Proviamo la funzione torch.compile per accelerare i transformer di Hugging Face. Puoi far girare il tuo codice Hugging Face più velocemente con un decorator di una sola riga.

Nota: con torch.compile(), abbiamo visto un incremento di prestazioni dal 30% al 200% in fase di training - TorchDynamo Performance Dashboard.

In questo esempio applicheremo torch.compile a un large language model “dolly-v2-3b" per un’inferenza più rapida. Per eseguire il codice in Google Colab, dobbiamo prima installare le librerie Python necessarie.

%%capture
%pip install transformers accelerate xformers

Poi scaricheremo e caricheremo il tokenizer e il language model usando i transformer di Hugging Face. Successivamente, aggiungeremo nn.Module alla funzione torch.compile().

import torch
from transformers import (
    AutoTokenizer,
    AutoModelForCausalLM,
    GenerationConfig,
    pipeline,
)


tokenizer = AutoTokenizer.from_pretrained("databricks/dolly-v2-3b")
model = AutoModelForCausalLM.from_pretrained(
    "databricks/dolly-v2-3b", device_map="auto", torch_dtype=torch.bfloat16
)
model = torch.compile(model) #only line of code is required

Nel passo finale, convertiremo il testo in token usando il tokenizer, lo passeremo a model.generate e poi decodificheremo l’output generato in testo usando tokenizer.batch_decode.

prompt = "I love you because"
inputs = tokenizer(prompt, return_tensors="pt").to(device="cuda:0")


# Generate
generate_ids = model.generate(inputs.input_ids, max_length=50)
tokenizer.batch_decode(
    generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)[0]

Come possiamo vedere, “dolly-v2” ha completato la frase aggiungendo: “you are a good person…”

"I love you because you are a good person.
You are kind, you help others, you are honest, you are loyal, you are humble, you are humble, you are humble.
You are a good person."

Funziona anche con la pipeline di Hugging Face. Basta fornire un tipo di task, modello e tokenizer.

generator = pipeline("text-generation", model= model,tokenizer=tokenizer)
generator("What is the name of Germany's Capital?")

Output:

[{'generated_text': "What is the name of Germany's Capital? 
The name of Germany's Capital is Berlin."}]

La funzione di compilazione funziona subito con le librerie Python transformers, accelerate e TIMM.

Se non sai da dove iniziare la tua carriera nel deep learning e nell’IA, il career track Machine Learning Scientist with Python è un ottimo punto di partenza. Offre una panoramica completa delle competenze Python cruciali che possono aiutarti a trovare lavoro come machine learning scientist.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.

Argomenti
Python
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro