المشاركات

كيف تبني حاسب لتعلم الآلة؟

المتابع للتطور في مجال تعلم الآلة (machine learning) -وتحته ضمناً التعلم العميق (deep learning)- يعرف كيف تم حل مشاكل كثيرة كانت تعد صعبة جداً إلى وقت قريب. عدة عوامل ساهمت في هذا التطور السريع، من ضمنها تطوير بعض الخوارزميات والمجتمع المنفتح على مشاركة العلم ومصادر الأكواد. هناك عاملين إضافيين أسهما بشكل كبير في دفع النتائج إلى مستويات غير مسبوقة، وهما كمية البيانات الهائلة التي صار بالإمكان جمعها وتخزينها بشكل أسهل وأرخص بكثير من السابق، وتطور العتاد (hardware) ليسهم في معالجة هذه الكمية الكبيرة من البيانات. ومن عمل باستخدام بيانات كبيرة (وبالذات باستخدام خوارزميات التعلم العميق) يعرف أنه صار من شبه المستحيل أن تعمل بشكل جيد من دون أجهزة ذات معالجات قوية (معالجات عادية CPU ورسومية GPU) وذاكرة كبيرة وسعة تخزين عالية.

هناك عدة خيارات للحصول على عتاد قوي:

  • الحوسبة عالية الأداء (High Performance Computing)، مثل مجموعات الحواسيب (clusters) أو الحواسيب الخارقة (super computers). وغالباً يتم إتاحتها في الجامعات ومراكز الأبحاث، وتكلفتها عالية جداً.
  • الخدمات السحابية، مثل Google Cloud Platform و Amazon AWS، بحيث تستطيع استئجار أجهزة لمدة محددة لإجراء التجارب وتدريب النماذج. وتستطيع اختيار العديد من المواصفات، ولكن كلما كانت المواصفات أعلى زاد السعر.
  • شراء أو بناء حاسب عالي الأداء، وهي حواسيب مكتبية ذات قدرات عالية، مثل بعض الحواسيب الاحترافية للعمل على الرسومات ثلاثية الأبعاد، أو حواسيب الألعاب.

غالباً الخياران الأخيران هما المتاحان فقط، فتحتاج أن تقرر هل تمتلك جهاز؟ أم تكتفي باستخدام الخدمات السحابية؟ بشكل عام إذا كنت ستعمل على تدريب نماذج التعلم العميق كثيراً فقد يكون من الأوفر والأفضل أن تبني أو تشتري حاسب خاص بك. وهذا ما قررته قبل ما يزيد عن الستة أشهر، حيث قمت ببناء حاسب لأعمل عليه لتدريب نماذج تعلم الآلة، وبالذات التعلم العميق. وأحببت أن أشارككم التجربة هنا لمن يفكر في بناء أو شراء جهاز خاص به. في الحقيقة أعتقد أن معرفة المكوّنات المختلفة ووظيفة كل منها للمهمة التي تريدها مفيدة لك حتى لو لم ترد اقنتاء حاسب خاص بك، لأنك قد تحتاج لاتخاذ قرار لشراء أجهزة لجهة العمل مثلاً، أو لمساعدتك في اختيار المكونات في الخدمات السحابية مثل Google Cloud Platform و Amazon AWS.

ملاحظة 1: ليس تخصصي في العتاد، ولكن لي خبرة سابقة في ذلك. وقد قمت بالبحث والمقارنات بشكل مكثف قبل أن أتخذ قراراتي. وهناك بعض الشركات التي لم أستخدم منتجاتها بالرغم من أنها قد تكون خيار جيد، مثل معالجات شركة AMD. هذا الموضوع عبارة عن سرد لخبرتي المتواضعة، وإن كان لك نقاش حولها فأرحب به في التعليقات.

ملاحظة 2: سأقوم بشرح كل قطعة وكيفية اختيار المناسب لك وماذا اخترت (من وجهة نظر بناء حاسب قوي)، ولكن في الأخير الاختيار راجع لك ولمزانيتك المتاحة، وبعض القطع اخترتها ليس لأنها الأفضل ولكن لمحدودية الميزانية المرصودة. مع ملاحظة أنه قد تكون خرجت بعض القطع الأكثر تقدماً نظراً للتطور السريع في العتاد.

ملاحظة 3: لم أقم بإضافة الأسعار لأنها متغيرة. بشكل عام، قمت بشراء أغلب المكونات عن طريق موقع newegg.com. هذا الموقع متخصص بقطع الحاسب، وشحنه كان أرخص بكثير من أمازون. كثير من القطع كان سعرها + الشحن أرخص من شرائها من المحلات عندنا. كذلك اشتريت القطع وقت عروض الكريسماس فكان بعضها سعره مناسباً جداً، ولكن ليس كلها. طريقة الشراء لدي، أني بعد اختيار جميع القطع ذهبت إلى مجمع محلات الحاسب، وقمت بتسعيرها عند أكثر من محل، ثم رجعت واطلعت على أسعارها على الانترنت. إذا كان الفرق كبيراً (مع الشحن) اشتريتها من الانترنت، أو أشتريها محلياً. خذ في الحسبان أن أسعار مثل هذه الحواسيب أغلى بكثير من الحواسيب المكتبية العادية، وكلما زادت المواصفات ازداد السعر.

هناك العديد من المكونات لجهاز الحاسب، واختيار بعضها قد يؤثر على الاختيارات الأخرى. المكونات التي لها علاقة مباشرة لمهام تعلم الآلة هي وحدة المعالجة المركزية، وحدة المعالجة الرسومية، الذاكرة، والتخزين. سنبدأ بأهم مكون في الحاسب: المعالج.

وحدة المعالجة المركزية (CPU)

المعالج هو عقل الحاسب الذي يقوم بمعظم العمليات. هناك شركتين مسيطرتين على سوق المعالجات، وهما إنتل و AMD، حديثي سيكون عن إنتل فقط. لإنتل العديد من عائلات المعالجات، ولكن المناسب منها للمعالجة عالية الأداء ينحصر في عائلتين:

1- معالجات XEON الاحترافية، وهي تستخدم غالباً في السيرفرات والأجهزة عالية الأداء. ولكنها غالية، لهذا استبعدتها من البحث.

