هوش داده افلاطون
جستجوی عمودی و هوش مصنوعی

بهبود بهره وری توسعه دهندگان ML با Weights & Biases: یک مثال بینایی کامپیوتری در Amazon SageMaker

تاریخ:

مطالب و نظرات این پست متعلق به نویسنده شخص ثالث است و AWS مسئولیتی در قبال محتوا یا صحت این پست ندارد.

از آنجایی که سازمان‌های بیشتری از تکنیک‌های یادگیری عمیق مانند بینایی رایانه و پردازش زبان طبیعی استفاده می‌کنند، شخصیت توسعه‌دهنده یادگیری ماشینی (ML) به ابزارهای مقیاس‌پذیر پیرامون ردیابی آزمایش، نسب و همکاری نیاز دارد. ردیابی آزمایشی شامل ابرداده‌هایی مانند سیستم‌عامل، زیرساخت‌های مورد استفاده، کتابخانه، و مجموعه داده‌های ورودی و خروجی است که اغلب به صورت دستی در صفحه‌گسترده ردیابی می‌شوند. Lineage شامل ردیابی مجموعه داده ها، تبدیل ها و الگوریتم های مورد استفاده برای ایجاد یک مدل ML است. همکاری شامل توسعه دهندگان ML می شود که روی یک پروژه واحد کار می کنند و همچنین توسعه دهندگان ML نتایج خود را در بین تیم ها و سهامداران کسب و کار به اشتراک می گذارند - فرآیندی که معمولاً از طریق ایمیل، اسکرین شات ها و ارائه های پاورپوینت انجام می شود.

در این پست، ما یک مدل برای شناسایی اشیاء برای یک مورد استفاده از وسیله نقلیه خودمختار با استفاده از وزن‌ها و تعصبات (W&B) و آمازون SageMaker. ما نشان می‌دهیم که چگونه راه‌حل مشترک کار دستی را برای توسعه‌دهنده ML کاهش می‌دهد، شفافیت بیشتری در فرآیند توسعه مدل ایجاد می‌کند و تیم‌ها را قادر می‌سازد تا در پروژه‌ها همکاری کنند.

ما این مثال را اجرا می کنیم Amazon SageMaker Studio تا خودت امتحان کنی

بررسی اجمالی وزن ها و سوگیری ها

Weights & Biases به تیم‌های ML کمک می‌کند مدل‌های بهتری را سریع‌تر بسازند. تنها با چند خط کد در نوت بوک SageMaker خود، می توانید فوراً مدل های خود را اشکال زدایی، مقایسه و بازتولید کنید - معماری، فراپارامترها، تعهدات git، وزن مدل، استفاده از GPU، مجموعه داده ها و پیش بینی ها - همه در حین همکاری با هم تیمی های خود.

بیش از 200,000 متخصص ML از برخی از نوآورترین شرکت ها و سازمان های تحقیقاتی در جهان به W&B اعتماد دارند. برای امتحان رایگان، در سایت ثبت نام کنید وزن ها و سوگیری ها، و یا بازدید از فهرست W&B AWS Marketplace.

شروع کار با SageMaker Studio

SageMaker Studio اولین محیط توسعه کاملاً یکپارچه (IDE) برای ML است. استودیو یک رابط مبتنی بر وب ارائه می دهد که در آن متخصصان ML و دانشمندان داده می توانند مدل ها را با چند کلیک، همه در یک مکان، بسازند، آموزش دهند، و مستقر کنند.

برای شروع کار با Studio، به یک حساب کاربری AWS و یک نیاز دارید هویت AWS و مدیریت دسترسی کاربر یا نقش (IAM) دارای مجوز برای ایجاد دامنه استودیو. رجوع شود به ورود به دامنه Amazon SageMaker برای ایجاد یک دامنه، و مستندات استودیویی برای مروری بر استفاده از رابط بصری استودیو و نوت بوک.

محیط را تنظیم کنید

