PyTorch Lightning و PyTorch DDP بومی را در آموزش SageMaker آمازون اجرا کنید که دارای هوش داده‌های PlatoBlockchain Search Amazon است. جستجوی عمودی Ai.

PyTorch Lightning و PyTorch DDP بومی را در آموزش SageMaker آمازون با قابلیت جستجوی آمازون اجرا کنید

داده های زیاد، زمان کم. متخصصان یادگیری ماشین (ML)، دانشمندان داده، مهندسان و علاقه مندان در سراسر جهان با این مشکل مواجه شده اند. از پردازش زبان طبیعی گرفته تا بینایی رایانه، جدول‌ها تا سری‌های زمانی، و همه چیزهایی که در این میان وجود دارد، مشکل قدیمی بهینه‌سازی سرعت هنگام اجرای داده‌ها در برابر هر تعداد GPU که می‌توانید راه‌حل‌های بی‌شماری را الهام گرفته است. امروز، ما خوشحالیم که ویژگی هایی را برای توسعه دهندگان PyTorch با استفاده از چارچوب های منبع باز بومی، مانند PyTorch Lightning و PyTorch DDP، که مسیر آنها را به سمت ابر ساده می کند.

آمازون SageMaker یک سرویس کاملاً مدیریت شده برای ML است و آموزش مدل SageMaker یک محیط محاسباتی بهینه برای آموزش با کارایی بالا در مقیاس است. آموزش مدل SageMaker یک تجربه آموزشی از راه دور با یک هواپیمای کنترلی بدون درز ارائه می دهد تا به راحتی مدل های ML را با کارایی بالا و هزینه کم آموزش داده و بازتولید کند. ما خوشحالیم که ویژگی‌های جدیدی را در مجموعه آموزشی SageMaker اعلام می‌کنیم که اجرای PyTorch را در مقیاس آسان‌تر و در دسترس‌تر می‌کند:

  1. PyTorch Lightning اکنون می تواند به آن ادغام شود کتابخانه موازی داده توزیع شده SageMaker تنها با یک خط تغییر کد.
  2. آموزش مدل SageMaker اکنون از PyTorch Distributed Data Parallel با باطن NCCL پشتیبانی می کند و به توسعه دهندگان اجازه می دهد راحت تر از همیشه به SageMaker مهاجرت کنند.

در این پست، این ویژگی‌های جدید را مورد بحث قرار می‌دهیم و همچنین یاد می‌گیریم که چگونه جستجوی آمازون PyTorch Lightning را با باطن آموزشی توزیع‌شده بهینه‌شده در SageMaker اجرا کرده است تا زمان آموزش مدل را افزایش دهد.

قبل از غواصی در مطالعه موردی جستجوی آمازون، برای کسانی که آشنا نیستند، می‌خواهیم پیش‌زمینه‌ای در مورد آن ارائه دهیم کتابخانه موازی داده توزیع شده SageMaker. در سال 2020، ما یک پیکربندی خوشه سفارشی برای نزول گرادیان توزیع شده در مقیاس ایجاد و راه اندازی کردیم که کارایی کلی خوشه را افزایش می دهد، که در Amazon Science به عنوان معرفی شده است. شاه ماهی. با استفاده از بهترین سرورهای پارامتر و توپولوژی های مبتنی بر حلقه، SageMaker Distributed Data Parallel (SMDDP) برای ابر محاسبه الاستیک آمازون توپولوژی شبکه (Amazon EC2) از جمله EFA. برای اندازه‌های خوشه بزرگ‌تر، SMDDP می‌تواند 20 تا 40 درصد بهبود عملکرد نسبت به Horovod (TensorFlow) و PyTorch Distributed Data Parallel ارائه دهد. برای اندازه‌های خوشه کوچکتر و مدل‌های پشتیبانی‌شده، توصیه می‌کنیم کامپایلر آموزشی SageMaker، که می تواند زمان کلی کار را تا 50٪ کاهش دهد.

کانون توجه مشتری: PyTorch Lightning در باطن بهینه سازی شده SageMaker با جستجوی آمازون