2- معالجات Intel Core i7 X-Series أو Intel i9 X-Series أو Intel Core i9 Extreme، بالرغم من أنها موجهة للمستهلكين إلا أنها تعتبر قوية جداً. تستطيع أن تذهب إلى صفحة Intel لهذه لمعالجات لتقرأ خصائص ومزايا كل معالج. هناك بعض المعايير التي يجب أن تأخذها بالحسبان عند اختيار المعالج (سأتكلم عن ما يهمنا لسرعة المعالجة):

  • السرعة: بالتأكيد سرعة المعالج من الأمور المهمة، ولكنها ليست الأهم، وقد جعلتها كعامل مرجح عند الاحتيار. وقريب من ذلك حجم الكاش (Cache) يسهم بالسرعة كلما ازداد حجمه.
  • عدد الأنوية (cores) للمعالج، وهي مهمة عند كتابة برامج لتوزيع الحوسبة على هذه الأنوية (parallel processing)، وبهذا تكون كأنك تستخدم عدد معالجات بعدد الأنوية تعمل بشكل متوازي. ويسهم هذا بتسريع العمليات بشكل كبير جداً. هذه الميزة مهمة لدي، وكانت من عوامل الاختيار الأساسية.
  • أقصى حجم للذاكرة (Max Memory Size): نوع المعالج يحدد لك حجم الذاكرة الأقصى التي تستطيع استخدامها. في هذه السلسلة من معالجات انتل القوية، أغلب المعالجات تقبل استخدام ذاكرة بسعة حتى 128 غيغابايت، ولكن هناك أحد الأنواع يقبل فقط حتى 64 غيغابايت (Intel Core i7-7740X)، ولأن حجم الذاكرة مهم جداً فقد قمت باستبعاد هذا المعالج.
  • أقصى عدد لموصلات  (PCIe) PCI Express Lanes: هذه الموصلات المرتبطة مباشرة بالمعالج لها أهمية كبيرة، حيث أنها سريعة جداً في نقل البيانات بين بعض القطع والمعالج. استخدام موصلات أخرى قد يؤثر على الأداء. لكل نوع من المعالجات عدد أقصى من هذه الموصلات. هذه الموصلات مهمة خصوصاً عند استخدام وحدات المعالجة الرسومية (GPU) (في الغالب تستسخدم 16 موصل لكل وحدة). إذا كنت ستستخدم وحدتين للمعالجة الرسومية فستحتاج على الأقل إلى 32 موصل (نظرياً). هناك معالجات بـ 28 موصل، ثم التي تليها بـ 44 موصل وأكثر، ولكنها غالية جداً. في البداية كنت مخطط أني أشتري GPU واحد فقط، مع احتمال زيادة آخر مستقبلاً، فإذا ركبت معالجين GPU مع معالج يدعم 28 موصل فسيتم استخدام 16 موصل للأول و 8 موصلات للثاني. وبعد بحث وقراءة لبعض المقارنات تبين أن الفرق في الأداء غير مذكور إذا تم استخدام 8 موصلات، ولهذا فقد قررت أن آخذ معالج بـ 28 موصل للفرق الكبير في السعر (في حينها كان أقل معالج يحتوي على 44 موصل بـ 1000$).

وهناك الكثير من المعايير الأخرى، ولكن أعتقد أن هذه هي الأهم لاستخدامنا هنا.

هذا الشكل يبين أين تستطيع العثور على هذه المواصفات في صفحة كل معالج على موقع إنتل:

المعالج i7-7820X، ويركب على مقبس من نوع LGA2066

شكل المعالج من الأمام

شكل المعالج من الخلف

بعد أن ننتهي من اختيار المعالج، ننتقل إلى المكون الثاني في الترتيب، وهو اللوحة الأم (أو اللوحة الرئيسية).

اللوحة الأم (Motherboard)

اللوحة الأم هي اللوحة التي يتم تركيب كل القطع عليها. اختيار اللوحة الأم المناسبة لجهازك يعتمد على نوع المعالج والمواصفات المطلوبة، مثل عدد كروت الذاكرة. كما أن هناك العديد من المواصفات التي تستطيع الاختيار من بينها حسب حاجتك، سأذكر أهمها هنا:

  • في البداية يعتمد اختيار اللوحة الأم على المعالج الذي اخترته، حيث أنه لكل معالج مقبس (socket) خاص به. مثلاً معالج Intel i7-7820X الذي اخترته يحتاج مقبس من نوع LGA2066. لا يمكن تركيب معالجات غير متوافقة مع نفس مقبس اللوحة الأم. كما أن نوع المعالج يحدد الشريحة الأساسية للّوحة الأم (chipset)، وهي X299 لمعالج Intel i7-7820X.
  • الحجم: تتوفر عدة أحجام، مثل Mini-ITX، Micro-ATX، ATX، أو حتى E-ATX الكبيرة جداً. يؤثر الحجم على عدد المنافذ وفتحات الذاكرة وغيرها من المواصفات. الحجم الشائع هو ATX، وهو مناسب للغالبية.

الأحجام المختلفة للّوحات الأم، المصدر

  • كم عدد المنافذ الداخلية (slots)؟ وما هي أنواعها؟ المنافذ المنتشرة حالياً هي PCIe x16 الطويلة، و PCIe x1 الصغيرة. كروت الشاشة يتم تركيبها على منافذ PCIe x16. ويجب الانتباه جيداً إلى خصائص المنافذ في اللوحة الأم، فبعضها مثلاً في حال تركيب كرتين للشاشة يتم استخدام x16 خط للكرت الأول و x8 خطوط للثاني حتى لو توفر عدد خطوط PCIe كافي للمعالج. منافذ PCIe x1 تستخدم لإضافة خيارات مثل كرت شبكة لاسلكية أو بلوتوث إذا لم يكن متوفر في اللوحة الأم.
  • خيارات الاتصال: في الغالب سيكون متوفر منفذ للشبكات السلكية، ولكن الاتصال اللاسلكي والبلوتوث غير متوفر في جميع الأنواع. إذا كنت تحتاج اتصال لاسلكي، إما تختار لوحة أم تدعمها، أو تقوم بتركيب كرت لتوفير هذه الخاصية.
  • إذا كانت جودة الصوت تهمك، فإن الكثير من أنواع اللوحات الأم توفر شريحة خاصة للصوت بمواصفات مختلفة.
  • عدد فتحات الذاكرة: بعض اللوحات توفر 4 فتحات (أو حتى 2)، وبعضها 8 فتحات لكروت الذاكرة.
  • أنواع المنافذ الخارجية: مثل USB 2، USB 3/USB 3.1 Gen1/USB 3.1 Gen2، USB Type-C، HDMI، منافذ الصوت، …، وغيرها.
  • وهناك الكثير جداً من الخصائص والخيارات الأخرى التي قد تؤثر على خيارك، بعضها قد يكون ضروري لك كدعم رفع تردد المعالج وكرت الذاكرة (يتطلب تبريد خاص) أو منافذ التخزين كمنفذ M.2، وهل هو SATA أو PCIe؟ وكم منفذ تخزين تحتاج لكل نوع؟ وبعض الخصائص كمالي كالشكل وإمكانية إضافة إضاءات قابلة للتحكم.

