قم بتشغيل PyTorch Lightning و PyTorch DDP الأصلي على تدريب Amazon SageMaker ، والذي يضم Amazon Search PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

قم بتشغيل PyTorch Lightning و PyTorch DDP الأصلي على تدريب Amazon SageMaker ، والذي يتميز ببحث Amazon

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

الأمازون SageMaker هي خدمة مُدارة بالكامل لـ ML ، ويُعد تدريب نموذج SageMaker بيئة حوسبة محسّنة للتدريب عالي الأداء على نطاق واسع. يقدم تدريب نموذج SageMaker تجربة تدريب عن بعد مع مستوى تحكم سلس لتدريب نماذج ML وإعادة إنتاجها بسهولة بأداء عالٍ وتكلفة منخفضة. يسعدنا الإعلان عن ميزات جديدة في محفظة تدريب SageMaker تجعل تشغيل PyTorch على نطاق واسع أسهل وأكثر سهولة:

  1. يمكن الآن دمج PyTorch Lightning مع ملفات مكتبة البيانات المتوازية الموزعة من SageMaker مع تغيير سطر واحد فقط من التعليمات البرمجية.
  2. تدريب نموذج SageMaker يدعم الآن PyTorch الموزعة للبيانات المتوازية الأصلية مع خلفية NCCL ، مما يسمح للمطورين بالانتقال إلى SageMaker بشكل أسهل من أي وقت مضى.

في هذا المنشور ، نناقش هذه الميزات الجديدة ، ونتعرف أيضًا على كيفية قيام Amazon Search بتشغيل PyTorch Lightning مع الخلفية التدريبية الموزعة المحسّنة في SageMaker لتسريع وقت تدريب النموذج.

قبل الغوص في دراسة حالة Amazon Search ، بالنسبة لأولئك الذين ليسوا على دراية ، نود تقديم بعض المعلومات الأساسية عنهم مكتبة البيانات المتوازية الموزعة من SageMaker. في عام 2020 ، قمنا بتطوير وإطلاق تكوين مجموعة مخصص للنسب التدرج الموزع على نطاق واسع مما يزيد من الكفاءة الكلية للكتلة ، والذي تم تقديمه في Amazon Science على أنه سمك مملح. باستخدام أفضل خوادم المعلمات والطبولوجيا المستندة إلى الحلقة ، تم تحسين SageMaker Distributed Data Parallel (SMDDP) من أجل الأمازون الحوسبة المرنة السحابية (Amazon EC2) طوبولوجيا الشبكة ، بما في ذلك التعليم للجميع. بالنسبة لأحجام الكتلة الأكبر ، فإن SMDDP قادر على تقديم 20-40٪ تحسينات في الإنتاجية بالنسبة إلى Horovod (TensorFlow) و PyTorch الموزعة للبيانات المتوازية. بالنسبة لأحجام الكتلة الأصغر والنماذج المدعومة ، نوصي باستخدام مترجم تدريب SageMaker، والتي يمكن أن تقلل وقت العمل الإجمالي بنسبة تصل إلى 50٪.

تسليط الضوء على العملاء: PyTorch Lightning على الواجهة الخلفية المحسّنة لـ SageMaker مع Amazon Search

Amazon Search هو المسؤول عن تجربة البحث والاكتشاف على Amazon.com. إنه يدعم تجربة البحث للعملاء الذين يبحثون عن منتجات لشرائها على Amazon. على مستوى عالٍ ، تنشئ Amazon Search فهرسًا لجميع المنتجات المباعة على Amazon.com. عندما يقوم أحد العملاء بإدخال استعلام ، يستخدم Amazon Search مجموعة متنوعة من تقنيات ML ، بما في ذلك نماذج التعلم العميق ، لمطابقة المنتجات ذات الصلة والمثيرة للاهتمام باستعلام العميل. ثم يقوم بترتيب المنتجات قبل عرض النتائج على العميل.

استخدم علماء Amazon Search PyTorch Lightning كأحد الأطر الرئيسية لتدريب نماذج التعلم العميق التي تدعم ترتيب البحث نظرًا لميزات قابلية الاستخدام المضافة أعلى PyTorch. لم يكن SMDDP مدعومًا لنماذج التعلم العميق المكتوبة في PyTorch Lightning قبل إطلاق SageMaker الجديد. منع هذا علماء Amazon Search الذين يفضلون استخدام PyTorch Lightning من توسيع نطاق تدريبهم النموذجي باستخدام تقنيات موازية للبيانات ، مما أدى إلى إبطاء وقت تدريبهم بشكل كبير ومنعهم من اختبار تجارب جديدة تتطلب تدريبًا أكثر قابلية للتطوير.

