PyTorch on populaarne avatud lähtekoodiga masinõpperaamistik, mis põhineb Pythonil ja on optimeeritud GPU-kiirendatud andmetöötluse jaoks. Algselt 2016. aastal Meta AI poolt välja töötatud ja nüüdseks Linuxi sihtasutuse osaks olev PyTorch on kiiresti muutunud üheks kõige laialdasemalt kasutatavaks süvaõppe uurimise ja rakenduste raamistikuks.
Erinevalt mõnest teisest raamistikust, nagu TensorFlow, kasutab PyTorch dünaamilisi arvutusgraafikuid, mis võimaldavad suuremat paindlikkust ja silumisvõimalusi. PyTorchi peamised eelised on järgmised:
- Lihtne ja intuitiivne Pythoni API närvivõrkude loomiseks
- Lai toetus GPU/TPU kiirendusele
- Sisseehitatud tugi automaatseks eristamiseks
- Jaotatud koolitusvõimalused
- Koostalitlusvõime teiste Pythoni raamatukogudega, nagu NumPy
PyTorchi välk on PyTorchi peale ehitatud kerge ümbris, mis lihtsustab veelgi uurija töövoo ja mudeli arendamise protsessi. Lightningi abil saavad andmeteadlased keskenduda pigem mudelite kujundamisele kui standardkoodile. Lightningi peamised eelised on järgmised:
- Pakub struktuuri PyTorchi koodi korraldamiseks
- Käsitseb treeningtsükli katlakoodi
- Kiirendab uurimiskatseid hüperparameetrite häälestamisega
- Lihtsustab mudeli skaleerimist ja juurutamist
Ühendades PyTorchi võimsuse ja paindlikkuse Lightningi kõrgetasemeliste API-dega, saavad arendajad kiiresti luua skaleeritavaid süvaõppesüsteeme ja itereerida kiiremini.
To start using PyTorch and Lightning, you’ll first need to install a few prerequisites:
- Python 3.6 või uuem
- Pip-paketi installija
- Kiirendatud toimingute jaoks on soovitatav kasutada NVidia GPU-d (ainult protsessoriga seadistamine on võimalik, kuid aeglasem)
Pythoni ja PyTorchi installimine
It’s recommended to use Anaconda for setting up a Python environment for data science and deep learning workloads. Follow the steps below:
- Laadige alla ja installige oma OS-i jaoks Anaconda aadressilt siin
- Looge Conda keskkond (või kasutage mõnda muud Pythoni keskkonnahaldurit):
conda create -n pytorch python=3.8
- Aktiveerige keskkond:
conda activate pytorch
- Installige PyTorch:
conda install pytorch torchvision torchaudio -c pytorch
Kontrollige, kas PyTorch on õigesti installitud, käivitades Pythonis kiirtesti:
import torch
x = torch.rand(3, 3)
print(x)
This will print out a random 3×3 tensor, confirming PyTorch is working properly.
PyTorch Lightningi installimine
Kui PyTorch on installitud, saame nüüd installida Lightningi pipi abil:
pip install lightning-ai
Let’s confirm Lightning is set up correctly:
import lightning_ai
print(lightning_ai.__version__)
See peaks välja printima versiooninumbri, näiteks 0.6.0
.
Now we’re ready to start building deep learning models.
PyTorch kasutab põhiandmestruktuurina tensoreid, mis on sarnased NumPy massiividega. Tensoreid saavad kasutada GPU-d ja need toetavad närvivõrkude ehitamisel automaatset eristamist.
Let’s define a simple neural network for image classification:
import torch
import torch.nn as nn
import torch.nn.functional as F class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.conv1 = nn.Conv2d(3, 6, 5) self.pool = nn.MaxPool2d(2, 2) self.conv2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.Linear(16 * 5 * 5, 120) self.fc2 = nn.Linear(120, 84) self.fc3 = nn.Linear(84, 10) def forward(self, x): x = self.pool(F.relu(self.conv1(x))) x = self.pool(F.relu(self.conv2(x))) x = torch.flatten(x, 1) x = F.relu(self.fc1(x)) x = F.relu(self.fc2(x)) x = self.fc3(x) return x net = Net()
See määratleb kahe konvolutsioonikihi ja kolme täielikult ühendatud kihiga konvolutsioonilise närvivõrgu 10 klassi klassifitseerimiseks. The forward()
meetod määrab, kuidas andmed võrgu kaudu liiguvad.
Nüüd saame seda mudelit Lightningi abil näidisandmete põhjal treenida.
Välk pakub a LightningModule
class to encapsulate PyTorch model code and the training loop boilerplate. Let’s convert our model:
import pytorch_lightning as pl class LitModel(pl.LightningModule): def __init__(self): super().__init__() self.model = Net() def forward(self, x): return self.model(x) def training_step(self, batch, batch_idx): x, y = batch y_hat = self.forward(x) loss = F.cross_entropy(y_hat, y) return loss def configure_optimizers(self): return torch.optim.Adam(self.parameters(), lr=0.02) model = LitModel()
. training_step()
määrab edasipääsu ja kaotuse arvutamise. Seadistame Adam optimeerija õppimiskiirusega 0.02.
Nüüd saame seda mudelit hõlpsalt treenida:
trainer = pl.Trainer()
trainer.fit(model, train_dataloader, val_dataloader)
Treener tegeleb ajastu loopimise, valideerimise ja logimisega automaatselt. Testiandmete põhjal saame mudelit hinnata:
result = trainer.test(model, test_dataloader)
print(result)
Võrdluseks siin on võrgu- ja treeningahela kood puhtas PyTorchis:
import torch
import torch.nn.functional as F
from torch.utils.data import DataLoader # Assume Net class and train_dataloader, val_dataloader, test_dataloader are defined class Net(torch.nn.Module): # Define your network architecture here pass # Initialize model and optimizer
model = Net()
optimizer = torch.optim.Adam(model.parameters(), lr=0.02) # Training Loop
for epoch in range(10): # Number of epochs for batch_idx, (x, y) in enumerate(train_dataloader): optimizer.zero_grad() y_hat = model(x) loss = F.cross_entropy(y_hat, y) loss.backward() optimizer.step() # Validation Loop
model.eval()
with torch.no_grad(): for x, y in val_dataloader: y_hat = model(x) # Testing Loop and Evaluate
model.eval()
test_loss = 0
with torch.no_grad(): for x, y in test_dataloader: y_hat = model(x) test_loss += F.cross_entropy(y_hat, y, reduction='sum').item()
test_loss /= len(test_dataloader.dataset)
print(f"Test loss: {test_loss}")
Lightning muudab PyTorchi mudeli arendamise uskumatult kiireks ja intuitiivseks.
Lightning pakub palju sisseehitatud võimalusi hüperparameetrite häälestamiseks, ülepaigutamise vältimiseks ja mudeli haldamiseks.
Hüperparameetrite häälestamine
We can optimize hyperparameters like learning rate using Lightning’s tuner
moodul:
tuner = pl.Tuner(trainer)
tuner.fit(model, train_dataloader)
print(tuner.results)
See teostab Bayesi otsingu hüperparameetriruumis.
Overfitting käsitsemine
Sellised strateegiad nagu väljalangevad kihid ja varajane peatumine võivad vähendada ülepaigutamist:
model = LitModel()
model.add_module('dropout', nn.Dropout(0.2)) # Regularization trainer = pl.Trainer(early_stop_callback=True) # Early stopping
Mudeli salvestamine ja laadimine
Lightning muudab mudelite salvestamise ja uuesti laadimise lihtsaks:
# Save
trainer.save_checkpoint("model.ckpt") # Load
model = LitModel.load_from_checkpoint(checkpoint_path="model.ckpt")
See säilitab mudeli täieliku oleku ja hüperparameetrid.
Nii PyTorch kui ka PyTorch Lightning on võimsad süvaõppe teegid, kuid need teenivad erinevaid eesmärke ja pakuvad ainulaadseid funktsioone. Kui PyTorch pakub põhiplokke süvaõppemudelite kujundamiseks ja juurutamiseks, siis PyTorch Lightningi eesmärk on lihtsustada mudelikoolituse korduvaid osi, kiirendades seeläbi arendusprotsessi.
Peamised erinevused
Siin on PyTorchi ja PyTorch Lightningi peamiste erinevuste kokkuvõte:
tunnusjoon | PyTorch | PyTorchi välk |
---|---|---|
Treeningsilmus | Käsitsi kodeeritud | Automatiseeritud |
Katlaplaadi kood | Nõutud | Miinimum |
Hüperparameetrite häälestamine | Käsitsi seadistamine | Sisseehitatud tugi |
Hajutatud koolitus | Saadaval, kuid käsitsi seadistatav | Automatiseeritud |
Koodi organisatsioon | Konkreetne struktuur puudub | Soodustab modulaarset disaini |
Mudeli salvestamine ja laadimine | Vajalik kohandatud rakendamine | Lihtsustatud kontrollpunktidega |
Silumine | Täiustatud, kuid käsitsi | Sisseehitatud palkidega on lihtsam |
GPU/TPU tugi | Mudelipõhine | Lihtsam seadistamine |
Paindlikkus vs mugavus
PyTorch on tuntud oma paindlikkuse poolest, eriti dünaamiliste arvutusgraafikutega, mis sobib suurepäraselt uurimiseks ja katsetamiseks. Kuid see paindlikkus tuleb sageli maksta rohkem standardkoodi kirjutamise hinnaga, eriti treeningtsükli, hajutatud treeningu ja hüperparameetrite häälestamise jaoks. Teisest küljest võtab PyTorch Lightning suure osa sellest katlaplaadist ära, võimaldades samas vajadusel täielikku kohandamist ja juurdepääsu madalama taseme PyTorchi API-dele.
Arengu kiirus
If you’re starting a project from scratch or conducting complex experiments, PyTorch Lightning can save you a lot of time. The LightningModule class streamlines the training process, automates logging, and even simplifies distributed training. This allows you to focus more on your model architecture and less on the repetitive aspects of model training and validation.
Kohtuotsus
Kokkuvõttes pakub PyTorch üksikasjalikumat juhtimist ja sobib suurepäraselt teadlastele, kes vajavad sellist üksikasjalikkust. PyTorch Lightning on aga loodud selleks, et muuta uurimistööst tootmiseni kulgev tsükkel sujuvamaks ja kiiremaks, ilma et see võtaks ära PyTorchi pakutavat jõudu ja paindlikkust. See, kas valite PyTorchi või PyTorch Lightningi, sõltub teie konkreetsetest vajadustest, kuid hea uudis on see, et saate hõlpsalt nende kahe vahel vahetada või isegi kasutada neid oma projekti erinevate osade jaoks koos.
Selles artiklis käsitlesime PyTorchi ja PyTorch Lightningi süvaõppeks kasutamise põhitõdesid.
- PyTorch pakub võimsat ja paindlikku raamistikku närvivõrkude loomiseks
- PyTorch Lightning lihtsustab koolituse ja mudelite arendamise töövooge
- Põhifunktsioonid, nagu hüperparameetrite optimeerimine ja mudelihaldus, kiirendavad süvaõppe uurimist
Nende vundamentide abil saate hakata ehitama ja koolitama täiustatud mudeleid, nagu CNN-id, RNN-id, GAN-id ja palju muud. Aktiivne avatud lähtekoodiga kogukond pakub ka Lightningi tuge ja täiendusi, nagu komponendi- ja optimeerimisteek Bolt.
Head sügavat õppimist!
Matthew Mayo (@mattmayo13) omab arvutiteaduse magistrikraadi ja andmekaevandamise magistrikraadi. KDnuggetsi peatoimetajana püüab Matthew muuta keerukad andmeteaduse kontseptsioonid kättesaadavaks. Tema erialaste huvide hulka kuuluvad loomuliku keele töötlemine, masinõppe algoritmid ja areneva AI uurimine. Teda juhib missioon demokratiseerida teadmisi andmeteaduse kogukonnas. Matthew on kodeerinud alates 6. eluaastast.
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- PlatoData.Network Vertikaalne generatiivne Ai. Jõustage ennast. Juurdepääs siia.
- PlatoAiStream. Web3 luure. Täiustatud teadmised. Juurdepääs siia.
- PlatoESG. Süsinik, CleanTech, Energia, Keskkond päikeseenergia, Jäätmekäitluse. Juurdepääs siia.
- PlatoTervis. Biotehnoloogia ja kliiniliste uuringute luureandmed. Juurdepääs siia.
- Allikas: https://www.kdnuggets.com/5-steps-getting-started-pytorch?utm_source=rss&utm_medium=rss&utm_campaign=getting-started-with-pytorch-in-5-steps
- :on
- :on
- $ UP
- 1
- 10
- 16
- 20
- 2016
- 7
- 8
- 84
- 9
- a
- kokkuvõtteid
- kiirendama
- kiirendatud
- kiirendades
- kiirendus
- juurdepääs
- juurdepääsetav
- aktiivne
- Adam
- täiendused
- edasijõudnud
- eelised
- AI
- Eesmärgid
- algoritme
- võimaldama
- Lubades
- võimaldab
- Ka
- an
- ja
- Teine
- API
- API-liidesed
- rakendused
- arhitektuur
- OLEME
- artikkel
- AS
- aspektid
- eeldab
- At
- automatiseerib
- Automaatne
- automaatselt
- ära
- põhineb
- Alused
- Bayesi
- BE
- muutuma
- olnud
- alla
- Kasu
- vahel
- Plokid
- Bolt
- ehitama
- Ehitus
- ehitatud
- sisseehitatud
- kuid
- by
- arvutus
- CAN
- võimeid
- Vali
- ckpt
- klass
- klassid
- klassifikatsioon
- kood
- Kodeerimine
- kombineerimine
- tuleb
- kogukond
- võrdlus
- keeruline
- komponent
- arvutamine
- arvuti
- Arvutiteadus
- arvutustehnika
- mõisted
- Juhtimine
- Kinnitama
- seotud
- kontrollida
- muutma
- konvolutsioonneuraalvõrk
- tuum
- Maksma
- kaetud
- looma
- kohandamine
- tsükkel
- andmed
- andmete kaevandamine
- andmeteadus
- sügav
- sügav õpe
- määratlema
- määratletud
- Määratleb
- Kraad
- demokratiseerima
- kasutuselevõtu
- kavandatud
- projekteerimine
- detail
- arenenud
- Arendajad
- & Tarkvaraarendus
- erinevused
- erinev
- jagatud
- jagatud koolitus
- ajendatud
- dünaamiline
- Varajane
- kergesti
- peatoimetaja
- smirgel
- keskkond
- epohh
- ajajärgud
- eriti
- hindama
- Isegi
- suurepärane
- katseid
- Avastades
- KIIRE
- kiiremini
- FUNKTSIOONID
- vähe
- esimene
- Paindlikkus
- paindlik
- Keskenduma
- järgima
- eest
- edasi
- Sihtasutus
- Sihtasutused
- Raamistik
- raamistikud
- Alates
- täis
- täielikult
- funktsionaalne
- edasi
- GANid
- saamine
- hea
- GPU
- GPU
- koolilõpetaja
- graafikud
- suurem
- käsi
- Varred
- he
- siin
- kõrgetasemeline
- rohkem
- tema
- omab
- Kuidas
- aga
- HTTPS
- Hüperparameetrite häälestamine
- pilt
- Piltide klassifikatsioon
- täitmine
- rakendamisel
- import
- in
- sisaldama
- uskumatult
- paigaldama
- el
- intuitiivne
- IT
- ITS
- KDnuggets
- Võti
- teadmised
- keel
- kihid
- õppimine
- vähem
- laskma
- Tase
- raamatukogud
- Raamatukogu
- välk
- kerge
- nagu
- Linux
- Linuxi sihtasutus
- ll
- koormus
- metsaraie
- kaotus
- Partii
- masin
- masinõpe
- tegema
- TEEB
- juhtimine
- juht
- käsiraamat
- palju
- meister
- Matthew
- Meta
- meetod
- Kaevandamine
- missioon
- mudel
- mudelid
- modulaarne
- moodul
- rohkem
- kõige
- palju
- Natural
- Loomulik keel
- Natural Language Processing
- Vajadus
- vaja
- vajadustele
- neto
- võrk
- võrgustikud
- Neural
- Närvivõrgus
- närvivõrgud
- uudised
- nüüd
- number
- tuim
- Nvidia
- of
- pakkuma
- Pakkumised
- sageli
- Vana
- on
- ONE
- avatud
- avatud lähtekoodiga
- tegutses
- Operations
- optimeerimine
- optimeerima
- optimeeritud
- or
- algselt
- OS
- Muu
- meie
- välja
- üle
- pakend
- osa
- eriti
- osad
- sooritama
- möödub
- täidab
- Platon
- Platoni andmete intelligentsus
- PlatoData
- ujula
- populaarne
- võimalik
- võim
- võimas
- eeldused
- ennetada
- trükk
- protsess
- töötlemine
- professionaalne
- projekt
- korralikult
- annab
- eesmärkidel
- Python
- pütorch
- Kiire
- kiiresti
- juhuslik
- määr
- pigem
- RE
- valmis
- soovitatav
- vähendama
- Tuntud
- korduv
- teadustöö
- uurija
- Teadlased
- kaasa
- Tulemused
- tagasipöördumine
- jooksmine
- s
- Säästa
- säästmine
- skaalautuvia
- ketendamine
- teadus
- teadlased
- kriimustada
- Otsing
- SELF
- teenima
- komplekt
- kehtestamine
- seade
- peaks
- sarnane
- lihtne
- lihtsustama
- alates
- sujuvam
- mõned
- allikas
- Ruum
- konkreetse
- algus
- alustatud
- Käivitus
- riik
- Sammud
- Veel
- peatumine
- struktuur
- selline
- summa
- KOKKUVÕTE
- toetama
- Lüliti
- süsteemid
- võtmine
- Tandem
- tensorivool
- test
- Testimine
- kui
- et
- .
- Põhitõed
- Neile
- sellega
- Need
- nad
- see
- kolm
- Läbi
- aeg
- et
- ülemine
- tõrvik
- Torchvision
- Rong
- koolitus
- kaks
- ainulaadne
- ainulaadsed omadused
- kasutama
- Kasutatud
- kasutusalad
- kasutamine
- kinnitamine
- versioon
- vs
- oli
- we
- millal
- kas
- mis
- kuigi
- WHO
- laialdaselt
- will
- koos
- ilma
- töövoog
- Töövoogud
- töö
- kirjutamine
- X
- aastat
- sa
- Sinu
- sephyrnet