اللوحة الأم التي اخترتها

شكل اللوحة الأم من الأعلى

المنافذ الخارجية المتاحة في اللوحة الأم

الذاكرة (Memory)

الذاكرة بشكل عام هي أسرع وسيلة لوصول المعالج للبيانات ومعالجتها، لأن الموصلات بينها وبين المعالج مصممة للسرعة الفائقة. القراءة من الذاكرة والكتابة عليها أسرع بشكل كبير من جميع وسائط التخزين، وهذا سبب أهميتها الكبيرة لاستخدامنا هنا في تدريب نماذج تعلم الآلة. اختيار الذاكرة سهل نوعاً ما، تحتاج أن تفكر في ثلاثة أمور:

  • سعة الذاكرة: القاعدة هنا ضع أكبر ما تستطيع :-). في تطبيقات تعلم الآلة والتعلم العميق نحتاج أثناء بناء النموذج أن نحمّل البيانات في الذاكرة لأفضل أداء، وكلما زادت سعة الذاكرة زاد حجم البيانات التي يمكن استيعابها في الذاكرة. إذا لم تكف الذاكرة، نحتاج أن نقرأ البيانات على دفعات (batches) من وسائط التخزين، مما سيبطيء من التدريب بشكل كبير. إذا كانت ميزانيتك محدودة، تستطيع أن تبدأ بحجم معين (مثلاً 16 أو 32 جيجابايت)، ثم تضيف إليها حسب الحاجة، حيث أن تركيب بطاقة الذاكرة سهل جداً. وهناك أمر يجب أن تنتبه له عند اختيار المعالج واللوحة الأم، فبعض المعالجات تقبل ذاكرة إلى 128 جيجابايت بينما البعض لا يقبل إلّا 64 أو 32 جيجابايت. تستطيع معرفة هذا من مواصفات المعالج. وبعض اللوحات الأم تحتوي على 8 فتحات للذاكرة بينما بعضها تحتوي على 4 فقط.
  • نوع الذاكرة: وهي إمّا DDR3 أو DDR4، وهذا يعتمد على اختيارك للمعالج واللوحة الأم، ويمكنك معرفة هذا بقراءة خصائص المعالج واللوحة الأم من الصفحات الخاصة بهما. بشكل عام التوجه الآن من غالبية المصنعين لاستخدام DDR4.
  • سرعة الذاكرة (clock speed): تبدأ سرعات الذاكرة من نوع DDR4 من 2133Mhz، وحقيقة لا يوجد معيار واضح لأفضل سرعة، كما أن هناك بعض الجدل حول فائدة السرعات العالية جداً. بشكل عام كثير يعتقد بأن سرعة بين 2666MHz و 3200MHz كافية، مع العلم أن السعر يزداد بشكل كبير مع زيادة السرعة.

في البداية اشتريت أربع بطاقات ذاكرة، كل بطاقة 16 جيجابايت، بما مجموعه 64 جيجابايت، بسرعة 2666MHz. ثم مع العمل احتجت للزيادة، فزدتها 32 جيجابايت لتصبح 96 جيجابايت.

مجموعة من بطاقتي ذاكرة DDR4 2666MHz، كل واحدة بسعة 16 جيجابايت

التخزين (Storage)

