ٹیکنیکل گائیڈ

ZeRO اور Sharded Optimizers

ZeRO (زیرو ریڈنڈینسی آپٹیمائزر) آپٹیمائزر سٹیٹ، گریڈیئنٹس، اور جی پی یوز میں وزن کو شارڈنگ کر کے ڈیٹا کے متوازی کی فضول میموری ڈپلیکیشن کو ختم کرتا ہے۔

2 منٹ پڑھیںآخری بار اپ ڈیٹ کیا گیا۔

جائزہ

It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.

گہرا غوطہ

عام ڈیٹا کی ہم آہنگی میں، ہر GPU آپٹیمائزر سٹیٹ، گریڈیئنٹس، اور پیرامیٹرز کی ایک بے کار مکمل کاپی اسٹور کرتا ہے، جو کہ بہت زیادہ فضول ہے، خاص طور پر ایڈم کے لیے، جہاں آپٹیمائزر سٹیٹ خود ماڈل کے سائز سے کئی گنا زیادہ ہو سکتی ہے۔ ZeRO، جو ڈیپ اسپیڈ میں Microsoft کے ذریعے متعارف کرایا گیا ہے، ان ٹینسرز کو GPUs میں تقسیم کرکے اس فالتو پن کو دور کرتا ہے تاکہ ہر ڈیوائس کے پاس صرف ایک ٹکڑا ہو۔ ZeRO تین ترقی پسند مراحل میں آتا ہے: اسٹیج 1 شارڈز آپٹیمائزر اسٹیٹ، اسٹیج 2 گریڈینٹ شارڈنگ کا اضافہ کرتا ہے، اور اسٹیج 3 خود پیرامیٹرز کو شارڈ کرتا ہے۔ ضرورت کے مطابق، GPUs کمیونیکیشن، کمپیوٹ کے ذریعے گمشدہ ٹکڑوں کو جمع کرتے ہیں، پھر انہیں جاری کرتے ہیں۔ نتیجہ ڈرامائی طور پر کم میموری فی GPU ہے، جس سے ڈیٹا کی ہم آہنگی کے آسان پروگرامنگ ماڈل کو برقرار رکھتے ہوئے، ارب سے ٹریلین پیرامیٹر ٹریننگ کو قابل بنایا جاتا ہے۔

تکنیکی بصیرت

ZeRO میموری کی بچت کے لیے اضافی مواصلات کا کاروبار کرتا ہے۔ اسٹیج 3 میں، ایک پرت کے فارورڈ پاس سے پہلے، ایک آل گیدر اس پرت کے مکمل پیرامیٹرز کو ہر GPU پر جمع کرتا ہے۔ اس کے بعد میموری کو دوبارہ حاصل کرنے کے لیے غیر ملکیتی سلائسز کو ضائع کر دیا جاتا ہے۔ گریڈیئنٹس کم بکھرے ہوئے ہیں لہذا ہر GPU اپنے پیرامیٹرز سے مماثل صرف گریڈینٹ سلائس رکھتا ہے۔ PyTorch کا FSDP (Fully Sharded Data Parallel) اسی آئیڈیا کو مقامی طور پر لاگو کرتا ہے، ماڈیولز کو شارڈ میں لپیٹ کر فلائی پر دوبارہ شارڈ کرتا ہے۔

اسٹریٹجک اثر

لاگت اور بجٹ

فن تعمیر کے فیصلے سالوں تک کارکردگی اور آپریٹنگ لاگت کو آگے بڑھاتے ہیں۔

واضح فیصلے

تکنیکی تعلیم ٹیموں کو صحیح اسٹیک منتخب کرنے میں مدد کرتی ہے، نہ صرف جدید ترین۔

کوالٹی کنٹرول

انجینئرنگ کے بہتر انتخاب پیداوار میں قابل اعتماد واقعات کو کم کرتے ہیں۔

زیرو اور شارڈڈ آپٹیمائزرز کا مستقبل

غیر ملکی آپشن کے بجائے بڑے پیمانے پر تربیت کے لیے شارڈنگ ڈیفالٹ ہوتی جا رہی ہے۔ آف لوڈنگ کے ساتھ گہرے انضمام کی توقع کریں (زیرو-انفینٹی کے ذریعے سلائسز کو CPU یا NVMe پر دھکیلنا)، ان کی لاگت کو چھپانے کے لیے کمپیوٹیشن کے ساتھ آل اکٹھے اور کم بکھرنے کا بہتر اوورلیپ، اور ٹینسر اور پائپ لائن کے متوازی امتزاج کے ساتھ۔ جیسا کہ ماڈلز بڑھتے رہتے ہیں، میموری کو موثر بنانے والے شارڈڈ آپٹیمائزر انہیں حقیقت پسندانہ ہارڈویئر بجٹ میں فٹ کرنے کے لیے مرکزی حیثیت رکھتے ہیں۔

حقیقی دنیا کا نفاذ

ڈیپ اسپیڈ زیرو اسٹیج 2 کا استعمال ایک ملٹی بلین پیرامیٹر لینگویج ماڈل کو ٹھیک کرنے کے لیے جو دوسری صورت میں GPU میموری کو اوور فلو کر دے گا۔

