از یک رویکرد داده محور برای به حداقل رساندن مقدار داده مورد نیاز برای آموزش مدل های Amazon SageMaker استفاده کنید

از یک رویکرد داده محور برای به حداقل رساندن مقدار داده مورد نیاز برای آموزش مدل های Amazon SageMaker استفاده کنید

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

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

در این پست، ما به کارگیری اصول هوش مصنوعی داده محور را توضیح می دهیم Amazon SageMaker Ground Truth، نحوه پیاده سازی تکنیک های انتخاب زیر مجموعه داده ها با استفاده از بند ناف مخزن روشن است آمازون SageMaker برای کاهش مقدار داده های مورد نیاز برای آموزش یک مدل اولیه، و نحوه اجرای آزمایش ها با استفاده از این رویکرد آزمایشات آمازون SageMaker.

رویکرد داده محور به یادگیری ماشین

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

سازگاری برچسب برای بهبود عملکرد مدل مهم است. بدون آن، مدل‌ها نمی‌توانند یک مرز تصمیم ایجاد کنند که هر نقطه متعلق به کلاس‌های مختلف را جدا کند. یکی از راه های اطمینان از سازگاری استفاده از آن است تحکیم حاشیه نویسی در حقیقت زمین، که به شما امکان می دهد یک مثال داده شده را به چندین برچسب نشان دهید و از برچسب انبوه ارائه شده به عنوان حقیقت اصلی برای آن مثال استفاده کنید. واگرایی در برچسب با امتیاز اطمینان ایجاد شده توسط Ground Truth اندازه گیری می شود. هنگامی که در برچسب ها واگرایی وجود دارد، باید بررسی کنید که آیا ابهامی در دستورالعمل های برچسب گذاری ارائه شده به برچسب گذاران شما وجود دارد که می توان آنها را حذف کرد. این رویکرد اثرات سوگیری برچسب‌ها را کاهش می‌دهد، که برای سازگارتر کردن برچسب‌ها بسیار مهم است.

راه دیگری برای بهبود عملکرد مدل با تمرکز بر داده ها شامل توسعه روش هایی برای تجزیه و تحلیل خطاها در برچسب ها در زمانی است که آنها برای شناسایی مهم ترین زیرمجموعه داده هایی که باید بهبود پیدا کنند. شما می توانید این کار را برای مجموعه داده های آموزشی خود با ترکیبی از تلاش های دستی شامل فرو رفتن در نمونه های برچسب دار و استفاده از CloudWatch آمازون گزارش‌ها و معیارهای تولید شده توسط مشاغل برچسب‌گذاری Ground Truth. همچنین مهم است که به اشتباهاتی که مدل در زمان استنتاج انجام می دهد نگاه کنیم تا تکرار بعدی برچسب گذاری برای مجموعه داده ما انجام شود. علاوه بر این مکانیسم ها، Amazon SageMaker Clarify به دانشمندان داده و مهندسان ML اجازه می دهد تا الگوریتم هایی مانند این را اجرا کنند KernelSHAP به آنها اجازه می دهد تا پیش بینی های مدل خود را تفسیر کنند. همانطور که گفته شد، توضیح عمیق‌تر در مورد پیش‌بینی‌های مدل می‌تواند به فرآیند برچسب‌گذاری اولیه برای بهبود آن مربوط شود.

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

مورد استفاده

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

برای این پست، انتخاب زیر مجموعه داده مبتنی بر تعمیم را برای یادگیری کارآمد و قوی اعمال می کنیم (GLISTER) که یکی از بسیاری از تکنیک های انتخاب زیرمجموعه داده است که در مخزن CORDS برای الگوریتم آموزشی یک resnet-18 مدل برای به حداقل رساندن زمان لازم برای آموزش یک مدل برای طبقه بندی CIFAR-10 تصاویر. در زیر برخی از تصاویر نمونه با برچسب های مربوطه از مجموعه داده CIFAR-10 استخراج شده است.

مجموعه داده CIFAR

ResNet-18 اغلب برای کارهای طبقه بندی استفاده می شود. این یک شبکه عصبی کانولوشن عمیق 18 لایه است. مجموعه داده CIFAR-10 اغلب برای ارزیابی اعتبار تکنیک ها و رویکردهای مختلف در ML استفاده می شود. این شامل 60,000 تصویر رنگی 32×32 است که در 10 کلاس برچسب گذاری شده اند.