في خوارزميات تعلم الآلة يتم التعامل مع مجموعات بيانات لتطوير نماذج لها. هذه المجموعات قد تصل إلى أحجام كبيرة جداً، لهذا يفضل أن يكون لديك سعة تخزين عالية. عند التفكير في التخزين، هناك ثلاثة أمور مهمة:

  • وسائط التخزين: هناك عدة وسائط للتخزين متوفرة في السوق، أشهرها:
    1. الأقراص الصلبة ((HDD) Hard Drives Disk)، وأسعارها في الغالب في متناول الجميع، كما أن سعاتها أكبر من غيرها. الأقراص الصلبة تتوفر في الغالب بسرعتين 5400 rpm (يعني 5400 دورة في الدقيقة) و 7200 rpm، الأفضل اختيار السرعة الأعلى، وقد يزيد سعرها قليلاً عن السرعة الأقل ولكنها أسرع في القراءة والكتابة.
    2. Solid-State Drive (SSD): تعتمد SSD في التخزين على شرائح فلاش مشابهة في التقنية للشرائح الإلكترونية المستخدمة في التخزين المتنقل (ذاكرة الفلاش). هذه التقنية تعتمد بشكل كلي على الشرائح الإكترونية ولا تحتوي على أي قرص يدور مثل الأقراص الصلبة، لهذا SSD أسرع بكثير من الأقراص الصلبة. هناك بعض العوامل التي يمكنك أن تفكر بها عند التفكير بين الأقراص الصلبة أو SSD، وليس المجال هنا لذكرها كلها، ولكن هناك أمرين. الأول: SSD أغلى بكثير من الأقراص الصلبة، لهذا من الصعب استبدال الأقراص الصلبة تماماً عند الحاجة لمساحات تخزين كبيرة. الثاني: SSD أسرع بكثير، لذا فهي مفيدة عند الحاجة لسرعة تشغيل وقراءة ملفات من على وسائط التخزين. تأتي SSD بمقاسين، وطريقتي توصيل. المقاس الأول هو 2.5 إنش، وغالباً يوصل بنفس طريقة الأقراص الصلبة عن طريق وصلات SATA. المقاس الثاني هو M.2، ويمكن توصيله بتركيبه على مقبس خاص على اللوحة الأم وتكون موصلة إما عن طريق SATA أو عن طريق PCIe (وهو النوع التالي).
    3.  SSD M.2 PCIe NVMe: كما مر سابقاً، فإن وصلات PCIe تتصل مباشرة إلى المعالج، مما يجعلها سريعة جداً. للمقارنة، الحد الأعلى في سرعة التوصيل لوصلات SATA III هو 6 جيجابت/ث، بينما عند استخدام PCIe قد تصل السرعة إلى 32 جيجابت/ث. قد لا تصل سرعة القراءة والكتابة إلى الحد الأعلى لوصلة PCIe، ولكن من المراجعات على الأقل تصل الزيادة في السرعة إلى ضعفين أو ثلاثة أضعاف. لماذا لا يستخدم هذا النوع من التخزين إذاً؟ لأنه غالٍ جداً، أغلى حتى من SSD. لذا عند الحاجة لها قد تشتري شريحة ذات مساحة محدودة. هناك نقطة لا بد الانتباه لها، هل تذكرون أن المعالج له حد أقصى من عدد وصلات PCIe حسب نوعه؟ غالباً هذا النوع من التخزين يحتاج أربع وصلات، فينبغي أخذها في الاعتبار.
  • سعة التخزين: تعتمد سعة التخزين على احتياجك، وكلما استطعت شراء سعة أكبر كان أفضل، لأنك غالباً ستحتاج لها إذا كان عملك على بيانات كبيرة.
  • النسخ الاحتياطي للبيانات: هناك طرق كثيرة لأخذ النسخ الاحتياطية، فيمكنك مثلاً وضع قرص صلب إضافي ينسخ محتويات القرص الرئيسي كل فترة (مثلاً كل يوم). ويمكنك إذا أردت وضع عدة أقراص صلبة 3 أو أكثر، ثم استخدام أحد طرق RAID (موضوعها كبير وليس المجال للتفصيل هنا)، ويمكنك كذلك استخدام قرص صلب خارجي، أو نظام NAS، أو أي طريقة أخرى تضمن استرجاع البيانات في حال حدوث مشكلة أو عطل في وسائط التخزين.

اشتريت SSD ووضعت عليه نظام التشغيل وجميع البرامج التي أعمل عليها، وقرص تخزين عالي السعة لتخزين الملفات ومجموعات البيانات، وأفكر أن أشتري قرص صلب آخر بنفس السعة وأجعله يأخذ نسخة احتياطية آلياً كل فترة (مثلاً كل يوم) من القرص الرئيسي. حالياً أقوم بالنسخ الاحتياطي يدوياً، وفي المنزل عندي جهاز NAS عالي السعة لأخذ نسخ احتياطية من جميع الأجهزة التي لدي ولكن لم أربطه مع هذا الجهاز حتى الآن.

من المشاكل التي واجهتني في أحد المشاريع هي التعامل مع مجموعة كبيرة من الصور (أكثر من 200,000 صورة) التي لا يمكن وضعها كلها في الذاكرة لمعالجتها دفعة واحدة، لهذا كان يجب قرائتها على دفعات من القرص الصلب. هذه الطريقة أثرت كثيراً على سرعة الأداء وصارت بمثابة عنق الزجاجة. حتى بعد أن وضعت البيانات على قرص SSD وقمت بتشغيل البرنامج من هناك كانت السرعة أبطأ بكثير من لو تمت القراءة من الذاكرة مباشرة. لهذا قمت بشراء وسيط تخزين SSD M.2 NVMe، وسأقوم بتهيئته وجعله المكان الذي يتم تشغيل التجارب النشطة عليه (للتو اشتريته ولم أعمل عليه بعد وأقيس التغير في السرعة – قد يكون مقال مستقبلاً إن شاء الله). للعلم فقط، أحد مجموعات البيانات الشيقة التي كنت أود العمل عليها وجدتها تحتوي على أكثر 1,700,000 صورة عالية الجودة (أكثر من 500 جيجابايت)، فتوقفت لأن هذا الجهاز غير مناسب لهذا الحجم الهائل من البيانات ليعمل بسرعة مناسبة. ذكرت ذلك لأبين أنه مهما كانت قوة الجهاز فإن له حدوداً تحتاج بعدها الانتقال إلى جهاز أقوى (أو مجموعة أجهزة Cluster).

القرص الصلب HDD، بحجم 3.5 إنش

تخزين SSD، بحجم 2.5 إنش

تخزين SSD M.2 NVMe، لاحظ الحجم الصغير لـ M.2 مقارنة بحجم SSD

وحدة المعالجة الرسومية (Graphics Processing Unit (GPU))

الوظيفة الأساسية لوحدة المعالجة الرسومية هي معالجة وإنتاج الصور والرسومات، وهي تستخدم بكثرة للألعاب التي تحتوي على رسومات عالية الدقة والجودة. ولكن لماذا هي مفيدة لتعلم الآلة -والتعلم العميق تحديداً-؟ يتم الآن استخدام الـ GPU بشكل رئيسي في تدريب نماذج التعلم العميق، ويرجع سبب كفائتها العالية لعدة أمور:

  • تم تصميم الـ GPU ليعالج بشكل أساسي المصفوفات (Matrices) بشكل أكثر فعالية من المعالجات (CPU). المعالجات العادية مصممة للمعالجة العامة، فهي مناسبة لأي تطبيق، بينما المعالجات الرسومية مصممة خصيصاً لمعالجة المصفوفات (التي تستخدم أساساً للصور والرسومات).
  • عدد الأنوية (Cores) أكبر بكثير من التي في المعالج، فمثلاً في الغالب عدد أنوية المعالج تتراوح بين أربعة إلى 12 أو أكثر في المعالجات المتقدمة، بينما عدد الأنوية في معالجات NVIDIA والتي يطلق عليها CUDA Cores تصل إلى الآلاف. هذه الأنوية الكثيرة متخصصة جداً في مجال محدد وهو معالجة المصفوفات، بينما في المعالج تكون الأنوية عامة وتناسب أي تطبيق. العدد الكبير من الأنوية المتخصصة مكّن الـ GPU من معالجة المصفوفات بشكل متزامن بتوزيعها على الأنوية، مما يزيد من سرعة المعالجة بشكل كبير (إذا كانت تعتمد على المصفوفات).
  • سعة نقل البيانات بين الذاكرة في GPU ووحدات المعالجة (الأنوية)، ما يطلق عليه Memory Bandwidth. يمكن نقل البيانات بسرعة وسعات كبيرة داخل الـ GPU مقارنة بالمعالج تصل إلى عشرات الأضعاف، مما يمكنه من التعامل مع مصفوفات كبيرة بسرعة. ولكن غالباً ذاكرة الـ GPU محدودة وأقل من المعالج، فمثلاً في GPU Tesla الذي يعتبر  الأعلى أداءً ضمن معالجات NVIDIA تصل أعلى ذاكرة له إلى 32 جيجابايت.

