Скоротіть час, витрачений на розгортання ваших моделей в Amazon SageMaker для тестування PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Скоротіть час, витрачений на розгортання ваших моделей в Amazon SageMaker для тестування

Науковці даних часто навчають свої моделі локально та шукають відповідну службу хостингу для розгортання своїх моделей. На жаль, немає жодного встановленого механізму чи посібника для розгортання попередньо навчених моделей у хмарі. У цій публікації ми розглянемо розгортання навчених моделей Amazon SageMaker хостинг, щоб скоротити час розгортання.

SageMaker — це повністю керований сервіс машинного навчання (ML). За допомогою SageMaker ви можете швидко створювати та навчати моделі ML і безпосередньо розгортати їх у готовому до виробництва середовищі. Крім того, вам не потрібно керувати серверами. Ви отримуєте інтегроване середовище для ноутбуків Jupyter із легким доступом до ваших джерел даних. Ви можете проводити аналіз даних, навчати свої моделі та тестувати їх за допомогою власних алгоритмів або використовувати надані SageMaker алгоритми ML, оптимізовані для ефективної роботи з великими наборами даних, розкиданими на кількох машинах. Навчання та хостинг оплачуються за хвилини використання без мінімальних комісій і без попередніх зобов’язань.

Огляд рішення

Науковці даних іноді тренують моделі локально за допомогою своєї IDE і надсилають ці моделі команді інженерів ML для розгортання або просто запускають прогнози локально на потужних машинах. У цій публікації ми представляємо бібліотеку Python, яка спрощує процес розгортання моделей у SageMaker для хостинг на кінцевих точках реального часу або без сервера.

Ця бібліотека Python надає дослідникам обробки даних простий інтерфейс для швидкого початку роботи з SageMaker без необхідності знати будь-які низькорівневі функції SageMaker.

Якщо у вас є моделі, навчені локально за допомогою вашої бажаної IDE, і ви хочете скористатися перевагами масштабу хмари, ви можете використовувати цю бібліотеку для розгортання своєї моделі в SageMaker. Завдяки SageMaker, окрім усіх переваг масштабування хмарної платформи ML, ви маєте доступ до спеціально створених інструментів навчання (розподілене навчання, налаштування гіперпараметрів), керування експериментами, керування моделлю, виявлення зміщень, пояснення моделі та багато іншого можливості, які можуть допомогти вам у будь-якому аспекті життєвого циклу машинного навчання. Ви можете вибрати з трьох найпопулярніших фреймворків для машинного навчання: Scikit-learn, PyTorch і TensorFlow, а також вибрати потрібний тип обчислень. Параметри за замовчуванням надаються разом, щоб користувачі цієї бібліотеки могли розгортати свої моделі без необхідності приймати складні рішення чи вивчати нові концепції. У цій публікації ми покажемо вам, як розпочати роботу з цією бібліотекою та оптимізувати розгортання ваших моделей ML на хостингу SageMaker.

Бібліотеку можна знайти в с GitHub сховище.

Набір засобів міграції SageMaker

Команда SageMakerMigration клас доступний через бібліотеку Python, опубліковану на GitHub. Інструкції щодо встановлення цієї бібліотеки надаються в репозиторії; переконайтеся, що ви дотримуєтеся README, щоб правильно налаштувати ваше середовище. Після того як ви встановите цю бібліотеку, решту цієї публікації розповідається про те, як ви можете нею користуватися.

Команда SageMakerMigration клас складається з високорівневих абстракцій над API SageMaker, які значно скорочують кроки, необхідні для розгортання вашої моделі в 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-Learn конкретно контейнери. 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

Команда 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 Виклик Boto3 API.

Висновок

Мета проекту SageMaker Migration Toolkit — полегшити науковцям обробки даних вбудовування своїх моделей у SageMaker, щоб скористатися перевагами хмарних висновків. Репозиторій продовжуватиме розвиватися та підтримуватиме більше варіантів для перенесення робочих навантажень у SageMaker. Код є відкритим, і ми вітаємо внески спільноти через запити на підключення та проблеми.

Від'їзд GitHub сховище щоб дізнатися більше про використання SageMaker Migration Toolkit, а також не соромтеся надсилати приклади або запити щодо функцій для додавання до проекту!


Про авторів

Скоротіть час, витрачений на розгортання ваших моделей в Amazon SageMaker для тестування PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Кіріт Тадака є архітектором рішень ML, який працює в команді Amazon SageMaker Service SA. До того, як приєднатися до AWS, Кіріт працював у стартапах на ранніх стадіях штучного інтелекту, а потім деякий час консультував у різних сферах досліджень штучного інтелекту, MLOps і технічного керівництва.

Скоротіть час, витрачений на розгортання ваших моделей в Amazon SageMaker для тестування PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Рам Вегіражу є архітектором ML у команді SageMaker Service. Він зосереджується на допомозі клієнтам створювати й оптимізувати свої рішення AI/ML на Amazon SageMaker. У вільний час любить подорожувати та писати.

Часова мітка:

Більше від AWS Машинне навчання