اردو نیوز
تازہ ترین
اے آئی اور ٹیکنالوجی

cuda-convnet کے اندر: AlexNet کی دوہری GPU لیئرز اور ImageNet کا دور

پروسیسر ڈائی کی مثالی تفصیل، یہ مضمون میں زیرِ بحث NVIDIA GPU نہیں ہے۔
پروسیسر ڈائی کی مثالی تفصیل، یہ مضمون میں زیرِ بحث NVIDIA GPU نہیں ہے۔

2012 میں AlexNet کی سنگِ میل کامیابی نچلی سطح کی GPU انجینئرنگ (cuda-convnet) اور تقسیم شدہ دوہری GPU ساخت پر منحصر تھی، اور اسی نے زیادہ گہرے اور زیادہ مؤثر کمپیوٹر وژن ماڈلز کی تیز دوڑ کو براہِ راست جنم دیا۔

1. cuda-convnet اندر سے کیسے کام کرتا تھا

NVIDIA کے cuDNN بنانے سے پہلے، Alex Krizhevsky نے ابتدائی Fermi فن تعمیر والی GPUs (GTX 580) سے زیادہ سے زیادہ رفتار حاصل کرنے کے لیے cuda-convnet خالص CUDA C++ میں لکھا۔ جدید لائبریریاں عموماً کنوولوشنز کو بہت بڑے میٹرکس ضرب میں پھیلا دیتی ہیں (im2col)، جو بہت زیادہ میموری استعمال کرتا ہے۔ چونکہ ہر GTX 580 میں صرف 3 GB VRAM تھی، اس لیے Krizhevsky نے براہِ راست اور میموری بچانے والے GPU روٹینز تیار کیے۔

  • بیچ-فرسٹ میموری لے آؤٹ (CHWN)۔ جدید فریم ورکس ڈیفالٹ طور پر NCHW (بیچ، چینلز، اونچائی، چوڑائی) استعمال کرتے ہیں، جس میں ایک تصویر کے تمام پکسلز میموری میں ایک دوسرے کے ساتھ رکھے جاتے ہیں۔ Krizhevsky نے ٹینسرز کو CHWN ترتیب میں رکھا، یعنی بیچ ڈائمینشن (N) آخر میں۔ جب ایک وارپ کے 32 GPU تھریڈز ایک ہی پکسل مقام پر 32 مختلف تصویریں پروسیس کرتے تھے، تو ان کی میموری ریڈز مکمل طور پر متصل (coalesced) ہوتی تھیں، جس سے VRAM بینڈوڈتھ زیادہ سے زیادہ استعمال ہوتی تھی۔
  • شیئرڈ میموری ٹائلنگ۔ گلوبل VRAM سے پڑھنے میں سینکڑوں کلاک سائیکل لگتے ہیں، جبکہ آن-چپ شیئرڈ میموری (GTX 580 پر ہر Streaming Multiprocessor میں صرف 48 KB) میں چند ہی سائیکل لگتے ہیں۔ تھریڈ بلاکس تصویری پکسلز اور فلٹر ویٹس کے چھوٹے 2D پیچز شیئرڈ میموری میں لوڈ کرتے تھے، اور حتمی نتائج VRAM میں واپس لکھنے سے پہلے درجنوں ڈاٹ پروڈکٹس حساب کرتے تھے۔
  • وارپ-سطح رجسٹر کا دوبارہ استعمال۔ Krizhevsky نے ہر تھریڈ بلاک کو یہ کام سونپا کہ وہ بیک وقت کئی فلٹرز پر آؤٹ پٹ پکسلز کی ایک ٹائل کا حساب کرے۔ فلٹر ویٹس کو تیز GPU رجسٹرز میں رکھ کر، شیئرڈ میموری سے لوڈ کیا گیا ایک تصویری پیچ بیک وقت کئی فلٹرز پر دوبارہ استعمال ہوتا تھا، جس سے میموری ٹریفک نمایاں طور پر کم ہو گئی۔

2. AlexNet کی مخصوص لیئرز اور دوہری GPU تقسیم

AlexNet میں 8 سیکھی جانے والی لیئرز (5 کنوولوشنل اور 3 مکمل طور پر جڑی ہوئی) تھیں، جن کے کل پیرامیٹرز تقریباً 6 کروڑ تھے۔ چونکہ ایکٹیویشنز، ویٹس اور گریڈیئنٹس کے لیے درکار 3 GB+ VRAM ایک GTX 580 میں موجود نہیں تھی، اس لیے Krizhevsky نے نیٹ ورک کو عمودی طور پر دو متوازی دھاروں میں تقسیم کر دیا۔