خوارزميات التعلم العميق تعتمد بشكل أساسي على ضرب المصفوفات، لهذا ستجد فرق هائل بالسرعة عند استخدام المعالج العادي أو المعالج الرسومي لصالح الأخير.

المواصفات التي قد تهمك عند اختيار وحدة معالجة رسومية (GPU) لغرض التعلم العميق

سبق ذكر المواصفات المهمة ضمناً في الشرح أعلاه، وهي:

  • قوة المعالجة، ويمكن حسابها بشكل عام عن طريق: عدد الأنوية (number of cores) × سرعة المعالجة (clock speed)
  • سعة الذاكرة (RAM size)
  • سعة نقل البيانات للذاكرة (Memory Bandwidth)

هل أشتري الـ GPU المخصص للألعاب أم المخصص لمراكز البيانات؟

بشكل عام، فئات GPU مثل Tesla أقوى بكثير من الناحية العملية وتصمد لظروف عمل قاسية. بالإضافة إلى أنها تصل لمواصفات عالية جداً لا تتوفر في فئات الألعاب. ولكن سعرها غالٍ جداً ولا يمكن للمستخدم العادي غالباً أن يقدر عليه. بالنسبة للفئات الأقل من Tesla و Quadro، إذا كان عدد الأنوية وسعة الذاكرة ونقل البايانات مقارب لفئات الألعاب فالأفضل الاختيار من فئات الألعاب لأنها أرخص بكثير ولا يوجد فرق كبير في الأداء لتطبيقات التعلم العميق (من بعض المراجعات في الانترنت). بعض المعالجات المخصصة للألعاب، مثل Geforce GTX 1080Ti (وهو ما اخترت شرائه)، تفوقت على المعالجات الرسومية الاحترافية.

لماذا معالجات NVIDIA؟

الغالبية يستخدمون معالجات GPU الخاصة بشركة NVIDIA، لأن مكتبتهم البرمجية لـ Cuda Cores تم دعمها بشكل كبير من المطورين والمكتبات البرمجية للتعلم العميق. من الصعب حالياً التعامل مع المعالجات من شركة AMD لعدم توفر مثل هذا الدعم، لهذا اخترت معالج من NVIDIA.

ملاحظة: أعتقد أن الوضع نحو التغير بإذن الله، حيث هناك جهود لدعم وتبني معالجات AMD. وهذا شيء جيد لكسر الاحتكار الحاصل.

ماذا عن الفئات الجديدة من المعالجات الرسومية، 2000 series؟

تم الإعلان قبل أقل من شهر عن سلسلة جديدة من معالجات NVIDIA للألعاب، وأعلى فئة منها هو GeForce RTX 2080 Ti. هذا المعالج مقارنة بالسابق له (GeForce GTX 1080Ti أو Titan) يحتوي على معمارية (Architecture) جديدة يطلق عليها Turing، ومواصفاتها أعلى من ناحية عدد الأنوية والسرعة وسعة نقل البيانات للذاكرة. كما أنها تحتوي على ثلاثة أنواع من الأنوية: Cuda Cores و RT Cores و Tensor Cores. يُعتقد أن أدائه سيكون متفوقاً على الفئة السابقة بفارق كبير. لم يتم إطلاق هذه المعالجات في الأسواق بعد، ولكن إذا تم ذلك فإما تشتريها إذا كان أدائها عالياً (وكان سعرها مناسباً لك)، أو على أقل الأحوال يفترض أن ينزل سعر الـ GPUs القديمة التي لا تزال جيدة.

عدة معالجات رسومية؟

هل أستخدم معالج رسومي واحد أو عدة معالجات؟ وهل هناك فائدة من ذلك؟ الحقيقة لا يمكن الإجابة على هذا السؤال بشكل سريع لأنه يحتاج لبعض التفصيل. ولكن بشكل عام يمكن استخدام عدة معالجات رسومية لغرضين (المعلومات هنا من خبرة Tim Dettmers في هذه الصفحة):

الأول: تدريب عدة نماذج، بتوزيع كل نموذج على GPU مستقل. هنا عدة GPUs ستكون مفيدة لتجربة أكثر خيار بنفس الوقت وتوفير وقت التدريب أكثر من مرة.

الثاني: تدريب نموذج واحد وتوزيع الحساب على عدة GPUs. هنا الوضع قد يكون أكثر تعقيداً مما تتصور ويعتمد على طبيعة المشكلة وشكل الشبكة (Architecture). بعض أشكال الشبكات (مثل Dense) يصعب توزيعها، وحتى إذا استطعت توزيع الحساب ستكون السرعة المضافة أقل من المرجو. بينما بعض أشكال الشبكات يناسبها توزيع تدريبها على عدة GPUs، مثل CNN و RNN.

المعالج الرسومي GeForce GTX 1080 Ti من شركة EVGA

شكل المعالج الرسومي

تبريد المعالج (CPU Cooler)

