التخزين لمجموعات الذكاء الاصطناعي: NFS وBeeGFS وLustre ومسألة تخزين الكائنات

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

هذا هو جانب التخزين من سلسلة K. إنها نظرة للمشتري والمهندس المعماري، وليست دليلاً تفصيلياً لمسؤول النظام - الهدف هو اتخاذ القرار بين NFS وBeeGFS وLustre ومخازن الكائنات بوعي وصدق بشأن أي منها يحتاجه معظم عملاء Kentino بالفعل.

لماذا تُعدّ وحدات التخزين المشتركة عنق الزجاجة الصامت؟

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

  1. تقرأ كل عقدة نفس مجموعة البيانات. تكون البايتات متطابقة على كل عامل ويجب أن تكون مرئية من كل عقدة.
  2. كل عقدة تكتب نقاط تفتيش، ويجب أن يبقى الاتحاد قائماً. في تجزئة FSDP أو DeepSpeed، يكتب كل رتبة شريحة خاصة بها؛ أما في DDP، فتكتب الرتب بشكل متكرر. في كلتا الحالتين، يشهد نظام الملفات تدفقًا كبيرًا من عمليات الكتابة كل بضع دقائق إلى بضع ساعات.

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

إضافة إلى ذلك، تقوم مجموعات بيانات التعلم الآلي الحديثة بشيء ثالث: عواصف البيانات الوصفيةمن منظور نظام الملفات، تمثل مجموعة بيانات تضم 50 مليون صورة JPEG بحجم 4-12 كيلوبايت، 50 مليون دورة فتح/استعلام/قراءة/إغلاق. يتعطل خادم البيانات الوصفية أولاً، وليس مسار البيانات. لهذا السبب، فإن عبارة "لدينا نطاق ترددي كافٍ" ليست إجابة كافية.

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

NFS هو الخيار الافتراضي، ويدوم لفترة أطول مما تتخيل.

يُعدّ نظام ملفات الشبكة (NFSv3 أو v4) الخيار الأسهل. فهو مُضمّن في جميع توزيعات لينكس، ويفهمه جميع مُجدوِل المهام، و"عقدة التخزين" ليست سوى جهاز لينكس مزود بمساحة تخزين كبيرة. /etc/exports خط، وبطاقة شبكة سريعة.

ما يوفره لك خادم NFS المصمم بشكل معقول:

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

ما تتخلى عنه:

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

إن السمعة السيئة التي اكتسبها نظام ملفات الشبكة (NFS) في أوساط الحوسبة عالية الأداء (HPC) تعود في الغالب إلى محدودية الاتصال الأحادي القديمة ومشاكل البيانات الوصفية في الملفات الصغيرة. أما بالنسبة لتدريب مجموعات البيانات التي تتراوح أحجامها بين 100 جيجابايت و1-2 تيرابايت على 4-8 وحدات معالجة رسومية (GPU)، فإن خادم NFS مُصمم بشكل صحيح يُعدّ خيارًا ممتازًا. وقد رأينا عملاءً يُدرّبون نماذج Qwen2.5-VL المُحسّنة على مجموعات بيانات مدعومة بنظام NFS دون أي مشاكل.

تبدأ لعبة NFS بالتسبب في المشاكل عندما:

  • تتجاوز مجموعات البيانات حوالي 2 تيرابايت، وتتسبب عمليات إعادة التوزيع في حدوث فوضى في ذاكرة التخزين المؤقت على الخادم.
  • أكثر من 8-12 عقدة حسابية تصل إلى نفس نقطة التحميل تحت الضغط.
  • تهيمن عشرات الملايين من الملفات الصغيرة على عبء العمل.
  • تتجاوز أحجام نقاط التفتيش لكل رتبة 50-100 جيجابايت عند كتابتها في وقت واحد.

تحت جميع العتبات الأربع، فإن نظام NFS هو الحل الصحيح على الأرجح، ونظام الملفات المتوازي هو هندسة زائدة عن الحاجة.

BeeGFS - الحل الوسط العملي

