Я работал с примерами 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