برای این پست، ما علاقه مند به اجرای کد خود هستیم، بنابراین بیایید چند نوت بوک را از GitHub وارد کنیم. ما از موارد زیر استفاده می کنیم GitHub repo به عنوان مثال، پس بیایید بارگذاری کنیم این دفترچه یادداشت.

می توانید یک مخزن را از طریق ترمینال یا رابط کاربری Studio کلون کنید. برای شبیه سازی یک مخزن از طریق ترمینال، یک ترمینال سیستم را باز کنید (در پرونده منو ، انتخاب کنید جدید و پایانه) و دستور زیر را وارد کنید:

git clone https://github.com/wandb/SageMakerStudio

برای شبیه سازی یک مخزن از استودیو UI، رجوع کنید به یک مخزن Git را در استودیو SageMaker کلون کنید.

برای شروع، را انتخاب کنید 01_data_processing.ipynb نوت بوک. از شما یک درخواست سوئیچ کننده کرنل خواسته می شود. این مثال از PyTorch استفاده می کند، بنابراین ما می توانیم از پیش ساخته شده را انتخاب کنیم PyTorch 1.10 Python 3.8 GPU بهینه شده است تصویر برای شروع نوت بوک ما می‌توانید شروع برنامه را ببینید و وقتی هسته آماده شد، نوع نمونه و هسته را در سمت راست بالای نوت بوک شما نشان می‌دهد.

نوت بوک ما به برخی وابستگی های اضافی نیاز دارد. این مخزن یک requirement.txt را با وابستگی های اضافی فراهم می کند. اولین سلول را برای نصب وابستگی های مورد نیاز اجرا کنید:

%pip install -r requirements.txt

همچنین می توانید یک پیکربندی چرخه حیات ایجاد کنید تا هر بار که برنامه PyTorch را راه اندازی می کنید بسته ها به طور خودکار نصب شوند. دیدن Amazon SageMaker Studio را با استفاده از تنظیمات چرخه زندگی سفارشی کنید برای دستورالعمل ها و اجرای نمونه

از Weights & Biases در SageMaker Studio استفاده کنید

وزن ها و سوگیری ها (wandb) یک کتابخانه استاندارد پایتون است. پس از نصب، به سادگی اضافه کردن چند خط کد به اسکریپت آموزشی خود است و آماده ثبت آزمایشات هستید. ما قبلاً آن را از طریق فایل requires.txt خود نصب کرده ایم. همچنین می توانید آن را به صورت دستی با کد زیر نصب کنید:

! pip install wandb

مطالعه موردی: تقسیم‌بندی معنایی خودروی خودمختار

مجموعه داده

ما با استفاده از پایگاه داده ویدیویی با برچسب رانندگی کمبریج (CamVid) برای این مثال. این شامل مجموعه‌ای از ویدیوها با برچسب‌های معنایی کلاس شی به همراه ابرداده است. پایگاه داده برچسب های حقیقت زمینی را ارائه می دهد که هر پیکسل را با یکی از 32 کلاس معنایی مرتبط می کند. ما می‌توانیم مجموعه داده‌های خود را به صورت a نسخه کنیم Wandb.Artifact، به این ترتیب می توانیم بعداً به آن ارجاع دهیم. کد زیر را ببینید:

with wandb.init(project="sagemaker_camvid_demo", job_type="upload"):
   artifact = wandb.Artifact(
       name='camvid-dataset',
       type='dataset',
       metadata={
           "url": 'https://s3.amazonaws.com/fast-ai-imagelocal/camvid.tgz',
           "class_labels": class_labels
       },
       description="The Cambridge-driving Labeled Video Database (CamVid) is the first collection of videos with object class semantic labels, complete with metadata. The database provides ground truth labels that associate each pixel with one of 32 semantic classes."
   )
   artifact.add_dir(path)
   wandb.log_artifact(artifact)

می توانید در ادامه مطلب دنبال کنید 01_data_processing.ipynb نوت بوک.

