Profiloikaa pullonkaula
Selvittäkää, mihin aika ja muisti kuluvat
Profiloikaa pullonkaula on ilmainen Deep Learning Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Deep Learning Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.
Miksi profiloida ensin
Selvitä ennen optimointia, mihin aika todella kuluu. Arvailu hukkaa työtä, kun taas nopea profilointi näyttää todelliset hitaat kohdat.
Kaksi yleistä pullonkaulaa
Harjoitus pysähtyy yleensä jommassakummassa kahdesta kohdasta: laskutoimituksia tekevässä GPU-laskennassa tai sitä syöttävässä datan käsittelyputkessa. On tärkeää tietää, kumpi on kyseessä.
Mittaa ensin karkeasti
Aloita yksinkertaisesti mittaamalla silmukan osa kellon avulla. Karkea perf_counter-lukema ohjaa usein oikealle alueelle muutamassa sekunnissa.
import time
t = time.perf_counter()
# run one batch
print(time.perf_counter() - t)GPU-työ on asynkronista
CUDA suoritetaan taustalla, joten yksinkertaiset ajastimet voivat johtaa harhaan. Kutsu ensin synchronize, jotta GPU on varmasti valmis ennen kellon lukemista.
torch.cuda.synchronize()Sisäänrakennettu profiloija
Kun tarvitset tarkkoja tietoja, käytä torch.profiler-kontekstinhallintaa. Se tallentaa jokaisen operaation keston sekä suorittimella että näytönohjaimella.
from torch.profiler import profileKääri profiloitava koodi
Suorita tarkastelemasi osa profile-lohkon sisällä. Sekä CPU- että CUDA-aktiviteettien valitseminen antaa kokonaiskuvan.
with profile(activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA]) as prof:
model(x)Lue taulukkoa
Tulosta tulokset kustannuksen mukaan lajiteltuina, jotta raskaimmat operaatiot näkyvät ylimpänä. key_averages-taulukko ryhmittelee samanlaiset operaatiot yhteen.
print(prof.key_averages().table(sort_by='cuda_time_total'))Tunnista datan pullonkaula
Jos GPU on usein toimettomana odottaessaan, DataLoader on liian hidas. Useammat työntekijät tai välimuistiin tallennetut tiedot korjaavat tämän yleensä.
Tunnista laskennan pullonkaula
Jos yksi matmul- tai conv-operaatio hallitsee taulukkoa, rajoite on raakaa laskentatehoa. Sekatarkkuus tai pienempi malli on keino tilanteen parantamiseen.
Seuraa myös muistia
Profiloija voi ilmoittaa myös huippumuistin käytön. profile_memory-asetuksen seuraaminen paljastaa, mitkä kerrokset kuluttavat eniten muistia ja mitä kannattaa karsia.
with profile(profile_memory=True) as prof:
model(x)Mittaa, muuta, mittaa uudelleen
Optimointi on silmukka: profiloi, tee yksi muutos ja profiloi sitten uudelleen. Luota lukuihin, älä arvauksiin, kun varmistat, että muutos todella auttoi.
Pikatarkistus
GPU on usein toimettomana erien välillä. Mikä on todennäköinen pullonkaula?
Kertaus
Profiloi ennen säätämistä: käytä synchronizea rehellisiin ajoitusmittauksiin, etsi raskaimmat operaatiot torch.profiler-työkalulla, korjaa dataan tai laskentaan liittyvä ongelma ja mittaa uudelleen. 🔍
Opi Python tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Profiloikaa pullonkaula” ilmainen?
Kyllä – oppitunnin ”Profiloikaa pullonkaula” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Deep Learning Academy-kurssin, päivitä CoddyKit PROhon. Deep Learning Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Profiloikaa pullonkaula”?
Selvittäkää, mihin aika ja muisti kuluvat Harjoittelet Deep Learning Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Deep Learning Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Deep Learning Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Profiloikaa pullonkaula”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Deep Learning Academy-oppitunnilla?
Kyllä. Jokainen Deep Learning Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Sekatarkkuus autocastilla ja GradScalerilla
- Gradienttien kerryttäminen suuria eriä varten
- Profiloikaa pullonkaula
- Vähentäkää GPU-muistin käyttöä