#amazon-s3 #reinforcement-learning #amazon-sagemaker
#amazon-s3 #обучение с подкреплением #amazon-sagemaker
Вопрос:
Я создал свой первый экземпляр записной книжки на Amazon SageMaker. Затем я открыл записную книжку Jupyter и использовал пример SageMaker в разделе Обучение с подкреплением rl_deepracer_coach_robomaker.ipynb
. Вопрос адресован в основном тем, кто знаком с этой записной книжкой.
Там вы можете запустить процесс обучения и приложение для моделирования RoboMaker, чтобы начать процесс обучения автономному автомобилю.
При запуске задания моделирования можно получить доступ к файлу журнала, который по умолчанию отображается в консоли CloudWatch. Некоторая информация, которая появляется в файле журнала, может быть изменена в скрипте deepracer_env.py
в /src/robomaker/environments
подкаталоге.
Я хотел бы «обойти» консоль CloudWatch, сохранив информацию о файле журнала, такую как эпизод, общая награда, количество шагов, координаты автомобиля, рулевое управление и дроссельную заслонку и т.д. во фрейме данных или csv-файле, который будет записан где-нибудь на S3 в конце моделирования.
Нечто подобное было сделано в основной записной книжке rl_deepracer_coach_robomaker.ipynb
для построения показателей для тренировочного задания, а именно вознаграждения за обучение за эпизод. Там видно, что
csv_file_name = "worker_0.simple_rl_graph.main_level.main_level.agent_0.csv"
вызывается из S3, но я просто не могу найти, где генерируется этот csv для имитации процесса.
Ответ №1:
Вы можете создать csv-файл в /opt/ml/output/intermediate/
папке, и файл будет сохранен в следующем каталоге:
s3://<s3_bucket>/<s3_prefix>/output/intermediate/<csv_file_name>
Однако мне не ясно, где именно вы будете создавать такой файл. DeepRacer notebook использует две машины, одну для обучения (экземпляр SageMaker) и одну для моделирования (экземпляр RoboMaker). Описанный выше метод будет работать только в экземпляре SageMaker, но многое из того, что вы хотели бы зарегистрировать, например («Общее вознаграждение» за эпизод), на самом деле находится в экземпляре RoboMaker. Для экземпляров RoboMaker функция промежуточной папки не существует, и вам придется сохранять файл в s3 самостоятельно, используя библиотеку boto. Вот пример того, как это делается:https://qiita.com/hengsokvisal/items/329924dd9e3f65dd48e7
Есть способ загрузить журналы CloudWatch в файл. Таким образом, вы можете просто распечатать, сохранить журналы и проанализировать их. Предполагая, что вы выполняете из ячейки записной книжки:
STREAM_NAME= <your stream name as given by RoboMaker CloudWatch logs>
task = !aws logs create-export-task --task-name "copy_deepracer_logs" --log-group-name "/aws/robomaker/SimulationJobs" --log-stream-name-prefix $STREAM_NAME --destination "<s3_bucket>" --destination-prefix "<s3_prefix>" --from <unix timestamp in milliseconds> --to <unix timestamp in milliseconds>
task_id = json.loads(''.join(task))['taskId']
Экспорт является асинхронным вызовом, поэтому дайте ему несколько минут для загрузки. Если вы можете распечатать идентификатор задачи, то экспорт завершен.