ما همچنین یک را وارد می کنیم جدول از مجموعه داده جداول موجودیت های غنی و قدرتمندی مانند DataFrame هستند که به شما امکان می دهند داده های جدولی را پرس و جو و تجزیه و تحلیل کنید. می‌توانید مجموعه داده‌های خود را درک کنید، پیش‌بینی‌های مدل را تجسم کنید، و بینش‌های خود را در داشبورد مرکزی به اشتراک بگذارید.

جداول Weights & Biases از بسیاری از فرمت‌های رسانه غنی مانند تصویر، صدا و شکل موج پشتیبانی می‌کنند. برای فهرست کامل فرمت های رسانه، مراجعه کنید انواع داده ها.

اسکرین شات زیر جدولی را با تصاویر خام با تقسیم بندی های حقیقت زمین نشان می دهد. شما همچنین می توانید یک نسخه تعاملی این جدول.

تصویر

یک مدل تربیت کنید

اکنون می‌توانیم یک مدل ایجاد کنیم و آن را در مجموعه داده‌های خود آموزش دهیم. ما استفاده می کنیم PyTorch و سریع برای نمونه سازی سریع یک خط پایه و سپس استفاده wandb.Sweeps برای بهینه سازی هایپرپارامترهای ما در ادامه همراه باشید 02_semantic_segmentation.ipynb نوت بوک. هنگامی که هنگام باز کردن نوت بوک از شما خواسته شد هسته ای را انتخاب کنید، همان هسته را از اولین نوت بوک ما انتخاب کنید. PyTorch 1.10 Python 3.8 GPU بهینه شده است. بسته‌های شما قبلاً نصب شده‌اند زیرا از همان برنامه استفاده می‌کنید.

این مدل قرار است یک حاشیه نویسی در هر پیکسل از یک صحنه گرفته شده از نقطه نظر عامل مستقل را یاد بگیرد. این مدل باید هر پیکسل از یک صحنه معین را به 32 دسته مرتبط، مانند جاده، عابر پیاده، پیاده رو، یا اتومبیل، دسته بندی یا تقسیم کند. شما می توانید هر یک از تصاویر بخش بندی شده روی جدول را انتخاب کنید و به این رابط تعاملی برای دسترسی به نتایج و دسته بندی ها دسترسی داشته باشید.

از آنجا که سریع کتابخانه دارای ادغام با wandb، شما می توانید به سادگی عبور کنید WandbCallback به زبان آموز:

from fastai.callback.wandb import WandbCallback

loss_func=FocalLossFlat(axis=1)
model = SegmentationModel(backbone, hidden_dim, num_classes=num_classes)
wandb_callback = WandbCallback(log_preds=True)
   learner = Learner(
        data_loader,
        model,
        loss_func=loss_func,
        metrics=metrics,
        cbs=[wandb_callback],
    )

learn.fit_one_cycle(TRAIN_EPOCHS, LEARNING_RATE)

برای آزمایش‌های پایه، تصمیم گرفتیم از یک معماری ساده با الهام از آن استفاده کنیم UNet کاغذ با ستون فقرات مختلف از تیمم ما مدل های خود را با از دست دادن کانونی به عنوان معیار با Weights & Biases، می‌توانید به راحتی داشبوردهایی با خلاصه‌ای از آزمایش‌های خود ایجاد کنید تا به سرعت نتایج تمرین را تجزیه و تحلیل کنید، همانطور که در تصویر زیر نشان داده شده است. شما همچنین می توانید این داشبورد را به صورت تعاملی مشاهده کنید.

جستجوی فراپارامتر با جاروها

برای بهبود عملکرد مدل پایه، باید بهترین مدل و بهترین مجموعه فراپارامترها را برای آموزش انتخاب کنیم. W&B استفاده از این کار را برای ما آسان می کند نوردد.

