Izplatīšanas stratēģijas API programmā TensorFlow 2.0 ir spēcīgs rīks, kas vienkāršo dalīto apmācību, nodrošinot augsta līmeņa saskarni aprēķinu izplatīšanai un mērogošanai vairākās ierīcēs un iekārtās. Tas ļauj izstrādātājiem viegli izmantot vairāku GPU vai pat vairāku iekārtu skaitļošanas jaudu, lai ātrāk un efektīvāk apmācītu savus modeļus.
Sadalīta apmācība ir būtiska, lai apstrādātu lielas datu kopas un sarežģītus modeļus, kuriem nepieciešami ievērojami skaitļošanas resursi. Izmantojot izplatīšanas stratēģijas API, TensorFlow 2.0 nodrošina nevainojamu veidu, kā izplatīt aprēķinus vairākās ierīcēs, piemēram, GPU, vienā mašīnā vai vairākās iekārtās. Tas nodrošina paralēlu apstrādi un nodrošina ātrāku treniņu laiku.
Izplatīšanas stratēģijas API programmā TensorFlow 2.0 atbalsta dažādas aprēķinu izplatīšanas stratēģijas, tostarp sinhrono apmācību, asinhrono apmācību un parametru serverus. Sinhronā apmācība nodrošina, ka visas ierīces vai mašīnas treniņa laikā tiek sinhronizētas, savukārt asinhronā apmācība nodrošina lielāku elastību attiecībā uz ierīces vai mašīnas pieejamību. No otras puses, parametru serveri nodrošina efektīvu parametru koplietošanu vairākās ierīcēs vai iekārtās.
Lai izmantotu izplatīšanas stratēģijas API, izstrādātājiem stratēģijas darbības jomā ir jādefinē savs modelis un apmācības cilpa. Šī joma nosaka izmantojamo izplatīšanas stratēģiju un nodrošina, ka visi attiecīgie aprēķini tiek atbilstoši sadalīti. TensorFlow 2.0 nodrošina vairākas iebūvētas izplatīšanas stratēģijas, piemēram, MirroredStrategy, kas sinhroni apmāca modeli vairākos GPU, un MultiWorkerMirrorredStrategy, kas paplašina MirroredStrategy, lai atbalstītu apmācību vairākās iekārtās.
Tālāk ir sniegts piemērs, kā TensorFlow 2.0 var izmantot izplatīšanas stratēģijas API.
python import tensorflow as tf strategy = tf.distribute.MirroredStrategy() with strategy.scope(): model = tf.keras.Sequential([...]) # Define your model optimizer = tf.keras.optimizers.Adam() loss_object = tf.keras.losses.SparseCategoricalCrossentropy() train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(batch_size) @tf.function def distributed_train_step(inputs): features, labels = inputs with tf.GradientTape() as tape: predictions = model(features, training=True) loss = loss_object(labels, predictions) gradients = tape.gradient(loss, model.trainable_variables) optimizer.apply_gradients(zip(gradients, model.trainable_variables)) return loss for epoch in range(num_epochs): total_loss = 0.0 num_batches = 0 for inputs in train_dataset: per_replica_loss = strategy.run(distributed_train_step, args=(inputs,)) total_loss += strategy.reduce(tf.distribute.ReduceOp.SUM, per_replica_loss, axis=None) num_batches += 1 average_loss = total_loss/num_batches print("Epoch {}: Loss = {}".format(epoch, average_loss))
Šajā piemērā mēs vispirms izveidojam objektu MirroredStrategy, kas sadalīs aprēķinus pa visiem pieejamajiem GPU. Pēc tam mēs definējam mūsu modeli, optimizētāju, zudumu funkciju un apmācības datu kopu stratēģijas darbības jomā. Funkcija "distributed_train_step" ir dekorēta ar "@tf.function", lai padarītu to saderīgu ar TensorFlow grafiku un optimizētu tās izpildi.
Apmācības laikā mēs atkārtojam apmācības datu kopas paketes un izsaucam metodi “strategy.run”, lai izpildītu funkciju “distributed_train_step” katrā replikā. Pēc tam katras kopijas zudumi tiek samazināti, izmantojot metodi “strategy.reduce”, un tiek aprēķināti un izdrukāti vidējie zaudējumi katram laikmetam.
Izmantojot TensorFlow 2.0 izplatīšanas stratēģijas API, izstrādātāji var viegli mērogot savu apmācības procesu, lai izmantotu vairākas ierīces vai mašīnas, tādējādi nodrošinot ātrāku un efektīvāku modeļu apmācību.
Citi jaunākie jautājumi un atbildes par EITC/AI/TFF TensorFlow pamati:
- Kā var izmantot iegulšanas slāni, lai automātiski piešķirtu pareizas asis vārdu kā vektoru attēlojuma diagrammai?
- Kāds ir maksimālās apvienošanas mērķis CNN?
- Kā attēlu atpazīšanai tiek izmantots funkciju ieguves process konvolucionālajā neironu tīklā (CNN)?
- Vai mašīnmācīšanās modeļiem, kas darbojas TensorFlow.js, ir jāizmanto asinhronā mācīšanās funkcija?
- Kāds ir TensorFlow Keras Tokenizer API maksimālā vārdu skaita parametrs?
- Vai TensorFlow Keras Tokenizer API var izmantot, lai atrastu biežākos vārdus?
- Kas ir TOCO?
- Kāda ir saistība starp vairākiem mašīnmācīšanās modeļa laikmetiem un modeļa palaišanas prognozēšanas precizitāti?
- Vai paketes kaimiņu API TensorFlow neironu strukturētajā mācībā rada paplašinātu apmācības datu kopu, kuras pamatā ir dabiskie diagrammas dati?
- Kas ir paketes kaimiņu API TensorFlow neironu strukturētajā apmācībā?
Skatiet vairāk jautājumu un atbilžu EITC/AI/TFF TensorFlow Fundamentals