زمان استقرار مدل های خود را در Amazon SageMaker برای آزمایش هوش داده PlatoBlockchain کاهش دهید. جستجوی عمودی Ai.

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

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

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

بررسی اجمالی راه حل

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

این کتابخانه Python به دانشمندان داده یک رابط ساده برای شروع سریع SageMaker بدون نیاز به دانستن هیچ یک از عملکردهای سطح پایین SageMaker می دهد.

اگر مدل هایی دارید که به صورت محلی با استفاده از IDE ترجیحی خود آموزش داده شده اند و می خواهید از مقیاس ابر بهره مند شوید، می توانید از این کتابخانه برای استقرار مدل خود در SageMaker استفاده کنید. با SageMaker، علاوه بر تمام مزایای مقیاس‌پذیری پلت‌فرم ML مبتنی بر ابر، به ابزارهای آموزشی ساخته‌شده (آموزش توزیع‌شده، تنظیم فراپارامتر)، مدیریت آزمایش، مدیریت مدل، تشخیص سوگیری، قابلیت توضیح مدل و بسیاری موارد دیگر دسترسی دارید. قابلیت هایی که می توانند در هر جنبه ای از چرخه حیات ML به شما کمک کنند. شما می توانید از میان سه فریمورک محبوب برای ML: Scikit-learn، PyTorch و TensorFlow را انتخاب کنید و می توانید نوع محاسبات مورد نظر خود را انتخاب کنید. پیش‌فرض‌ها در طول مسیر ارائه می‌شوند تا کاربران این کتابخانه بتوانند مدل‌های خود را بدون نیاز به تصمیم‌گیری پیچیده یا یادگیری مفاهیم جدید به کار گیرند. در این پست، ما به شما نشان می دهیم که چگونه با این کتابخانه شروع کنید و مدل های ML خود را در هاست SageMaker بهینه کنید.

کتابخانه را می توان در مخزن GitHub.

SageMaker Migration Toolkit

La SageMakerMigration کلاس از طریق کتابخانه پایتون منتشر شده در GitHub در دسترس است. دستورالعمل نصب این کتابخانه در مخزن ارائه شده است. مطمئن شوید که از README پیروی می کنید تا محیط خود را به درستی تنظیم کنید. پس از نصب این کتابخانه، بقیه این پست در مورد نحوه استفاده از آن صحبت می کند.

La SageMakerMigration کلاس شامل انتزاعات سطح بالا بر روی SageMaker API است که به طور قابل توجهی مراحل مورد نیاز برای استقرار مدل شما در SageMaker را کاهش می دهد، همانطور که در شکل زیر نشان داده شده است. این برای آزمایش در نظر گرفته شده است تا توسعه دهندگان بتوانند به سرعت شروع کنند و SageMaker را آزمایش کنند. برای مهاجرت تولید در نظر گرفته نشده است.

برای مدل‌های Scikit-learn، PyTorch و TensorFlow، این کتابخانه از استقرار مدل‌های آموزش‌دیده در یک نقطه پایانی بلادرنگ SageMaker یا نقطه پایانی بدون سرور پشتیبانی می‌کند. برای کسب اطلاعات بیشتر در مورد گزینه های استنباط در SageMaker، مراجعه کنید استقرار مدل ها برای استنتاج.

زمان واقعی در مقابل نقاط پایانی بدون سرور

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

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

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

مدل آموزش دیده و اسکریپت استنتاج خود را آماده کنید

پس از اینکه مدلی را که می خواهید در SageMaker استقرار دهید شناسایی کردید، باید مطمئن شوید که مدل با فرمت مناسب به SageMaker ارائه شده است. نقاط پایانی SageMaker معمولاً از دو جزء تشکیل شده‌اند: مصنوع مدل آموزش‌دیده (pth.، pkl. و غیره) و یک اسکریپت استنتاج. اسکریپت استنتاج همیشه اجباری نیست، اما اگر ارائه نشده باشد، کنترل‌کننده‌های پیش‌فرض برای ظرف سرویسی که استفاده می‌کنید اعمال می‌شوند. در صورت نیاز به سفارشی کردن عملکرد ورودی/خروجی خود برای استنتاج، ارائه این اسکریپت ضروری است.

مصنوع مدل آموزش دیده به سادگی یک مدل Scikit-learn، PyTorch یا TensorFlow ذخیره شده است. برای Scikit-learn، این معمولاً یک فایل pickle است، برای PyTorch این یک فایل pt. یا .pth است، و برای TensorFlow این یک پوشه با دارایی‌ها، فایل‌های pb. و متغیرهای دیگر است.