ما انجام می دهیم جستجوی فراپارامتر بیزی با هدف به حداکثر رساندن دقت پیش زمینه مدل در مجموعه داده اعتبارسنجی. برای انجام sweep فایل پیکربندی sweep.yaml را تعریف می کنیم. در داخل این فایل، روش مورد نظر را برای استفاده ارسال می کنیم: bayes و پارامترها و مقادیر مربوط به آنها را برای جستجو. در مورد ما، ما ستون فقرات، اندازه های دسته ای و توابع از دست دادن مختلف را امتحان می کنیم. ما همچنین پارامترهای مختلف بهینه سازی مانند نرخ یادگیری و کاهش وزن را بررسی می کنیم. از آنجا که این مقادیر پیوسته هستند، از یک توزیع نمونه برداری می کنیم. متعدد هستند گزینه های پیکربندی موجود برای جاروها.

program: train.py
project: sagemaker_camvid_demo
method: bayes
metric:
    name: foreground_acc
    goal: maximize
early_terminate:
    type: hyperband
    min_iter: 5
parameters:
    backbone:
        values: ["mobilenetv2_100","mobilenetv3_small_050","mobilenetv3_large_100","resnet18","resnet34","resnet50","vgg19"]
    batch_size: 
        values: [8, 16]
    image_resize_factor: 
        value: 4
    loss_function: 
        values: ["categorical_cross_entropy", "focal", "dice"]
    learning_rate: 
        distribution: uniform 
        min: 1e-5
        max: 1e-2
    weight_decay: 
        distribution: uniform
        min: 0.0 
        max: 0.05

پس از آن، در یک ترمینال، جابجایی را با استفاده از خط فرمان wandb:

$ wandb sweep sweep.yaml —-project="sagemaker_camvid_demo"

و سپس یک Sweep Agent را روی این دستگاه با کد زیر راه اندازی کنید:

$ wandb agent <sweep_id>

هنگامی که جارو به پایان رسید، می‌توانیم از نمودار مختصات موازی برای بررسی عملکرد مدل‌ها با ستون‌های مختلف و مجموعه‌های مختلف فراپارامترها استفاده کنیم. بر اساس آن، ما می توانیم ببینیم که کدام مدل بهترین عملکرد را دارد.

تصویر زیر نتایج جستجوها را نشان می دهد، از جمله نمودار مختصات موازی و نمودارهای همبستگی پارامتر. شما همچنین می توانید این داشبورد جاروب را به صورت تعاملی مشاهده کنید.

ما می‌توانیم بینش‌های کلیدی زیر را از جابجایی استخراج کنیم:

  • نرخ یادگیری کمتر و کاهش وزن کمتر منجر به دقت پیش‌زمینه بهتر و نمرات تاس می‌شود.
  • اندازه دسته همبستگی مثبت قوی با معیارها دارد.
  • La ستون فقرات مبتنی بر VGG ممکن است گزینه خوبی برای آموزش مدل نهایی ما نباشد زیرا آنها مستعد ایجاد یک هستند شیب ناپدید شدن. (با جدا شدن ضرر، فیلتر می شوند.)
  • La ResNet ستون فقرات منجر به بهترین عملکرد کلی با توجه به معیارها می شود.
  • ستون فقرات ResNet34 یا ResNet50 باید برای مدل نهایی به دلیل عملکرد قوی آنها از نظر معیارها انتخاب شود.

داده ها و اصل و نسب مدل

مصنوعات W&B به گونه‌ای طراحی شده‌اند که نسخه‌سازی مجموعه داده‌ها و مدل‌های شما را آسان کند، صرف نظر از اینکه می‌خواهید فایل‌های خود را با W&B ذخیره کنید یا از قبل سطلی دارید که می‌خواهید W&B آن را ردیابی کند. پس از اینکه مجموعه داده‌ها یا فایل‌های مدل خود را ردیابی کردید، W&B به‌طور خودکار هر اصلاح را ثبت می‌کند و تاریخچه کامل و قابل بازرسی از تغییرات فایل‌هایتان را در اختیار شما قرار می‌دهد.