ترتفع درجة حرارة المعالج إلى مستويات عالية، خصوصاً عند استخدامه بأقصى طاقته. من الأمور المهمة جداً الاهتمام بتبريد المعالج، مما سيعطيك أداء أعلى وعمر أطول له. غالباً يأتي مع المعالج موصل للحرارة (heat sink) ومروحة، ولكن أدائها في التبريد يكون متوسط وصوتها مرتفع نوعاً ما. هناك الكثير من وسائل التبريد المتوفرة التي يمكنك شرائها وتركيبها فوق المعالج، وهي تنقسم إلى نوعين: التبريد عن طريق موصلات الحرارة (heat sink) ومروحة، أو التبريد السائل. غالباً لا تحتاج التبريد السائل إلّا إذا كنت سترفع تردد المعالج (لزيادة سرعته) فوق طاقته الاعتيادية، مما يسبب ارتفاع درجة حرارة المعالج بشكل كبير. ليس لي خبرة في التبريد السائل، لهذا سأتحدث عن التبريد باستخدام موصلات الحرارة.

لا يحتاج اختيار وسيلة التبريد تفكير كبير. لاختيار وسيلة تبريد مناسبة قد تحتاج أن تفكر في عدة عوامل:

  • الحجم، وهل يكفي داخل الصندوق؟
  • حجم موصلات الحرارة (كلما زاد الحجم، زادت إمكانية التبريد)
  • الصوت، هناك بعض المراوح هادئة جداً، إذا كنت الهدوء فقد تود اختيارها
  • التوافق مع مقبس المعالج على اللوحة الأم، حتى تستطيع تركيبها على المعالج

هناك عدة شركات ومنتجات مشهورة، لعل أشهرها هو Hyper 212 EVO. بالنسبة لي جربت سابقاً أحد منتجات التبريد من شركة be quiet!، وأعجبتني جودتها وهدوء المروحة، لهذا فضلت أن أشتري منهم.

Pure Rock من شركة bequiet! لتبريد المعالج

اختيار مزود الطاقة (Power Supply)

مزود الطاقة من الأجزاء الأساسية للجهاز، وبالرغم من أن البعض لا يعيره الاهتمام، إلّا أن اختيار مزود طاقة جيد يضمن لك سلامتك وسلامة الجهاز بإذن الله. هناك بعض الشركات المشهورة تبيع مزودات طاقة جيدة، سعرها أغلى من مزودات الطاقة الرديئة ولكن جودتها أعلى بكثير. يجب أن تختار مزود طاقة مناسب لمكوّنات جهازك، كل مكون في الجهاز يستهلك قدراً من الطاقة (بالواط). يمكنك حساب استهلاك كل مكوّن (المعالج، المعالج الرسومي، الذاكرة، …) عن طريق قراءة مواصفات كل مكون وجمعها، ثم إضافة نسبة بسيطة حتى لا يكون عمل مزود الطاقة دائماً عند حده الأقصى. ويمكنك كذلك استخدام موقع pcpartpicker.com بإنشاء جهاز وإضافة المكونات التي اخترتها، ثم يحسب لك الطاقة المستهلكة آلياً (الموقع مفيد كذلك للتأكد من توافق المكونات مع بعض). النقطة الأخيرة -وترجع لتفضيلك-، هل تود بمزود طاقة بأسلاك قابلة للفصل؟ أم تكون الأسلاك متصلة به؟ الفرق هنا سيكون في ترتيب الأسلاك داخل صندوق الحاسب، حيث أنه غالباً لا تحتاج لاستخدام جميع الأسلاك. يفضل أن تكون الأسلاك قابلة للفصل حتى يكون الصندوق أرتب بكثير.

اخترت مزود طاقة بقدرة 1000 واط، وأسلاك قابلة للفصل

شكل مزود الطاقة من الأمام، هذا الجزء الذي سيظهر خارج الصندوق

شكل مزود الطاقة من الخلف، وتظهر منافذ الأسلاك. يمكن وصل الأسلاك التي تحتاجها فقط حتى لا يزدحم الصندوق بالأسلاك

اختيار الصندوق (Case)

صندوق الحاسب هو الذي سيحتوي على كل المكونات التي تحدثنا عنها هنا. هناك عدة عوامل لاختيار صندوق مناسب، بعضها يخضع للمكونات التي اخترتها، وبعضها اختياري حسب تفضيلك وذوقك.

  • الحجم: هناك عدة أحجام لصندوق الحاسب، وحيث أننا اخترنا اللوحة الأم بمقاس ATX فيكون لدينا خيارين، إما mid-tower أو full tower. مقاس mid-tower هو الحجم المعتاد في المكاتب، بإمكانه استعياب المكونات الأساسية، ولكن قد يصعب إضافة الكثير من المكونات الإضافية. ومقاس full tower قد يراه البعض كبيراً، ولكن ميزته أنه واسع، ويمكنك إضافة العديد من المكونات (عدة أقراص صلبة و/أو GPU). من المهم عند اختيار الحجم التأكد من مناسبته للمكونات الداخلية، فمثلاً بعض الـ GPU كبيرة وطويلة، وقد لا يكفي صندوق mid-tower لاستعيابها.

الأحجام المختلفة لصندوق الحاسب، المصدر

  • التبريد: بعض الصناديق تأتي مع مراوح للتبريد، وبعضها فقط يوفر الفتحات ويجب عليك أن تشتري المراوح. التبريد يتضمن مراوح إدخال الهواء للصندوق، ومروحة إخراج الهواء من الخلف. بالإضافة إلى ذلك، بعض الصناديق توفر مكان لتركيب مراوح التبريد السائل إذا كنت تود استخدامه مع المعالج.
  • مرشحات الهواء: وتركب على المراوح من الخارج للحد من الغبار الداخل للجهاز. بعض الصناديق توفر مرشحات للهواء، وبعضها لا توفرها.
  • إدارة الأسلاك والتركيب بدون أدوات. بعض الصناديق توفر لك فتحات في أماكن محددة تستطيع من خلالها إدارة الأسلاك وربطها وتنظيمها حتى يكون الشكل النهائي منظماً ومريحاً في التعامل (وأفضل لمرور الهواء للتبريد). كما أن بعض الصناديق تستطيع تركيب بعض المكونات عليها بدون مفكات، بتوفير براغي قابلة للفك باليد، وأدراج للأقراص الصلبة يمكن تثبيت الأقراص عليها وتركيبها بدون براغي.
  • عدد الأماكن التي يمكن تثبيت محركات الأقراص الضوئية والأقراص الصلبة ووسائط التخزين SSD عليها، ومقاساتها 5.25 إنش، 3.5 إنش، و2.5 إنش.
  • منافذ الواجهة الأمامية: البعض يهمّه المنافذ الأمامية (قد تكون أحياناً في الأعلى)، وهي منافذ الصوت والـ USB. وأنواع منافذ الـ USB، كم USB 2؟ وكم USB 3؟ وهل يوجد منفذ USB type-C؟
  • الشكل الجمالي: يبقى شكل الصندوق الخارجي عاملاً مهماً يخضع للذوق الشخصي. بعض الصناديق لها واجهة جانبية زجاجية أو بلاستيكية قد تكون قابلة للفتح، تستطيع من خلالها رؤية المكونات الداخلية. ويمكنك في بعض الصناديق إضافة إضاءات ملونة داخلية أو خارجية قابلة للتحكم.
  • عزل الصوت: بعض الصناديق مصممة لامتصاص الأصوات لتكون أهدأ  من غيرها. إذا كان الصوت عاملاً هاماً لك، قد تحتاج ان تفكر بهذا الأمر.