PyTorch FSDP کے ساتھ تربیت، جو تمام GPUs میں پیرامیٹرز، گریڈیئنٹس، اور آپٹیمائزر کی حالت کو شارڈ کرتا ہے اور طلب کے مطابق انہیں فی پرت جمع کرتا ہے۔

CPU میموری پر آپٹیمائزر کی حالت کو آگے بڑھانے کے لیے ZeRO-Offload کا اطلاق کرنا، ایک واحد GPU کو اس کے VRAM سے کئی گنا بڑے ماڈل کو تربیت دینے دیتا ہے۔

GPU اور CPU میموری ختم ہونے پر NVMe اسٹوریج سے پیرامیٹر شارڈز کو اسٹریم کرکے ZeRO-Infinity کے ساتھ ٹریلین پیرامیٹر ماڈل کو اسکیل کرنا۔

خطرات اور گارڈریلز

ایک بینچ مارک کو بہتر بنانا نظام کی وسیع تر کمزوریوں کو چھپا سکتا ہے۔

بنیادی ڈھانچے اور دیکھ بھال کے اخراجات کو اکثر کم سمجھا جاتا ہے۔

سیکورٹی اور مشاہداتی فرق بڑھ سکتا ہے کیونکہ نظام زیادہ پیچیدہ ہو جاتا ہے۔

نفاذ کا روڈ میپ

1

نفاذ سے پہلے تاخیر، معیار اور لاگت کے اہداف کی وضاحت کریں۔

2

حقیقت پسندانہ بوجھ اور ڈیٹا کی شرائط کے تحت بینچ مارک۔

3

غلطیوں، بڑھے ہوئے، اور صارف کے اثرات کے لیے آلے کی نگرانی۔

4

اسکیلنگ سے پہلے رول بیک اور واقعہ کے ردعمل کے راستے تیار کریں۔

دریافت کرتے رہیں

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the ZeRO and Sharded Optimizers quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

کوئز شروع کریں۔

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

اکثر پوچھے گئے سوالات

What is ZeRO and Sharded Optimizers?

ZeRO (زیرو ریڈنڈینسی آپٹیمائزر) آپٹیمائزر سٹیٹ، گریڈیئنٹس، اور جی پی یوز میں وزن کو شارڈنگ کر کے ڈیٹا کے متوازی کی فضول میموری ڈپلیکیشن کو ختم کرتا ہے۔ یہ آپ کو اعداد و شمار کے ہم آہنگی کی سادگی کے ساتھ بہت زیادہ ماڈلز کی تربیت دینے دیتا ہے لیکن فی GPU میموری کا ایک حصہ۔

سادہ ڈیٹا متوازی کے مقابلے میں ZeRO کس بے کار کو ختم کرتا ہے؟

معیاری ڈیٹا متوازی ہر GPU پر آپٹیمائزر حالت، گریڈیئنٹس اور وزن کی مکمل کاپی اسٹور کرتا ہے۔ ZeRO ان کو شارڈ کرتا ہے لہذا ہر GPU صرف ایک ٹکڑا رکھتا ہے۔

ایڈم کے ساتھ آپٹیمائزر اسٹیٹ اکثر میموری کا سب سے بڑا ہاگ کیوں ہوتا ہے؟

ایڈم چلنے والے تخمینے کو برقرار رکھتا ہے جیسے کہ فی پیرامیٹر پہلے اور دوسرے لمحات، جو fp32 ماسٹر وزن کے ساتھ مل کر ماڈل کے اپنے سائز کو بونا کر سکتے ہیں۔

ZeRO اسٹیج 3 کیا کرتا ہے جو اسٹیج 1 اور 2 نہیں کرتا؟

اسٹیج 1 شارڈز آپٹیمائزر اسٹیٹ، اسٹیج 2 گریڈیئنٹس کو جوڑتا ہے، اور اسٹیج 3 جی پی یوز میں ماڈل پیرامیٹرز کو بھی شارڈ کرکے مزید آگے بڑھتا ہے۔

ZeRO اسٹیج 3 میں، ایک GPU مکمل پیرامیٹرز کیسے حاصل کرتا ہے جو اسے ایک پرت کے فارورڈ پاس کے لیے درکار ہے؟

ایک پرت کو کمپیوٹنگ کرنے سے پہلے، ایک آل گیدر ہر GPU پر اپنے مکمل پیرامیٹرز کو جمع کرتا ہے۔ ایک بار ہو جانے کے بعد، غیر ملکیتی سلائسیں میموری کو دوبارہ حاصل کرنے کے لیے آزاد کر دی جاتی ہیں۔

کون سی PyTorch خصوصیت مقامی طور پر ZeRO طرز کی شارڈنگ کو نافذ کرتی ہے؟

PyTorch کا مکمل طور پر Sharded Data Parallel (FSDP) شارڈز پیرامیٹرز، گریڈیئنٹس، اور آپٹیمائزر کی حالت، انہیں اکھٹا اور دوبارہ شارڈ کرتے ہوئے، ZeRO کا عکس بناتا ہے۔