لیئرقسمکل فلٹرز / نیورونزفی GPU تقسیمGPUs کے درمیان رابطہ
ان پٹRGB تصویر224 × 224 × 3دونوں GPUs پر کاپی کی گئیکوئی نہیں
Conv 111×11 Conv (اسٹرائیڈ 4) + MaxPool96 فلٹرزفی GPU 48 فلٹرزالگ تھلگ (کوئی سنک نہیں)
Conv 25×5 Conv + MaxPool256 فلٹرزفی GPU 128 فلٹرزالگ تھلگ (صرف اپنی GPU کی Conv 1 پڑھتی ہے)
Conv 33×3 Conv384 فلٹرزفی GPU 192 فلٹرزمکمل سنک (دونوں GPUs کے تمام 256 میپس پڑھتی ہے)
Conv 43×3 Conv384 فلٹرزفی GPU 192 فلٹرزالگ تھلگ (صرف اپنی GPU کی Conv 3 پڑھتی ہے)
Conv 53×3 Conv + MaxPool256 فلٹرزفی GPU 128 فلٹرزالگ تھلگ (صرف اپنی GPU کی Conv 4 پڑھتی ہے)
FC 6مکمل طور پر جڑی ہوئی + Dropout4,096 نیورونزفی GPU 2,048 نیورونزمکمل سنک (Conv 5 کے تمام آؤٹ پٹس سے جڑتی ہے)
FC 7مکمل طور پر جڑی ہوئی + Dropout4,096 نیورونزفی GPU 2,048 نیورونزمکمل سنک (FC 6 کے تمام نیورونز سے جڑتی ہے)
FC 8مکمل طور پر جڑی ہوئی (Softmax)1,000 کلاسز1,000 کلاسز (مشترکہ)مکمل سنک (ImageNet کی حتمی پیش گوئیاں دیتی ہے)
  • قدرتی فیچر تخصص۔ دلچسپ بات یہ ہے کہ چونکہ لیئر 1 اور 2 نے GPUs کے درمیان کبھی رابطہ نہیں کیا، اس لیے دونوں کارڈز نے مسلسل مخصوص کردار اپنا لیے۔ ایک GPU نے رنگ سے آزاد ایج اور ٹیکسچر ڈیٹیکٹرز (گرے اسکیل Gabor جیسے فلٹرز) سیکھے، جبکہ دوسری GPU رنگ سے متعلق دھبوں اور رنگتوں میں مہارت حاصل کر گئی۔
  • PCIe رکاوٹوں میں کمی۔ مدر بورڈ کی PCIe بس پر ڈیٹا بھیجنا سست تھا۔ GPUs کے درمیان رابطے کو سختی سے Conv 3 اور مکمل طور پر جڑی ہوئی لیئرز تک محدود کر کے، Krizhevsky نے GPUs کو ڈیٹا منتقلی پر رکے بغیر پوری رفتار سے حساب کرتا رکھا۔

3. ImageNet کے دور میں آگے کیا ہوا

AlexNet کی فتح نے ImageNet مقابلے میں سالانہ دوڑ کو بھڑکا دیا، جس نے صرف تین سال میں نیٹ ورکس کو 8 لیئرز سے 150 سے زیادہ لیئرز تک پہنچا دیا۔

  • 2013 – ZFNet (بصری تصور اور ٹیوننگ)۔ Matthew Zeiler اور Rob Fergus نے ڈی کنوولوشن تکنیکیں متعارف کرائیں تاکہ دیکھا جا سکے کہ AlexNet پوشیدہ لیئرز کے اندر دراصل کیا دیکھ رہا تھا۔ AlexNet کی پہلی لیئر کے فلٹر کا سائز 11×11 سے گھٹا کر 7×7 کرنے اور اسٹرائیڈ کم کرنے سے، ZFNet نے ImageNet کی ٹاپ-5 غلطی کی شرح 15.3% سے کم کر کے 14.8% کر دی۔
  • 2014 – VGGNet (یکساں 3×3 فلٹرز کے ذریعے گہرائی)۔ آکسفورڈ کے محققین نے ثابت کیا کہ بہت سے چھوٹے 3×3 کنوولوشنز کو اوپر تلے رکھنا (16 یا 19 لیئرز تک) ایک بڑے فلٹر (جیسے 11×11 یا 5×5) سے بہتر کام کرتا ہے۔ دو تہہ بہ تہہ 3×3 لیئرز کم پیرامیٹرز اور اضافی غیر خطی ReLU ایکٹیویشنز کے ساتھ وہی 5×5 دیکھنے کا رقبہ کور کرتی ہیں، جس سے غلطی کی شرح 7.3% تک آ گئی۔
  • 2014 – GoogLeNet / Inception (کثیر پیمانہ کارکردگی)۔ Google نے Inception ماڈیول متعارف کرایا، جو ایک ہی لیئر میں 1×1، 3×3 اور 5×5 کنوولوشنز متوازی چلاتا اور آؤٹ پٹس کو ملا دیتا تھا۔ مہنگے حساب سے پہلے سستے 1×1 کنوولوشنز کے ذریعے چینل کی گہرائی گھٹا کر، GoogLeNet 22 لیئرز اور 6.7% غلطی کی شرح تک پہنچا، جبکہ AlexNet سے 12 گنا کم پیرامیٹرز استعمال کیے۔
  • 2015 – ResNet (اسکپ کنکشنز اور 152 لیئرز)۔ محض مزید لیئرز اوپر رکھنے سے آخرکار تربیتی درستگی بگڑنے لگتی تھی کیونکہ بیک پروپیگیشن کے دوران گریڈیئنٹس غائب ہو جاتے تھے۔ Microsoft Research نے اسے Residual Connections (اسکپ کنکشنز) سے حل کیا، جو ڈیٹا کو براہِ راست شناختی شارٹ کٹس کے ذریعے لیئرز سے گزرنے دیتے ہیں۔ اس سے 152 لیئرز والے نیٹ ورکس ممکن ہوئے، جنہوں نے 3.57% ٹاپ-5 غلطی کی شرح حاصل کی، اور پہلی بار انسانی سطح کی بینچ مارک کارکردگی (~5%) کو پیچھے چھوڑ دیا۔

مزید خبریں: اے آئی اور ٹیکنالوجی