Scopri PyTorch 2.5 ed il Nuovo supporto per le GPU Intel

Con l'arrivo di PyTorch 2.5, Intel introduce il supporto per le sue GPU Data Center e Client. Questa innovazione permette di utilizzare le GPU Intel, incluse quelle della serie Intel® Data Center GPU Max e le GPU Client Intel®, in contesti di intelligenza artificiale sia su sistemi Linux che Windows, integrando PyTorch con la tecnologia SYCL per offrire un'esperienza utente coerente.

Requisiti Hardware e Software

Per iniziare, è necessario disporre di un hardware compatibile:

  • Intel Data Center GPU Max Series – Supportato su sistemi Linux.
  • Intel Client GPU – Supportato su Windows e Linux.

A livello di software, è essenziale installare:

  • Driver per GPU Intel: consultare le istruzioni di installazione specifiche per la propria piattaforma.
  • Pacchetti di supporto Intel: disponibili per l'integrazione con PyTorch.
  • Ambiente: è necessario configurare correttamente le variabili di ambiente per garantire l'accesso ai componenti necessari.

Installazione di PyTorch 2.5 per GPU Intel

Le versioni preliminari di PyTorch 2.5 possono essere installate tramite pip. Di seguito sono riportati i comandi per sistemi Linux e Windows.

Linux:

Per le versioni preliminari:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/xpu

Per le versioni nightly:

pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/xpu

Windows:

Per le versioni preliminari:

pip3 install torch --index-url https://download.pytorch.org/whl/test/xpu

Per le versioni nightly:

pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/xpu

In alternativa, è possibile costruire PyTorch e i pacchetti correlati a partire dal codice sorgente seguendo le istruzioni di installazione sul sito ufficiale di PyTorch.

Verifica della disponibilità della GPU Intel

Per verificare se la GPU Intel è disponibile, è possibile utilizzare il seguente comando in Python:

import torch
print(torch.xpu.is_available())  # torch.xpu è l'API per il supporto delle GPU Intel

Se il risultato è False, è necessario controllare l'installazione del driver, dei pacchetti di supporto e la configurazione dell'ambiente.

Modifiche Minime al Codice

Se già utilizzate PyTorch con GPU NVIDIA (CUDA), la migrazione verso le GPU Intel è semplice. È sufficiente sostituire il riferimento a cuda con xpu:

Codice CUDA:

tensor = torch.tensor([1.0, 2.0]).to("cuda")

Codice per GPU Intel:

tensor = torch.tensor([1.0, 2.0]).to("xpu")

Esempi di Utilizzo Pratico di PyTorch 2.5 con GPU Intel

PyTorch 2.5 supporta sia il training che l'inferenza su GPU Intel, con diverse modalità di precisione come FP32, BF16, FP16 e Automatic Mixed Precision (AMP).

Inferenza con FP32:

import torch
import torchvision.models as models

model = models.resnet50(weights="ResNet50_Weights.DEFAULT")
model.eval()
data = torch.rand(1, 3, 224, 224)

model = model.to("xpu")
data = data.to("xpu")

with torch.no_grad():
    model(data)
print("Execution finished")

Training con AMP:

import torch
import torchvision

LR = 0.001
train_dataset = torchvision.datasets.CIFAR10(root="datasets/cifar10/", train=True, download=True, transform=torchvision.transforms.ToTensor())
train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=128)

model = torchvision.models.resnet50()
criterion = torch.nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=LR, momentum=0.9)
scaler = torch.amp.GradScaler()

model.train()
model = model.to("xpu")
criterion = criterion.to("xpu")

for batch_idx, (data, target) in enumerate(train_loader):
    data, target = data.to("xpu"), target.to("xpu")
    with torch.autocast(device_type="xpu", dtype=torch.float16, enabled=True):
        output = model(data)
        loss = criterion(output, target)
    scaler.scale(loss).backward()
    scaler.step(optimizer)
    scaler.update()
    optimizer.zero_grad()
    if (batch_idx + 1) % 10 == 0:
        print(f"Iteration [{batch_idx+1}/{len(train_loader)}], Loss: {loss.item():.4f}")

Considerazioni Finali

Con il rilascio di PyTorch 2.5, Intel ha reso possibile utilizzare le proprie GPU per applicazioni AI sia nei data center che in dispositivi client, migliorando la flessibilità e la disponibilità di hardware per il deep learning. La transizione dalle GPU NVIDIA alle GPU Intel è resa agevole grazie alla compatibilità dell'API xpu e al supporto per le diverse modalità di precisione.