جستجوی آمازون مسئول تجربه جستجو و کشف در آن است Amazon.com. این تجربه جستجو را برای مشتریانی که به دنبال محصولاتی برای خرید در آمازون هستند، تقویت می کند. در سطح بالایی، جستجوی آمازون یک فهرست برای همه محصولات فروخته شده در Amazon.com ایجاد می کند. هنگامی که مشتری درخواستی را وارد می‌کند، جستجوی آمازون از انواع تکنیک‌های ML، از جمله مدل‌های یادگیری عمیق، برای تطبیق محصولات مرتبط و جالب با درخواست مشتری استفاده می‌کند. سپس محصولات را قبل از نمایش نتایج به مشتری رتبه بندی می کند.

دانشمندان جستجوی آمازون از PyTorch Lightning به عنوان یکی از چارچوب‌های اصلی برای آموزش مدل‌های یادگیری عمیق استفاده کرده‌اند که رتبه‌بندی جستجو را به دلیل ویژگی‌های کاربردی افزوده آن در بالای PyTorch تقویت می‌کنند. SMDDP برای مدل های یادگیری عمیق نوشته شده در PyTorch Lightning قبل از راه اندازی جدید SageMaker پشتیبانی نمی شد. این امر مانع از آن شد که دانشمندان جستجوی آمازون که ترجیح می‌دهند از PyTorch Lightning استفاده کنند، آموزش مدل خود را با استفاده از تکنیک‌های موازی داده مقیاس‌بندی کنند، به طور قابل‌توجهی زمان آموزش آن‌ها را کاهش داد و از آزمایش آزمایش‌های جدیدی که به آموزش مقیاس‌پذیرتر نیاز دارند، جلوگیری کرد.

نتایج محک‌گذاری اولیه تیم نشان می‌دهد 7.3 برابر سریع‌تر زمان تمرین برای یک مدل نمونه زمانی که بر روی هشت گره آموزش داده می‌شود در مقایسه با خط پایه آموزش تک‌گره. مدل پایه مورد استفاده در این معیارها یک شبکه عصبی پرسپترون چند لایه با هفت لایه کاملاً متراکم و بیش از 200 پارامتر است. جدول زیر نتایج محک زدن در نمونه های آموزشی ml.p3.16xlarge SageMaker را خلاصه می کند.

تعداد موارد زمان تمرین (دقیقه) بهبود
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 ساده می کند. PyTorch Lightning از جهاتی شبیه به کاری که Keras برای TensorFlow یا حتی احتمالاً Hugging Face انجام داد، یک API سطح بالا با انتزاعات برای بسیاری از عملکردهای سطح پایین خود PyTorch ارائه می دهد. این شامل تعریف مدل، پروفایل، ارزیابی، هرس، موازی سازی مدل، پیکربندی هایپرپارامتر، یادگیری انتقال و غیره است.

پیش از این، توسعه دهندگان PyTorch Lightning در مورد نحوه انتقال یکپارچه کد آموزشی خود به کلاسترهای GPU SageMaker با عملکرد بالا مطمئن نبودند. علاوه بر این، هیچ راهی برای آن‌ها وجود نداشت که از مزایای بهره‌وری معرفی‌شده توسط SageMaker Data Parallel استفاده کنند.

برای PyTorch Lightning، به طور کلی، باید تغییرات کمی در کد وجود داشته باشد تا به سادگی این APIها را در SageMaker Training اجرا کنید. در نوت بوک های نمونه ما از استراتژی DDP و DDPPlugin مواد و روشها.

