په TensorFlow 2.0 کې د توزیع ستراتیژۍ API یو پیاوړی وسیله ده چې د ډیری وسیلو او ماشینونو په اوږدو کې د توزیع او اندازه کولو محاسبې لپاره د لوړې کچې انٹرفیس چمتو کولو سره توزیع شوي روزنه ساده کوي. دا پراختیا کونکو ته اجازه ورکوي چې په اسانۍ سره د ډیری GPUs یا حتی ډیری ماشینونو کمپیوټري ځواک څخه ګټه پورته کړي ترڅو خپل ماډلونه ګړندي او ډیر مؤثره وروزي.
ویشل شوې روزنه د لوی ډیټاسیټونو او پیچلو ماډلونو اداره کولو لپاره اړینه ده چې د پام وړ کمپیوټري سرچینو ته اړتیا لري. د توزیع کولو ستراتیژۍ API سره، TensorFlow 2.0 په ډیرو وسیلو لکه GPUs کې، په یو ماشین کې یا په ډیری ماشینونو کې د محاسبې توزیع کولو لپاره بې ساري لار وړاندې کوي. دا موازي پروسس کوي او د ګړندي روزنې وختونو ته اجازه ورکوي.
په TensorFlow 2.0 کې د توزیع ستراتیژۍ API د محاسبې توزیع کولو لپاره د مختلفو ستراتیژیو ملاتړ کوي، پشمول همغږي روزنه، غیر متناسب روزنه، او پیرامیټر سرورونه. همغږي روزنه دا یقیني کوي چې ټول وسایل یا ماشینونه د روزنې پرمهال په همغږي کې ساتل کیږي، پداسې حال کې چې غیر متناسب روزنه د وسیلې یا ماشین شتون په شرایطو کې د ډیر انعطاف لپاره اجازه ورکوي. د پیرامیټر سرورونه، له بلې خوا، په ډیری وسیلو یا ماشینونو کې د پیرامیټ مؤثره شریکول فعالوي.
د توزیع ستراتیژی API کارولو لپاره، پراختیا کونکي باید د ستراتیژۍ په ساحه کې خپل ماډل او د روزنې لوپ تعریف کړي. دا دائره د توزیع کولو ستراتیژي مشخصوي چې کارول کیږي او ډاډ ترلاسه کوي چې ټول اړونده محاسبې د مطابق سره توزیع شوي. TensorFlow 2.0 د توزیع ډیری جوړ شوي ستراتیژیانې وړاندې کوي، لکه MirroredStrategy، کوم چې په یو شمیر GPUs کې ماډل په همغږي توګه روزي، او MultiWorkerMirroredStrategy، کوم چې په ډیری ماشینونو کې د روزنې مالتړ لپاره MirroredStrategy غزوي.
دلته یو مثال دی چې څنګه د توزیع ستراتیژي API په 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))
په دې مثال کې، موږ لومړی د MirroredStrategy څیز جوړ کړو، کوم چې به په ټولو موجود GPUs کې حسابونه وویشي. بیا موږ د ستراتیژۍ په چوکاټ کې زموږ ماډل، اصلاح کوونکی، د ضایع کولو فعالیت، او د روزنې ډیټاسیټ تعریف کوو. د `distributed_train_step` فنکشن د `@tf.function` سره سینګار شوی ترڅو دا د TensorFlow ګراف سره مطابقت ولري او د هغې اجرا کول غوره کړي.
د روزنې په جریان کې، موږ د روزنې ډیټاسیټ بستې تکرار کوو او په هر نقل کې د `distributed_train_step` فعالیت اجرا کولو لپاره `strategy.run` میتود ته زنګ وهو. بیا د هر نقل زیانونه د `strategy.reduce` میتود په کارولو سره کم شوي، او اوسط ضایع د هرې دورې لپاره محاسبه او چاپ کیږي.
په TensorFlow 2.0 کې د توزیع ستراتیژۍ API په کارولو سره، پراختیا کونکي کولی شي په اسانۍ سره د دوی د روزنې پروسې اندازه کړي ترڅو ډیری وسیلو یا ماشینونو ګټه پورته کړي، چې په پایله کې د دوی ماډلونه ګړندي او ډیر اغیزمنه روزنه ترلاسه کوي.
په اړه نورې وروستۍ پوښتنې او ځوابونه EITC/AI/TFF TensorFlow اساسات:
- څنګه کولای شو چی د ویکتورونو په توګه د کلمو د نمایندګۍ د پلاټ لپاره مناسب محورونه په اتوماتيک ډول وټاکو لپاره د سرایت کولو پرت وکاروو؟
- په CNN کې د اعظمي پولینګ هدف څه دی؟
- د عکس پیژندنې لپاره په کنولوشنال عصبي شبکه (CNN) کې د فیچر استخراج پروسه څنګه پلي کیږي؟
- ایا دا اړینه ده چې په TensorFlow.js کې د ماشین زده کړې ماډلونو لپاره د غیر متناسب زده کړې فعالیت وکاروئ؟
- د TensorFlow Keras Tokenizer API د کلمو پیرامیټر اعظمي شمیر څه دی؟
- ایا TensorFlow Keras Tokenizer API د ډیری مکرر کلمو موندلو لپاره کارول کیدی شي؟
- TOCO څه شی دی؟
- د ماشین زده کړې ماډل کې د یو شمیر دورونو او د ماډل چلولو څخه د وړاندوینې دقت ترمنځ اړیکه څه ده؟
- ایا د TensorFlow په عصبي جوړښت شوي زده کړې کې د پیک ګاونډی API د طبیعي ګراف ډیټا پراساس د روزنې ډیټاسیټ وده کوي؟
- د TensorFlow په عصبي ساختماني زده کړې کې د پیک ګاونډی API څه شی دی؟
نورې پوښتنې او ځوابونه په EITC/AI/TFF TensorFlow Fundamentals کې وګورئ