Записная книжка Amazon SageMaker rl_deepracer_coach_robomaker — запись журнала CSV на S3 после моделирования

#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']
  

Экспорт является асинхронным вызовом, поэтому дайте ему несколько минут для загрузки. Если вы можете распечатать идентификатор задачи, то экспорт завершен.