سه مرحله برای استفاده از PyTorch Lightning با SageMaker Data Parallel به عنوان یک Backend بهینه شده وجود دارد:

  1. از یک پشتیبانی شده استفاده کنید ظرف یادگیری عمیق AWS (DLC) به عنوان تصویر پایه خود، یا به صورت اختیاری ظرف خود را ایجاد کنید و خودتان SageMaker Data Parallel را نصب کنید. اطمینان حاصل کنید که PyTorch Lightning را در بسته‌های ضروری خود، مانند a 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} اگر از باطن شاه ماهی استفاده می کنید، یا distribution={"pytorchddp":{"enabled":True}.
  • برای یک لیست کامل از پارامترهای مناسب در distribution پارامتر، مستندات ما را ببینید اینجا کلیک نمایید.

اکنون می توانید کار آموزش SageMaker خود را راه اندازی کنید! می توانید کار آموزشی خود را از طریق Python SDK، Boto3، کنسول SageMaker، رابط خط فرمان AWS (AWS CLI) و روش‌های بی‌شماری دیگر. از دیدگاه AWS، این است یک دستور API واحد: create-training-job. چه این دستور را از ترمینال محلی خود اجرا کنید، یک AWS لامبدا عملکرد ، یک Amazon SageMaker Studio نوت بوک، خط لوله KubeFlow یا هر محیط محاسباتی دیگر کاملاً به شما بستگی دارد.

لطفاً توجه داشته باشید که ادغام بین PyTorch Lightning و SageMaker Data Parallel در حال حاضر فقط برای نسخه های جدیدتر PyTorch که از 1.11 شروع می شود پشتیبانی می شود. علاوه بر این، این نسخه فقط در DLC های AWS برای 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 را در SageMaker اجرا کنید

بزرگترین مشکل PyTorch توزیع داده موازی (DDP) حل به طرز فریبنده ای ساده است: سرعت. یک چارچوب آموزشی توزیع شده خوب باید ثبات، قابلیت اطمینان و از همه مهمتر عملکرد عالی در مقیاس را فراهم کند. PyTorch DDP این امر را از طریق ارائه API به توسعه دهندگان مشعل ارائه می دهد تا مدل های خود را روی چندین دستگاه GPU، در تنظیمات تک نود و چند گره، تکرار کنند. سپس چارچوب، اشیاء مختلف را از مجموعه داده‌های آموزشی به هر کپی مدل تقسیم می‌کند و میانگین گرادیان‌ها را برای هر یک از کپی‌های مدل برای همگام‌سازی آنها در هر مرحله مدیریت می‌کند. این یک مدل در تکمیل کل دوره آموزشی کامل تولید می کند. نمودار زیر این فرآیند را نشان می دهد.

PyTorch DDP در پروژه هایی که از مجموعه داده های بزرگ استفاده می کنند رایج است. اندازه دقیق هر مجموعه داده بسیار متفاوت خواهد بود، اما یک دستورالعمل کلی این است که مجموعه داده‌ها، اندازه‌ها و اندازه‌های مدل را در نسبت‌های مشابه مقیاس‌بندی کنیم. همچنین به نام قوانین مقیاس بندی، ترکیب بهینه این سه مورد بحث بسیار است و بر اساس کاربردها متفاوت خواهد بود. در AWS، بر اساس کار با چندین مشتری، زمانی که اندازه کلی مجموعه داده حداقل چند ده گیگابایت باشد، به وضوح می توانیم مزایای استراتژی های موازی داده را ببینیم. وقتی مجموعه داده‌ها حتی بزرگ‌تر می‌شوند، پیاده‌سازی نوعی استراتژی موازی داده‌ها یک تکنیک حیاتی برای سرعت بخشیدن به آزمایش کلی و بهبود زمان شما برای ارزش‌گذاری است.

پیش از این، مشتریانی که از PyTorch DDP برای آموزش توزیع شده در محل یا سایر محیط‌های محاسباتی استفاده می‌کردند، فاقد چارچوبی بودند که به راحتی پروژه‌های خود را به SageMaker Training منتقل کنند تا از GPUهای با کارایی بالا با یک هواپیمای کنترلی بدون درز استفاده کنند. به طور خاص، آنها باید چارچوب موازی داده خود را به SMDDP منتقل کنند، یا قابلیت های PyTorch DDP را در آموزش SageMaker به صورت دستی توسعه و آزمایش کنند. امروز، SageMaker Training خوشحال است که تجربه یکپارچه‌ای را برای مشتریانی که کد DDP PyTorch خود را استفاده می‌کنند، ارائه می‌کند.

برای استفاده موثر از این، نیازی به ایجاد هیچ تغییری در اسکریپت های آموزشی خود ندارید.

این پارامتر جدید را می توانید در کد زیر مشاهده کنید. در 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، می‌توانید به سادگی Backend را روی آن تنظیم کنید smddp در مقداردهی اولیه (نگاه کنید به یک اسکریپت آموزشی PyTorch را تغییر دهید، همانطور که در کد زیر نشان داده شده است:

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

همانطور که در بالا دیدیم، شما همچنین می توانید backend را تنظیم کنید DDPStrategy به smddp هنگام استفاده از لایتنینگ این می تواند منجر به تا 40٪ افزایش سرعت کلی برای خوشه های بزرگ! برای کسب اطلاعات بیشتر در مورد آموزش توزیع شده در SageMaker مراجعه کنید وبینار درخواستی ماپشتیبانی نوت بوک، مربوط مستنداتو اوراق.

نتیجه

در این پست دو ویژگی جدید در خانواده آموزش SageMaker را معرفی کردیم. اینها استفاده از کدهای موجود در SageMaker را برای توسعه دهندگان PyTorch بسیار آسان تر می کند، هم PyTorch DDP و هم PyTorch Lightning.

ما همچنین نشان دادیم که چگونه جستجوی آمازون از آموزش SageMaker برای آموزش مدل‌های یادگیری عمیق خود، و به‌ویژه PyTorch Lightning با کتابخانه جمعی بهینه‌سازی شده SageMaker Data Parallel به عنوان یک باطن استفاده می‌کند. حرکت به سمت آموزش توزیع شده به طور کلی به جستجوی آمازون کمک کرد تا 7.3 برابر سرعت قطار را افزایش دهد.


درباره نویسندگان

PyTorch Lightning و PyTorch DDP بومی را در آموزش SageMaker آمازون اجرا کنید که دارای هوش داده‌های PlatoBlockchain Search Amazon است. جستجوی عمودی Ai.امیلی وبر درست پس از راه اندازی SageMaker به AWS ملحق شد و از آن زمان تلاش کرده است تا در مورد آن به جهان بگوید! غیر از ایجاد تجربیات جدید ML برای مشتریان، امیلی از مراقبه و مطالعه بودیسم تبتی لذت می برد.

PyTorch Lightning و PyTorch DDP بومی را در آموزش SageMaker آمازون اجرا کنید که دارای هوش داده‌های PlatoBlockchain Search Amazon است. جستجوی عمودی Ai. کاران ذیمان یک مهندس توسعه نرم افزار در AWS، مستقر در تورنتو، کانادا است. او علاقه زیادی به فضای یادگیری ماشین و ساخت راه حل هایی برای تسریع بارهای کاری محاسباتی توزیع شده دارد.

PyTorch Lightning و PyTorch DDP بومی را در آموزش SageMaker آمازون اجرا کنید که دارای هوش داده‌های PlatoBlockchain Search Amazon است. جستجوی عمودی Ai.ویشوا کاریا مهندس توسعه نرم افزار در AWS Deep Engine است. علایق او در تقاطع یادگیری ماشینی و سیستم های توزیع شده قرار دارد و او همچنین مشتاق توانمندسازی زنان در زمینه فناوری و هوش مصنوعی است.

PyTorch Lightning و PyTorch DDP بومی را در آموزش SageMaker آمازون اجرا کنید که دارای هوش داده‌های PlatoBlockchain Search Amazon است. جستجوی عمودی Ai.ایمن النهراوی یک مهندس نرم‌افزار اصلی در جستجوی آمازون است که تلاش‌ها را در زمینه شتاب، مقیاس‌گذاری و اتوماسیون یادگیری ماشین رهبری می‌کند. تخصص او حوزه های مختلفی از جمله یادگیری ماشینی، سیستم های توزیع شده و شخصی سازی را در بر می گیرد.

تمبر زمان:

بیشتر از آموزش ماشین AWS