تُظهر نتائج قياس الأداء المبكر للفريق 7.3 مرة وقت تدريب أسرع لنموذج العينة عند التدريب على ثماني عقد مقارنة بخط الأساس للتدريب على عقدة واحدة. النموذج الأساسي المستخدم في هذه المقارنة المعيارية هو شبكة عصبية متعددة الطبقات مع سبع طبقات كثيفة متصلة بالكامل وأكثر من 200 معلمة. يلخص الجدول التالي نتيجة القياس على مثيلات تدريب SageMaker ml.p3.16xlarge.

عدد المثيلات وقت التدريب (بالدقائق) تحسين
1 99 خط الأساس
2 55 1.8x
4 27 3.7x
8 13.5 7.3x

بعد ذلك ، نتعمق في تفاصيل عمليات الإطلاق الجديدة. إذا كنت ترغب في ذلك ، يمكنك الانتقال من خلال المقابلة مثال مفكرة.

قم بتشغيل PyTorch Lightning باستخدام مكتبة التدريب الموزعة من SageMaker

يسعدنا أن نعلن أن SageMaker Data Parallel يتكامل الآن بسلاسة مع PyTorch Lightning ضمن تدريب SageMaker.

PyTorch Lightning هو إطار عمل مفتوح المصدر يوفر تبسيطًا لكتابة النماذج المخصصة في PyTorch. في بعض النواحي المشابهة لما فعلته Keras لـ TensorFlow ، أو حتى Hugging Face ، يوفر PyTorch Lightning واجهة برمجة تطبيقات عالية المستوى مع تجريدات لكثير من الوظائف ذات المستوى الأدنى من PyTorch نفسها. يتضمن ذلك تحديد النموذج ، والتنميط ، والتقييم ، والتقليم ، وتوازي النموذج ، وتكوينات المعلمات الفائقة ، ونقل التعلم ، والمزيد.

في السابق ، كان مطورو PyTorch Lightning غير متأكدين من كيفية ترحيل رمز التدريب الخاص بهم بسلاسة إلى مجموعات SageMaker GPU عالية الأداء. بالإضافة إلى ذلك ، لم تكن هناك طريقة يمكنهم من خلالها الاستفادة من مكاسب الكفاءة التي قدمتها SageMaker Data Parallel.

بالنسبة إلى PyTorch Lightning ، بشكل عام ، يجب أن تكون هناك تغييرات قليلة أو معدومة في التعليمات البرمجية لتشغيل واجهات برمجة التطبيقات هذه ببساطة على تدريب SageMaker. في مثال دفاتر الملاحظات نستخدم الامتداد DDPS الإستراتيجية و DDPPlugin الأساليب.