يُعد BeeGFS نظام الملفات المتوازي الذي يستخدمه الناس فعليًا عندما لا يكون NFS كافيًا. فهو يقسم البيانات عبر عدة أنظمة ملفات. هدف التخزين (أقراص على خوادم متعددة) و أهداف البيانات الوصفية (خوادم NVMe منفصلة). يرى العملاء مساحة اسم واحدة؛ ويقرأون ويكتبون البيانات على مستوى الشريط عبر أهداف التخزين بالتوازي.

لماذا يظهر في مجموعات متوسطة الحجم؟

  • يستغرق الإعداد أيامًا، وليس أسابيع. يستطيع مهندس لينكس كفء تثبيت نظام تخزين ثنائي العقدة وخادم بيانات رئيسي واحد في غضون ساعات قليلة. أما نظام Lustre فلا يُقارن به.
  • يتناسب عرض النطاق الترددي الإجمالي خطيًا مع أهداف التخزين. توفر ثلاث عقد على شبكة 100 جيجابت إيثرنت ما يقارب ثلاثة أضعاف معدل نقل البيانات للقراءة مقارنةً بعقدة واحدة.
  • RDMA الأصلي على InfiniBand أو RoCE - يتجنب الحمل الزائد لبروتوكول TCP/IP.
  • مفتوح المصدر، بدون فخ ترخيص لكل تيرابايت. الدعم التجاري من ThinkParQ اختياري.

ما هو أقل جودة فيه بصراحة:

  • البيانات الوصفية لأحمال العمل التي تحتوي على عدد كبير جدًا من الملفات الصغيرة. يُصبح نظام إدارة البيانات الوصفية (MDS) الواحد هو العائق الرئيسي في ظل هيمنة الملفات التي يقل حجمها عن 4 كيلوبايت. يمكنك إضافة وجهات بيانات وصفية، لكن البنية ليست بنفس كفاءة نظام إدارة البيانات الوصفية (DNE) في Lustre.
  • لا يوجد نظام تصنيف مدمج. تحكم بنفسك في درجة الحرارة (ساخن/بارد).
  • نظام HA مُضاف بشكل منفصل، وليس نظامًا أصليًا. خاصية النسخ المتطابق تعمل ولكنها ليست شفافة مثل خاصية تجاوز الفشل في Lustre.

نقطة حلوة: 4-32 عقدة تدريب، 10-100 تيرابايت من مجموعة البيانات، ملفات في نطاق 1 ميجابايت إلى 1 جيجابايت. حيث تهبط معظم سفن كينتينو متعددة العقد.

نشر أساسي لنظام BeeGFS لمجموعة من 4 عقد من فئة Kentino:

مكون المواصفات
عقدة التخزين 1 2U، EPYC 24 نواة، 256 جيجابايت من ذاكرة الوصول العشوائي، 12 × 7.68 تيرابايت NVMe، 2 × 100 جيجابايت
عقدة التخزين 2 مطابق
عقدة البيانات الوصفية وحدة واحدة، معالج EPYC ذو 16 نواة، ذاكرة وصول عشوائي 192 جيجابايت، قرصا تخزين NVMe سعة 3.84 تيرابايت (RAID-1)، منفذا إيثرنت بسرعة 100 جيجابت
الانرنيت مفتاح أحادي أو مفتاح أحادي بسرعة 100 جيجابت إيثرنت (يدعم RoCE)
العملاء 4 عقد تدريب K-AI، كل منها مزود بمنفذ 100 جيجابت إيثرنت

يبلغ معدل قراءة البيانات الإجمالي المستمر إلى أجهزة التدريب الأربعة عادةً ما بين 30 و60 جيجابايت/ثانية، وهو ما يكفي لتشغيل 32 وحدة معالجة رسومية في معظم عمليات تدريب الرؤية الحاسوبية ونماذج التعلم الآلي. يتوقف هذا التوسع عند امتلاء خادم البيانات الوصفية، لذا يُنصح بإضافة وجهة بيانات وصفية ثانية أو التفكير في استخدام Lustre.

اللمعان - معيار ذهبي، تعقيد حقيقي