در بخش‌های بعدی، نشان می‌دهیم که چگونه GLISTER می‌تواند به شما در پاسخ به سؤال زیر تا حدودی کمک کند:

چند درصد از یک مجموعه داده معین را می‌توانیم استفاده کنیم و همچنان در طول آموزش به عملکرد مدل خوبی برسیم؟

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

ما چندین آزمایش را با استفاده از SageMaker Experiments برای اندازه‌گیری تأثیر رویکرد اجرا می‌کنیم. نتایج بسته به مجموعه داده اولیه متفاوت خواهد بود، بنابراین مهم است که رویکرد را در برابر داده‌های خود در اندازه‌های زیر مجموعه مختلف آزمایش کنیم.

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

انتخاب زیر مجموعه داده

هدف از انتخاب زیرمجموعه داده، تسریع فرآیند آموزش و در عین حال به حداقل رساندن اثرات بر دقت و افزایش استحکام مدل است. به طور خاص، GLISTER-ONLINE با تلاش برای به حداکثر رساندن احتمال ورود به سیستم آن زیرمجموعه داده آموزشی در مجموعه اعتبارسنجی که شما مشخص می‌کنید، زیرمجموعه‌ای را انتخاب می‌کند که مدل یاد می‌گیرد. بهینه‌سازی انتخاب زیرمجموعه داده‌ها به این روش، نویز و عدم تعادل طبقاتی را که اغلب در مجموعه داده‌های دنیای واقعی یافت می‌شود، کاهش می‌دهد و به استراتژی انتخاب زیرمجموعه اجازه می‌دهد تا با یادگیری مدل سازگار شود.

اولیه کاغذ GLISTER یک مبادله سرعت/دقت در اندازه‌های مختلف زیر مجموعه داده را با استفاده از a شرح می‌دهد LeNet مدل:

اندازه زیر مجموعه افزایش سرعت دقت
٪۱۰۰ 6x -3٪
٪۱۰۰ 2.5x -1.20٪
٪۱۰۰ 1.5x -0.20٪

برای آموزش مدل، a را اجرا می کنیم شغل آموزش SageMaker با استفاده از یک اسکریپت آموزشی سفارشی ما همچنین قبلاً مجموعه داده تصویر خود را در آن آپلود کرده ایم سرویس ذخیره سازی ساده آمازون (Amazon S3). مانند هر کار آموزشی SageMaker، ما باید یک را تعریف کنیم Estimator هدف - شی. برآوردگر PyTorch از sagemaker.pytorch بسته به ما امکان می دهد اسکریپت آموزشی خود را در یک کانتینر PyTorch مدیریت شده اجرا کنیم. این inputs متغیر به تخمینگر منتقل شد .fit تابع شامل یک فرهنگ لغت از مکان S3 مجموعه داده آموزشی و اعتبار سنجی است.

La train.py اسکریپت زمانی اجرا می شود که یک کار آموزشی راه اندازی می شود. در این اسکریپت، مدل ResNet-18 را از کتابخانه CORDS وارد می‌کنیم و تعداد کلاس‌های موجود در مجموعه داده خود را به صورت زیر ارسال می‌کنیم:

from cords.utils.models import ResNet18 numclasses = 10
model = ResNet18(numclasses)

سپس، ما از gen_dataset عملکرد از CORDS برای ایجاد آموزش، اعتبار سنجی و مجموعه داده های آزمایشی:

from cords.utils.data.datasets.SL import gen_dataset train_set, validation_set, test_set, numclasses = gen_dataset(
datadir="/opt/ml/input/data/training",
dset_name="cifar10",
feature="dss",
type="image")

از هر مجموعه داده، ما یک Dataloader معادل PyTorch ایجاد می کنیم:

train_loader = torch.utils.data.DataLoader(train_set,
batch_size=batch_size,
shuffle=True) validation_loader = torch.utils.data.DataLoader(validation_set,
batch_size=batch_size,
shuffle=False)

