AWS Sagemaker:
AWS SageMaker — это полностью управляемый сервис, который предоставляет разработчикам и специалистам по данным инструменты для создания, обучения и развертывания моделей машинного обучения в любом масштабе. Он позволяет пользователям выбирать и настраивать алгоритмы машинного обучения, управлять экспериментами и отслеживать их, а также развертывать модели в рабочей среде различными способами, включая бессерверное и контейнерное развертывание.
SageMaker также включает встроенные функции для маркировки данных, настройки моделей и мониторинга моделей, помогающие оптимизировать производительность и точность моделей машинного обучения. Кроме того, он интегрируется с другими сервисами AWS, такими как Amazon S3 и Amazon Athena, для оптимизации рабочего процесса машинного обучения.
В целом SageMaker упрощает процесс машинного обучения и позволяет предприятиям быстро разрабатывать и развертывать высококачественные модели машинного обучения, не требуя обширных знаний в области управления инфраструктурой или алгоритмов машинного обучения.
Сейчас мы увидим, как обучить, протестировать и развернуть модель машинного обучения с помощью AWS Sagemaker (используя бесплатные ресурсы шины).
Шаги включают
- Создание экземпляра блокнота SageMaker
- Подготовьте данные
- Обучите модель учиться на данных
- Разверните модель
- Оцените производительность вашей модели машинного обучения
В целях обучения мы будем использовать Набор банковских маркетинговых данных. Этот сбор данных включает подробную информацию о демографии клиентов, реакции на маркетинговые кампании и внешние переменные. Для вашего удобства данные пронумерованы, а в столбце набора данных указано, подписался ли клиент на услугу, предоставляемую банком.
Шаг 1:
Вход в Консоль управления AWS
Ссылка: https://aws.amazon.com/console/
Войдите в свою учетную запись или создайте, а затем войдите в систему как пользователь Root.
Затем в меню поиска найдите Amazon SageMaker.
Измените регион на Западная часть США (Орегон) (вы можете использовать другие регионы, также это зависит от требований к задержке и доступности сервисов AWS, которые вы планируете использовать).
Шаг 2. Создание экземпляра Notebook в AWS SageMaker.
Прокрутите вправо и выберите Блокнот → Экземпляр блокнота → Создать экземпляр блокнота.
Имя экземпляра Notebook: укажите уникальное имя проекта
Тип экземпляра Notebook: ml.t2.medium (зависит от использования)
Упругий вывод, оставьте значение по умолчанию "Нет".
Идентификатор платформы, оставьте значение по умолчанию.
Теперь создайте роль IAM
Выберите «Создать новую роль» в разделе «Роль IAM» в разделе «Разрешения и шифрование», затем выберите «Создать роль».
Затем выберите любую корзину S3 и нажмите «Создать роль».
Затем оставьте все настройки как есть и нажмите «Создать экземпляр блокнота».
Шаг 3: Подготовка данных
Выберите «Открыть», откройте Jupyter, а затем в Jupyter выберите «Создать», а затем выберите «conda_python3».
После создания экземпляра блокнота измените имя на изображении ниже: «Развертывание проекта машинного обучения в AWS Sagemaker».
Теперь мы импортируем необходимые библиотеки.
# import libraries import boto3, re, sys, math, json, os, sagemaker, urllib.request from sagemaker import get_execution_role import numpy as np import pandas as pd import matplotlib.pyplot as plt from IPython.display import Image from IPython.display import display from time import gmtime, strftime from sagemaker.predictor import csv_serializer # Define IAM role role = get_execution_role() prefix = 'sagemaker/DEMO-xgboost-dm' my_region = boto3.session.Session().region_name # set the region of the instance # this line automatically looks for the XGBoost image URI and builds an XGBoost container. xgboost_container = sagemaker.image_uris.retrieve("xgboost", my_region, "latest") print("Success - the MySageMakerInstance is in the " + my_region + " region. You will use the " + xgboost_container + " container for your SageMaker endpoint.")
Теперь нам нужно создать корзину S3 для хранения наших данных, приведенный ниже код поможет вам создать корзину S3 с помощью кода.
bucket_name = 'mlprojectmitaoe' # <--- CHANGE THIS VARIABLE TO A UNIQUE NAME FOR YOUR BUCKET s3 = boto3.resource('s3') try: if my_region == 'us-east-1': s3.create_bucket(Bucket=bucket_name) else: s3.create_bucket(Bucket=bucket_name, CreateBucketConfiguration={ 'LocationConstraint': my_region }) print('S3 bucket created successfully') except Exception as e: print('S3 error: ',e)
Вывод приведенного выше кода
С помощью этого кода данные будут загружены в наш экземпляр SageMaker и загружены во фрейм данных.
try: urllib.request.urlretrieve ("https://d1.awsstatic.com/tmt/build-train-deploy-machine-learning-model-sagemaker/bank_clean.27f01fbbdf43271788427f3682996ae29ceca05d.csv", "bank_clean.csv") print('Success: downloaded bank_clean.csv.') except Exception as e: print('Data load error: ',e) try: model_data = pd.read_csv('./bank_clean.csv',index_col=0) print('Success: Data loaded into dataframe.') except Exception as e: print('Data load error: ',e)
Теперь мы перемешаем и разделим данные на обучающие и тестовые данные.
train_data, test_data = np.split(model_data.sample(frac=1, random_state=1729), [int(0.7 * len(model_data))]) print(train_data.shape, test_data.shape)
Данные обучения (70% клиентов) используются во время обучения модели, а остальные (30% клиентов), которые используются в качестве тестовых данных, используются для оценки производительности модели.
Теперь мы будем обучать модель ML
Приведенный ниже код изменяет порядок заголовка и первого столбца обучающих данных и извлекает данные из корзины S3, необходимые для использования предварительно созданного алгоритма XGBoost в Amazon SageMaker.
pd.concat([train_data['y_yes'], train_data.drop(['y_no', 'y_yes'], axis=1)], axis=1).to_csv('train.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket_name).Object(os.path.join(prefix, 'train/train.csv')).upload_file('train.csv') s3_input_train = sagemaker.inputs.TrainingInput(s3_data='s3://{}/{}/train'.format(bucket_name, prefix), content_type='csv')
Приведенный ниже код устанавливает сеанс Amazon SageMaker, создает экземпляр модели XGBoost (оценщик) и указывает гиперпараметры для модели.
sess = sagemaker.Session() xgb = sagemaker.estimator.Estimator(xgboost_container,role, instance_count=1, instance_type='ml.m4.xlarge',output_path='s3://{}/{}/output'.format(bucket_name, prefix),sagemaker_session=sess) xgb.set_hyperparameters(max_depth=5,eta=0.2,gamma=4,min_child_weight=6,subsample=0.8,silent=0,objective='binary:logistic',num_round=100)
Код использует градиентную оптимизацию для обучения модели на экземпляре ml.m4.xlarge. Через некоторое время вы увидите создание журналов тренировок в своем блокноте Jupyter.
xgb.fit({'train': s3_input_train})
Шаг 4. Разверните модель
На этом этапе обученная модель развертывается в конечной точке, данные CSV переформатируются и загружаются, а модель выполняется для создания прогнозов.
xgb_predictor = xgb.deploy(initial_instance_count=1,instance_type='ml.m4.xlarge')
Чтобы определить, подписались ли клиенты в тестовых данных на банковский продукт или нет, вставьте предоставленный код в следующую ячейку кода и выберите «Выполнить».
from sagemaker.serializers import CSVSerializer test_data_array = test_data.drop(['y_no', 'y_yes'], axis=1).values #load the data into an array xgb_predictor.serializer = CSVSerializer() # set the serializer type predictions = xgb_predictor.predict(test_data_array).decode('utf-8') # predict! predictions_array = np.fromstring(predictions[1:], sep=',') # and turn the prediction into an array print(predictions_array.shape)
Шаг 6. Оцените производительность модели
Код ниже сравнивает фактические и прогнозируемые значения в таблице, называемой матрицей путаницы.
cm = pd.crosstab(index=test_data['y_yes'], columns=np.round(predictions_array), rownames=['Observed'], colnames=['Predicted']) tn = cm.iloc[0,0]; fn = cm.iloc[1,0]; tp = cm.iloc[1,1]; fp = cm.iloc[0,1]; p = (tp+tn)/(tp+tn+fp+fn)*100 print("\n{0:<20}{1:<4.1f}%\n".format("Overall Classification Rate: ", p)) print("{0:<15}{1:<15}{2:>8}".format("Predicted", "No Purchase", "Purchase")) print("Observed") print("{0:<15}{1:<2.0f}% ({2:<}){3:>6.0f}% ({4:<})".format("No Purchase", tn/(tn+fn)*100,tn, fp/(tp+fp)*100, fp)) print("{0:<16}{1:<1.0f}% ({2:<}){3:>7.0f}% ({4:<}) \n".format("Purchase", fn/(tn+fn)*100,fn, tp/(tp+fp)*100, tp))
Шаг 6: Очистите все ресурсы.
На этом шаге вы отключаете ресурсы, которые использовали в этом блоге.
xgb_predictor.delete_endpoint(delete_endpoint_config=True)
Удалите свои тренировочные артефакты и корзину S3.
bucket_to_delete = boto3.resource('s3').Bucket(bucket_name) bucket_to_delete.objects.all().delete()
После этого шага вы можете остановить и удалить блокнот SageMaker.
Заключение
Amazon SageMaker упрощает процесс создания, обучения, развертывания и оценки моделей машинного обучения. Он предоставляет удобный способ доступа к обучающим данным, выбора наиболее подходящего алгоритма и платформы для вашего приложения и управления базовой инфраструктурой. Это позволяет обучать модели в больших масштабах, даже с петабайтами данных.
Спасибо за чтение !!
Ссылка на набор данных и код: https://github.com/SanchitAgarkar/Deploy-Machine-Learning-Project-on-AWS-Sagemaker.
Ссылка для введения в машинное обучение:
https://medium.com/@sanchitsagarkar03/introduction-to-machine-learning-e5291029a2ce
Ссылка для машинного обучения: благо или проклятие?
https://medium.com/@sanchitsagarkar03/machine-learning-boon-or-curse-a32a7006aab
Ссылка на автономный и онлайн-режим обучения Модель машинного обучения / глубокого обучения с использованием графического процессора и процессора.