قد لا تتوفر جميع العناصر التي تريدها في صندوق واحد، فحينها تحتاج أن تفاضل وتختار الأولويات المهمة لديك أولاً. الصندوق الذي اخترته هو corsair carbide air 540، ومقاس الصندوق بين mid-tower و full tower، حيث أنه عريض وواسع من الداخل. وبما أن الجهاز عريض فتم قسمه إلى قسمين، بحيث يكون مزود الطاقة وبعض المكونات في قسم غير القسم الذي يحتوي اللوحة الأم، مما يساعد في ترتيب الأسلاك.

الصندوق corsair carbide air 540

صورة من الداخل للقسم الذي يتم تثبيت اللوحة الأم عليه

مكونات أخرى

ما تم شرحه هي المكونات الأساسية التي ينبغي أن تفكر فيها بشكل جدّي. يتبقى بعض المكونات الأخرى مثل مشغل الأقراص الضوئية، وحقيقة لم أجد فروقاً كبيرة بين الأنواع المتوفرة فاخترت أرخص نوع، لا سيما أني لم أعد أستخدمه كثيراً.

وكذلك من الأمور التي تود التفكير بها نظام التشغيل، هل هو ويندوز أو لينكس. نظام ويندوز تحتاج أن تشتريه، بينما تستطيع تنزيل نظام لنكس مجاناً. أنصح بشراء نظام ويندوز من محلات الحاسب، حيث تتوفر لديهم نسخ أصلية أرخص بكثير من التي تباع للمستخدمين العاديين (في العلب الكبيرة).

مشغل الأقراص الضوئية

تجميع الجهاز

بعد أن اشتريت مكونات الجهاز، عليك أن تقرر هل تقوم بتجميعه بنفسك أو عن طريق محل حاسب. الخيار راجع لك ولمقدار حبك للمغامرة والتجربة، البعض يخاف أن يتسبب بإتلاف أحد المكونات الغالية بالخطأ ويفضل أن يتم تجميعه من متخصص (ولا بأس في هذا)، والبعض يحب التجربة ويستمتع بها. بالنسبة لي ليست هذه أول تجربة، وكانت أسرع بكثير من التجارب السابقة لأني تعلمت منها. التجربة الأولى كانت صعبة وواجهتني بعض المشاكل ولكن حليتها وتعلمت أمور كثيرة. يجب أن تكون لديك خبرة سابقة على الأقل في التعامل مع الـ BIOS وتثبيت أنظمة التشغيل. يمكنك تعلم هذه الأمور بسهولة، وخيارات الـ BIOS الخاص باللوحة الأم في الغالب تكون مشروحة بشكل مفصل في دليل اللوحة الأم.

في حال أردت تجميع الجهاز بنفسك ستجد العديد من الشروحات في يوتيوب عن كيفية عمل ذلك، كما أن الكتيب الذي يأتي مع اللوحة الأم غالباً فيه شرح عن كيفية تركيب كل مكوّن، وهو مفيد جداً. لا يمكن شرح كيفية التركيب هنا لأنها تعتمد على عوامل كثيرة (مثل الصندوق، اللوحة الأم، …)، ويمكنك الرجوع في ذلك كما ذكرت ليوتيوب ودليل اللوحة الأم. سأريكم من خلال الصور التالية كيف قمت بتركيب القطع المختلفة من الجهاز.

هنا تم تثبيت اللوحة الأم على صندوق الحاسب

هذا هو المقبس الذي يثبت عليه المعالج

المعالج بعد تثبيته على اللوحة الأم

من الجهة الأخرى من الصندوق، تم تركيب مزود الطاقة ومحرك الأقراص الضوئية، وتمرير الأسلاك إلى الجهة الثانية لتوصيلها بالمكونات الأخرى

هنا تم تثبيت موصل الحرارة والمروحة لتبريد المعالج، وتثبيت محرك الأقراص HDD و SDD (في الأسفل). بالإضافة إلى تثبيت أربع بطاقات ذاكرة (الفتحات التي على يمين ويسار مروحة المعالج). كما تم توصيل أسلاك الطاقة والبيانات

بعد تثبيت المعالج الرسومي GPU

الشكل النهائي للجهاز

الجهاز بعد تشغيله

هل أبني جهازي أم أشتري جاهز؟

القرار راجع لك بكل تأكيد، ولكن حتى إذا أردت شراء حاسب جاهز تحتاج أن تفهم مواصفاته. لذا سيكون هذا الموضوع مفيداً لك في الحالتين إن شاء الله. طبعاً الفرق غالباً أن خيارات التخصيص والزيادة المستقبلية في الجاهز أقل من التجميع، فالخيارات المتاحة لك محددة. كما أنك إذا أردت إضافة مكونات مستقبلاً (مثل GPU إضافي، أو قرص صلب) قد لا يكون لها مكان في الصندوق. في الغالب أسعار الحواسيب الجاهزة أغلى من المجمّعة.