يدير نظام Lustre طبقة التخزين في جميع الحواسيب العملاقة تقريبًا من بين أفضل 500 حاسوب عملاق التي تتطلب معيار POSIX، ويصل حجمه إلى مئات البيتابايتات ومعدل نقل بيانات إجمالي متعدد التيرابايتات في الثانية. يتألف النظام من ثلاثة أدوار: إدارة البيانات الوصفية (MGS/MDS)، وخوادم تخزين الكائنات (OSS) التي تحتوي على ملفات OST، والعملاء. يتواصل العملاء مع MDS لإدارة مساحات الأسماء، ثم يتواصلون مباشرةً مع خادم OSS الذي يحتوي على البيانات - حيث يتجاوز مسار البيانات خادم البيانات الوصفية تمامًا. هذا الفصل هو سر قابلية Lustre للتوسع، كما أن تقنية DNE (مساحة الأسماء الموزعة) تسمح بتوسيع نطاق البيانات الوصفية أفقيًا أيضًا.

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

الحد الذي يكون فيه استخدام Lustre منطقيًا هو تقريبًا 16-32+ عقدة تدريب أو مجموعات بيانات من فئة PB. بعد ذلك، يُشبع BeeGFS الشبكة قبل أن تظهر مزايا Lustre المعمارية. لا تصل تشكيلة Kentino في الغالب إلى هذا الحد - نقوم بإنشاء مجموعة Lustre إذا طُلب منا ذلك، لكننا نخبرك أولاً أن BeeGFS بالإضافة إلى MDS قوي يُحقق لك 80% من المطلوب مع 20% فقط من الجهد التشغيلي.

تخزين الكائنات - MinIO و Ceph لبحيرات بيانات التعلم الآلي

تُعدّ أنظمة الملفات المتوازية المذكورة أعلاه مناسبة عندما يتوقع الإطار وجود ملفات. لكن نسبة متزايدة من مسارات التعلم الآلي الحديثة لا تتوقع ذلك، حيث تُخزّن مجموعات البيانات ككائنات S3، ويقوم مُحمّل البيانات بسحبها عبر HTTP، ويكون نظام الملفات المحلي بمثابة مساحة تخزين مؤقتة.

