( NLP) بواسطة Tim Dettmers ، Ph.D. التعلم العميق (DL) هو مجال ذو طلب كبير على قوة الحوسبة ، لذلك فإن اختيارك لوحدة معالجة الرسومات سيحدد بشكل أساسي تجربتك في هذا المجال. ولكن ما هي الخصائص المهمة التي يجب مراعاتها عند شراء وحدة معالجة رسومات جديدة؟ الذاكرة ، النوى ، النوى الموتر؟ كيف تتخذ الخيار الأفضل من حيث القيمة مقابل المال؟ في هذه المقالة ، سأحلل بالتفصيل كل هذه الأسئلة ، والمفاهيم الخاطئة الشائعة ، وأعطيك فهمًا بديهيًا لوحدة معالجة الرسومات ، بالإضافة إلى بعض النصائح لمساعدتك في اتخاذ القرار الصحيح.
تمت كتابة هذه المقالة لمنحك عدة مستويات مختلفة من فهم وحدة معالجة الرسومات ، بما في ذلك. سلسلة Ampere الجديدة من NVIDIA. لديك خيار:
- إذا لم تكن مهتمًا بتفاصيل وحدة معالجة الرسومات ، وما الذي يجعل وحدة معالجة الرسومات سريعة بالضبط ، وما هو فريد في وحدات معالجة الرسومات الجديدة لسلسلة NVIDIA RTX 30 Ampere ، فيمكنك تخطي بداية المقالة ، وصولاً إلى الرسوم البيانية الخاصة بالسرعة والسرعة لكل دولار واحد ، بالإضافة إلى قسم التوصيات. هذا هو جوهر هذه المقالة والمحتوى الأكثر قيمة.
- إذا كنت مهتمًا بأسئلة محددة ، فقد قمت بتغطية أكثرها شيوعًا في الجزء الأخير من المقالة.
- إذا كنت بحاجة إلى فهم عميق لكيفية عمل وحدات معالجة الرسومات و Tensor Cores ، فإن أفضل رهان لك هو قراءة هذه المقالة من البداية إلى النهاية. بناءً على معرفتك بموضوعات محددة ، يمكنك تخطي فصل أو فصلين.
يسبق كل قسم ملخص قصير لمساعدتك في تحديد ما إذا كنت ستقرأه بالكامل أم لا.
المحتوى
GPU?
GPU,
/ L1 /
Ampere
Ampere
Ampere
Ampere / RTX 30
GPU
GPU
GPU
11 ?
11 ?
GPU-
GPU
GPU?
PCIe 4.0?
PCIe 8x/16x?
RTX 3090, 3 PCIe?
4 RTX 3090 4 RTX 3080?
GPU ?
NVLink, ?
. ?
?
?
Intel GPU?
?
AMD GPU + ROCm - NVIDIA GPU + CUDA?
, – GPU?
,
هذه المقالة منظمة على النحو التالي. أولاً أشرح ما الذي يجعل وحدة معالجة الرسومات سريعة. سأصف الفرق بين المعالجات ووحدات معالجة الرسومات ، ونوى الموتر ، وعرض النطاق الترددي للذاكرة ، والتسلسل الهرمي لذاكرة وحدة معالجة الرسومات ، وكيف يرتبط كل ذلك بالأداء في مهام GO. قد تساعدك هذه التفسيرات على فهم معلمات GPU التي تحتاجها بشكل أفضل. ثم سأقدم تقديرات نظرية لأداء وحدة معالجة الرسومات ومراسلاتها مع بعض اختبارات سرعة NVIDIA للحصول على بيانات أداء موثوقة دون تحيز. سأصف الميزات الفريدة لوحدات معالجة الرسومات NVIDIA RTX 30 Ampere التي يجب مراعاتها عند الشراء. ثم سأقدم توصيات GPU لمجموعات شرائح 1-2 و 4 و 8 و GPU. ثم سيكون هناك قسم للإجابات على الأسئلة المتداولة التي تم طرحها علي على Twitter.كما أنه سيبدد المفاهيم الخاطئة الشائعة ويسلط الضوء على العديد من المشكلات مثل السحب مقابل أجهزة سطح المكتب والتبريد و AMD مقابل NVIDIA وغيرها.
كيف تعمل وحدات معالجة الرسومات؟
إذا كنت تستخدم وحدات معالجة الرسومات كثيرًا ، فمن المفيد أن تفهم كيفية عملها. ستكون هذه المعرفة مفيدة لك لفهم سبب بطء وحدات معالجة الرسومات في بعض الحالات وفي حالات أخرى أسرع. وبعد ذلك قد تفهم ما إذا كنت بحاجة إلى GPU على الإطلاق ، وما هي خيارات الأجهزة التي يمكن أن تنافسها في المستقبل. يمكنك تخطي هذا القسم إذا كنت تريد فقط بعض معلومات الأداء المفيدة والحجج لاختيار GPU معين. أفضل تفسير عام لكيفية عمل وحدات معالجة الرسومات في الإجابة على Quora .
هذا تفسير عام ، وهو يفسر جيدًا السؤال عن سبب ملاءمة وحدات معالجة الرسومات لـ GO أكثر من المعالجات. إذا درسنا التفاصيل ، يمكننا أن نفهم كيف تختلف وحدات معالجة الرسومات عن بعضها البعض.
أهم خصائص وحدة معالجة الجرافيكس التي تؤثر على سرعة المعالجة
سيساعدك هذا القسم على التفكير بشكل حدسي أكثر في الأداء في مجال GO. سيساعدك هذا الفهم على تقييم وحدات معالجة الرسومات المستقبلية بنفسك.
النوى الموتر
ملخص:
- تقلل نوى Tensor من عدد دورات الساعة المطلوبة لحساب المضاعفات والإضافات بمقدار 16 مرة - في المثال الخاص بي لمصفوفة 32 × 32 من 128 إلى 8 دورات على مدار الساعة.
- تقلل نوى Tensor من الاعتماد على الوصول المتكرر إلى الذاكرة المشتركة عن طريق توفير دورات الوصول إلى الذاكرة.
- نواة الموتر سريعة جدًا لدرجة أن الحساب لم يعد يمثل عنق الزجاجة. العقبة الوحيدة هي نقل البيانات إليهم.
هناك الكثير من وحدات معالجة الرسوم (GPU) الرخيصة الموجودة اليوم والتي يمكن للجميع تقريبًا تحمل تكلفة وحدة معالجة الرسومات (GPU) مع نوى الموتر. لذلك ، أوصي دائمًا بوحدات معالجة الرسومات ذات النوى الموتر. من المفيد فهم كيفية عملها من أجل تقدير أهمية هذه الوحدات الحسابية المتخصصة في ضرب المصفوفات. باستخدام مثال بسيط لضرب المصفوفة A * B = C ، حيث يكون حجم كل المصفوفات 32 × 32 ، سأوضح لك كيف تبدو عملية الضرب مع نواة الموتر وبدونها.
لفهم هذا ، تحتاج أولاً إلى فهم مفهوم القضبان. إذا كان المعالج يعمل بسرعة 1 جيجاهرتز ، فإنه يعمل 10 9القراد في الثانية. كل ساعة هي فرصة لإجراء العمليات الحسابية. ولكن بالنسبة للجزء الأكبر ، تستغرق العمليات وقتًا أطول من دورة ساعة واحدة. لقد تبين وجود خط أنابيب - لبدء إجراء عملية واحدة ، عليك أولاً انتظار العديد من دورات الساعة كما هو مطلوب لإجراء العملية السابقة. هذا يسمى أيضًا العملية المتأخرة.
فيما يلي بعض الفترات أو التأخيرات المهمة لعملية القراد:
- الوصول إلى ذاكرة عالمية تصل إلى 48 جيجابايت: ~ 200 دورة على مدار الساعة.
- الوصول إلى الذاكرة المشتركة (حتى 164 كيلوبايت لكل معالجات متعددة متدفقة): ~ 20 ساعة.
- الجمع بين الضرب والجمع (SUS): 4 مقاييس.
- ضرب المصفوفة في نواة الموتر: دورة ساعة واحدة.
تحتاج أيضًا إلى معرفة أن أصغر وحدة من الخيوط في وحدة معالجة الرسومات - حزمة من 32 سنًا - تسمى الالتواء. عادة ما تعمل الاعوجاج بشكل متزامن - كل الخيوط الموجودة داخل الالتواء تحتاج إلى انتظار بعضها البعض. تم تحسين جميع عمليات ذاكرة وحدة معالجة الرسومات للالتواءات. على سبيل المثال ، التحميل من الذاكرة العالمية يأخذ 32 * 4 بايت - 32 رقم فاصلة عائمة ، رقم واحد لكل مؤشر ترابط في الالتواء. في المعالجات المتعددة المتدفقة (ما يعادل نواة معالج لوحدة معالجة الرسومات) ، يمكن أن يكون هناك ما يصل إلى 32 تواء = 1024 مؤشر ترابط. تتم مشاركة الموارد متعددة المعالجات بين كافة الاعوجاج النشطة. لذلك ، في بعض الأحيان نحتاج إلى عدد أقل من الاعوجاج للعمل ، بحيث يكون لدى أحد الاعوجاج سجلات أكثر وذاكرة مشتركة وموارد أساسية موترية.
لكلا المثالين ، لنفترض أن لدينا نفس موارد الحوسبة. في هذا المثال الصغير لمضاعفة المصفوفة 32 × 32 ، نستخدم 8 معالجات متعددة (حوالي 10٪ من RTX 3090) و 8 التفافات على معالجات متعددة.
ضرب المصفوفة بدون نواة الموتر
إذا احتجنا إلى مضاعفة المصفوفات A * B = C ، كل منها بحجم 32 × 32 ، فإننا نحتاج إلى تحميل البيانات من الذاكرة ، والتي نقوم بالوصول إليها باستمرار ، إلى الذاكرة المشتركة ، نظرًا لأن تأخيرات الوصول أقل بحوالي 10 مرات (لا 200 بار و 20 بار). غالبًا ما يُشار إلى كتلة من الذاكرة في الذاكرة المشتركة باسم بلاطة الذاكرة ، أو ببساطة بلاطة. يمكن تحميل رقمين من أرقام الفاصلة العائمة 32 × 32 في بلاطة ذاكرة مشتركة بالتوازي باستخدام 2 * 32 الاعوجاج. لدينا 8 معالجات متعددة كل منها 8 تشوه ، لذلك بفضل الموازاة ، نحتاج إلى تنفيذ حمل تسلسلي واحد من الذاكرة العالمية إلى الذاكرة المشتركة ، والتي ستستغرق 200 دورة ساعة.
لمضاعفة المصفوفات ، نحتاج إلى تحميل متجه من 32 رقمًا من الذاكرة المشتركة A والذاكرة المشتركة B ، وتنفيذ CMS ، ثم تخزين المخرجات في السجلات C. نقسم هذا العمل بحيث يتعامل كل متعدد المعالجات مع 8 منتجات عددية (32 × 32) ) لحساب 8 بيانات إخراج لـ C. لماذا يوجد 8 منهم بالضبط (في الخوارزميات القديمة - 4) ، هذه ميزة تقنية بحتة. لمعرفة ذلك ، أوصي بقراءة مقال سكوت جراي . هذا يعني أنه سيكون لدينا 8 عمليات وصول إلى الذاكرة المشتركة ، بتكلفة 20 دورة لكل منها ، و 8 عمليات SLS (32 متوازية) ، بتكلفة 4 دورات لكل منها. في المجموع ، ستكون التكلفة:
200 علامة (ذاكرة عالمية) + 8 * 20 علامة (ذاكرة مشتركة) + 8 * 4 علامات (CMS) = 392 علامة
الآن ، دعنا نلقي نظرة على تكلفة مراكز التنسور.
ضرب المصفوفة بنواة الموتر
يمكن استخدام حبات الموتر لمضاعفة 4 × 4 مصفوفات في دورة واحدة. للقيام بذلك ، نحتاج إلى نسخ الذاكرة إلى نوى موتر. كما ذكر أعلاه ، نحتاج إلى قراءة البيانات من الذاكرة العالمية (200 علامة) وتخزينها في الذاكرة المشتركة. لضرب المصفوفات 32 × 32 ، نحتاج إلى إجراء 8 × 8 = 64 عملية في نواة الموتر. يحتوي واحد متعدد المعالجات على 8 نوى موتر. مع 8 معالجات متعددة ، لدينا 64 نواة موتر - بالقدر الذي نحتاجه! يمكننا نقل البيانات من الذاكرة المشتركة إلى مراكز الموتر في عملية نقل واحدة (20 دورة ساعة) ، ثم تنفيذ جميع هذه العمليات البالغ عددها 64 بالتوازي (دورة ساعة واحدة). هذا يعني أن التكلفة الإجمالية لمضاعفة المصفوفة في نوى الموتر ستكون:
200 دورة (ذاكرة عامة) + 20 دورة (ذاكرة مشتركة) + دورة واحدة (نوى موتر) = 221 دورة
وبالتالي ، باستخدام نواة الموتر ، فإننا نخفض بشكل كبير تكلفة مضاعفة المصفوفة ، من 392 إلى 221 دورة على مدار الساعة. في مثالنا المبسط ، قللت نواة الموتر من تكلفة الوصول إلى الذاكرة المشتركة وعمليات SNS.
على الرغم من أن هذا المثال يتبع تقريبًا تسلسل الخطوات الحسابية مع وبدون نواة موتر ، يرجى ملاحظة أن هذا مثال مبسط للغاية. في الحالات الواقعية ، يتضمن ضرب المصفوفة كثيرًا مثل مربعات الذاكرة الكبيرة وتسلسلات مختلفة قليلاً من الإجراءات.
ومع ذلك ، يبدو لي أن هذا المثال يوضح سبب أهمية السمة التالية ، عرض النطاق الترددي للذاكرة ، بالنسبة لوحدات معالجة الرسومات ذات النوى الموتر. نظرًا لأن الذاكرة العالمية هي أغلى شيء عند ضرب المصفوفات بأنوية موتر ، فإن وحدات معالجة الرسومات الخاصة بنا ستكون أسرع بكثير إذا تمكنا من تقليل زمن الوصول إلى الذاكرة العالمية. يمكن القيام بذلك إما عن طريق زيادة سرعة ساعة الذاكرة (المزيد من الساعات في الثانية ، ولكن المزيد من استهلاك الحرارة والطاقة) ، أو عن طريق زيادة عدد العناصر التي يمكن نقلها في كل مرة (عرض الحافلة).
عرض النطاق الترددي للذاكرة
في القسم السابق ، رأينا مدى سرعة نواة الموتر. إنها سريعة جدًا لدرجة أنها تظل مكتوفة الأيدي معظم الوقت ، في انتظار وصول البيانات من الذاكرة العالمية. على سبيل المثال ، أثناء التدريب على مشروع BERT Large ، حيث تم استخدام مصفوفات كبيرة جدًا - كلما كان ذلك أكبر ، كان ذلك أفضل لحبيبات التنسور - كان استخدام نوى الموتر في TFLOPS حوالي 30٪ ، مما يعني أن 70٪ من الوقت كانت نوى الموتر خامدة.
هذا يعني أنه عند مقارنة وحدتي GPU مع نوى الموتر ، فإن أحد أفضل مؤشرات الأداء لكل منهما هو عرض النطاق الترددي للذاكرة. على سبيل المثال ، يبلغ عرض النطاق الترددي لوحدة معالجة الرسومات A100 1.555 جيجابايت / ثانية ، بينما يحتوي V100 على 900 جيجابايت / ثانية. تشير عملية حسابية بسيطة إلى أن A100 سيكون 1555/900 = 1.73 مرة أسرع من V100.
الذاكرة المشتركة / L1 مخبأ / سجلات
نظرًا لأن عامل تحديد السرعة هو نقل البيانات إلى ذاكرة أنوية التنسور ، يجب أن ننتقل إلى الخصائص الأخرى لوحدة معالجة الرسومات ، والتي تسمح لنا بتسريع نقل البيانات إليها. يرتبط بهذا الذاكرة المشتركة وذاكرة التخزين المؤقت L1 وعدد التسجيلات. لفهم كيفية تسريع التسلسل الهرمي للذاكرة من عمليات نقل البيانات ، من المفيد فهم كيفية تكاثر المصفوفة في وحدة معالجة الرسومات.
بالنسبة لضرب المصفوفة ، نستخدم تسلسلاً هرميًا للذاكرة ينتقل من الذاكرة العالمية البطيئة إلى الذاكرة المشتركة المحلية السريعة ، ثم إلى التسجيلات فائقة السرعة. ومع ذلك ، كلما كانت الذاكرة أسرع ، كانت أصغر. لذلك ، نحتاج إلى تقسيم المصفوفات إلى مصفوفات أصغر ، ثم ضرب هذه المربعات الأصغر في الذاكرة المحلية المشتركة. ثم يحدث ذلك بسرعة وأقرب إلى المعالجات المتدفقة (PM) - أي ما يعادل نواة المعالج. تتيح لنا حبات Tensor اتخاذ خطوة أخرى: نأخذ كل المربعات ونحمل بعضها في حبات موتر. تعالج الذاكرة المشتركة مربعات المصفوفة أسرع من 10 إلى 50 مرة من ذاكرة وحدة معالجة الرسومات العالمية ، وتعالجها سجلات الموتر الأساسي 200 مرة أسرع من ذاكرة وحدة معالجة الرسومات العالمية.
تتيح لنا زيادة حجم المربعات إعادة استخدام المزيد من الذاكرة. لقد كتبت عن هذا بالتفصيل في مقالتي TPU مقابل GPU . في TPU ، يوجد بلاطة كبيرة جدًا جدًا لكل نواة موتر. يمكن أن تعيد TPUs استخدام ذاكرة أكبر بكثير مع كل عملية نقل جديدة من الذاكرة العالمية ، مما يجعلها أكثر كفاءة قليلاً في التعامل مع مضاعفة المصفوفة مقارنة بوحدات معالجة الرسومات.
يتم تحديد أحجام المربعات حسب حجم الذاكرة لكل PM - أي ما يعادل نواة المعالج على وحدة معالجة الرسومات. اعتمادًا على البنى ، تكون هذه المجلدات:
- فولتا: 96 كيلو بايت ذاكرة مشتركة / 32 كيلو بايت L1
- تورينج: ذاكرة مشتركة سعة 64 كيلو بايت / 32 كيلو بايت L1
- الأمبير: ذاكرة مشتركة 164 كيلو بايت / 32 كيلو بايت L1
يمكنك أن ترى أن Ampere لديه ذاكرة مشتركة أكبر بكثير ، مما يسمح باستخدام مربعات أكبر ، مما يقلل من عدد مرات الوصول إلى الذاكرة العالمية. لذلك ، يستخدم Ampere عرض النطاق الترددي لذاكرة GPU بكفاءة أكبر. هذا يزيد الأداء بنسبة 2-5٪. الزيادة ملحوظة بشكل خاص على المصفوفات الضخمة.
تتميز نوى موتر Ampere بميزة أخرى - فهي تحتوي على كمية أكبر من البيانات المشتركة بين العديد من سلاسل العمليات. هذا يقلل من عدد المكالمات المسجلة. يقتصر حجم السجلات على 64 كيلو بايت لكل PM أو 255 لكل مؤشر ترابط. بالمقارنة مع Volta ، تستخدم Ampere Tensor Cores سجلات أقل بثلاث مرات ، لذلك هناك نوى Tensor أكثر نشاطًا لكل بلاطة في الذاكرة المشتركة. بمعنى آخر ، يمكننا تحميل 3 أضعاف عدد نوى الموتر بنفس عدد السجلات. ومع ذلك ، نظرًا لأن عرض النطاق لا يزال يمثل عنق الزجاجة ، فإن الزيادة في TFLOPS في الممارسة ستكون ضئيلة مقارنة بالنظرية. نواة الموتر الجديدة حسنت الأداء بحوالي 1-3٪.
بشكل عام ، يمكن ملاحظة أن بنية Ampere مُحسّنة لاستخدام عرض النطاق الترددي للذاكرة بكفاءة أكبر من خلال تسلسل هرمي محسّن - من الذاكرة العالمية إلى مربعات الذاكرة المشتركة إلى سجلات الموتر الأساسية.
تقييم فعالية الأمبير في GO
ملخص:
- التقديرات النظرية المستندة إلى النطاق الترددي للذاكرة والتسلسل الهرمي المحسّن للذاكرة لوحدات معالجة الرسومات Ampere تتوقع تسريعًا بمقدار 1.78 - 1.87 مرة.
- نشرت NVIDIA بيانات حول قياسات السرعة لوحدات معالجة الرسومات Tesla A100 و V100. هم أكثر تسويقية ، لكن يمكنك بناء نموذج غير متحيز يعتمد عليهم.
- يشير النموذج غير المتحيز إلى أنه بالمقارنة مع V100 ، فإن Tesla A100 أسرع 1.7 مرة في معالجة اللغة الطبيعية و 1.45 مرة أسرع في رؤية الكمبيوتر.
هذا القسم مخصص لأولئك الذين يتطلعون إلى التعمق في التفاصيل الفنية لكيفية حصولي على درجات أداء وحدة معالجة الرسومات Ampere. إذا لم تكن مهتمًا ، فيمكنك تخطيه بأمان.
أمبير تقديرات السرعة النظرية
بالنظر إلى الحجج المذكورة أعلاه ، قد يتوقع المرء أن يكون الفرق بين معماريتي GPU مع نوى الموتر بشكل أساسي في عرض النطاق الترددي للذاكرة. تأتي الفوائد الإضافية من زيادة الذاكرة المشتركة وذاكرة التخزين المؤقت L1 والاستخدام الفعال للسجلات.
تم زيادة عرض النطاق الترددي لوحدة معالجة الرسومات Tesla A100 بمقدار 1555/900 = 1.73 مرة مقارنةً بـ Tesla V100. من المعقول أيضًا توقع زيادة في السرعة بنسبة 2-5٪ بسبب الذاكرة الإجمالية الأكبر ، و 1-3٪ بسبب التحسن في نوى التوتر. اتضح أن التسارع يجب أن يكون من 1.78 إلى 1.87 مرة.
Ampere
لنفترض أن لدينا درجة GPU واحدة لهندسة معمارية مثل Ampere أو Turing أو Volta. من السهل استقراء هذه النتائج لوحدات معالجة الرسومات الأخرى من نفس البنية أو السلسلة. لحسن الحظ ، أجرت NVIDIA بالفعل معايير لمقارنة A100 و V100 في مهام مختلفة تتعلق برؤية الكمبيوتر وفهم اللغة الطبيعية. لسوء الحظ ، قامت NVIDIA بكل ما هو ممكن بحيث لا يمكن مقارنة هذه الأرقام بشكل مباشر - استخدمت الاختبارات أحجام حزم بيانات مختلفة وعددًا مختلفًا من وحدات معالجة الرسومات بحيث لا يتمكن A100 من الفوز. لذا ، بمعنى ما ، فإن مؤشرات الأداء التي تم الحصول عليها صادقة جزئيًا وإعلان جزئيًا. بشكل عام ، يمكن القول أن الزيادة في حجم حزمة البيانات لها ما يبررها لأن A100 لديها ذاكرة أكبر - ومع ذلك ،لمقارنة معماريات GPU ، نحتاج إلى مقارنة بيانات الأداء غير المتحيزة للمهام التي لها نفس حجم حزمة البيانات.
للحصول على تقديرات غير متحيزة ، يمكنك قياس قياسات V100 و A100 بطريقتين: ضع في الاعتبار الاختلاف في حجم حزمة البيانات ، أو حساب الفرق في عدد وحدات معالجة الرسومات - 1 مقابل 8. نحن محظوظون ويمكننا العثور على تقديرات مماثلة لكلتا الحالتين في البيانات المقدمة من NVIDIA.
تؤدي مضاعفة حجم الحزمة إلى زيادة الإنتاجية بنسبة 13.6٪ في الصور في الثانية (بالنسبة للشبكات العصبية التلافيفية ، CNN). لقد قمت بقياس سرعة نفس المهمة باستخدام بنية Transformer على RTX Titan ، ومن المدهش أنني حصلت على نفس النتيجة - 13.5٪. يبدو أن هذا تقدير موثوق.
من خلال زيادة موازاة الشبكات ، عن طريق زيادة عدد وحدات معالجة الرسومات ، نفقد الأداء بسبب الحمل الزائد المرتبط بالشبكات. لكن أداء وحدة معالجة الرسومات A100 8x أفضل على الشبكات (NVLink 3.0) مقارنةً بوحدة معالجة الرسومات V100 8x (NVLink 2.0) - وهو عامل محير آخر. إذا نظرت إلى البيانات من NVIDIA ، يمكنك أن ترى أنه من أجل معالجة SNS ، فإن النظام الذي يحتوي على 8th A100 لديه حمل أقل بنسبة 5 ٪ من النظام مع 8th V10000. هذا يعني أنه إذا كان الانتقال من الأول A10000 إلى الثامن A10000 يمنحك تسارعًا ، على سبيل المثال ، 7.0 مرات ، فإن الانتقال من أول V10000 إلى 8 V10000 يمنحك تسارعًا يبلغ 6.67 مرة فقط. بالنسبة للمحولات ، هذا الرقم هو 7٪.
باستخدام هذه المعلومات ، يمكننا تقدير تسارع بعض بنى GO المحددة مباشرة من البيانات المقدمة من NVIDIA. تتمتع Tesla A100 بمزايا السرعة التالية على Tesla V100:
- SE-ResNeXt101: 1.43 مرة.
- ملثمين- R-CNN: 1.47 مرة.
- محول (12 طبقة ، ترجمة آلية ، WMT14 en-de): 1.70 مرة.
لذلك ، بالنسبة لرؤية الكمبيوتر ، يتم الحصول على الأرقام أقل من التقدير النظري. يمكن أن يكون هذا بسبب أبعاد الموتر الأصغر ، أو النفقات العامة للعمليات المطلوبة لإعداد مضاعفة المصفوفة مثل img2col أو FFT ، أو العمليات التي لا يمكن أن تشبع وحدة معالجة الرسومات (الطبقات الناتجة غالبًا ما تكون صغيرة نسبيًا). يمكن أن تكون أيضًا من القطع الأثرية لبنى معينة (التفاف مجمعة).
إن التقييم العملي لسرعة المحول قريب جدًا من التقييم النظري. ربما لأن الخوارزميات الخاصة بالعمل مع المصفوفات الكبيرة واضحة جدًا. سأستخدم تقديرات عملية لحساب فعالية تكلفة وحدة معالجة الرسومات.
عدم الدقة المحتملة في التقديرات
ما ورد أعلاه هو تصنيفات مقارنة لـ A100 و V100. في الماضي ، قامت NVIDIA سراً بتدهور أداء وحدات معالجة الرسومات RTX "للألعاب": تقليل استخدام نوى الموتر ، وإضافة مراوح الألعاب للتبريد ، ومنع نقل البيانات بين وحدات معالجة الرسومات. من الممكن أن تكون سلسلة RT 30 قد أحدثت أيضًا مشكلات غير معروفة في Ampere A100.
ما الذي يجب مراعاته أيضًا في حالة Ampere / RTX 30
ملخص:
- يسمح لك Ampere بتدريب الشبكات على أساس المصفوفات المتفرقة ، مما يسرع عملية التدريب حتى مرتين.
- لا يزال نادراً ما يتم استخدام التدريب الشبكي المتناثر ، ولكن بفضله ، لن يصبح Ampere قديمًا قريبًا.
- يحتوي Ampere على أنواع بيانات جديدة منخفضة الدقة تجعل من السهل جدًا استخدام الدقة المنخفضة ، ولكنه لن يعطي بالضرورة زيادة في السرعة مقارنة بوحدات معالجة الرسومات السابقة.
- يعد تصميم المروحة الجديد جيدًا إذا كان لديك مساحة خالية بين وحدات معالجة الرسومات - ومع ذلك ، فليس من الواضح ما إذا كانت وحدات معالجة الرسومات التي تقف بالقرب من بعضها البعض ستبرد بشكل فعال.
- سيكون تصميم RTX 3090 المكون من 3 فتحات تحديًا لـ 4 عمليات بناء GPU. الحلول الممكنة هي استخدام خيارات ذات فتحتين أو موسعات PCIe.
- ستحتاج وحدات RTX 3090 الأربعة إلى طاقة أكبر مما يمكن أن تقدمه أي وحدة PSU قياسية في السوق.
يتمتع NVIDIA Ampere RTX 30 الجديد بمزايا إضافية مقارنة بـ NVIDIA Turing RTX 20 - التعلم المتناثر وتحسين معالجة الشبكة العصبية. يمكن اعتبار بقية الخصائص ، مثل أنواع البيانات الجديدة ، تحسينًا بسيطًا للراحة - فهي تسرع الأمور بنفس طريقة سلسلة Turing ، دون الحاجة إلى برمجة إضافية.
التعلم المتناثر
يسمح لك Ampere بضرب المصفوفات المتفرقة بسرعة عالية وتلقائيًا. إنها تعمل على هذا النحو - تأخذ مصفوفة ، وتقطعها إلى أجزاء من 4 عناصر ، وتسمح نواة الموتر التي تدعم المصفوفات المتفرقة بأن يكون اثنان من هذه العناصر الأربعة صفرًا. ينتج عن هذا تسريع 2x لأن متطلبات عرض النطاق الترددي أثناء مضاعفة المصفوفة تنخفض إلى النصف.
في بحثي ، عملت مع شبكات تعليمية متفرقة. تم انتقاد العمل ، على وجه الخصوص ، لحقيقة أنني "أقوم بتقليل FLOPS المطلوب للشبكة ، لكن لا أزيد السرعة بسبب ذلك ، لأن وحدات معالجة الرسومات لا يمكنها مضاعفة المصفوفات المتفرقة بسرعة." حسنًا - ظهر دعم لمضاعفة المصفوفة المتفرقة في نواة الموتر ، وخوارزميةي ، أو أي خوارزمية أخرى ( رابط، رابط ، رابط ، رابط ) ، العمل مع المصفوفات المتفرقة ، يمكن الآن في الواقع العمل مرتين أسرع أثناء التدريب.
على الرغم من أن هذه الخاصية تعتبر حاليًا تجريبية ، وأن التدريب المتناثر على الشبكة لا يتم تطبيقه عالميًا ، إذا كانت وحدة معالجة الرسومات لديك تدعم هذه التقنية ، فأنت جاهز لمستقبل التدريب المتفرق.
حسابات منخفضة الدقة
لقد سبق لي أن أثبت كيف أنواع بيانات جديدة يمكن أن تحسن استقرار منخفضة العكسي الإخلاص في عملي. حتى الآن ، المشكلة مع backpropagation المستقر بأرقام الفاصلة العائمة 16 بت هي أن أنواع البيانات العادية تدعم فقط النطاق [-65،504 ، 65،504]. إذا تجاوز التدرج اللوني الخاص بك هذه الفجوة ، فسوف ينفجر ، مما ينتج عنه قيم NaN. لمنع ذلك ، نقوم عادة بقياس القيم بضربها في عدد صغير قبل التكاثر العكسي لتجنب انفجار التدرج.
يستخدم تنسيق Brain Float 16 (BF16) عددًا أكبر من وحدات البت للأس ، لذا فإن نطاق القيم المحتملة هو نفسه الموجود في FP32: [-3 * 10 ^ 38 ، 3 * 10 ^ 38]. تتميز BF16 بدقة أقل ، أي عدد أقل من الأرقام المهمة ، لكن دقة التدرج اللوني عند تدريب الشبكات ليست مهمة جدًا. لذلك ، يضمن BF16 أنك لست مضطرًا إلى إجراء القياس أو القلق بشأن انفجار التدرج. مع هذا التنسيق ، يجب أن نرى زيادة في ثبات التدريب على حساب خسارة صغيرة في الدقة.
ماذا يعني هذا بالنسبة لك: يمكن أن تكون دقة BF16 أكثر اتساقًا من دقة FP16 ، لكن السرعة هي نفسها. مع دقة TF32 ، تحصل على استقرار مثل FP32 تقريبًا وتسارع تقريبًا مثل FP16. الإضافة هي أنه عند استخدام أنواع البيانات هذه ، يمكنك تغيير FP32 إلى TF32 ، و FP16 إلى BF16 ، دون تغيير أي شيء في الكود!
بشكل عام ، يمكن اعتبار أنواع البيانات الجديدة هذه كسولة ، بمعنى أنه يمكنك الحصول على جميع مزاياها باستخدام أنواع البيانات القديمة وقليل من البرمجة (القياس بشكل صحيح ، والتهيئة ، والتطبيع ، واستخدام Apex). لذلك ، لا توفر أنواع البيانات هذه تسريعًا ، ولكنها تجعل من السهل استخدام الدقة المنخفضة في التدريب.
مشاكل تصميم المروحة الجديدة وتبديد الحرارة
يحتوي تصميم المروحة الجديد لسلسلة RTX 30 على مروحة نفخ الهواء ومروحة سحب الهواء. التصميم بحد ذاته بارع وسيعمل بكفاءة عالية إذا كانت هناك مساحة خالية بين وحدات معالجة الرسومات. ومع ذلك ، ليس من الواضح كيف ستتصرف وحدات معالجة الرسومات إذا تم إجبارها على بعضها البعض. ستكون مروحة النفخ قادرة على نفخ الهواء بعيدًا عن وحدات معالجة الرسومات الأخرى ، ولكن من المستحيل معرفة كيفية عمل ذلك نظرًا لأن شكلها مختلف عما كان عليه من قبل. إذا كنت تخطط لوضع 1 أو 2 من وحدات معالجة الرسومات حيث توجد 4 فتحات ، فلن تواجه مشكلة. ولكن إذا كنت ترغب في استخدام 3-4 وحدات معالجة رسومات RTX 30 جنبًا إلى جنب ، سأنتظر أولاً تقارير عن ظروف درجة الحرارة ، وبعد ذلك قررت بالفعل ما إذا كنت بحاجة إلى المزيد من المعجبين أو موسعات PCIe أو حلول أخرى.
في أي حال ، يمكن أن يساعد تبريد الماء في حل مشكلة المشتت الحراري. تقدم العديد من الشركات المصنعة مثل هذه الحلول لبطاقات RTX 3080 / RTX 3090 ، وبعد ذلك لن تصبح دافئة ، حتى لو كان هناك 4. ومع ذلك ، لا تشتري حلول GPU الجاهزة إذا كنت ترغب في بناء جهاز كمبيوتر به 4 وحدات معالجة رسومات ، لأنه سيكون صعبًا للغاية في معظم الحالات توزيع مشعات.
حل آخر لمشكلة التبريد هو شراء موسعات PCIe وتوزيع البطاقات داخل العلبة. هذا فعال للغاية - لقد استخدمت أنا وطلاب الدراسات العليا الآخرين في جامعة Vanington هذا الخيار بنجاح كبير. لا يبدو أنيقًا جدًا ، لكن وحدات معالجة الرسومات لا تصبح ساخنة! أيضًا ، سيساعدك هذا الخيار في حالة عدم توفر مساحة كافية لاستيعاب وحدة معالجة الرسومات. إذا كان لديك مساحة في حالتك ، فيمكنك ، على سبيل المثال ، شراء RTX 3090 قياسي بثلاث فتحات ، وتوزيعها باستخدام الموسعات في جميع أنحاء العلبة. وبالتالي ، يمكن حل مشكلة المساحة والتبريد لـ 4 RTX 3090 في نفس الوقت
. 1: 4 GPU مع PCIe Expanders
البطاقات ذات الفتحات الثلاث ومشاكل الطاقة
يشغل RTX 3090 3 فتحات ، لذا لا يمكن استخدام 4 كل منها مع مراوح NVIDIA الافتراضية. هذا ليس مفاجئًا لأنه يتطلب 350 واط TDP. يعتبر RTX 3080 أقل شأناً قليلاً ، ويتطلب 320W TDP ، وسيكون من الصعب للغاية تبريد نظام بأربعة RTX 3080s.
من الصعب أيضًا تشغيل نظام بأربع بطاقات بقوة 350 واط = 1400 واط. يوجد مصدر طاقة 1600 واط (PSU) ، لكن 200 واط للمعالج واللوحة الأم قد لا تكون كافية. يحدث الحد الأقصى لاستهلاك الطاقة فقط عند التحميل الكامل ، وعادة ما يتم تحميل المعالج بشكل خفيف أثناء HE. لذلك ، قد يكون PSU بقوة 1600 واط مناسبًا لـ 4 RTX 3080s ، ولكن بالنسبة لـ 4 RTX 3090 ، من الأفضل البحث عن 1700 واط أو أكثر من PSU. لا توجد وحدات PSU في السوق اليوم. قد تعمل وحدات PSU الخاصة بالخادم أو الكتل الخاصة لمصممي التشفير ، ولكن قد يكون لها عامل شكل غير عادي.
كفاءة GPU في التعلم العميق
لم يتضمن الاختبار التالي مقارنات بين Tesla A100 و Tesla V100 فحسب - لقد قمت ببناء نموذج يناسب هذه البيانات وأربعة اختبارات مختلفة ، حيث تم اختبار Titan V و Titan RTX و RTX 2080 Ti و RTX 2080 ( رابط ، رابط ، رابط ، رابط ).
قمت أيضًا بتوسيع نطاق النتائج المعيارية للبطاقات متوسطة المدى مثل RTX 2070 أو RTX 2060 أو Quadro RTX من خلال استيفاء نقاط بيانات الاختبار. عادةً في بنية وحدة معالجة الرسومات (GPU) ، يتم قياس هذه البيانات خطيًا فيما يتعلق بضرب المصفوفة وعرض النطاق الترددي للذاكرة.
لقد جمعت البيانات فقط من اختبارات التدريب FP16 بدقة مختلطة ، حيث لا أرى أي سبب لاستخدام التدريب بأرقام FP32.
الشكل: الشكل 2: الأداء الذي تم تطبيعه بواسطة RTX 2080 Ti
مقارنة بـ RTX 2080 Ti ، يعمل RTX 3090 أسرع 1.57 مرة مع الشبكات التلافيفية ، 1.5 مرة أسرع مع المحولات ، ويكلف 15٪ أكثر. اتضح أن Ampere RTX 30 يُظهر تحسنًا كبيرًا منذ سلسلة Turing RTX 20.
معدل التعلم العميق GPU لكل تكلفة
أي GPU ستكون أفضل قيمة مقابل المال؟ كل هذا يتوقف على التكلفة الإجمالية للنظام. إذا كانت باهظة الثمن ، فمن المنطقي الاستثمار في وحدات معالجة الرسومات الأكثر تكلفة.
فيما يلي بيانات عن ثلاث مجموعات على PCIe 3.0 ، والتي أستخدمها كخط أساس لتكلفة الأنظمة التي تحتوي على 2 أو 4 وحدات معالجة رسومات. أتحمل هذه التكلفة الأساسية وأضف تكلفة GPU إليها. أحسب الأخير على أنه متوسط السعر بين العروض من Amazon و eBay. بالنسبة للأمبير الجديد ، أستخدم سعرًا واحدًا فقط. إذا أخذنا مع بيانات الأداء أعلاه ، فإن هذا يعطي قيم الأداء لكل دولار. بالنسبة لنظام يحتوي على 8 وحدات معالجة رسومات ، أعتبر Supermicro barebone معيارًا صناعيًا لخوادم RTX. الرسوم البيانية المعروضة لا تشمل متطلبات الذاكرة. عليك أولاً التفكير في الذاكرة التي تحتاجها ، ثم البحث عن أفضل الخيارات على الرسوم البيانية. نصائح نموذجية للذاكرة:
- استخدام محولات مدربة مسبقًا ، أو تدريب محول صغير من الصفر> = 11 جيجا بايت.
- تدريب محولات كبيرة أو شبكة تلافيفية في البحث أو الإنتاج:> = 24 جيجا بايت.
- النماذج الأولية للشبكات العصبية (محول أو شبكة تلافيفية)> = 10 جيجابايت.
- الاشتراك في مسابقات Kaggle> = 8 جيجا بايت.
- رؤية كمبيوتر> = 10 جيجا بايت.
الشكل:
الشكل 3: أداء الدولار الطبيعي مقابل RTX 3080 . الشكل 4: أداء الدولار الطبيعي مقابل RTX 3080
. 5: أداء الدولار الطبيعي مقابل RTX 3080.
توصيات GPU
مرة أخرى ، أود التأكيد: عند اختيار وحدة معالجة الرسومات ، تأكد أولاً من أن لديها ذاكرة كافية لمهامك. يجب أن تكون خطوات اختيار وحدة معالجة الرسومات كما يلي:
- , GPU: Kaggle, , , , - .
- , .
- GPU, .
- GPU - ? , RTX 3090, ? GPU? , GPU?
تتطلب منك بعض الخطوات التفكير فيما تريد وإجراء القليل من البحث حول مقدار الذاكرة التي يستخدمها الآخرون عند فعل الشيء نفسه. يمكنني تقديم بعض النصائح ، لكن لا يمكنني الإجابة بشكل كامل على جميع الأسئلة في هذا المجال.
متى سأحتاج إلى أكثر من 11 غيغابايت من السعة التخزينية؟
لقد ذكرت بالفعل أنه عند العمل مع المحولات ، ستحتاج إلى 11 جيجا بايت على الأقل ، وعند إجراء بحث في هذا المجال ، على الأقل 24 جيجا بايت. تحتوي معظم الطرز سابقة التدريب على متطلبات ذاكرة عالية جدًا وقد تم تدريبها على RTX 2080 Ti أو أعلى مع ذاكرة 11 جيجا بايت على الأقل. لذلك ، إذا كانت لديك ذاكرة أقل من 11 غيغابايت ، فقد يصبح تشغيل بعض الطرز أمرًا صعبًا أو مستحيلًا.
المجالات الأخرى التي تتطلب كميات كبيرة من الذاكرة هي معالجة الصور الطبية ونماذج الرؤية الحاسوبية المتقدمة وكلها تحتوي على صور كبيرة.
بشكل عام ، إذا كنت تتطلع إلى تطوير نماذج يمكنها أن تتفوق في الأداء على المنافسة - سواء كان ذلك بحثًا أو تطبيقات صناعية أو منافسة Kaggle - فقد تمنحك الذاكرة الإضافية ميزة تنافسية.
متى يمكنك الحصول على أقل من 11 جيجابايت من الذاكرة؟
تعتبر بطاقات RTX 3070 و RTX 3080 قوية ، لكنها تفتقر إلى الذاكرة. ومع ذلك ، قد لا يكون هذا القدر من الذاكرة مطلوبًا للعديد من المهام.
يعتبر RTX 3070 مثاليًا لتدريب GO. يمكن اكتساب مهارات الشبكات الأساسية لمعظم البنى عن طريق تصغير حجم الشبكات أو استخدام صور أصغر. إذا كان عليّ تعلم GO ، فسأختار RTX 3070 ، أو حتى القليل منها إذا كنت أستطيع تحمل تكاليفها.
تعد البطاقة RTX 3080 هي البطاقة الأكثر فعالية من حيث التكلفة اليوم وبالتالي فهي مثالية للنماذج الأولية. تتطلب النماذج الأولية كميات كبيرة من الذاكرة ، والذاكرة غير مكلفة. أعني بالنماذج الأولية النماذج الأولية في أي مجال - البحث ، مسابقات Kaggle ، تجربة الأفكار لبدء التشغيل ، تجربة كود البحث. لجميع هذه التطبيقات ، يعتبر RTX 3080 هو الأنسب.
إذا كنت ، على سبيل المثال ، مسؤولاً عن مختبر أبحاث أو شركة ناشئة ، فسوف أنفق 66-80٪ من إجمالي الميزانية على أجهزة RTX 3080 ، و 20-33٪ على RTX 3090 مع تبريد مائي موثوق. يعتبر RTX 3080 أكثر فعالية من حيث التكلفة ويمكن الوصول إليه من خلال Slurm... نظرًا لأن النماذج الأولية يجب أن تتم في الوضع الرشيق ، فيجب إجراؤها باستخدام نماذج ومجموعات بيانات أصغر. و RTX 3080 مثالي لذلك. بمجرد أن يبني الطلاب / الزملاء نموذجًا أوليًا رائعًا ، يمكنهم طرحه على RTX 3090 ، والتوسع في النماذج الأكبر.
توصيات عامة
بشكل عام ، تعتبر طرازات سلسلة RTX 30 قوية جدًا وأنا أوصي بها بالتأكيد. ضع في اعتبارك متطلبات الذاكرة كما هو مذكور سابقًا ، بالإضافة إلى متطلبات الطاقة والتبريد. إذا كانت لديك فتحة حرة بين وحدات معالجة الرسومات ، فلن تكون هناك مشاكل في التبريد. بخلاف ذلك ، قم بتزويد بطاقات RTX 30 بتبريد بالماء أو موسعات PCIe أو بطاقات فعالة مزودة بمراوح.
بشكل عام ، أوصي بـ RTX 3090 لأي شخص يستطيع تحمله. لن يناسبك الآن فقط ، ولكنه سيظل فعالاً للغاية لمدة 3-7 سنوات قادمة. من غير المحتمل أن تصبح ذاكرة HBM أرخص بكثير في السنوات الثلاث المقبلة ، لذا ستكون وحدة معالجة الرسومات التالية أفضل بنسبة 25٪ فقط من RTX 3090. في غضون 5-7 سنوات ، من المحتمل أن نرى ذاكرة HBM رخيصة ، وبعد ذلك ستحتاج بالتأكيد إلى تحديث الأسطول ...
إذا كنت تقوم ببناء نظام من عدة RTX 3090s ، فامنحهم التبريد والطاقة الكافيين.
ما لم تكن لديك متطلبات صارمة للميزة التنافسية ، أوصي بـ RTX 3080. هذا حل أكثر فعالية من حيث التكلفة وسيوفر تدريبًا سريعًا لمعظم الشبكات. إذا كنت تقوم بحيل الذاكرة التي تريدها ولا تمانع في كتابة تعليمات برمجية إضافية ، فهناك الكثير من الحيل لتعبئة شبكة بحجم 24 جيجابايت في وحدة معالجة رسومات بسعة 10 جيجابايت.
تعد RTX 3070 أيضًا بطاقة رائعة للتدريب والنماذج الأولية لـ GO ، وهي أرخص بـ 200 دولار من RTX 3080. إذا كنت لا تستطيع تحمل تكلفة RTX 3080 ، فإن RTX 3070 هو خيارك.
إذا كانت ميزانيتك ضيقة وكان RTX 3070 باهظ الثمن بالنسبة لك ، فيمكنك العثور على RTX 2070 مستخدمًا على eBay مقابل 260 دولارًا تقريبًا. لم يتضح بعد ما إذا كان RTX 3060 سيخرج أم لا ، ولكن إذا كانت ميزانيتك ضيقة ، فقد يكون الأمر يستحق الانتظار. إذا تم تسعيرها لتتناسب مع RTX 2060 و GTX 1060 ، فيجب أن يتراوح سعرها بين 250 و 300 دولار ، ويجب أن تعمل بشكل جيد.
توصيات لمجموعات GPU
يعتمد تخطيط مجموعة GPU بشكل كبير على استخدامه. بالنسبة إلى نظام يحتوي على 1024 وحدة معالجة رسومات أو أكثر ، سيكون الشيء الرئيسي هو وجود شبكة ، ولكن إذا كنت لا تستخدم أكثر من 32 وحدة معالجة رسومات في وقت واحد ، فلا فائدة من الاستثمار في بناء شبكة قوية.
بشكل عام ، لا يمكن استخدام بطاقات RTX بموجب اتفاقية CUDA في مراكز البيانات. ومع ذلك ، يمكن أن تكون الجامعات في كثير من الأحيان استثناء لهذه القاعدة. إذا كنت ترغب في الحصول على هذا الإذن ، يجدر بك الاتصال بممثل NVIDIA. إذا كان بإمكانك استخدام بطاقات RTX ، فإنني أوصي بنظام Supermicro القياسي 8 GPU RTX 3080 أو RTX 3090 (إذا كان بإمكانك الاحتفاظ بها باردة). تضمن مجموعة صغيرة من 8 عقد A10000 الاستخدام الفعال للنماذج بعد النماذج الأولية ، خاصةً إذا كان تبريد الخوادم مع 8 RTX 3090s غير ممكن. في هذه الحالة ، أوصي بـ A10000 على RTX 6000 / RTX 8000 لأن A10000s فعالة من حيث التكلفة ولن تتقادم بسرعة.
إذا كنت بحاجة إلى تدريب شبكات كبيرة جدًا على مجموعة GPU (256 وحدة معالجة رسومات أو أكثر) ، فإنني أوصي باستخدام نظام NVIDIA DGX SuperPOD مع A10000. من 256 وحدة معالجة رسومات ، تصبح الشبكات ضرورية. إذا كنت ترغب في التوسع إلى ما بعد 256 وحدة معالجة رسومات ، فأنت بحاجة إلى نظام مُحسَّن للغاية لن تعمل الحلول القياسية معه بعد الآن.
لا سيما على مقياس 1،024 GPU وما بعده ، تظل الحلول التنافسية الوحيدة في السوق هي Google TPU Pod و NVIDIA DGX SuperPod. في هذا النطاق ، أفضل استخدام Google TPU Pod ، حيث تبدو البنية التحتية المخصصة للشبكات أفضل من NVIDIA DGX SuperPod - على الرغم من أن النظامين قريبان جدًا من حيث المبدأ. في التطبيقات والأجهزة ، يكون نظام GPU أكثر مرونة من TPU ، بينما تدعم أنظمة TPU النماذج الأكبر والمقاييس بشكل أفضل. لذلك ، كلا النظامين لهما مزايا وعيوب.
أي GPU من الأفضل عدم الشراء
لا أوصي بشراء عدة إصدارات من RTX Founders Editions أو RTX Titans في وقت واحد ، إلا إذا كان لديك موسعات PCIe لحل مشاكل التبريد الخاصة بهم. سوف يقومون بالإحماء فقط وستنخفض سرعتهم بشكل كبير مقارنة بما هو موضح في الرسوم البيانية. ستسخن إصدارات RTX 2080 Ti Founders الأربعة بسرعة تصل إلى 90 درجة مئوية ، وتخفض سرعات الساعة ، وتعمل بشكل أبطأ من RTX 2070 المبرد عادة.
أوصي بشراء Tesla V100 أو A100 فقط في الحالات القصوى ، حيث يُحظر استخدامها في مراكز بيانات الشركات. أو قم بشرائها إذا كنت بحاجة إلى تدريب شبكات كبيرة جدًا على مجموعات GPU ضخمة - نسبة السعر / الأداء ليست مثالية.
إذا كنت تستطيع شراء شيء أفضل ، فلا تذهب لبطاقات سلسلة GTX 16. ليس لديهم نوى موتر ، لذا فإن أدائهم في GO ضعيف. سأستخدم RTX 2070 / RTX 2060 / RTX 2060 Super بدلاً من ذلك. يمكن اقتراضها إذا كانت ميزانيتك محدودة للغاية.
متى يكون من الأفضل عدم شراء وحدات معالجة رسومات جديدة؟
إذا كنت تمتلك RTX 2080 Ti بالفعل أو أفضل منه ، فإن الترقية إلى RTX 3090 لا طائل منها تقريبًا. تعد وحدات معالجة الرسومات لديك جيدة بالفعل ، وستكون فوائد السرعة ضئيلة مقارنةً بمشكلات الطاقة والتبريد المكتسبة - لا يستحق ذلك.
السبب الوحيد الذي يجعلني أرغب في الترقية من أربعة RTX 2080 Ti إلى أربعة RTX 3090 هو إذا كنت أقوم بإجراء بحث على محولات كبيرة جدًا أو شبكات أخرى تعتمد بشكل كبير على قوة الحوسبة. ومع ذلك ، إذا كنت تعاني من مشاكل في الذاكرة ، فيجب عليك أولاً التفكير في العديد من الحيل من أجل حشر النماذج الكبيرة في الذاكرة الموجودة.
إذا كنت تمتلك RTX 2070s واحدًا أو أكثر ، فسأفكر مرتين إذا كنت مكانك قبل الترقية. هذه وحدات معالجة رسومات جيدة جدًا. قد يكون من المنطقي بيعها على eBay وشراء RTX 3090 إذا لم تكن سعة 8 جيجابايت كافية لك - كما هو الحال مع العديد من وحدات معالجة الرسومات الأخرى. إذا لم تكن هناك ذاكرة كافية ، فهذا يعني أن هناك تحديثًا قيد التجهيز.
إجابات على الأسئلة والمفاهيم الخاطئة
ملخص:
- ممرات PCIe و PCIe 4.0 ليست ذات صلة لأنظمة GPU المزدوجة. بالنسبة للأنظمة التي تحتوي على 4 وحدات معالجة رسومات ، فإنها لا تفعل ذلك عمليًا.
- سيكون تبريد RTX 3090 و RTX 3080 صعبًا. استخدم مبردات المياه أو موسعات PCIe.
- NVLink مطلوب فقط لمجموعات GPU.
- يمكن استخدام وحدات معالجة رسومات مختلفة على نفس الكمبيوتر (على سبيل المثال ، GTX 1080 + RTX 2080 + RTX 3090) ، لكن التوازي الفعال لن يعمل.
- لتشغيل أكثر من جهازين على التوازي ، تحتاج إلى Infiniband وشبكة 50 جيجابت في الثانية.
- معالجات AMD أرخص من معالجات Intel ، وهذه الأخيرة لا تتمتع بأي مزايا تقريبًا.
- على الرغم من الجهود البطولية للمهندسين ، فإن AMD GPU + ROCm لن تكون قادرة على التنافس مع NVIDIA نظرًا لنقص المجتمع ونواة موتر مكافئة في العامين القادمين.
- تعد وحدات معالجة الرسومات السحابية مفيدة إذا تم استخدامها لمدة تقل عن عام. بعد ذلك ، يصبح إصدار سطح المكتب أرخص.
هل أحتاج إلى PCIe 4.0؟
عادة لا. يعد PCIe 4.0 رائعًا لمجموعة GPU. مفيد إذا كان لديك جهاز 8 GPU. في حالات أخرى ، لا توجد مزايا تقريبًا. يحسن الموازاة وينقل البيانات بشكل أسرع قليلاً. لكن نقل البيانات ليس عنق الزجاجة. في رؤية الكمبيوتر ، قد يكون الاختناق هو تخزين البيانات ، ولكن ليس نقل بيانات PCIe من GPU إلى GPU. لذلك لا يوجد سبب يدفع معظم الناس لاستخدام PCIe 4.0. من المحتمل أن يحسن موازاة أربع وحدات معالجة رسومات (GPU) بنسبة 1-7٪.
هل أحتاج إلى ممرات PCIe 8x / 16x؟
كما هو الحال مع PCIe 4.0 ، عادة لا. ممرات PCIe مطلوبة للتوازي ونقل البيانات بسرعة ، والتي لا تكاد تكون عنق الزجاجة. إذا كان لديك 2 GPU ، فإن 4 خطوط كافية لهم. بالنسبة إلى 4 وحدات معالجة رسومات ، أفضل 8 خطوط لكل وحدة معالجة رسومات ، ولكن إذا كان هناك 4 خطوط ، فسيؤدي ذلك إلى تقليل الأداء بنسبة 5-10٪ فقط.
كيف تتلاءم مع أربع وحدات RTX 3090 عندما يشغل كل منها 3 فتحات PCIe؟
يمكنك شراء أحد الخيارين لفتحة واحدة ، أو توزيعهما باستخدام موسعات PCIe. بالإضافة إلى المساحة ، يجب أن تفكر على الفور في التبريد ومصدر طاقة مناسب. من الواضح أن الحل الأسهل هو شراء 4 x RTX 3090 EVGA Hydro Coppers مع حلقة تبريد مياه مخصصة. تقوم EVGA بصنع إصدارات نحاسية من البطاقات المبردة بالماء لسنوات عديدة ، ويمكنك الوثوق بجودة وحدات معالجة الرسومات الخاصة بها. ربما هناك خيارات أرخص.
يمكن لموسعات PCIe حل مشكلات المساحة والتبريد ، ولكن يجب أن تحتوي العلبة على مساحة كافية لجميع البطاقات. وتأكد من أن المطولات طويلة بما يكفي!
كيف تبرد 4 RTX 3090 أو 4 RTX 3080؟
انظر القسم السابق.
هل يمكنني استخدام عدة أنواع مختلفة من GPU؟
نعم ، لكنك لن تكون قادرًا على موازنة العمل بشكل فعال. يمكنني أن أتخيل نظامًا يعمل على 3 RTX 3070 + 1 RTX 3090. من ناحية أخرى ، سيعمل التوازي بين أربع RTX 3070s بسرعة كبيرة إذا قمت بحشر النموذج الخاص بك عليها. وهناك سبب آخر وراء احتياجك إليه وهو استخدام وحدات معالجة الرسومات القديمة. سيعمل هذا ، لكن الموازاة ستكون غير فعالة ، حيث ستنتظر أسرع وحدات معالجة الرسومات أبطأ وحدات معالجة الرسومات في نقاط المزامنة (عادةً عند تحديث التدرج اللوني).
ما هو NVLink وهل أحتاجه؟
عادة لا تحتاج إلى NVLink. إنه اتصال عالي السرعة بين وحدات معالجة رسومات متعددة. إنه ضروري إذا كان لديك مجموعة من 128 وحدة معالجة رسومات أو أكثر. في حالات أخرى ، لا توجد مزايا تقريبًا مقارنة بنقل بيانات PCIe القياسي.
ليس لدي المال حتى لأرخص التوصيات. ماذا أفعل؟
بالتأكيد شراء وحدة معالجة الرسومات المستخدمة. إن استخدام RTX 2070 (400 دولار) و RTX 2060 (300 دولار) سيكون جيدًا. إذا كنت لا تستطيع تحمل تكاليفها ، فسيكون الخيار الأفضل التالي هو GTX 1070 (220 دولارًا) أو GTX 1070 Ti (230 دولارًا). إذا كان هذا مكلفًا للغاية ، فابحث عن GTX 980 Ti مستعمل (6 جيجابايت 150 دولارًا) أو GTX 1650 Super (190 دولارًا). إذا كان هذا مكلفًا أيضًا ، فمن الأفضل لك استخدام الخدمات السحابية. عادةً ما يوفرون لوحدات معالجة الرسومات وقتًا أو حدًا للطاقة ، وبعد ذلك يتعين عليك الدفع. قم بتبديل الخدمات حتى تتمكن من تحمل تكلفة وحدة معالجة الرسومات الخاصة بك.
ما المطلوب لموازنة مشروع بين جهازين؟
لتسريع العمل من خلال التوازي بين جهازين ، تحتاج إلى بطاقات شبكة بسرعة 50 جيجابت في الثانية أو أكثر. أوصي بتثبيت EDR Infiniband على الأقل - أي بطاقة شبكة بسرعة لا تقل عن 50 جيجابت في الثانية. ستعيدك بطاقتا EDR مع كابل على eBay 500 دولار.
في بعض الحالات ، يمكنك الحصول على 10 جيجابت في الثانية Ethernet ، ولكن هذا عادة ما يعمل فقط مع أنواع معينة من الشبكات العصبية (شبكات تلافيفية معينة) أو مع خوارزميات معينة (Microsoft DeepSpeed).
هل خوارزميات ضرب المصفوفات المتفرقة مناسبة لأي مصفوفة متفرقة؟
على ما يبدو لا. نظرًا لأن المصفوفة مطلوب أن تحتوي على صفرين لكل 4 عناصر ، يجب أن تكون المصفوفات المتفرقة منظمة جيدًا. ربما يكون من الممكن تعديل الخوارزمية قليلاً عن طريق معالجة 4 قيم كتمثيل مضغوط لقيمتين ، لكن هذا يعني أن الضرب الدقيق للمصفوفات المتفرقة بواسطة Ampere لن يكون متاحًا.
هل أحتاج إلى معالج Intel لتشغيل العديد من وحدات معالجة الرسومات؟
لا أوصي باستخدام معالج Intel ، إلا إذا كنت تفرط في تحميل المعالج في مسابقات Kaggle (حيث يتم تحميل المعالج بحسابات الجبر الخطي). وحتى بالنسبة لمثل هذه المسابقات ، فإن معالجات AMD رائعة. معالجات AMD أرخص في المتوسط وأفضل بالنسبة لـ GO. بالنسبة لبناء 4-GPU ، فإن Threadripper هو خياري النهائي. في جامعتنا ، قمنا بتجميع العشرات من الأنظمة القائمة على هذه المعالجات ، وجميعها تعمل بشكل مثالي ، دون أي شكاوى. بالنسبة للأنظمة التي تحتوي على 8 وحدات معالجة رسومات (GPU) ، سأستخدم المعالج الذي تتمتع به الشركة المصنعة لديك. تعد موثوقية المعالج و PCIe في الأنظمة ذات 8 بطاقات أكثر أهمية من السرعة أو الكفاءة من حيث التكلفة.
هل شكل العلبة مهم للتبريد؟
لا. عادةً ما تبرد وحدات معالجة الرسومات بشكل مثالي إذا كانت هناك فجوات صغيرة بين وحدات معالجة الرسومات. يمكن أن تمنحك العلب المختلفة اختلافًا يتراوح بين 1-3 درجات مئوية ، ويمكن أن تمنحك تباعد البطاقات المختلفة فرقًا يتراوح بين 10 و 30 درجة مئوية. بشكل عام ، إذا كانت هناك فجوات بين البطاقات الخاصة بك ، فلا توجد مشكلة في التبريد. إذا لم تكن هناك فجوات ، فأنت بحاجة إلى المراوح المناسبة (مروحة النفخ) أو حل آخر (التبريد بالماء ، موسعات PCIe). على أي حال ، لا يهم نوع الحالة ومعجبيها.
هل ستلتقط AMD GPU + ROCm من أي وقت مضى NVIDIA GPU + CUDA؟
ليس في العامين المقبلين. هناك ثلاث مشاكل: نواة الموتر ، والبرمجيات والمجتمع.
تعد بلورات GPU نفسها من AMD جيدة: أداء ممتاز على FP16 ، عرض نطاق ذاكرة ممتاز. لكن عدم وجود نوى موتر أو ما يعادلها يؤدي إلى حقيقة أن أداؤها يعاني مقارنةً بوحدة معالجة الرسومات من NVIDIA. وبدون تطبيق نوى الموتر في الأجهزة ، لن تكون وحدات معالجة الرسومات AMD قادرة على المنافسة أبدًا. وفقًا للشائعات ، تم التخطيط لنوع من البطاقات لمراكز البيانات مع تناظرية من نوى الموتر لعام 2020 ، ولكن لا توجد بيانات دقيقة حتى الآن. إذا كان لديهم بطاقة Tensor Core المكافئة للخوادم فقط ، فهذا يعني أن قلة من الناس يمكنهم تحمل تكلفة وحدات معالجة الرسومات AMD ، مما يمنح NVIDIA ميزة تنافسية.
لنفترض أن AMD ستقدم أجهزة بشيء مثل أنوية الموتر في المستقبل. ثم سيقول الكثير: "لكن لا توجد برامج تعمل مع وحدات معالجة الرسومات AMD! كيف يمكنني استخدامها؟ " هذا في الغالب فكرة خاطئة. تم بالفعل تطوير برنامج AMD الذي يقوم بتشغيل ROCm جيدًا ، كما أن الدعم في PyTorch منظم جيدًا. وعلى الرغم من أنني لم أر العديد من التقارير حول عمل AMD GPU + PyTorch ، إلا أن جميع وظائف البرنامج مدمجة هناك. على ما يبدو ، يمكنك اختيار أي شبكة وتشغيلها على وحدة معالجة الرسومات AMD. لذلك ، تم بالفعل تطوير AMD جيدًا في هذا المجال ، وقد تم حل هذه المشكلة عمليًا.
ومع ذلك ، بعد حل مشاكل البرامج وعدم وجود نوى موتر ، تواجه AMD مشكلة أخرى: الافتقار إلى المجتمع. عندما تواجه مشكلة مع NVIDIA GPUs ، يمكنك البحث في Google عن حل والعثور عليه. هذا يبني الثقة في NVIDIA GPUs. تظهر بنية تحتية لتسهيل استخدام وحدات معالجة الرسومات NVIDIA (أي منصة لأعمال GO ، وأي مهمة علمية مدعومة). هناك مجموعة من الاختراقات والحيل التي تسهل بشكل كبير استخدام وحدات معالجة الرسومات NVIDIA (على سبيل المثال ، القمة). يمكن العثور على خبراء ومبرمجي NVIDIA GPU تحت كل شجيرة ، لكنني أعرف عددًا أقل بكثير من خبراء وحدة معالجة الرسومات من AMD.
فيما يتعلق بالمجتمع ، فإن وضع AMD مشابه لوضع Julia vs Python. تتمتع جوليا بالكثير من الإمكانات ، وسيشير الكثير عن حق إلى أن لغة البرمجة هذه مناسبة بشكل أفضل للعمل العلمي. ومع ذلك ، نادرًا ما تستخدم جوليا مقارنة ببايثون. إنه مجرد مجتمع Python كبير جدًا. هناك الكثير من الأشخاص يتجمعون حول حزم قوية مثل Numpy و SciPy و Pandas. هذا الموقف مشابه لما حدث في NVIDIA vs AMD.
لذلك ، من المحتمل جدًا ألا تلحق AMD بركب NVIDIA حتى تقدم ما يعادل نوى الموتر ومجتمعًا قويًا مبنيًا حول ROCm. ستتمتع AMD دائمًا بحصتها السوقية في مجموعات فرعية محددة (تعدين العملة المشفرة ومراكز البيانات). لكن من المرجح أن تحتكر NVIDIA لمدة عامين آخرين.
متى يكون من الأفضل استخدام الخدمات السحابية ، ومتى يكون من الأفضل استخدام جهاز كمبيوتر مخصص به وحدة معالجة رسومات (GPU)؟
قاعدة بسيطة: إذا كنت تتوقع أن تفعل GO لأكثر من عام ، فمن الأرخص شراء جهاز كمبيوتر مزود بوحدة معالجة رسومات. بخلاف ذلك ، من الأفضل استخدام الخدمات السحابية - ما لم تكن لديك خبرة واسعة في البرمجة السحابية وترغب في الاستفادة من زيادة عدد وحدات معالجة الرسومات حسب الرغبة.
تعتمد نقطة التحول الدقيقة التي تصبح عندها وحدات معالجة الرسومات السحابية أكثر تكلفة من جهاز الكمبيوتر الخاص بك بشكل كبير على الخدمات المستخدمة. من الأفضل أن تحسبها بنفسك. يوجد أدناه مثال لحساب خادم AWS V100 مع V100 واحد ، ومقارنته بتكلفة كمبيوتر سطح المكتب مع RTX 3090 واحد ، وهو قريب من الأداء. يكلف جهاز الكمبيوتر RTX 3090 2200 دولار (2-GPU barebone + RTX 3090). إذا كنت في الولايات المتحدة ، أضف 0.12 دولارًا لكل كيلو وات ساعة للكهرباء إلى ذلك. قارن ذلك بـ 2.14 دولار لكل ساعة لكل خادم على AWS.
عند إعادة التدوير بنسبة 15٪ سنويًا ، يستخدم الكمبيوتر
(350 واط (وحدة معالجة الرسومات) + 100 واط (وحدة المعالجة المركزية)) * 0.15 (إعادة التدوير) * 24 ساعة * 365 يومًا = 591 كيلو واط في الساعة سنويًا.
591 كيلو واط ساعة سنويًا يعطي 71 دولارًا إضافيًا.
نقطة التحول ، عندما يقارن الكمبيوتر والسحابة في السعر عند استخدام 15٪ ، تأتي في اليوم الثالث والثلاثين تقريبًا (2311 دولارًا مقابل 2270 دولارًا):
2.14 دولارًا / ساعة * 0.15 (إعادة التدوير) * 24 ساعة * 300 يوم = 2311 دولارًا
إذا قمت بالحساب ، أن نماذج GO الخاصة بك ستستمر لأكثر من 300 يومًا ، فمن الأفضل شراء جهاز كمبيوتر بدلاً من استخدام AWS.
يمكن إجراء حسابات مماثلة لأي خدمة سحابية لتحديد ما إذا كنت تريد استخدام جهاز الكمبيوتر الخاص بك أو السحابة.
الأرقام الشائعة لاستخدام قوة الحوسبة هي كما يلي:
- كمبيوتر دكتوراه: <15٪؛
- كتلة GPU على دكتوراه Slurm:> 35٪
- مجموعة أبحاث الشركات حول الطين:> 60٪.
بشكل عام ، تكون معدلات إعادة التدوير أقل في المناطق التي يكون فيها التفكير في الأفكار المبتكرة أكثر أهمية من تطوير الحلول العملية. في بعض المناطق يكون معدل الاستخدام أقل (دراسات التفسير) ، بينما يكون في مناطق أخرى أعلى بكثير (الترجمة الآلية ، نمذجة اللغة). بشكل عام ، عادة ما يتم المبالغة في إعادة تدوير السيارات الشخصية. عادةً ما يتم إعادة تدوير معظم الأنظمة الشخصية بنسبة 5-10٪. لذلك ، أوصي بشدة أن تنظم فرق البحث والشركات مجموعات GPU على Slurm بدلاً من أجهزة سطح المكتب المنفصلة.
نصائح لمن هم كسالى جدا عن القراءة
أفضل وحدات معالجة الرسومات بشكل عام : RTX 3080 و RTX 3090.
وحدات معالجة الرسومات التي يجب تجنبها (كباحث) : بطاقات Tesla و Quadro و Founders Edition و Titan RTX و Titan V و Titan XP.
نسبة الأداء إلى السعر جيدة ، ولكنها باهظة الثمن : RTX 3080. نسبة
الأداء إلى السعر جيدة ، أرخص : RTX 3070 ، RTX 2060 Super.
لدي القليل من المال : شراء بطاقات مستعملة. التسلسل الهرمي: RTX 2070 (400 دولار) ، RTX 2060 (300 دولار) ، GTX 1070 (220 دولارًا) ، GTX 1070 Ti (230 دولارًا) ، GTX 1650 سوبر (190 دولارًا) ، GTX 980 Ti (6 جيجابايت 150 دولارًا).
ليس لدي أي نقود تقريبًا : يعلن العديد من الشركات الناشئة عن خدماتها السحابية. استخدم الأرصدة المجانية في السحاب ، وقم بتغييرها في دائرة حتى تتمكن من شراء وحدة معالجة الرسومات.
أنا أتنافس في مسابقات Kaggle: RTX 3070.
أحاول الفوز بالمنافسة في الرؤية الحاسوبية ، ما قبل التدريب أو الترجمة الآلية : 4 قطع RTX 3090. لكن انتظر حتى يؤكد الخبراء أن هناك مجموعات ذات تبريد جيد وطاقة كافية.
أنا أتعلم معالجة اللغة الطبيعية : إذا لم تكن تستخدم الترجمة الآلية أو نمذجة اللغة أو التعلم المسبق ، فإن RTX 3080 سيفي بالغرض.
بدأت في فعل GO وبدأت فعلاً: ابدأ بـ RTX 3070. إذا لم تشعر بالملل خلال 6-9 أشهر ، قم ببيع وشراء أربعة RTX 3080. اعتمادًا على ما تختاره بعد ذلك (بدء التشغيل ، Kaggle ، البحث ، GO التطبيقي) ، سنوات في ثلاثة ، قم ببيع وحدات معالجة الرسومات الخاصة بك وشراء شيء أفضل (الجيل التالي من وحدات معالجة الرسومات RTX).
أرغب في تجربة GO ، لكن ليس لدي نوايا جادة : سيكون RTX 2060 Super خيارًا ممتازًا ، ومع ذلك ، قد يتطلب استبدال PSU. إذا كان لديك فتحة PCIe x16 على اللوحة الأم ، وتنتج وحدة إمداد الطاقة حوالي 300 واط ، فإن GTX 1050 Ti سيكون خيارًا ممتازًا ، لأنه لا يتطلب استثمارات أخرى.
مجموعة GPU للمحاكاة المتوازية مع أقل من 128 وحدة معالجة رسومات (GPU) : إذا سمح لك بشراء RTX للمجموعة: 66٪ 8x RTX 3080 و 33٪ 8x RTX 3090 (فقط إذا كان بإمكانك تبريد التجميع جيدًا). إذا لم يكن التبريد كافيًا ، فقم بشراء وحدة معالجة رسومات RTX 6000 33٪ أو 8x Tesla A100. إذا لم تتمكن من شراء وحدة معالجة الرسومات RTX ، فسأستخدم 8 عقد Supermicro A100 أو 8 عقد RTX 6000.
مجموعة GPU لمحاكاة متوازية مع أكثر من 128 وحدة معالجة رسومات: فكر في السيارات ذات 8 تسلا A100. إذا كنت بحاجة إلى أكثر من 512 وحدة معالجة رسومات ، ففكر في نظام DGX A100 SuperPOD.