Как развернуть модели машинного обучения Deep Learning ML DL на aws без серверов? - PullRequest
0 голосов
/ 13 июля 2020

Мы пытаемся развернуть модель глубокого обучения как услугу для лямбда aws. Мы используем корзины для хранения модели, репозиторий кода и другую корзину в качестве триггера функции. Мы создали виртуальную среду локально и пытаемся развернуть ее на aws в соответствии с конфигурацией в файле .yml. Файл yml содержит информацию о том, где начать выполнение, и в каких сегментах развернуть код и из каких сегментов получить модель (которая отделена от остального кода). Размер пакета превышает 2 ГБ для другого пакета, поэтому метод не работает из-за большого размера. Мы также пытались поместить zip-файл кода вместе со всеми зависимостями в корзину S3, но aws не позволяет связать большие файлы из s3 с лямбда-функцией. У нас есть обученная модель и все зависимости. Наша цель - разместить этот пакет как службу на основе экземпляра (без сервера). Это проект по обнаружению изображений. Мы используем sh наших клиентов, чтобы иметь доступ к нему через страницу html, отправлять запросы (ИЗОБРАЖЕНИЯ) и получать результаты через них.

Ниже приведен файл main.py

import boto3 import os import sys import uuid import json from urllib.parse import unquote_plus из PIL import Image import PIL.Image import make_prediction # s3_client = boto3.resource ('s3')

# BUCKET_NAME = ' triggerput '

def lambda_handler (event, context): s3_client = boto3.client (' s3 ')

    bucket = event['Records'][0]['s3']['bucket']['name']
    key = unquote_plus(event['Records'][0]['s3']['object']['key'])
    print("Bucket: ",bucket)
    print("key :",key)
    tmpkey = key.replace('/', '')
    download_path = '/tmp/{}{}'.format(uuid.uuid4(),key)
    print('tmpkey',tmpkey)
    print('download_path',download_path)
    s3_client.download_file(bucket, tmpkey, download_path)
    result = make_prediction.predict(download_path)
    return {
            'statusCode' : 200,
            'body' : result
            }


 

Ниже приведен файл serverless.yml

## ########################################### service: плагины тестового развертывания:

  • serverless- python -requirements custom: pythonRequirements: slim: true

provider: name: aws runtime: python3 .6 region: us-east-2 deploymentBucket : name: "triggerputsourcecode" iamRoleStatements:

  • Эффект: Разрешить действие:
    • Ресурс s3.GetObject: «arn: aws: s3 ::: triggerputsourcecode / *»

функции: aws -lambda: name: lambda_handler description: развернуть обученную модель в лямбда-выражении с использованием бессерверной роли: "arn: aws: iam :: 668425647453: role / service-role / S3putRole "обработчик: main.lambda_handler bucket: triggerput события:

  • http: PUT / прогноз ####################### ##################

введите описание изображения здесь

...