MiniIO هو مخزن كائنات أحادي الغرض ومتوافق مع S3. يعمل الوضع الموزع على 4-32 عقدة أو أكثر مع ترميز المحو. مفتوح المصدر، وأبسط تشغيليًا من أي نظام ملفات متوازٍ، ومحملات بيانات حديثة (PyTorch مع fsspec/s3fs(WebDataset، NVIDIA DALI) اقرأها مباشرة.

سيف يتميز Ceph بنطاق أوسع - فهو يدعم وحدات التخزين الكتلية (RBD) والملفات (CephFS) والكائنات (RGW) على نفس طبقة RADOS. يتفوق Ceph عندما ترغب في نظام تخزين واحد لأحمال عمل متعددة (أجهزة افتراضية، مشاركات ملفات، كائنات التعلم الآلي). لكنه يفتقر إلى سهولة التشغيل - Ceph نظام يتطلب التزامًا، مع نظام مراقبة وضبط ودعم فني خاص به.

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

الهندسة المعمارية التي تنجح في الواقع العملي: تخزين الكائنات كبحيرة بيانات متينة وكبيرة ورخيصة؛ نظام ملفات متوازٍ أو نظام ملفات NFS كمجموعة عمل سريعة مُجهزة للتشغيل الحالي. تُخزَّن مجموعة البيانات في MinIO. تقوم مهمة ما بتجهيز الأجزاء ذات الصلة على BeeGFS أو NVMe المحلي المؤقت عند بدء التشغيل. تُعاد نقاط التحقق النهائية إلى MinIO لأغراض الأرشفة.

WekaIO و VAST - مستوى المؤسسات (باختصار)

يُعدّ كلٌّ من WekaIO وVAST Data حلاً مُصمّماً خصيصاً للمؤسسات، وبأسعار مُناسبة: بيانات وصفية صغيرة الحجم للغاية، ونطاق ترددي إجمالي عالٍ جداً، ودعم أصلي لخدمتي S3 وPOSIX، وتصنيف مُدمج، ومسارات مباشرة إلى وحدة معالجة الرسومات (GPU). يُناسب هذان الحلان تماماً مجموعات الخوادم التي تضم أكثر من 100 وحدة معالجة رسومات، حيث يجب أن تتناسب سعة التخزين مع تكلفة وحدات معالجة الرسومات. لكنهما ليسا الخيار الأمثل لخادم يحتوي على 4 أو 8 وحدات معالجة رسومات، أو حتى مجموعة من أربع وحدات من هذا النوع، لأن تكلفة التخزين ستُهيمن على التكلفة الإجمالية. ذُكر هذان الحلان هنا من باب المصداقية فيما يخصّ الفئة العليا، وليس كتوصية للمشتري الذي كُتبت هذه السلسلة من أجله.

أنماط الوصول إلى مجموعات البيانات وأهميتها

يهيمن نمطان على تدريب التعلم الآلي. النمط أ - شظايا كبيرة: مجموعات البيانات المعبأة مسبقًا في ملفات مضغوطة من نوع WebDataset tarballs أو parquet أو LMDB، بحجم يتراوح بين 100 ميجابايت و10 جيجابايت لكل جزء، تُقرأ بالتسلسل وتُخلط داخلها. كل نظام تخزين يجيد هذا. النمط ب - العديد من الملفات الصغيرة: ملايين الصور بصيغ JPEG/PNG/JSON، صورة واحدة لكل عينة، تُرهق مسار البيانات الوصفية. هذا يُضعف نظام NFS، ويُؤثر سلبًا على BeeGFS عند التعامل مع كميات كبيرة من البيانات، ولهذا السبب وُجدت برامج Weka وVAST.

إن القرار الأكثر تأثيراً في تخزين التدريب هو نقل النمط B إلى النمط A. إذا كانت مجموعة بياناتك عبارة عن ملفات صغيرة، فأعد تجميعها في أجزاء قبل التدريب. التكلفة هي عملية معالجة مسبقة واحدة؛ أما الفائدة فهي أن أي نظام تخزين يصبح مناسبًا. لقد لاحظنا تسارعًا في أداء خطوط المعالجة بمقدار 3-5 أضعاف دون أي تغيير في أجهزة التخزين، وذلك فقط عن طريق إعادة التجميع.

إذا لم تتمكن من إعادة تجميع البيانات - نظرًا لتغير مجموعة البيانات باستمرار، ولأن الإطار يتطلب ملفات لكل عينة - فحدد حجم التخزين بناءً على عمليات الإدخال/الإخراج للبيانات الوصفية، وليس عرض النطاق الترددي. هذا يدفعك نحو استخدام BeeGFS مع أهداف MDS متعددة، أو Weka/VAST، أو Lustre مع DNE.

استراتيجية نقاط التفتيش: اكتب بسرعة، ثم اكتب لاحقًا، ثم اكتب أقل.

تُعدّ عمليات الكتابة عند نقاط التفتيش أسوأ الحالات: حيث تُكتب جميع الرتب في وقت واحد، وتكون عمليات الكتابة كبيرة، وتُشكّل كتل تدريب حتى تصبح متينة. قد يؤدي استخدام نقطة تفتيش متزامنة بسيطة على نموذج يحتوي على 100 مليار مُعامل إلى توقف التدريب لعشرات الدقائق.

أفضل الممارسات الحالية هي اتباع نهج من ثلاث مراحل، وهو نهج أصلي في PyTorch torch.distributed.checkpoint (DCP)، وNVIDIA NeMo، ومعظم الأطر الحديثة:

  1. كل رتبة تكتب شظيتها إلى ذاكرة التخزين المؤقتة المحلية NVMe. يُمثل إجمالي عرض النطاق الترددي للكتابة في المجموعة مجموع معدلات NVMe لكل عقدة (من 5 إلى 50 جيجابايت/ثانية لكل منها). يتم إلغاء حظر التدريب في غضون ثوانٍ.
  2. تقوم عملية خلفية غير متزامنة بنسخ البيانات إلى وحدة تخزين مشتركة. لقد استؤنف التدريب الآن.
  3. يتم حذف نقاط التحقق القديمة أو نقلها إلى وحدة تخزين الكائنات وفقًا لجدول زمني. احتفظ بآخر 2-3 ملفات على وحدة تخزين سريعة، والباقي على MinIO/Ceph.

المعنى الضمني: لا تحتاج وحدة التخزين المشتركة إلى استيعاب كل نقطة تحقق بأقصى سرعة. يجب أن تتم عملية النسخ غير المتزامن بسلاسة ودون تأخير. بالنسبة لنموذج بحجم 70 بايت يتم فيه إنشاء نقطة تحقق كل 30 دقيقة، فإن معدل كتابة مستمر منخفض (أقل من 10 جيجابايت/ثانية) يكفي - وهو ما يمكن تحقيقه بسهولة باستخدام خادم BeeGFS كفء أو خادم NFS جيد.

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

سؤال وصلة الإرسال العنقودية

هل تتشارك حركة مرور التخزين مع حركة مرور التدريب، أم تحصل على حركة مرور منفصلة؟

قماش مشترك
يدعم منفذ إيثرنت بسرعة 100/200 جيجابت أو منفذ إنترنت كلاً من تقليل البيانات وتخزينها. وهو أرخص وأبسط. لكن قد يؤدي انقطاع الاتصال المفاجئ إلى تداخل مع بروتوكول NCCL وتوقف التدريب.
قماش مقسم
بطاقتا شبكة لكل عقدة - واحدة لبنية الحوسبة (IB)، والأخرى لبنية التخزين (إيثرنت). نطاقات ازدحام مستقلة. ضعف معدات الشبكة تقريبًا.

يُعد استخدام النسيج المشترك مناسبًا للمجموعات المكونة من 4 إلى 8 عقد مع نقاط التحقق غير المتزامنة؛ أما النسيج المنفصل فيُبرر استخدامه مع أكثر من 8 عقد أو عمليات الإدخال/الإخراج المتزامنة الثقيلة.

بالنسبة لمجموعات كينتينو التي تتراوح بين 4 و8 عقد، يُعد استخدام بنية مشتركة مناسبًا عند استخدام نقاط التحقق غير المتزامنة، وعندما يكون عبء العمل التخزيني في الغالب عبارة عن عمليات قراءة - حيث تتعايش عمليات القراءة المستمرة مع عمليات NCCL الجماعية دون أي ضرر يُذكر. أما استخدام بنية منفصلة فهو مُبرر لتدريب نماذج التعلم الآلي واسعة النطاق باستخدام بروتوكول FSDP بدرجة TP/PP عالية، أو عند وجود حركة مرور تخزين متزامنة كثيفة، أو عندما تسمح الميزانية بذلك. الخيار العملي الافتراضي: شبكة 100 جيجابت إيثرنت مشتركة تصل إلى 8 عقد مع شبكة VLAN للتخزين كعزل مرن.

توصيات صادقة حسب النطاق

حجم بيانات طبقة التخزين ملاحظة
1 عقدة اي NVMe محلي تجنب استخدام التخزين المشترك تمامًا.
2-3 عقدة تدريب < 1 تيرابايت NFS على عقدة تخزين قوية nconnectذاكرة وصول عشوائي كبيرة لتخزين الصفحات مؤقتًا.
4-8 عقدة تدريب 1-10 تيرابايت NFS، أو أول عملية نشر لـ BeeGFS BeeGFS إذا كانت مجموعة البيانات تحتوي على ملفات صغيرة كثيرة.
4-16 عقدة تدريب 10-100 تيرابايت نظام ملفات BeeGFS، 2-3 أهداف تخزين، MDS مخصص نقطة مثالية. أضف MinIO للأرشفة الباردة.
16-32+ عقدة تدريب 100 تيرابايت - 1 بي بي تم الضغط بقوة من قبل BeeGFS، أو Lustre نقطة حاسمة بالنسبة لشركة Lustre.
أكثر من 32 عقدة، بمقياس بيتابايت، تعمل على مدار الساعة طوال أيام الأسبوع PB+ Lustre، أو Weka/VAST إذا سمحت الميزانية تجاوزت عملية بناء كينتينو النموذجية.
بحيرة بيانات ضخمة، تدريب دوري بي بي+ بارد MinIO/Ceph، مرحلة إلى مستوى سريع لكل مهمة "كمية كبيرة من البيانات، وتدريب بين الحين والآخر."

معظم عملاء كينتينو يختارون الصفين الثاني والثالث. نقوم ببناء باقي الوحدات عند الطلب، ولكننا سنخبرك عندما تتجاوز المواصفات المطلوبة.

ما الذي يتعطل؟

أنماط الفشل التي شهدناها، مرتبة حسب مدى تكرار حدوثها:

  • نقص البيانات الوصفية تحت ضغط الملفات الصغيرة. الأعراض: وحدات معالجة الرسومات تعمل بنسبة 30-50%، الشبكة في وضع الخمول، وحدة المعالجة المركزية للتخزين في وضع الخمول، كل open() بطيء. الحل: إعادة تجميع البيانات إلى أجزاء، أو تغيير حجم أهداف MDS.
  • نقاط التفتيش المتزامنة تعيق التدريب. الحل: نقاط التفتيش المجزأة غير المتزامنة (PyTorch DCP أو NeMo).
  • قرص واحد بطيء يعيق عمل المجموعة. لا يتعطل محرك الأقراص ذو الحالة الصلبة (SSD) بشكل كامل، بل يصبح بطيئًا فقط. الحل: مراقبة زمن الاستجابة لكل جهاز، وتفعيل التنبيه عند تجاوزه ضعف المعدل الأساسي.
  • فوضى ذاكرة التخزين المؤقت للصفحات على عقدة التخزين. لا تتسع مجموعة البيانات في ذاكرة الوصول العشوائي (RAM)، حيث يؤدي كل دورة تدريبية إلى إخلاء الدورة السابقة. الحل: زيادة سعة ذاكرة الوصول العشوائي.
  • nconnect غير مفعل على عملاء NFS. حدود NFS أحادية التدفق الافتراضية أقل بكثير من معدل خط بطاقة الشبكة. nconnect=8 or =16 يوفر إنتاجية تتراوح بين 4 و 8 أضعاف على نفس الأجهزة.
  • تشغيل MinIO على نطاق واسع دون الحاجة إلى ضبط EC. تُعطي الإعدادات الافتراضية الأولوية للمتانة على حساب زمن الاستجابة؛ مما يؤثر سلبًا على زمن استجابة الكائنات الصغيرة. لا تقبل بالإعدادات الافتراضية دون تفكير.

لا شيء من هذه الأشياء غريب أو غير مألوف. كلها متوقعة بمجرد رؤيتها مرة واحدة.

ماذا تفعل بعد ذلك

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

  1. شكل مجموعة البيانات - أجزاء كبيرة أم ملفات صغيرة متعددة؟ العامل الأهم في تحديد نظام التخزين المناسب.
  2. مجموعة العمل النشطة، وليس حجم بحيرة البيانات. تُخصص ميزانية التخزين لمجموعة العمل؛ أما البحيرة فتعتمد على تخزين الكائنات الأرخص والأبطأ.
  3. وتيرة نقاط التفتيش، وحجمها، ومدى تحملها للتوقفات. يحدد حجم سعة الكتابة المتفجرة ويخبرك ما إذا كانت نقاط التحقق المجزأة غير المتزامنة إلزامية (عادة ما تكون أعلى من ~13 بايت من المعلمات، نعم).
  4. عقد التدريب اليوم وتوقعات واقعية لمدة 12 شهرًا. إذا كنت ستستخدم 4 عقد لمدة عام، فقم بالبناء لـ 4 عقد. لا تقم بشراء Lustre مسبقًا.
  5. التخزين على قماش التدريب، أم بشكل منفصل؟ قرر قبل تركيب الكابلات، وليس بعد ذلك.
  6. خطة الأرشفة الباردة. النماذج، وإصدارات مجموعات البيانات، ونتائج التشغيل المكتملة - هذه الأشياء يجب أن تكون في مكان رخيص. عادةً ما يكون الحل هو MinIO أو Ceph.

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

المقالات ذات الصلة: كيه01 (عقدة واحدة مقابل عقد متعددة)، كيه02 (آليات التدريب الموزع)، كيه03 (مجموعات الاستدلال)، N08 (RDMA + وصلة صاعدة عنقودية)، W06 (مستويات التخزين داخل خادم واحد).


هذا جزء من ويكي كينتينو، وهي سلسلة مرجعية حول الحوسبة الذكية، والروبوتات، والأنظمة التي تربط بينهما. نرحب بالتعليقات والتصويبات على info@kentino.com.