در نهایت، ما از این دیتالودرها برای ایجاد a استفاده می کنیم GLISTERDataLoader از کتابخانه CORDS از پیاده‌سازی استراتژی انتخاب GLISTER-ONLINE استفاده می‌کند، که انتخاب زیرمجموعه را در حین به‌روزرسانی مدل در طول آموزش اعمال می‌کند، همانطور که قبلاً در این پست بحث شد.

برای ایجاد شی، آرگومان های خاص استراتژی انتخاب را به عنوان a ارسال می کنیم DotMap شی همراه با train_loader, validation_loaderو logger:

import logging
from cords.utils.data.dataloader.SL.adaptive import GLISTERDataLoader
from dotmap import DotMap dss_args = # GLISTERDataLoader specific arguments
dss_args = DotMap(dss_args)
dataloader = GLISTERDataLoader(train_loader,
validation_loader,
dss_args,
logger,
batch_size=batch_size,
shuffle=True,
pin_memory=False)

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

دانشمندان داده و مهندسان ML اغلب نیاز به ارزیابی اعتبار یک رویکرد با مقایسه آن با برخی از خطوط پایه دارند. نحوه انجام این کار را در بخش بعدی نشان می دهیم.

ردیابی آزمایشی

می توانید از SageMaker Experiments برای اندازه گیری اعتبار رویکرد انتخاب زیر مجموعه داده استفاده کنید. برای اطلاعات بیشتر ببین نسل بعدی آزمایش‌های آمازون SageMaker – آموزش‌های یادگیری ماشینی خود را در مقیاس سازماندهی، پیگیری و مقایسه کنید.

در مورد ما، ما چهار آزمایش را انجام می‌دهیم: یک خط پایه بدون اعمال انتخاب زیر مجموعه داده، و سه آزمایش دیگر با تفاوت fraction پارامترها، که اندازه زیر مجموعه را نسبت به مجموعه داده کلی نشان می دهد. به طور طبیعی، با استفاده از کوچکتر fraction پارامتر باید منجر به کاهش زمان آموزش، اما دقت مدل پایین تر نیز شود.

برای این پست، هر دوره آموزشی به صورت یک نشان داده شده است Run در SageMaker Experiments. اجراهای مربوط به آزمایش ما همه تحت یک گروه بندی می شوند Experiment هدف - شی. اجراها را می توان به یک آزمایش رایج در هنگام ایجاد آن متصل کرد Estimator با SDK کد زیر را ببینید:

from sagemaker.utils import unique_name_from_base
from sagemaker.experiments.run import Run, load_run experiment_name = unique_name_from_base("data-centric-experiment")
with Run(
experiment_name=experiment_name,
sagemaker_session=sess
) as run:
estimator = PyTorch('train.py',
source_dir="source",
role=role,
instance_type=instance_type,
instance_count=1,
framework_version=framework_version,
py_version='py3',
env={ 'SAGEMAKER_REQUIREMENTS': 'requirements.txt',
})
estimator.fit(inputs)

به عنوان بخشی از اسکریپت آموزشی سفارشی خود، می توانید معیارهای اجرا را با استفاده از آن جمع آوری کنید load_run:

from sagemaker.experiments.run import load_run
from sagemaker.session import Session if __name__ == "__main__":
args = parse_args()
session = Session(boto3.session.Session(region_name=args.region))
with load_run(sagemaker_session=session) as run:
train(args, run)

سپس، با استفاده از شی اجرا که توسط عملیات قبلی برگردانده شده است، می توانید با فراخوانی نقاط داده را در هر دوره جمع آوری کنید run.log_metric(name, value, step) و نام متریک، مقدار و عدد دوره فعلی را ارائه می دهد.

برای اندازه‌گیری اعتبار رویکردمان، معیارهای مربوط به از دست دادن آموزش، دقت آموزش، از دست دادن اعتبار، دقت اعتبارسنجی و زمان تکمیل یک دوره را جمع‌آوری می‌کنیم. سپس پس از اجرای مشاغل آموزشی می توانیم نتایج آزمایش ما را مرور کنید in Amazon SageMaker Studio یا از طریق SageMaker Experiments SDK.

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

لیست آزمایشات

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

نمودار آزمایش ها

