Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Graafinen Suoritus | Osio
Syväoppiminen TensorFlow'lla
Osio 1. Luku 14
single

single

bookGraafinen Suoritus

Pyyhkäise näyttääksesi valikon

Funktiokoristelija on työkalu, joka "kietoo" funktion ympärille muuttaakseen sen käyttäytymistä. TensorFlow'ssa yleisimmin käytetty koristelija on @tf.function, joka muuntaa Python-funktion TensorFlow-grafiksi.

@tf.function-koristelijan tarkoitus

Koristelijoiden, kuten @tf.function, ensisijainen tarkoitus on optimoida laskentaa. Kun funktio koristellaan @tf.function-koristelijalla, TensorFlow muuntaa funktion erittäin tehokkaaksi grafiksi, joka voidaan suorittaa huomattavasti nopeammin, erityisesti monimutkaisissa operaatioissa. Tämä muunnos mahdollistaa TensorFlow'n optimointien hyödyntämisen ja rinnakkaisuuden käytön, mikä on olennaista koneoppimistehtävien suorituskyvyn kannalta.

Esimerkki

Ymmärryksen tueksi on annettu esimerkki.

1234567891011
import tensorflow as tf # Define a simple function and decorate it with `@tf.function` @tf.function def compute_area(radius): return 3.1415 * radius ** 2 # Call the function area = compute_area(tf.constant(3.0)) print(f"The area is: {area.numpy()}")
copy

Tässä koodissa compute_area() muunnetaan TensorFlow-grafiksi, mikä tekee sen suorittamisesta nopeampaa ja tehokkaampaa.

Kuinka graafinen suoritus toimii?

TensorFlow toimii kahdessa tilassa: Eager Execution ja Graph Execution. Oletuksena TensorFlow käyttää Eager Execution -tilaa, jolloin operaatiot suoritetaan sitä mukaa kuin ne määritellään, tarjoten joustavan ja intuitiivisen käyttöliittymän. Eager Execution voi kuitenkin olla vähemmän tehokas monimutkaisissa laskelmissa ja suurissa malleissa.

Tässä kohtaa @tf.function ja graafinen suoritus tulevat mukaan. Kun käytät @tf.function-koristetta funktiossa, TensorFlow muuntaa kyseisen funktion staattiseksi laskentagrafiksi.

Optimointitekniikat

  1. Graafin optimointi: TensorFlow optimoi graafin karsimalla käyttämättömät solmut, yhdistämällä päällekkäiset aligraafit ja suorittamalla muita graafitason optimointeja. Tämä johtaa nopeampaan suoritukseen ja pienempään muistinkäyttöön.
  2. Nopeampi suoritus: Graafit suoritetaan nopeammin kuin eager-operaatiot, koska ne vähentävät Pythonin aiheuttamaa ylikuormitusta. Python ei osallistu graafin suorittamiseen, mikä poistaa Python-tulkinnan kutsujen ylikuorman.
  3. Rinnakkaisuus ja hajautus: Graafit mahdollistavat TensorFlow'n tunnistaa helposti rinnakkaisuuden mahdollisuudet ja jakaa laskentatehtävät useille laitteille, kuten CPU:ille ja GPU:ille.
  4. Välimuisti ja uudelleenkäyttö: Kun funktiota, joka on koristeltu @tf.function-koristeella, kutsutaan samalla syötteen allekirjoituksella, TensorFlow käyttää aiemmin luotua graafia uudelleen, mikä säästää aikaa, koska graafia ei tarvitse luoda uudelleen.

Esimerkki Gradient Tape -toiminnolla

1234567891011
import tensorflow as tf @tf.function def compute_gradient(x): with tf.GradientTape() as tape: y = x * x * x return tape.gradient(y, x) x = tf.Variable(3.0) grad = compute_gradient(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

Tässä esimerkissä compute_gradient on funktio, joka laskee gradientin lausekkeelle y = x^3 annetussa pisteessä x. @tf.function-koristetta käytetään varmistamaan, että funktio suoritetaan TensorFlow-graafina.

Esimerkki ehdollisella logiikalla

1234567891011121314
import tensorflow as tf @tf.function def compute_gradient_conditional(x): with tf.GradientTape() as tape: if tf.reduce_sum(x) > 0: y = x * x else: y = x * x * x return tape.gradient(y, x) x = tf.Variable([-2.0, 2.0]) grad = compute_gradient_conditional(x) print(f"The gradient at x = {x.numpy()} is {grad.numpy()}")
copy

Tässä esimerkissä funktio laskee eri gradientteja ehdon perusteella. TensorFlow'n @tf.function ei ainoastaan muuta staattista laskentakaaviota, vaan myös käsittelee dynaamisia elementtejä kuten ehtolauseita ja silmukoita tehokkaasti.

Tehtävä

Swipe to start coding

Tässä tehtävässä vertaillaan kahden TensorFlow-funktion suoritusaikoja, jotka suorittavat matriisikertolaskun: toinen käyttää @tf.function-koristetta ja toinen ei.

  1. Määrittele matrix_multiply_optimized-funktio varmistaen, että siinä on @tf.function-koriste.
  2. Täydennä molemmat funktiot laskemalla tulosmatriisien keskiarvo.
  3. Luo kaksi tasaisesti jakautunutta satunnaismatriisia TensorFlow'n satunnaismatriisin generointitoiminnoilla.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 14
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

some-alt