Я пытаюсь обучить Tensorflow Estimator и загрузить созданные артефакты модели в S3.Учебное задание успешно завершено, но мы получаем предупреждение о том, что в пути / opt / ml / model не сохранен артефакт модели. Ваше учебное задание не сохранит файлы модели на S3. "Это становится проблемой, когда мы пытаемся развернуть модель в SageMaker.Насколько я понимаю, объект Estimator автоматически сохраняет артефакты модели в / opt / ml / model.
Основная идея состоит в том, чтобы проводить обучение, развертывание и тестирование через sagemaker.У нас есть сценарий entry.py, обучающий сценарий .py и фактическая записная книжка sagemaker, которая создает экземпляр объекта Estimator
#BEGINNING OF TRAINING SCRIPT
# my_custom_code_3.py
import tensorflow as tf
import numpy as np
# import sagemaker
# from sagemaker.predictor import csv_serializer
# from pyathena import connect
# from pyathena.pandas_cursor import PandasCursor
def train_model(init_learn):
b = tf.Variable([.3], tf.float32, name="b")
W = tf.Variable([-.3], tf.float32, name="w")
x = tf.placeholder(tf.float32, name="x")
y = tf.placeholder(tf.float32, name="y")
X_train = [4, 0, 12]
Y_train = [5, 9, -3]
linear_model = W*x + b # y = W*x + b; 5= -1*4 + 9; 9=1*0 +
9; -3 = -1*12 + 9
model_delta = tf.square(linear_model - y)
loss = tf.reduce_sum(model_delta)
optimizer =
tf.train.GradientDescentOptimizer(init_learn).minimize(loss)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(1000):
feed_dict_batch = {x: X_train, y: Y_train}
sess.run(optimizer, feed_dict=feed_dict_batch)
W_value, b_value = sess.run([W, b])
print(W_value)
print(b_value)
if __name__ == '__main__':
train_model(0.001)
# END OF TRAINING SCRIPT
# BEGINNING OF ENTRY.PY
# entry.py
import argparse, os
from my_custom_code_3 import train_model
if __name__ == '__main__':
parser = argparse.ArgumentParser(
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument(
'--model_dir',
type=str,
default=os.environ['SM_MODEL_DIR'])
parser.add_argument(
'--init_learn',
type=float)
args = parser.parse_args()
train_model(args.init_learn)
# END OF ENTRY.PY
# BEGINNING OF SAGEMAKER_RUN3.ipynb
import sagemaker
from sagemaker.tensorflow import TensorFlow
hyperparameters = {
'init_learn': 0.001
#'model_dir': 's3://stats-interns/tfmodel'
}
role = sagemaker.get_execution_role()
source_dir = 's3://stats-interns/my-test-3/my-test-3.tar.gz'
estimator = TensorFlow(
entry_point='entry-3.py',
source_dir=source_dir,
model_dir='s3://tfmodel',
#change to local to test locally first, install docker-compose
train_instance_type='ml.m5.large',
train_instance_count=1,
hyperparameters=hyperparameters,
role=role,
py_version='py3',
framework_version='1.12.0',
script_mode=True)
estimator.fit()
Я ожидал, что артефакты будут сохранены в / opt / ml / model, а затем загружены вуказанная директория s3, s3: // tfmodel, но вместо этого ничего не копируется, и я получаю предупреждение «Артефакт модели не сохранен в пути / opt / ml / model. Ваша учебная работа не будет сохранять никакие файлы модели в S3.«