TensorFlow 2.0 میں تقسیم کی حکمت عملی API ایک طاقتور ٹول ہے جو متعدد آلات اور مشینوں میں کمپیوٹیشن کی تقسیم اور اسکیلنگ کے لیے ایک اعلیٰ سطحی انٹرفیس فراہم کرکے تقسیم شدہ تربیت کو آسان بناتا ہے۔ یہ ڈویلپرز کو آسانی سے ایک سے زیادہ GPUs یا یہاں تک کہ ایک سے زیادہ مشینوں کی کمپیوٹیشنل طاقت کا فائدہ اٹھانے کی اجازت دیتا ہے تاکہ وہ اپنے ماڈلز کو تیز اور زیادہ موثر طریقے سے تربیت دے سکیں۔
تقسیم شدہ تربیت بڑے ڈیٹاسیٹس اور پیچیدہ ماڈلز کو سنبھالنے کے لیے ضروری ہے جس کے لیے اہم کمپیوٹیشنل وسائل کی ضرورت ہوتی ہے۔ تقسیم کی حکمت عملی API کے ساتھ، TensorFlow 2.0 متعدد آلات، جیسے GPUs، ایک مشین کے اندر یا متعدد مشینوں میں کمپیوٹیشن تقسیم کرنے کا ایک ہموار طریقہ فراہم کرتا ہے۔ یہ متوازی پروسیسنگ کو قابل بناتا ہے اور تیز تر تربیت کے اوقات کی اجازت دیتا ہے۔
TensorFlow 2.0 میں تقسیم کی حکمت عملی API حسابات کی تقسیم کے لیے مختلف حکمت عملیوں کی حمایت کرتی ہے، بشمول ہم وقت ساز تربیت، غیر مطابقت پذیر تربیت، اور پیرامیٹر سرورز۔ ہم وقت ساز تربیت اس بات کو یقینی بناتی ہے کہ تربیت کے دوران تمام آلات یا مشینوں کو ہم آہنگی میں رکھا جائے، جبکہ غیر مطابقت پذیر تربیت آلہ یا مشین کی دستیابی کے لحاظ سے زیادہ لچک پیدا کرنے کی اجازت دیتی ہے۔ پیرامیٹر سرورز، دوسری طرف، متعدد آلات یا مشینوں میں موثر پیرامیٹر شیئرنگ کو فعال کرتے ہیں۔
تقسیم کی حکمت عملی API کو استعمال کرنے کے لیے، ڈویلپرز کو حکمت عملی کے دائرہ کار میں اپنے ماڈل اور ٹریننگ لوپ کی وضاحت کرنے کی ضرورت ہے۔ یہ دائرہ کار استعمال کی جانے والی تقسیم کی حکمت عملی کی وضاحت کرتا ہے اور اس بات کو یقینی بناتا ہے کہ تمام متعلقہ حسابات اسی کے مطابق تقسیم کیے جائیں۔ TensorFlow 2.0 کئی بلٹ ان ڈسٹری بیوشن کی حکمت عملی فراہم کرتا ہے، جیسے MirroredStrategy، جو متعدد GPUs میں ہم وقت سازی سے ماڈل کو تربیت دیتا ہے، اور MultiWorkerMirroredStrategy، جو MirroredStrategy کو ایک سے زیادہ مشینوں میں تربیت میں مدد فراہم کرتا ہے۔
یہاں ایک مثال ہے کہ کس طرح TensorFlow 2.0 میں تقسیم کی حکمت عملی 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))
اس مثال میں، ہم سب سے پہلے ایک MirroredStrategy آبجیکٹ بناتے ہیں، جو تمام دستیاب GPUs میں کمپیوٹیشن کو تقسیم کرے گا۔ اس کے بعد ہم حکمت عملی کے دائرہ کار میں اپنے ماڈل، آپٹیمائزر، نقصان کی تقریب، اور تربیتی ڈیٹاسیٹ کی وضاحت کرتے ہیں۔ 'distributed_train_step' فنکشن کو '@tf.function' سے مزین کیا گیا ہے تاکہ اسے TensorFlow گراف سے ہم آہنگ بنایا جا سکے اور اس کے عمل کو بہتر بنایا جا سکے۔
ٹریننگ کے دوران، ہم ٹریننگ ڈیٹاسیٹ کے بیچوں پر اعادہ کرتے ہیں اور ہر ایک نقل پر 'distributed_train_step' فنکشن کو انجام دینے کے لیے `strategy.run` طریقہ کو کال کرتے ہیں۔ اس کے بعد فی نقل کے نقصانات کو `strategy.reduce` طریقہ استعمال کرتے ہوئے کم کیا جاتا ہے، اور اوسط نقصان کا حساب لگایا جاتا ہے اور ہر دور کے لیے پرنٹ کیا جاتا ہے۔
TensorFlow 2.0 میں تقسیم کی حکمت عملی API کا استعمال کرتے ہوئے، ڈویلپرز آسانی سے اپنے تربیتی عمل کو ایک سے زیادہ آلات یا مشینوں سے فائدہ اٹھانے کے لیے پیمانہ بنا سکتے ہیں، جس کے نتیجے میں ان کے ماڈلز کی تیز رفتار اور زیادہ موثر تربیت ہوتی ہے۔
سے متعلق دیگر حالیہ سوالات اور جوابات EITC/AI/TFF ٹینسرفلو بنیادی اصول:
- ویکٹر کے بطور الفاظ کی نمائندگی کے پلاٹ کے لیے خود بخود مناسب محور تفویض کرنے کے لیے کوئی سرایت کرنے والی پرت کا استعمال کیسے کر سکتا ہے؟
- CNN میں زیادہ سے زیادہ پولنگ کا مقصد کیا ہے؟
- تصویر کی شناخت کے لیے کنوولوشنل نیورل نیٹ ورک (CNN) میں فیچر نکالنے کا عمل کیسے لاگو ہوتا ہے؟
- کیا TensorFlow.js میں چلنے والے مشین لرننگ ماڈلز کے لیے غیر مطابقت پذیر لرننگ فنکشن استعمال کرنا ضروری ہے؟
- TensorFlow Keras Tokenizer API زیادہ سے زیادہ الفاظ کا پیرامیٹر کیا ہے؟
- کیا TensorFlow Keras Tokenizer API کو اکثر الفاظ تلاش کرنے کے لیے استعمال کیا جا سکتا ہے؟
- TOCO کیا ہے؟
- مشین لرننگ ماڈل میں کئی عہدوں اور ماڈل کو چلانے سے پیشین گوئی کی درستگی کے درمیان کیا تعلق ہے؟
- کیا نیورل سٹرکچرڈ لرننگ آف ٹینسر فلو میں پیک پڑوسی API قدرتی گراف ڈیٹا پر مبنی ایک بڑھا ہوا تربیتی ڈیٹاسیٹ تیار کرتا ہے؟
- نیورل سٹرکچرڈ لرننگ آف ٹینسر فلو میں پیک پڑوسی API کیا ہے؟
مزید سوالات اور جوابات EITC/AI/TFF TensorFlow Fundamentals میں دیکھیں