Сократите время, затрачиваемое на развертывание моделей в Amazon SageMaker для тестирования PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Сократите время, затрачиваемое на развертывание моделей в Amazon SageMaker для тестирования.

Специалисты по данным часто обучают свои модели локально и ищут подходящий хостинг для развертывания своих моделей. К сожалению, не существует единого установленного механизма или руководства по развертыванию предварительно обученных моделей в облаке. В этом посте мы рассмотрим развертывание обученных моделей для Создатель мудреца Амазонки хостинг, чтобы сократить время развертывания.

SageMaker — это полностью управляемая служба машинного обучения (ML). С помощью SageMaker вы можете быстро создавать и обучать модели машинного обучения и напрямую развертывать их в готовой к работе размещенной среде. Кроме того, вам не нужно управлять серверами. Вы получаете интегрированную среду ноутбука Jupyter с легким доступом к источникам данных. Вы можете выполнять анализ данных, обучать свои модели и тестировать их с помощью собственных алгоритмов или использовать предоставленные SageMaker алгоритмы машинного обучения, оптимизированные для эффективной работы с большими наборами данных, разбросанными по нескольким компьютерам. Обучение и хостинг оплачиваются по минутам использования, без минимальной платы и предварительных обязательств.

Обзор решения

Специалисты по данным иногда обучают модели локально с помощью своей IDE и либо отправляют эти модели группе инженеров машинного обучения для развертывания, либо просто запускают прогнозы локально на мощных машинах. В этом посте мы представляем библиотеку Python, которая упрощает процесс развертывания моделей в SageMaker для хостинг на конечных точках в режиме реального времени или без сервера.

Эта библиотека Python предоставляет специалистам по данным простой интерфейс для быстрого начала работы с SageMaker без необходимости знать какую-либо низкоуровневую функциональность SageMaker.

Если у вас есть модели, обученные локально с помощью предпочитаемой вами IDE, и вы хотите воспользоваться преимуществами масштаба облака, вы можете использовать эту библиотеку для развертывания своей модели в SageMaker. С SageMaker, в дополнение ко всем преимуществам масштабирования облачной платформы машинного обучения, у вас есть доступ к специально разработанным инструментам обучения (распределенное обучение, настройка гиперпараметров), управлению экспериментами, управлению моделями, обнаружению смещения, объяснимости моделей и многим другим. возможности, которые могут помочь вам в любом аспекте жизненного цикла машинного обучения. Вы можете выбрать одну из трех самых популярных платформ для машинного обучения: Scikit-learn, PyTorch и TensorFlow, а также выбрать нужный тип вычислений. По умолчанию предоставляются значения по умолчанию, поэтому пользователи этой библиотеки могут развертывать свои модели без необходимости принимать сложные решения или изучать новые концепции. В этом посте мы покажем вам, как начать работу с этой библиотекой и оптимизировать развертывание моделей машинного обучения на хостинге SageMaker.

Библиотеку можно найти в Репозиторий GitHub.

Инструментарий миграции SageMaker

Ассоциация SageMakerMigration class доступен через библиотеку Python, опубликованную на GitHub. Инструкции по установке этой библиотеки находятся в репозитории; убедитесь, что вы следуете README, чтобы правильно настроить свою среду. После того, как вы установите эту библиотеку, остальная часть этого поста расскажет о том, как вы можете ее использовать.

Ассоциация SageMakerMigration class состоит из высокоуровневых абстракций API-интерфейсов SageMaker, которые значительно сокращают количество шагов, необходимых для развертывания вашей модели в SageMaker, как показано на следующем рисунке. Это предназначено для экспериментов, чтобы разработчики могли быстро приступить к работе и протестировать SageMaker. Он не предназначен для производственной миграции.

Для моделей Scikit-learn, PyTorch и TensorFlow эта библиотека поддерживает развертывание обученных моделей на конечной точке SageMaker в реальном времени или на бессерверной конечной точке. Чтобы узнать больше о параметрах логического вывода в SageMaker, см. Развертывание моделей для логического вывода.

Конечные точки реального времени и бессерверные конечные точки

Вывод в реальном времени идеально подходит для рабочих нагрузок логического вывода, в которых требуется интерактивный режим реального времени с малой задержкой. Вы можете развернуть свою модель в службах хостинга SageMaker и получить конечную точку, которую можно использовать для логического вывода. Эти конечные точки полностью управляемы и поддерживают автоматическое масштабирование.

SageMaker Serverless Inference — это специально созданный вариант вывода, который упрощает развертывание и масштабирование моделей машинного обучения. Serverless Inference идеально подходит для рабочих нагрузок, которые имеют периоды простоя между скачками трафика и допускают холодный запуск. Бессерверные конечные точки автоматически запускают вычислительные ресурсы и масштабируют их в зависимости от трафика, устраняя необходимость выбирать типы экземпляров или управлять политиками масштабирования. Это избавляет от тяжелой работы по выбору серверов и управлению ими.

В зависимости от вашего варианта использования вы можете захотеть быстро разместить свою модель в 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

Ассоциация request_body содержит данные, которые будут использоваться для создания вывода из модели, и анализируются в этой функции, чтобы они были в требуемом формате.

предсказать_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 Data Intelligence. Вертикальный поиск. Ай.Кирит Тадака — архитектор решений машинного обучения, работающий в команде Amazon SageMaker Service SA. До прихода в AWS Кирит некоторое время работал в стартапах в области искусственного интеллекта на ранних стадиях, а затем некоторое время консультировал на различных должностях в области исследований искусственного интеллекта, MLOps и технического руководства.

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

Отметка времени:

Больше от Машинное обучение AWS