Как построить историю показателей обучения в Sagemaker .py training

Я запускаю блокнот в Sagemaker и использую файл .py для обучения:

tf_estimator = TensorFlow(entry_point='train_cnn.py', 
                          role=role,
                          train_instance_count=1, 
                          train_instance_type='local',  #We use the local instance
                          framework_version='1.12', 
                          py_version='py3',
                          script_mode=True,
                          hyperparameters={'epochs': 1} #One epoch just to check everything is ok
                         )

#We fit the model with the data
tf_estimator.fit({'training': training_input_path, 'validation': validation_input_path})

В файле train_cnn я использую стандартный CNN. Однако последняя часть файла указывает на то, что историю обучения можно построить следующим образом:

model.compile(loss=tensorflow.keras.losses.binary_crossentropy,
            optimizer=Adam(lr=lr),
            metrics=['accuracy'])

snn=model.fit(train_images, train_labels, batch_size=batch_size,
            validation_data=(test_images, test_labels),
            epochs=epochs,
            verbose=2)

score = model.evaluate(test_images, test_labels, verbose=0)
print('Validation loss    :', score[0])
print('Validation accuracy:', score[1])
   
plt.figure(0)
plt.plot(snn.history['acc'], 'r')
plt.plot(snn.history['val_acc'], 'g')
plt.xticks(np.arange(0, 11, 2.0))  
plt.rcParams['figure.figsize'] = (8, 6)  
plt.xlabel("Num of Epochs")  
plt.ylabel("Accuracy")  
plt.title("Training Accuracy")  
plt.legend(['train', 'validation'])
plt.figure(1)  
plt.plot(snn.history['loss'],'r')  
plt.plot(snn.history['val_loss'],'g')  
plt.xticks(np.arange(0, 11, 2.0))  
plt.rcParams['figure.figsize'] = (8, 6)  
plt.xlabel("Num of Epochs")  
plt.ylabel("Loss")  
plt.title("Training Loss vs Validation Loss")  
plt.legend(['train','validation'])
plt.show()  

Однако ничего не отображается, и тренировка проходит успешно. Может потому, что выполняется в другом экземпляре. Здесь отображаемая информация:

Epoch 1/1
algo-1-tn2vd_1  |  - 2s - loss: 0.8858 - acc: 0.4615 - val_loss: 3.0894 - val_acc: 0.5000
algo-1-tn2vd_1  | Validation loss    : 3.0894343852996826
algo-1-tn2vd_1  | Validation accuracy: 0.5
algo-1-tn2vd_1  | WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/saved_model/simple_save.py:85: calling SavedModelBuilder.add_meta_graph_and_variables (from tensorflow.python.saved_model.builder_impl) with legacy_init_op is deprecated and will be removed in a future version.
algo-1-tn2vd_1  | Instructions for updating:
algo-1-tn2vd_1  | Pass your op to the equivalent parameter main_op instead.
algo-1-tn2vd_1  | 2020-07-12 00:42:23,538 sagemaker-containers INFO     Reporting training SUCCESS
tmpuzys_qpc_algo-1-tn2vd_1 exited with code 0
Aborting on container exit...
===== Job Complete =====

Есть ли способ отобразить историю задания обучения? Например, как на следующем рисунке введите здесь описание изображения


person jessica    schedule 12.07.2020    source источник


Ответы (1)


Учебное задание SageMaker в локальной среде фактически выполняется внутри контейнера Docker, изолированного от ядра Python, на котором выполняется ваша записная книжка. Таким образом, plt.show() в скрипте train_cnn.py на самом деле не направляется в пользовательский интерфейс записной книжки так же, как выполнение этой команды непосредственно из записной книжки.

Вместо использования plt.show() рассмотрите возможность использования plt.savefig() для вывода графика на изображение:

plt.savefig("training_results.png")  

После закрытия контейнера обучения SageMaker заархивирует все выходные артефакты (включая сюжет) и отправит их на S3 в вашем сценарии обучения. В качестве альтернативы вы можете загрузить график прямо на S3 — см. and-boto">python — загрузка графика из памяти в s3 с использованием matplotlib и boto для примера.

В качестве примечания: вы рассматривали возможность использования TensorBoard? Он может предложить лучший опыт для просмотра результатов сценария обучения, и SageMaker должен иметь первоклассную интеграцию, чтобы упростить его включение. Взгляните на run_tensorboard_locally аргумент.

person Yoav Zimmerman    schedule 13.07.2020