بالنسبة للمستخدم العادي، ستجد بعض أجهزة الألعاب القوية جداً مناسبة لغرضك. وتوجد أيضاً الأجهزة الموجهة للمستخدمين الاحترافيين، كالتصميم ثلاثي الأبعاد، من عدة شركات معروفة. كما أنه توجد أجهزة مخصصة للتعلّم العميق من بعض الشركات، مثلاً شركة NVIDIA توفر أجهزة DGX Station (يحتوي على 4 GPU) و DGX-1 (يحتوي على 8 GPU) و DGX-2 (يحتوي على 16 GPU). ولكنها غير موجهة للمستخدم العادي، وحيث أنها تستخدم معالجات تسلا V100 (أعلى فئات الـ GPU لشركة NVIDIA) فهي غالية جداً. من المفترض أن هناك بعض الشركات التي توفر لك أجهزة للتعلم العميق، ولكن ليس لي خبرة مع أيّها.

 

الهدف الأساسي من هذا الموضوع هو أن تخرج بتصور عن كيفية بناء جهاز مناسب لاستخدامه لتدريب خوارزميات تعلم الآلة (وبالذات التعلّم العميق)، وأن تتعرف على المكونات المختلفة ووظيفتها وأهمية كل منها وكيفية اختيار المناسب لك. آمل أن تكون استفدت من هذ الموضوع، ويسرني إضافاتكم ومشاركاتكم في التعليقات لإثراء النقاش. ولا تنس مشاركتنا على تويتر بصورة من جهازك إذا انتهيت منه أو اشتريته :-).

الوسوم
اظهر المزيد

فارس القنيعير

أستاذ بحث مساعد. مختص بتعلم الآلة ورؤية الحاسب، ومهتم بتحليل ومعالجة البيانات بشكل عام.

مقالات ذات صلة

10 آراء على “كيف تبني حاسب لتعلم الآلة؟”

  1. اصلحك الله شيخ فارس زهدتني في لابتوبي الجديد
    (i7-8750, NVIDA GTX 1060 Ti, 16 gb)
    استفدت جدا من المقال وعرفت معلومات جديده ما مرت علي (مثل استخدام ال GPU في تحليل الصور ومثل الحد الاعلى لكمية البيانات التي يستطيع المعالج معالجتها في نفس الوقت 64 gb او 128 gb) ومعلومات اخرى

    شكرا لك على مشاركتك التجربة المقال ممتع وقراته بالكامل

  2. رائع ماشاءالله تبارك الله ، مقال من العيار الثقيل، سؤالي عن تدريب البيانات ، ذكرت انك وضعت الصور علئ القرص الصلب (اكثر من ٢٠٠ الف صوره) ولاحظت ان الجهاز اصبح بطيء اكثر من اختبار الصور وتدريبها علئ الذاكره ..
    ممكن تشرح بتفاصيل كيف تضع الصور علئ الذاكره او تقرا من الذاكره ،
    السؤال الثاني هل تستخدم بايثون او weka ? في التدريب العميق.
    اتمنئ اتمنئ مثل ماوضعت شرح تفصيلي ممتاز لشراء الجهاز تعطينا شرح بنفس الثقل عن طريقتك في تدريب الصور(سوبر فايز وان سوبر فايز) وشاكره لك جهدك وبارك الله فيك.

    1. أستخدم بايثون بشكل أساسي، وبعض مكتباته بالإضافة إلى OpenCV لمعالجة الصور.
      جميع الملفّات تخزن على القرص الصلب أو SSD. عند قراءة صورة (مثلاً باستخدام دالّة imread() في OpenCV) يتم تخزينها في متغير على شكل مصفوفة، هذه المتغير مكانه في الذاكرة وسرعة قراءته وتعديله أسرع بكثير مما لو كان على وسائل التخزين الأخرى. إذا كانت مساحة الذاكرة كافية يمكن قراءة جميع الصور ووضعها في الذاكرة، ولكن غالباً بسبب محدودية حجم الذاكرة لا نستطيع. فحينها يتم قراءة الصور على دفعات (مثلاً كل 100 أو 1000 صورة)، وبعد الانتهاء منها يتم مسحها (أو الكتابة عليها) وقراءة الدفعة التي تليها. وحيث أننا غالباً نحتاج لقراءة نفس الصورة أكثر من مرة ستكون القراءة المتكررة من وسائل التخزين أحد عوامل البطء.
      الكلام هذا ينطبق على جميع أشكال البيانات، وليس الصور فقط، مثل الأصوات والنصوص والبيانات الرقمية الضخمة.

      بدأت بالفعل في شرح بعض خوارزميات تعلّم الآلة، وللأسف لضيق الوقت تأخرت عن إضافة المزيد. سأحاول بقدر الاستطاعة بإذن الله.

  3. مقال مميز.. جزاك الله خير

    ذكرت في المقال انك لن تناقش الاسعار لأنها متغيرة.. هذا مفهوم.. لكن، هل بالإمكان أن تشير لنطاق السعر حالياً؟ هل نتحدث عن تكلفة إجمالية تساوي ألف دولار، ألفين، خمسة الاف؟

    شكراً جزيلاً

    1. في الغالب أسعار مثل هذه الأجهزة مرتفعة. قد تبدأ من 2000-2500$ للمواصفات المتوسطة، بحدود 3000$ يمكنك الحصول على مواصفات جيدة، وكلما زادت المواصفات زاد السعر. لا يلزم أن يحصل الشخص على أفضل المواصفات في البداية، خاصة إذا كان مبتديء في المجال، أو لا يعمل فيه بشكل كامل.

  4. مقال رائع ومفيد، شكرا دكتور.
    بخصوص سرعة نقل البيانات والوصول للبيانات، تقنية NVMe تعتبر ثورة في هذا المجال. سيكون بطء الأداء شئ من الماضي!!
    لو ركزت على أن تكون جميع مكونات الجهاز تدعم هذه التقنية لكان أفضل. جدا مهمة ونقلة نوعية.
    تحياتي لك،،،

    1. حياك الله محمد. مشكلة هذه التقنية حالياً سعرها المرتفع، فيصعب الاستغناء عن الأقراص الصلبة وSSD تماماً الآن. ولكن نأمل أن يتغير ذلك مع الوقت وترخص الأسعار، وفي الغالب ستتغير التقنية وتأتي أفضل منها.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

شاهد أيضاً

إغلاق
إغلاق