Deep Learning Academy · Oppitunti

Profiloikaa pullonkaula

Selvittäkää, mihin aika ja muisti kuluvat

Oppitunti 3/413 vaihetta

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 profile

Kää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. 🔍

Aloita maksutta

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

  1. Sekatarkkuus autocastilla ja GradScalerilla
  2. Gradienttien kerryttäminen suuria eriä varten
  3. Profiloikaa pullonkaula
  4. Vähentäkää GPU-muistin käyttöä
← Takaisin: Deep Learning Academy