pytorch-accelerated
pytorch-accelerated è una libreria leggera progettata per accelerare il processo di addestramento dei modelli PyTorch
fornendo un ciclo di addestramento minimale ma estensibile - racchiuso in un unico oggetto Trainer -
che è sufficientemente flessibile per gestire la maggior parte dei casi d'uso, e in grado di sfruttare diverse opzioni hardware
senza necessità di modifiche al codice.
pytorch-accelerated offre un set di funzionalità essenziale e pone grande enfasi su semplicità e trasparenza,
per consentire agli utenti di capire esattamente cosa sta succedendo sotto il cofano, ma senza dover scrivere e mantenere loro stessi il boilerplate!
Le caratteristiche principali sono:
- Un ciclo di addestramento semplice e contenuto, ma facilmente personalizzabile, che dovrebbe funzionare subito nei casi più semplici;
- Gestisce il posizionamento dei dispositivi, la mixed-precision, l'integrazione DeepSpeed, il training multi-GPU e distribuito senza modifiche al codice.
- Utilizza componenti PyTorch puri, senza modifiche o wrapper aggiuntivi, e si integra facilmente
- Una piccola e snella API assicura una curva di apprendimento minima per gli utenti PyTorch già esistenti.
pytorch-accelerated è orgogliosamente e trasparentemente costruito sopra
Hugging Face Accelerate, che si occupa
dello spostamento dei dati tra i dispositivi e dell'avvio delle configurazioni di addestramento. Quando si personalizza il trainer o si avvia
l'addestramento, si consiglia agli utenti di consultare la documentazione di Accelerate
per comprendere tutte le opzioni disponibili; Accelerate fornisce funzioni comode per operazioni come il raggruppamento dei tensori
e il clipping dei gradienti, il cui utilizzo può essere visto nella cartella pytorch-accelerated
esempi!
Per saperne di più sulle motivazioni che stanno dietro questa libreria, insieme a una guida dettagliata per iniziare, dai un'occhiata a questo post sul blog.
Installazione
pytorch-accelerated può essere installato tramite pip usando il seguente comando:
pip install pytorch-acceleratedPer rendere il pacchetto il più snello possibile, i pacchetti necessari per eseguire gli esempi non sono inclusi di default. Per includere questi pacchetti, puoi usare il seguente comando:
pip install pytorch-accelerated[examples]Guida rapida
Per iniziare, importa e utilizza semplicemente il Trainer di pytorch-accelerated, come mostrato nel seguente esempio,
e poi avvia l’addestramento utilizzando la
accelerate CLI
descritta di seguito.
# examples/core/train_mnist.py
import osfrom torch import nn, optim
from torch.utils.data import random_split
from torchvision import transforms
from torchvision.datasets import MNIST
from pytorch_accelerated import Trainer
class MNISTModel(nn.Module):
def __init__(self):
super().__init__()
self.main = nn.Sequential(
nn.Linear(in_features=784, out_features=128),
nn.ReLU(),
nn.Linear(in_features=128, out_features=64),
nn.ReLU(),
nn.Linear(in_features=64, out_features=10),
)
def forward(self, input):
return self.main(input.view(input.shape[0], -1))
def main():
dataset = MNIST(os.getcwd(), download=True, transform=transforms.ToTensor())
train_dataset, validation_dataset, test_dataset = random_split(dataset, [50000, 5000, 5000])
model = MNISTModel()
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
loss_func = nn.CrossEntropyLoss()
trainer = Trainer(
model,
loss_func=loss_func,
optimizer=optimizer,
)
trainer.train(
train_dataset=train_dataset,
eval_dataset=validation_dataset,
num_epochs=8,
per_device_batch_size=32,
)
trainer.evaluate(
dataset=test_dataset,
per_device_batch_size=64,
)
if __name__ == "__main__":
main()
Per avviare l'addestramento utilizzando la accelerate CLI
, sulla/le tua/e macchina/e, esegui: accelerate config --config_file accelerate_config.yaml
e rispondi alle domande poste. Questo genererà un file di configurazione che verrà utilizzato per impostare correttamente le opzioni predefinite durante
accelerate launch --config_file accelerate_config.yaml train.py [--training-args]
Nota: L'utilizzo della accelerate CLI è completamente opzionale, l'addestramento può anche essere avviato nel modo consueto usando:
python train.py / python -m torch.distributed ...
a seconda della configurazione della tua infrastruttura, per utenti che desiderano mantenere un controllo più dettagliato sul comando di avvio.
Esempi di addestramento più complessi possono essere visti nella cartella degli esempi qui.
In alternativa, se preferisci prima comprendere i concetti fondamentali, questi si trovano nella documentazione.
Utilizzo
A chi è rivolto pytorch-accelerated?
- Utenti che hanno familiarità con PyTorch ma vorrebbero evitare di scrivere il boilerplate del ciclo di addestramento comune
- Utenti che apprezzano, e sono a loro agio, nel selezionare e creare i propri modelli, funzioni di perdita, ottimizzatori e dataset.
- Utenti che valorizzano un set di funzionalità semplice e snello, dove il comportamento è facile da debug, comprendere e motivare!
Quando non dovrei usare pytorch-accelerated?
- Se stai cercando una soluzione end-to-end, che comprenda tutto dal caricamento dati all'inferenza,
pytorch-accelerated si concentra solo sul processo di addestramento, con tutte le altre
problematiche lasciate alla responsabilità dell'utente.
- Se vorresti scrivere l'intero ciclo di addestramento tu stesso, solo senza tutte le difficoltà di gestione dei dispositivi,
Trainer, il ciclo di addestramento è fondamentalmente suddiviso in numerosediversi metodi che dovresti sovrascrivere. Ma, prima di andare, scrivere quei cicli for è davvero così importante
da giustificare il ricominciare da capo un'altra volta 😉.
- Se stai lavorando su un caso d'uso personalizzato, altamente complesso, che non si adatta agli schemi dei soliti cicli di addestramento
Ringraziamenti
Molti aspetti del design e delle funzionalità di pytorch-accelerated sono stati fortemente ispirati da numerose eccellenti
librerie e framework come fastai, timm,
PyTorch-lightning e Hugging Face Accelerate. Ognuno di questi strumenti
ha avuto un impatto enorme sia su questa libreria che sulla comunità del machine learning, e la loro influenza non può essere
sottolineata abbastanza!
pytorch-accelerated ha preso solo ispirazione da questi strumenti, e tutte le funzionalità incluse sono state implementate
da zero in modo da avvantaggiare questa libreria. Le uniche eccezioni sono alcuni degli script nella cartella
examples
in cui sono state prese e modificate risorse esistenti per mostrare le funzionalità di pytorch-accelerated;
questi casi sono chiaramente segnalati, con riconoscimento dato agli autori originali.
--- Tranlated By Open Ai Tx | Last indexed: 2026-02-28 ---