Записная книжка Amazon SageMaker rl_deepracer_coach_robomaker - запись журнала CSV на S3 после моделирования - PullRequest
0 голосов
/ 22 марта 2019

Я создал свой первый экземпляр ноутбука на 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 Ответ

0 голосов
/ 15 мая 2019

Вы можете создать CSV-файл в папке /opt/ml/output/intermediate/, и этот файл будет сохранен в следующем каталоге:

s3://<s3_bucket>/<s3_prefix>/output/intermediate/<csv_file_name>

Однако мне не ясно, где именно вы будете создавать такиефайл.В ноутбуке DeepRacer используются две машины: одна для обучения (экземпляр 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']

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

...