Как сохранить модель DDPG с помощью Coach в Sagemaker - PullRequest
0 голосов
/ 11 октября 2019

Я работал с примерами AWS по следующей ссылке:

https://github.com/awslabs/amazon-sagemaker-examples/tree/master/reinforcement_learning

Я пытался создать собственное решение, использующее алгоритм DDPG. Однако кое-что, что я заметил, заключается в том, что зависимости в каталоге common для примеров Sagemaker RL, в частности файл coach_launcher.py, относятся к самим примерам. Это означает, что я не могу сохранить модель DDPG и, следовательно, не могу развернуть ее

Я попытался просмотреть выходные данные S3, однако она не содержит никакой информации на графике, которую необходимо развернуть. На самом деле я не уверен, что я вообще должен искать. Я просто знаю, что мне нужно сохранить модель, чтобы сделать ее развертываемой.

Если я закомментирую save_model = 1, модель обучается с помощью инструментария TENSORFLOW

Я попытался изменить структуру на MXNET, т.е. RToolkit.MXNET ниже, но, очевидно, он не работает с DDPG, и я получаю множество ошибок

Когда вы запускаете .fit() с оценкой ниже:

estimator = RLEstimator(entry_point="train_Coach.py",
                        source_dir='.',
                        dependencies=["sagemaker_rl"],

                        toolkit=RLToolkit.COACH,
                        toolkit_version='0.11.0',
                        framework=RLFramework.TENSORFLOW,
                        role=role,
#                         train_instance_type="ml.m4.4xlarge",
                        train_instance_type='local',


                        train_instance_count=1,
                        output_path=s3_output_path,
                        base_job_name="ddpgtest",
                        hyperparameters = {
                          "RLCOACH_PRESET": "presetsDDPG",
#                           "discount": 0.9,
#                           "evaluation_episodes": 8,
#                           "improve_steps": 1000,
                          "save_model": 1
                        }
                    )

estimator.fit(wait=True)

Модель работаети проходит обучение, но как только он достигает конца, он ломается и не может сохранить модель со следующей ошибкой:

algo-1-vsly6_1  | Traceback (most recent call last):
algo-1-vsly6_1  |   File "train_Coach.py", line 63, in <module>
algo-1-vsly6_1  |     MyLauncher.train_main()
algo-1-vsly6_1  |   File "/opt/ml/code/sagemaker_rl/coach_launcher.py", line 256, in train_main
algo-1-vsly6_1  |     trainer._save_tf_model()
algo-1-vsly6_1  |   File "train_Coach.py", line 34, in _save_tf_model
algo-1-vsly6_1  |     {'main_level/agent/actor/online/network_0/': 'main_level/agent/actor/online/network_0'})
algo-1-vsly6_1  |   File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/checkpoint_utils.py", line 187, in init_from_checkpoint
algo-1-vsly6_1  |     _init_from_checkpoint, ckpt_dir_or_file, assignment_map)
algo-1-vsly6_1  |   File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/distribute.py", line 1040, in merge_call
algo-1-vsly6_1  |     return self._merge_call(merge_fn, *args, **kwargs)
algo-1-vsly6_1  |   File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/distribute.py", line 1048, in _merge_call
algo-1-vsly6_1  |     return merge_fn(self._distribution_strategy, *args, **kwargs)
algo-1-vsly6_1  |   File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/training/checkpoint_utils.py", line 268, in _init_from_checkpoint
algo-1-vsly6_1  |     tensor_name_in_ckpt, ckpt_dir_or_file
algo-1-vsly6_1  | ValueError: Tensor main_level/agent/actor/online/network_0/global_step (global_step in main_level/agent/actor/online/network_0/) is not found in /opt/ml/output/data/checkpoint checkpoint
algo-1-vsly6_1  | 2019-10-09 13:51:41,225 sagemaker-containers ERROR    ExecuteUserScriptError:
algo-1-vsly6_1  | Command "/usr/bin/python train_Coach.py --RLCOACH_PRESET presetsDDPG --save_model 1"
tmp90opiuok_algo-1-vsly6_1 exited with code 1
Aborting on container exit...

Я подозреваю, что проблема связана с картами назначения функции tf.get_default_graph().get_tensor_by_name. Так какие же тензоры мы должны импортировать, когда речь заходит о DDPG?

При работе с алгоритмами DQN и PPO я ожидал, что модель будет сохранена в S3 и будет развернута. Я уже попробовал это, и я смог предсказать некоторые тестовые случаи для моей модели. Это потому, что пример, который я использовал, был направлен на развертывание этих двух моделей.

Проблема Github: https://github.com/awslabs/amazon-sagemaker-examples/issues/896

...