به طور کلی، شما باید بتوانید نحوه پردازش ورودی و استنتاج مدل خود را کنترل کنید و قالب خروجی پاسخ خود را کنترل کنید. با SageMaker، می توانید یک اسکریپت استنتاج برای اضافه کردن این سفارشی سازی هر اسکریپت استنتاجی که توسط SageMaker استفاده می‌شود باید یک یا چند مورد از چهار تابع زیر را داشته باشد: model_fn, input_fn, predict_fnو output_fn.

توجه داشته باشید که این چهار تابع برای PyTorch و Scikit یاد بگیر ظروف به طور خاص TensorFlow دارای هندلرهای کمی متفاوت است زیرا با آن یکپارچه شده است سرویس TensorFlow. برای یک اسکریپت استنتاج با TensorFlow، دو تا دارید کنترل کننده های مدل: input_handler و output_handler. باز هم، اینها همان هدف پیش پردازش و پس پردازش را دارند که می توانید با آنها کار کنید، اما برای ادغام با آنها کمی متفاوت پیکربندی شده اند. سرویس TensorFlow. برای مدل‌های PyTorch، model_fn یک تابع اجباری است که در اسکریپت استنتاج وجود دارد.

model_fn

این تابعی است که برای اولین بار هنگام فراخوانی نقطه پایانی SageMaker خود فراخوانی می شود. این جایی است که شما کد خود را برای بارگذاری مدل می نویسید. مثلا:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

بسته به چارچوب و نوع مدل، این کد ممکن است تغییر کند، اما تابع باید یک مدل اولیه را برگرداند.

input_fn

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

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

La request_body حاوی داده هایی است که برای تولید استنتاج از مدل استفاده می شود و در این تابع تجزیه می شود تا در قالب مورد نیاز باشد.

predict_fn

این سومین تابعی است که هنگام فراخوانی مدل شما فراخوانی می شود. این تابع داده های ورودی از پیش پردازش شده را می گیرد input_fn و از مدل برگشتی استفاده می کند model_fn برای انجام پیش بینی مثلا:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

شما می توانید به صورت اختیاری اضافه کنید output_fn برای تجزیه خروجی از predict_fn قبل از بازگرداندن آن به مشتری امضای تابع است def output_fn(prediction, content_type).

مدل از پیش آموزش دیده خود را به SageMaker منتقل کنید

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

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

پس از اینکه مدل و اسکریپت استنتاج شما آماده و در این ساختار پوشه ذخیره شد، مدل شما برای استقرار در SageMaker آماده است. کد زیر را ببینید:

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

پس از استقرار نقطه پایانی خود، مطمئن شوید که منابعی را که استفاده نمی کنید از طریق کنسول SageMaker یا از طریق delete_endpoint تماس API Boto3.

نتیجه

هدف پروژه SageMaker Migration Toolkit این است که دانشمندان داده را آسان کند تا مدل های خود را روی SageMaker قرار دهند تا از استنتاج مبتنی بر ابر استفاده کنند. این مخزن به تکامل خود ادامه خواهد داد و از گزینه های بیشتری برای انتقال بارهای کاری به SageMaker پشتیبانی می کند. کد منبع باز است و ما از مشارکت های انجمن از طریق درخواست ها و مشکلات استقبال می کنیم.

اتمام مخزن GitHub برای کاوش بیشتر در مورد استفاده از SageMaker Migration Toolkit، و همچنین با ارائه نمونه‌ها یا درخواست‌های ویژگی برای افزودن به پروژه، راحت باشید!


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

زمان استقرار مدل های خود را در Amazon SageMaker برای آزمایش هوش داده PlatoBlockchain کاهش دهید. جستجوی عمودی Ai.کریت تاداکا یک معمار ML Solutions است که در تیم Amazon SageMaker Service SA کار می کند. قبل از پیوستن به AWS، کریت زمانی را در استارت‌آپ‌های هوش مصنوعی در مراحل اولیه کار می‌کرد و پس از آن مدتی را در مشاوره در نقش‌های مختلف در تحقیقات هوش مصنوعی، MLOps و رهبری فنی می‌گذراند.

زمان استقرار مدل های خود را در Amazon SageMaker برای آزمایش هوش داده PlatoBlockchain کاهش دهید. جستجوی عمودی Ai.رام وجیراجو یک معمار ML با تیم خدمات SageMaker است. او بر کمک به مشتریان در ساخت و بهینه سازی راه حل های AI/ML خود در Amazon SageMaker تمرکز می کند. او در اوقات فراغت خود عاشق سفر و نوشتن است.

تمبر زمان:

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