Stratejiya belavkirinê API-ya di TensorFlow 2.0 de amûrek hêzdar e ku perwerdehiya belavkirî hêsan dike bi peydakirina navgînek asta bilind ji bo belavkirin û pîvandina hesaban li ser gelek amûr û makîneyan. Ew destûrê dide pêşdebiran ku bi hêsanî hêza hesabker a pir GPU-yan an tewra pir makîneyan bikar bînin da ku modelên xwe zûtir û bikêrtir perwerde bikin.
Perwerdehiya belavkirî ji bo birêvebirina danûstendinên mezin û modelên tevlihev ên ku hewceyê çavkaniyên girîng ên hesabkirinê ne hewce ye. Bi API-ya stratejiya belavkirinê re, TensorFlow 2.0 rêyek bêkêmasî peyda dike da ku hesaban li gelek cîhazan, wek GPU, di nav makîneyek yek an li ser gelek makîneyan de belav bike. Ev pêvajoyek paralel dike û destûrê dide demên perwerdehiyê zûtir.
Stratejiya belavkirinê API-ya di TensorFlow 2.0 de stratejiyên cihêreng ji bo belavkirina hesaban piştgirî dike, di nav de perwerdehiya hevdem, perwerdehiya asynkron, û pêşkêşkerên parametreyê. Perwerdehiya hevdemî piştrast dike ku hemî amûr an makîneyên di dema perwerdehiyê de hevdem têne girtin, dema ku perwerdehiya asynchron di warê hebûna amûr an makîneyê de bêtir nermbûnê dide. Ji hêla din ve, pêşkêşkerên Parametreyê, parvekirina parameterê ya bikêrhatî li ser gelek amûr an makîneyan çalak dike.
Ji bo ku API-ya stratejiya belavkirinê bikar bînin, pêşdebir hewce ne ku modela xwe û lûleya perwerdehiyê di çarçoveyek stratejiyê de diyar bikin. Ev çarçove stratejiya belavkirinê ya ku were bikar anîn destnîşan dike û piştrast dike ku hemî hesabên têkildar li gorî wan têne belav kirin. TensorFlow 2.0 gelek stratejiyên belavkirinê yên çêkirî peyda dike, wek MirroredStrategy, ku bi hevdemî modelê li ser gelek GPU-yan perwerde dike, û MultiWorkerMirroredStrategy, ku MirroredStrategy dirêj dike da ku perwerdehiyê li seranserê makîneyên pirjimar piştgirî bike.
Li vir mînakek e ku meriv çawa stratejiya belavkirinê API dikare di TensorFlow 2.0 de were bikar anîn:
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))
Di vê nimûneyê de, em pêşî tiştek MirroredStrategy diafirînin, ku dê hesaban li hemî GPU-yên berdest belav bike. Dûv re em modela xwe, optimîzator, fonksiyona windakirinê, û databasa perwerdehiyê di çarçoveya stratejiyê de diyar dikin. Fonksiyona `distributed_train_step` bi `@tf.function` hatiye xemilandin da ku ew TensorFlow bi grafîkê re lihevhatî bike û pêkanîna wê xweşbîn bike.
Di dema perwerdehiyê de, em li ser komên databasa perwerdehiyê dubare dikin û bangî rêbaza `strategy.run` dikin da ku fonksiyona `train_gave_belavkirî` li ser her replikayê bi cih bînin. Dûv re windahiyên per-kopî bi karanîna rêbaza `strategy.reduce` têne kêm kirin, û windabûna navîn ji bo her serdemê tê hesibandin û çap kirin.
Bi karanîna API-ya stratejiya belavkirinê ya di TensorFlow 2.0 de, pêşdebiran dikarin bi hêsanî pêvajoya perwerdehiya xwe mezin bikin da ku gelek amûr an makîneyan bikar bînin, û di encamê de perwerdehiya modelên xwe zûtir û bikêrtir dibe.
Pirs û bersivên din ên vê dawiyê di derbarê Bingehîn TensorFlow EITC/AI/TFF:
- Meriv çawa dikare qatek binavkirî bikar bîne da ku bixweber axên rast ji bo nexşeyek nûnertiya peyvan wekî vektor destnîşan bike?
- Armanca berhevkirina max di CNN de çi ye?
- Pêvajoya derxistina taybetmendiyê di tora neuralî ya hevgirtî (CNN) de ji bo naskirina wêneyê çawa tê sepandin?
- Ma pêdivî ye ku ji bo modelên fêrbûna makîneyê yên ku li TensorFlow.js têne xebitandin fonksiyonek fêrbûna asynkron bikar bînin?
- Parametreya herî zêde ya peyvan a TensorFlow Keras Tokenizer API çi ye?
- Ma TensorFlow Keras Tokenizer API dikare were bikar anîn da ku peyvên herî pir caran bibîne?
- TOCO çi ye?
- Têkiliya di navbera çend serdeman de di modelek fêrbûna makîneyê de û rastbûna pêşbîniya ji xebitandina modelê de çi ye?
- Ma API-ya cîranên pakêtê di Fêrbûna Structured Neural of TensorFlow de li ser bingeha daneya grafika xwezayî danûstendinek perwerdehiya zêdekirî çêdike?
- API-ya cîranên pakêtê di Fêrbûna Structured Neural of TensorFlow de çi ye?
Pir pirs û bersivan di EITC/AI/TFF TensorFlow Fundamentals de bibînin