Передает ли Sagemaker какие-либо данные, кроме самой модели, между этапами обучения и прогнозирования? - PullRequest
0 голосов
/ 13 февраля 2020

Я строю модель обучения Scikit на Sagemaker.

Я хотел бы сослаться на данные, использованные при обучении, в моем predict_fn. (Вместо индексов, возвращаемых из NNS, я хотел бы вернуть имена и данные каждого соседа.)

Я знаю, что это можно сделать записью / чтением из S3, как в https://aws.amazon.com/blogs/machine-learning/associating-prediction-results-with-input-data-using-amazon-sagemaker-batch-transform/, но было интересно, есть ли более элегантные решения.

Существуют ли другие способы сделать данные, используемые в обучающем задании, доступными для функции прогнозирования?

Редактировать: Использование совет из принятого решения Я смог передать данные в виде диктанта.

model = nn.fit(train_data)

model_dict = {
   "model": model,
   "reference": train_data
}

joblib.dump(model_dict, path)

вести_фн:

def predict_fn(input_data, model_dict):
   model = model_dict["model"]
   reference = model_dict["reference"]

1 Ответ

1 голос
/ 15 февраля 2020

вы можете принести в экземпляр конечной точки (либо в model.tar.gz, либо через более позднюю загрузку) файл, хранящий отображение между индексами и именами записей; таким образом, вы можете переводить идентификаторы соседей для записи имен на лету в predict_fn или в output_fn. Для гигантских индексов это отображение (наряду с другими метаданными) может быть и во внешней базе данных (например, DynamoDB, Redis)

ссылка, которую вы присоединяете (SageMaker Batch Transform), представляет собой совершенно другую концепцию; он предназначен для создания эфемерного парка машин, которые запускают одноразовую задачу прогнозирования с входными данными в S3 и результатами, записанными в s3. Похоже, ваш вопрос относится к альтернативному постоянному режиму развертывания конечной точки в реальном времени.

...