SDK همچنین به شما این امکان را می‌دهد که اطلاعات مربوط به آزمایش را به‌عنوان یک چارچوب داده Pandas بازیابی کنید:

from sagemaker.analytics import ExperimentAnalytics trial_component_analytics = ExperimentAnalytics(
sagemaker_session=sess.sagemaker_client,
experiment_name=experiment_name
)
analytic_table = trial_component_analytics.dataframe()

به صورت اختیاری، مشاغل آموزشی را می توان مرتب کرد. به عنوان مثال، ما می توانیم اضافه کنیم "metrics.validation:accuracy.max" به عنوان ارزش sort_by پارامتر به ExperimentAnalytics برای برگرداندن نتیجه سفارش شده با دقت اعتبارسنجی.

همانطور که انتظار می رفت، آزمایشات ما نشان می دهد که اعمال GLISTER و انتخاب زیر مجموعه داده در الگوریتم آموزشی، زمان آموزش را کاهش می دهد. هنگام اجرای الگوریتم آموزش پایه ما، میانگین زمان تکمیل یک دوره منفرد حدود 27 ثانیه است. در مقابل، استفاده از GLISTER برای انتخاب زیرمجموعه ای معادل 50، 30، و 10 درصد از مجموعه داده کلی، در زمان هایی به اتمام دوره ای در حدود 13، 8.5، و 2.75 ثانیه در موارد ml.p3.2xlarge منجر می شود. .

ما همچنین تأثیر نسبتاً حداقلی را بر دقت اعتبارسنجی مشاهده می‌کنیم، به‌ویژه زمانی که از زیر مجموعه‌های داده 50 درصد استفاده می‌کنیم. پس از آموزش برای 100 دوره، خط پایه دقت اعتبار 92.72٪ را ایجاد می کند. در مقابل، استفاده از GLISTER برای انتخاب زیرمجموعه ای معادل 50، 30، و 10 درصد از کل مجموعه داده، به ترتیب منجر به دقت اعتبار 91.42، 89.76 درصد و 82.82 درصد می شود.

نتیجه

آزمایش‌های SageMaker Ground Truth و SageMaker با اجازه دادن به دانشمندان داده و مهندسان ML برای تولید مجموعه داده‌های منسجم‌تر و ردیابی تأثیر تکنیک‌های پیشرفته‌تر در حین پیاده‌سازی آنها در فاز ساخت مدل، یک رویکرد داده‌محور را برای یادگیری ماشین فعال می‌کنند. پیاده سازی یک رویکرد داده محور در ML به شما این امکان را می دهد که مقدار داده های مورد نیاز مدل خود را کاهش دهید و استحکام آن را بهبود بخشید.

آن را امتحان کنید و نظر خود را در نظرات با ما در میان بگذارید.


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

Use a data-centric approach to minimize the amount of data required to train Amazon SageMaker models PlatoBlockchain Data Intelligence. Vertical Search. Ai.نیکلاس برنیر یک معمار راه حل، بخشی از تیم بخش عمومی کانادا در AWS است. او در حال حاضر در حال گذراندن مدرک کارشناسی ارشد با یک حوزه تحقیقاتی در یادگیری عمیق است و دارای پنج گواهینامه AWS از جمله گواهینامه تخصصی ML است. نیکلاس مشتاق کمک به مشتریان برای تعمیق دانش خود در مورد AWS از طریق همکاری با آنها برای تبدیل چالش های تجاری خود به راه حل های فنی است.

Use a data-centric approach to minimize the amount of data required to train Amazon SageMaker models PlatoBlockchain Data Intelligence. Vertical Search. Ai.جیوانیلدو آلوز یک معمار نمونه اولیه با تیم مهندسی اولیه و ابری در خدمات وب آمازون است که به مشتریان کمک می کند تا با نشان دادن هنر ممکن در AWS، نوآوری و سرعت بخشیدن به آنها را انجام دهند، که قبلاً چندین نمونه اولیه را در مورد هوش مصنوعی پیاده سازی کرده است. او سابقه طولانی در مهندسی نرم افزار دارد و قبلاً به عنوان مهندس توسعه نرم افزار در Amazon.com.br کار می کرد.

تمبر زمان:

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