در مورد ما، مجموعه داده ها، مدل ها و جداول مختلف تولید شده در طول آموزش در فضای کاری ثبت می شوند. با رفتن به قسمت می توانید به سرعت این نسب را مشاهده و تجسم کنید مصنوعات احتمال برد مراجعه کنید.

تصویر

پیش بینی های مدل را تفسیر کنید

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

ما ماسک‌های پیش‌بینی‌شده را به همراه ضریب امتیاز تاس در هر کلاس در جدول ثبت کردیم. سپس با ردیف هایی که حاوی کلاس های مورد نظر هستند فیلتر کرده و بر اساس ترتیب صعودی امتیاز تاس مرتب می کنیم.

در جدول زیر ابتدا با انتخاب نقطه مثبت تاس (عابران پیاده در تصویر) فیلتر می کنیم. سپس به ترتیب صعودی مرتب می کنیم تا بدترین عابران پیاده خود را شناسایی کنیم. به خاطر داشته باشید که نمره تاس برابر با 1 به معنای تقسیم بندی صحیح کلاس عابر پیاده است. شما همچنین می توانید این جدول را به صورت تعاملی مشاهده کنید.

تصویر

ما می توانیم این تحلیل را با سایر اقشار آسیب پذیر مانند دوچرخه یا چراغ راهنمایی تکرار کنیم.

این ویژگی یک راه بسیار خوب برای شناسایی تصاویری است که به درستی برچسب گذاری نشده اند و آنها را برای حاشیه نویسی مجدد برچسب گذاری کنید.

نتیجه

این پست پلتفرم Weights & Biases MLOps، نحوه راه اندازی W&B در SageMaker Studio و نحوه اجرای یک نوت بوک مقدماتی در راه حل مشترک را نشان می دهد. سپس یک مورد استفاده از تقسیم بندی معنایی وسیله نقلیه مستقل را مورد بررسی قرار دادیم و اجراهای آموزشی ردیابی را با آزمایش‌های W&B، بهینه‌سازی فراپارامتر با استفاده از جاروهای W&B و تفسیر نتایج با جداول W&B نشان دادیم.

اگر علاقه مند به یادگیری بیشتر هستید، می توانید به لایو دسترسی داشته باشید گزارش W&B. برای امتحان رایگان Weights & Biases، در اینجا ثبت نام کنید وزن ها و سوگیری ها، و یا بازدید از فهرست W&B AWS Marketplace.


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

توماس کاپل یک مهندس یادگیری ماشین در Weights and Biases است. او مسئول زنده و به روز نگه داشتن مخزن www.github.com/wandb/examples است. او همچنین محتوا را بر روی MLOPS، کاربردهای W&B در صنایع و به طور کلی یادگیری عمیق سرگرم کننده می سازد. قبلاً او از یادگیری عمیق برای حل پیش بینی کوتاه مدت انرژی خورشیدی استفاده می کرد. او دارای سابقه برنامه ریزی شهری، بهینه سازی ترکیبی، اقتصاد حمل و نقل و ریاضی کاربردی است.

دورگا سوری یک معمار ML Solutions در تیم Amazon SageMaker Service SA است. او مشتاق است که یادگیری ماشین را برای همه در دسترس قرار دهد. در 3 سال حضور خود در AWS، به راه اندازی پلتفرم های AI/ML برای مشتریان سازمانی کمک کرده است. وقتی کار نمی کند، عاشق موتورسواری، رمان های معمایی و پیاده روی با هاسکی چهار ساله اش است.

کارتیک بهاراتی رهبر محصول آمازون SageMaker با بیش از یک دهه مدیریت محصول، استراتژی محصول، اجرا و تجربه راه اندازی است.

نقطه_img

جدیدترین اطلاعات

نقطه_img

چت با ما

سلام! چگونه می توانم به شما کمک کنم؟