TensorFlow 2.0 platinimo strategijos API yra galingas įrankis, supaprastinantis paskirstytą mokymą, suteikdamas aukšto lygio sąsają, skirtą skaičiavimams paskirstyti ir keisti įvairiuose įrenginiuose ir mašinose. Tai leidžia kūrėjams lengvai panaudoti kelių GPU ar net kelių mašinų skaičiavimo galią, kad galėtų greičiau ir efektyviau apmokyti savo modelius.
Paskirstytas mokymas yra būtinas norint valdyti didelius duomenų rinkinius ir sudėtingus modelius, kuriems reikia didelių skaičiavimo išteklių. Naudodama platinimo strategijos API, TensorFlow 2.0 suteikia galimybę sklandžiai paskirstyti skaičiavimus keliuose įrenginiuose, pvz., GPU, viename įrenginyje arba keliuose įrenginiuose. Tai leidžia lygiagrečiai apdoroti ir greičiau treniruotis.
TensorFlow 2.0 platinimo strategijos API palaiko įvairias skaičiavimų paskirstymo strategijas, įskaitant sinchroninį mokymą, asinchroninį mokymą ir parametrų serverius. Sinchroninis mokymas užtikrina, kad visi įrenginiai ar mašinos būtų sinchronizuojami treniruočių metu, o asinchroninis mokymas suteikia daugiau lankstumo įrenginio ar mašinos prieinamumo atžvilgiu. Kita vertus, parametrų serveriai leidžia efektyviai dalytis parametrais keliuose įrenginiuose ar mašinose.
Norėdami naudoti platinimo strategijos API, kūrėjai turi apibrėžti savo modelį ir mokymo kilpą strategijos apimtyje. Ši apimtis nurodo naudotiną paskirstymo strategiją ir užtikrina, kad visi svarbūs skaičiavimai būtų atitinkamai paskirstyti. „TensorFlow 2.0“ pateikia keletą integruotų platinimo strategijų, pvz., „MiroredStrategy“, kuri sinchroniškai apmoko modelį keliuose GPU, ir „MultiWorkerMirrorredStrategy“, kuri išplečia „MiroredStrategy“, kad palaikytų mokymą keliuose įrenginiuose.
Štai pavyzdys, kaip paskirstymo strategijos API galima naudoti TensorFlow 2.0:
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))
Šiame pavyzdyje pirmiausia sukuriame MirroredStrategy objektą, kuris paskirstys skaičiavimus visuose galimuose GPU. Tada mes apibrėžiame savo modelį, optimizatorių, praradimo funkciją ir mokymo duomenų rinkinį strategijos apimtyje. Funkcija „distributed_train_step“ yra papuošta „@tf.function“, kad ji būtų suderinama su „TensorFlow“ grafiku ir optimizuotų jos vykdymą.
Mokymo metu kartojame mokymo duomenų rinkinio paketus ir iškviečiame metodą „strategy.run“, kad kiekvienoje kopijoje būtų vykdoma funkcija „distributed_train_step“. Tada kiekvienos kartos nuostoliai sumažinami naudojant „strategy.reduce“ metodą, o vidutinis nuostolis apskaičiuojamas ir išspausdinamas kiekvienai epochai.
Naudodami platinimo strategijos API „TensorFlow 2.0“, kūrėjai gali lengvai išplėsti savo mokymo procesą, kad panaudotų kelis įrenginius ar mašinas, todėl jų modeliai bus mokomi greičiau ir efektyviau.
Kiti naujausi klausimai ir atsakymai apie EITC/AI/TFF „TensorFlow“ pagrindai:
- Kaip galima naudoti įterpimo sluoksnį, kad automatiškai priskirtų tinkamas ašis žodžių, kaip vektorių, vaizdavimo diagramai?
- Koks yra maksimalaus telkimo tikslas CNN?
- Kaip funkcijų ištraukimo procesas konvoliuciniame neuroniniame tinkle (CNN) taikomas vaizdo atpažinimui?
- Ar TensorFlow.js veikiantiems mašininio mokymosi modeliams būtina naudoti asinchroninio mokymosi funkciją?
- Koks yra TensorFlow Keras Tokenizer API maksimalaus žodžių skaičiaus parametras?
- Ar TensorFlow Keras Tokenizer API galima naudoti ieškant dažniausiai pasitaikančių žodžių?
- Kas yra TOCO?
- Koks ryšys tarp kelių mašininio mokymosi modelio epochų ir modelio veikimo prognozės tikslumo?
- Ar „TensorFlow Neural Structured Learning“ paketo kaimynų API sukuria papildytą mokymo duomenų rinkinį, pagrįstą natūraliais grafiko duomenimis?
- Kas yra „TensorFlow Neural Structured Learning“ paketo kaimynų API?
Peržiūrėkite daugiau klausimų ir atsakymų EITC/AI/TFF TensorFlow Fundamentals