Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Graafinen Suoritus | TensorFlow:n Perusteet
Johdanto TensorFlow'hun

bookGraafinen Suoritus

Funktiokoristaja

Funktiokoristaja on työkalu, joka "kietoutuu" funktion ympärille muuttaen sen käyttäytymistä. TensorFlow'ssa yleisimmin käytetty koristaja on @tf.function, joka muuntaa Python-funktion TensorFlow-grafiksi.

@tf.function-koristajan tarkoitus

Koristajien, kuten @tf.function, ensisijainen tarkoitus on optimoida laskentaa. Kun funktio koristetaan @tf.function-koristajalla, 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 parantamiseksi 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 heti niiden määrittelyn jälkeen, tarjoten joustavan ja intuitiivisen käyttöliittymän. Kuitenkin Eager Execution voi olla vähemmän tehokas monimutkaisissa laskelmissa ja suurissa malleissa.

Tässä kohtaa @tf.function ja graafinen suoritus tulevat käyttöön. 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 osagraafit 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-tulkkiin liittyvän ylikuorman.
  3. Rinnakkaisuus ja hajautus: Graafit mahdollistavat TensorFlow'n tunnistaa helposti rinnakkaisuuden mahdollisuudet ja jakaa laskentaa 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, jolloin graafia ei tarvitse luoda uudestaan ja aikaa säästyy.

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.

Vaiheet

  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 satunnaismatriisien luontitoiminnoilla.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

Suggested prompts:

Can you explain the difference between Eager Execution and Graph Execution in more detail?

How does TensorFlow handle conditionals and loops inside a @tf.function?

Can you provide more examples of using @tf.function with different types of functions?

close

Awesome!

Completion rate improved to 5.56

bookGraafinen Suoritus

Pyyhkäise näyttääksesi valikon

Funktiokoristaja

Funktiokoristaja on työkalu, joka "kietoutuu" funktion ympärille muuttaen sen käyttäytymistä. TensorFlow'ssa yleisimmin käytetty koristaja on @tf.function, joka muuntaa Python-funktion TensorFlow-grafiksi.

@tf.function-koristajan tarkoitus

Koristajien, kuten @tf.function, ensisijainen tarkoitus on optimoida laskentaa. Kun funktio koristetaan @tf.function-koristajalla, 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 parantamiseksi 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 heti niiden määrittelyn jälkeen, tarjoten joustavan ja intuitiivisen käyttöliittymän. Kuitenkin Eager Execution voi olla vähemmän tehokas monimutkaisissa laskelmissa ja suurissa malleissa.

Tässä kohtaa @tf.function ja graafinen suoritus tulevat käyttöön. 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 osagraafit 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-tulkkiin liittyvän ylikuorman.
  3. Rinnakkaisuus ja hajautus: Graafit mahdollistavat TensorFlow'n tunnistaa helposti rinnakkaisuuden mahdollisuudet ja jakaa laskentaa 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, jolloin graafia ei tarvitse luoda uudestaan ja aikaa säästyy.

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.

Vaiheet

  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 satunnaismatriisien luontitoiminnoilla.

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 2. Luku 2
single

single

some-alt