API strategi pengedaran dalam TensorFlow 2.0 ialah alat berkuasa yang memudahkan latihan teragih dengan menyediakan antara muka peringkat tinggi untuk mengedar dan menskalakan pengiraan merentas berbilang peranti dan mesin. Ia membolehkan pembangun dengan mudah memanfaatkan kuasa pengiraan berbilang GPU atau malah berbilang mesin untuk melatih model mereka dengan lebih pantas dan lebih cekap.
Latihan teragih adalah penting untuk mengendalikan set data yang besar dan model kompleks yang memerlukan sumber pengiraan yang ketara. Dengan API strategi pengedaran, TensorFlow 2.0 menyediakan cara yang lancar untuk mengedarkan pengiraan merentas berbilang peranti, seperti GPU, dalam satu mesin atau merentas berbilang mesin. Ini membolehkan pemprosesan selari dan membolehkan masa latihan yang lebih cepat.
API strategi pengedaran dalam TensorFlow 2.0 menyokong pelbagai strategi untuk mengedarkan pengiraan, termasuk latihan segerak, latihan tak segerak dan pelayan parameter. Latihan segerak memastikan semua peranti atau mesin sentiasa disegerakkan semasa latihan, manakala latihan tak segerak membolehkan lebih fleksibiliti dari segi ketersediaan peranti atau mesin. Pelayan parameter, sebaliknya, membolehkan perkongsian parameter yang cekap merentas berbilang peranti atau mesin.
Untuk menggunakan API strategi pengedaran, pembangun perlu menentukan model dan gelung latihan mereka dalam skop strategi. Skop ini menentukan strategi pengedaran yang akan digunakan dan memastikan semua pengiraan yang berkaitan diagihkan dengan sewajarnya. TensorFlow 2.0 menyediakan beberapa strategi pengedaran terbina dalam, seperti MirroredStrategy, yang melatih model secara serentak merentas berbilang GPU dan MultiWorkerMirroredStrategy, yang memperluaskan MirroredStrategy untuk menyokong latihan merentas berbilang mesin.
Berikut ialah contoh cara API strategi pengedaran boleh digunakan dalam 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))
Dalam contoh ini, kami mula-mula mencipta objek MirroredStrategy, yang akan mengedarkan pengiraan merentas semua GPU yang tersedia. Kami kemudian menentukan model, pengoptimum, fungsi kehilangan dan set data latihan kami dalam skop strategi. Fungsi `distributed_train_step` dihiasi dengan `@tf.function` untuk menjadikannya serasi dengan graf TensorFlow dan mengoptimumkan pelaksanaannya.
Semasa latihan, kami mengulangi kumpulan set data latihan dan memanggil kaedah `strategy.run` untuk melaksanakan fungsi `distributed_train_step` pada setiap replika. Kerugian setiap replika kemudiannya dikurangkan menggunakan kaedah `strategi.mengurangkan`, dan purata kerugian dikira dan dicetak untuk setiap zaman.
Dengan menggunakan API strategi pengedaran dalam TensorFlow 2.0, pembangun boleh dengan mudah menskalakan proses latihan mereka untuk memanfaatkan berbilang peranti atau mesin, menghasilkan latihan yang lebih pantas dan lebih cekap bagi model mereka.
Soalan dan jawapan terbaru lain mengenai Asas EITC/AI/TFF TensorFlow:
- Bagaimanakah seseorang boleh menggunakan lapisan benam untuk menetapkan paksi yang betul secara automatik untuk plot perwakilan perkataan sebagai vektor?
- Apakah tujuan pengumpulan maksimum dalam CNN?
- Bagaimanakah proses pengekstrakan ciri dalam rangkaian neural convolutional (CNN) digunakan pada pengecaman imej?
- Adakah perlu menggunakan fungsi pembelajaran tak segerak untuk model pembelajaran mesin yang dijalankan dalam TensorFlow.js?
- Apakah parameter bilangan perkataan maksimum TensorFlow Keras Tokenizer API?
- Bolehkah TensorFlow Keras Tokenizer API digunakan untuk mencari perkataan yang paling kerap?
- Apa itu TOCO?
- Apakah hubungan antara beberapa zaman dalam model pembelajaran mesin dan ketepatan ramalan daripada menjalankan model?
- Adakah API jiran pek dalam Pembelajaran Berstruktur Neural TensorFlow menghasilkan set data latihan tambahan berdasarkan data graf semula jadi?
- Apakah API jiran pek dalam Pembelajaran Berstruktur Neural TensorFlow?
Lihat lebih banyak soalan dan jawapan dalam EITC/AI/TFF TensorFlow Fundamentals