هناك ثلاث خطوات لاستخدام PyTorch Lightning مع SageMaker Data Parallel كخلفية محسنة:

  1. استخدم ملف حاوية التعلم العميق من AWS (DLC) كصورة أساسية ، أو يمكنك اختياريًا إنشاء حاوية وملفات قم بتثبيت الواجهة الخلفية SageMaker Data Parallel بنفسك. تأكد من تضمين PyTorch Lightning في الحزم الضرورية ، مثل ملف requirements.txt ملف.
  2. قم بإجراء بعض التغييرات الطفيفة في التعليمات البرمجية على البرنامج النصي للتدريب الخاص بك والتي تمكّن الواجهة الخلفية المحسّنة. وتشمل هذه:
    1. استيراد مكتبة SM DDP:
      import smdistributed.dataparallel.torch.torch_smddp
      

    2. قم بإعداد بيئة PyTorch Lightning لـ SageMaker:
      from pytorch_lightning.plugins.environments.lightning_environment 
        import LightningEnvironment
      
      env = LightningEnvironment()
      env.world_size = lambda: int(os.environ["WORLD_SIZE"])
      env.global_rank = lambda: int(os.environ["RANK"])

    3. إذا كنت تستخدم إصدارًا من PyTorch Lightning أقدم من 1.5.10 ، فستحتاج إلى إضافة بضع خطوات أخرى.
      1. أولاً ، أضف متغير البيئة:
        os.environ["PL_TORCH_DISTRIBUTED_BACKEND"] = "smddp"

      2. ثانيًا ، تأكد من استخدام ملفات DDPPlugin، بدلا من DDPStrategy. إذا كنت تستخدم إصدارًا أحدث ، فيمكنك تعيينه بسهولة عن طريق وضع ملف requirements.txt في ال source_dir لعملك ، فهذا ليس ضروريًا. انظر الكود التالي:
        ddp = DDPPlugin(parallel_devices=[torch.device("cuda", d) for d in range(num_gpus)], cluster_environment=env)

    4. اختياريًا ، حدد الخلفية الخلفية لمجموعة المعالجة الخاصة بك على أنها "smddp" في ال DDPSTrategy هدف. ومع ذلك ، إذا كنت تستخدم PyTorch Lightning مع الواجهة الخلفية PyTorch DDP ، والتي يتم دعمها أيضًا ، فما عليك سوى إزالة هذا "process_group_backend`المعلمة. انظر الكود التالي:
      ddp = DDPStrategy(
        cluster_environment=env, 
        process_group_backend="smddp", 
        accelerator="gpu")

  3. تأكد من أن لديك طريقة توزيع مسجلة في المقدّر ، مثل distribution={"smdistributed":{"dataparallel":{"enabled":True} إذا كنت تستخدم Herring backend ، أو distribution={"pytorchddp":{"enabled":True}.
  • للحصول على قائمة كاملة بالمعلمات المناسبة في distribution المعلمة ، راجع وثائقنا هنا.

الآن يمكنك إطلاق وظيفتك التدريبية في SageMaker! يمكنك بدء عملك التدريبي عبر Python SDK و Boto3 ووحدة تحكم SageMaker و واجهة سطر الأوامر AWS (AWS CLI) وطرق أخرى لا حصر لها. من منظور AWS ، هذا هو أمر API واحد: create-training-job. سواء قمت بتشغيل هذا الأمر من المحطة المحلية الخاصة بك ، فإن ملف AWS لامدا وظيفة ، أ أمازون ساجميكر ستوديو الكمبيوتر المحمول أو خط أنابيب KubeFlow أو أي بيئة حوسبة أخرى متروك لك تمامًا.

يرجى ملاحظة أن التكامل بين PyTorch Lightning و SageMaker Data Parallel مدعوم حاليًا للإصدارات الأحدث فقط من PyTorch ، بدءًا من 1.11. بالإضافة إلى ذلك ، يتوفر هذا الإصدار فقط في AWS DLCs لـ SageMaker بدءًا من PyTorch 1.12. تأكد من الإشارة إلى هذه الصورة كقاعدة لك. في us-east-1هذا العنوان كالتالي:

ecr_image = '763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.12.0-gpu-py38-cu113-ubuntu20.04-sagemaker'

بعد ذلك ، يمكنك تمديد حاوية Docker الخاصة بك باستخدام هذا كصورة أساسية ، أو يمكنك تمرير هذا كمتغير إلى ملف image_uri حجة مقدّر تدريب SageMaker.

نتيجةً لذلك ، ستتمكن من تشغيل كود PyTorch Lightning الخاص بك على وحدات معالجة الرسوميات المحسّنة من SageMaker Training ، مع أفضل أداء متاح على AWS.

قم بتشغيل PyTorch Distributed Data Parallel on SageMaker

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

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

في السابق ، كان العملاء الذين كانوا يستخدمون PyTorch DDP للتدريب الموزع في أماكن العمل أو في بيئات الحوسبة الأخرى يفتقرون إلى إطار عمل لترحيل مشاريعهم بسهولة إلى تدريب SageMaker للاستفادة من وحدات معالجة الرسومات عالية الأداء مع مستوى تحكم سلس. على وجه التحديد ، كانوا بحاجة إما إلى ترحيل إطار عمل البيانات الموازي إلى SMDDP ، أو تطوير واختبار قدرات PyTorch DDP على تدريب SageMaker يدويًا. اليوم ، يسعد SageMaker Training تقديم تجربة سلسة للعملاء الذين يقومون بإعداد كود PyTorch DDP الخاص بهم.

لاستخدام هذا بشكل فعال ، لا تحتاج إلى إجراء أي تغييرات على البرامج النصية التدريبية الخاصة بك.

يمكنك رؤية هذه المعلمة الجديدة في الكود التالي. في ال distribution المعلمة ، ما عليك سوى إضافة pytorchddp وتعيين تمكين باسم true.

estimator = PyTorch(
    base_job_name="pytorch-dataparallel-mnist",
    source_dir="code",
    entry_point = "my_model.py",
    ... 
    # Training using SMDataParallel Distributed Training Framework
    distribution = {"pytorchddp": {"enabled": "true"}}
)

يبدأ هذا التكوين الجديد في إصدارات SageMaker Python SDK 2.102.0 و PyTorch DLC 1.11.

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

الآن يمكن لمطوري PyTorch نقل البرامج النصية الخاصة بهم بسهولة إلى SageMaker ، مما يضمن تشغيل البرامج النصية والحاويات الخاصة بهم بسلاسة عبر بيئات حوسبة متعددة.

هذا يعدهم ، في المستقبل ، للاستفادة منها مكتبات التدريب الموزعة من SageMaker التي توفر هياكل تدريب محسّنة من AWS لتقديم تحسينات تسريع تصل إلى 40٪. بالنسبة لمطوري PyTorch ، هذا سطر واحد من التعليمات البرمجية! بالنسبة إلى كود PyTorch DDP ، يمكنك ببساطة ضبط الواجهة الخلفية على smddp في التهيئة (انظر تعديل البرنامج النصي للتدريب على PyTorch) ، كما هو موضح في الكود التالي:

import smdistributed.dataparallel.torch.torch_smddp
import torch.distributed as dist
dist.init_process_group(backend='smddp')

كما رأينا أعلاه ، يمكنك أيضًا تعيين الواجهة الخلفية لـ DDPStrategy إلى smddp عند استخدام Lightning. هذا يمكن أن يؤدي إلى 40٪ زيادة السرعة الإجمالية للمجموعات الكبيرة! لمعرفة المزيد حول التدريب الموزع على SageMaker ، انظر ندوة الويب عند الطلب، دعم أجهزة الكمبيوتر المحمولة، ذو صلة توثيقو أوراق.

وفي الختام

في هذا المنشور ، قدمنا ​​ميزتين جديدتين ضمن عائلة تدريب SageMaker. هذه تجعل من السهل جدًا على مطوري PyTorch استخدام الكود الموجود على SageMaker ، كل من PyTorch DDP و PyTorch Lightning.

أظهرنا أيضًا كيف يستخدم Amazon Search تدريب SageMaker لتدريب نماذج التعلم العميق الخاصة بهم ، ولا سيما PyTorch Lightning باستخدام مكتبة SageMaker Data Parallel المُحسَّنة كخلفية. ساعد الانتقال إلى التدريب الموزع بشكل عام Amazon Search على تحقيق 7.3x أوقات تدريب أسرع.


عن المؤلفين

قم بتشغيل PyTorch Lightning و PyTorch DDP الأصلي على تدريب Amazon SageMaker ، والذي يضم Amazon Search PlatoBlockchain Data Intelligence. البحث العمودي. عاي.إميلي ويبر انضم إلى AWS بعد إطلاق SageMaker مباشرة ، وما زال يحاول إخبار العالم عنها منذ ذلك الحين! خارج بناء تجارب تعلم جديدة للعملاء ، تتمتع إميلي بالتأمل ودراسة البوذية التبتية.

قم بتشغيل PyTorch Lightning و PyTorch DDP الأصلي على تدريب Amazon SageMaker ، والذي يضم Amazon Search PlatoBlockchain Data Intelligence. البحث العمودي. عاي. كاران ديمان هو مهندس تطوير برمجيات في AWS ، ومقره في تورونتو ، كندا. إنه متحمس جدًا لمساحة التعلم الآلي وبناء حلول لتسريع أعباء عمل الحوسبة الموزعة.

قم بتشغيل PyTorch Lightning و PyTorch DDP الأصلي على تدريب Amazon SageMaker ، والذي يضم Amazon Search PlatoBlockchain Data Intelligence. البحث العمودي. عاي.فيشوا كاريا هو مهندس تطوير برمجيات في AWS Deep Engine. تكمن اهتماماتها في تقاطع التعلم الآلي والأنظمة الموزعة ، كما أنها شغوفة بتمكين المرأة في مجال التكنولوجيا والذكاء الاصطناعي.

قم بتشغيل PyTorch Lightning و PyTorch DDP الأصلي على تدريب Amazon SageMaker ، والذي يضم Amazon Search PlatoBlockchain Data Intelligence. البحث العمودي. عاي.إيمان النهراوي هو مهندس برمجيات رئيسي في Amazon Search يقود الجهود في تسريع التعلم الآلي وتوسيع نطاقه وأتمته. تمتد خبرتها في مجالات متعددة ، بما في ذلك التعلم الآلي والأنظمة الموزعة والتخصيص.

الطابع الزمني:

اكثر من التعلم الآلي من AWS