Обученная модель сама по себе является tar-файлом, содержащим значения веса моделей, и не производит никаких действий. Чтобы воспользоваться моделью и получить прогнозы, необходимо ее развернуть.
Развернуть модель в Amazon SageMaker можно двумя способами. Это зависит от того, как требуется формировать логические выводы.
- Чтобы получать по одному выводу за раз, настройте постоянную конечную точку с помощью сервисов хостинга Amazon SageMaker.
- Чтобы получать логические выводы на основании полного набора данных, используйте Amazon SageMaker Batch Transform.
В этом курсе предоставляются оба способа, и вы можете выбрать тот, который больше подходит для вашего примера внедрения.
В случае использования сервисов хостинга Amazon SageMaker конечная точка HTTPs в режиме реального времени располагается на инстансе Amazon EC2, которому можно передать нагрузку и получить логические выводы.
Во время развертывания модели вызывается метод deploy объекта sagemaker.estimator.Estimator. Во время вызова метода deploy указывается количество и тип инстансов МО, которые требуется использовать для хостинга конечной точки.
Скопируйте и вставьте следующий код и нажмите Исполнить, чтобы развернуть модель.
Метод deploy создает развертываемую модель, настраивает конечную точку в сервисах хостинга Amazon SageMaker и запускает ее для хостинга модели.
Чтобы получить логические выводы от конечной точки, необходимо убедиться, что входная нагрузка сериализуется в формате, который способна прочитать обученная модель, а выходные логические выводы десериализуются в удобочитаемый формат для человека. В следующем фрагменте кода используются csv_serializer и json_deserializer, которые передают данные в формате CSV (как векторы) в модель, чтобы получить вывод в формате JSON.
Скопируйте приведенный ниже код, вставьте его в ячейку кода и нажмите Исполнить.
Затем извлеките векторы тем для обучающих данных, которые будут использоваться в модели k-NN.
Скопируйте приведенный ниже код, вставьте его в новую ячейку кода и нажмите Исполнить.
predictions = []
for item in np.array(vectors.todense()):
np.shape(item)
results = ntm_predictor.predict(item)
predictions.append(np.array([prediction['topic_weights'] for prediction in results['predictions']]))
predictions = np.array([np.ndarray.flatten(x) for x in predictions])
topicvec = train_labels[newidx]
topicnames = [categories[x] for x in topicvec]
Готово! Теперь можно ознакомиться с выводом модели.
При использовании пакетного преобразования можно получать логические выводы на основании пакета данных за раз. Amazon SageMaker создает необходимую вычислительную инфраструктуру и освобождает ее после завершения задания.
Код пакетного преобразования создает объект sagemaker.transformer.Transformer из модели темы. Затем он вызывает метод transform этого объекта, чтобы создать задание преобразования. Во время создания объекта sagemaker.transformer.Transformer необходимо указать количество и тип инстансов, которые требуется использовать, чтобы выполнить задание пакетного преобразования, и расположение в Amazon S3, в котором нужно сохранить логические выводы.
Чтобы запустить задание по формированию логических выводов как пакетное, скопируйте приведенный ниже код, вставьте его в соответствующую ячейку и нажмите Исполнить.
np.savetxt('trainvectors.csv',
vectors.todense(),
delimiter=',',
fmt='%i')
batch_prefix = '20newsgroups/batch'
train_s3 = sess.upload_data('trainvectors.csv',
bucket=bucket,
key_prefix='{}/train'.format(batch_prefix))
print(train_s3)
batch_output_path = 's3://{}/{}/test'.format(bucket, batch_prefix)
ntm_transformer = ntm.transformer(instance_count=1,
instance_type ='ml.m4.xlarge',
output_path=batch_output_path
)
ntm_transformer.transform(train_s3, content_type='text/csv', split_type='Line')
ntm_transformer.wait()
После завершения задания преобразования можно использовать следующий код, чтобы загрузить выходные данные в локальный блокнот для проверки.
Готово! Модель преобразовала каждый документ в обучающие векторы с размерностью NUM_TOPICS. Теперь можно изучить модель темы.