Сейчас я написал несколько блогов об AWS Deep Racer, и думаю, будет справедливо сказать, что участие в соревнованиях, поощрение коллег к участию и т. д. вызывает некоторое привыкание. Мне нравится делиться знаниями, которые я приобретаю на этом пути, возможно, просто это не является моей реальной функцией вознаграждения, поскольку я все еще питаю амбиции в какой-то момент выйти в финал!

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

Я прошел то, что я считаю типичным путешествием AWS Deep Racer, от первоначальных проб и ошибок с некоторым подходом к результатам до более взвешенного подхода к просмотру журналов, чтобы лучше понять. Во время этого процесса я первоначально использовал консоль AWS Deep Racer для обучения, однако вскоре затраты начали расти до 3,50 долларов США в час.

Присоединившись к сообществу Deep Racer в Slack, которое является отличным ресурсом для получения помощи от других гонщиков, я вскоре узнал, что те, кто много тренировался, вообще не использовали сервис AWS Deep Racer. Я обнаружил, что люди, которые регулярно оказывались ближе к вершине таблицы лидеров (и даже треки, названные в их честь!) попадают в один из двух лагерей. Они либо построили свои собственные домашние установки со значительным объемом памяти и графической мощностью, либо использовали облачные виртуальные машины и развертывали соответствующие службы поверх них с помощью контейнеров.

Учитывая текущую стоимость электроэнергии в Великобритании, у меня не было желания строить домашнюю установку, и в сочетании с достаточно стабильным поступлением кредитов AWS, которые я получал от участия в программах AWS Community Builder и AWS Ambassador, я выбрал идти по маршруту EC2.

Если вы еще не знакомы с AWS Deep Racer, я настоятельно рекомендую начать с консоли. Вы получаете управляемый опыт с информацией о настройках гиперпараметров, настройках пространства действий и проверке вашей функции вознаграждения перед отправкой. Существует курс уровня AWS 200 (средний), который поможет вам начать работу. Просто будьте осторожны, сколько вы тренируетесь за 3,50 доллара в час!

После того, как вы познакомились с AWS Deep Racer и хотите провести значительный объем тренировок, не прожигая дыру в своем кошельке, пришло время рассмотреть альтернативные варианты. Хорошим местом, где можно узнать больше об обучении вне консоли AWS Deep Racer, является курс Уровень AWS 400 (Эксперт). Он проведет вас через обучение с помощью записной книжки Amazon Sagemaker и познакомит вас с файлами конфигурации, от которых вас абстрагирует консоль AWS Deep Racer.

Несмотря на то, что использование Sagemaker обходится дешевле, чем консоль AWS Deep Racer, существуют более экономичные способы сделать это, поэтому считайте, что это хороший переход к Deep racer без консоли, но вы будете использовать его только временно.

Далее следует Deep Racer For Cloud, который предоставляет возможности запуска AWS Deep Racer в различных средах — AWS, Azure, GCP и локально. Он содержит полезные инструкции о том, как настроить вещи и команды для запуска и остановки обучения, а также продолжить обучение с того места, где закончилась предыдущая модель. Именно здесь в справочном руководстве по настройке вы впервые почувствуете, что, отвлекая вас от деталей, консоль AWS Deep Racer ограничивает имеющиеся у вас параметры конфигурации. Например, через Deep Racer for Cloud становятся доступными следующие опции, которые выглядят довольно полезными и недоступны через консоль:

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

DR_TRAIN_CHANGE_START_POSITION — вы можете выбрать, будет ли тренировка всегда начинаться на линии старта/финиша или будет постепенно начинаться с разных позиций на трассе.

DR_TRAIN_ALTERNATE_DRIVING_DIRECTION — вы можете выбрать, будет ли чередоваться направление движения автомобиля по трассе для каждого эпизода. Это приведет к тому, что модель автомобиля станет более обобщенной и даст больше шансов, что она будет работать на разных трассах, а не станет «перенастроенной» для одной трассы.

DR_WORKERS — если у вас достаточно ресурсов, вы можете запускать несколько контейнеров Robomaker одновременно. Консоль AWS Deep Racer дает вам только одну консоль, поэтому при использовании нескольких консолей время тренировки сокращается.

В дополнение к этому вы можете настроить автомобиль за пределами максимального пространства действий, разрешенного через консоль…. Я был уверен, что видел автомобили в лиге, двигающиеся со скоростью более 4 м/с!

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

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

У меня была игра с созданием оболочки Terraform для Deep Racer for Cloud здесь, однако затем я обнаружил, что кто-то уже сделал что-то намного лучше, если вы хотите провести обучение на AWS!

Deep Racer on the Spot предназначен для предоставления более широких возможностей, чем Deep Racer for Cloud сам по себе. Deep Racer on the Spot строит оболочку вокруг Deep Racer for Cloud и удаляет часть недифференцированной тяжелой работы из управления вашей собственной средой.

Вам по-прежнему необходимо настроить функцию вознаграждения и дополнительные файлы конфигурации в соответствии с мастерской уровня 400 (хотя некоторые настройки по умолчанию удобно предоставлены), но среда создается для вас автоматически через CloudFormation.

Он поддерживает инстансы по требованию и спотовые инстансы, а с конфигурацией контейнера 2 Robomaker, работающей на спотовом инстансе g4dn.2xl (вам нужно будет запросить увеличение квоты AWS, чтобы иметь возможность использовать это), можно получить в два раза больше обучения по сравнению с AWS Deep Racer за 0,22 доллара США в час (примерно в 15 раз дешевле, чем AWS Deep Racer) в США-Восток-1 по историческим спотовым ценам. Иными словами, до 30 раз дешевле!

Среда на диаграмме частично построена с помощью базового шаблона CloudFormation. Это устанавливает элементы, которые являются «постоянными», такие как корзина S3 для хранения моделей и журналов, EFS для временного пространства и конфигурации сети. Вы можете добавить свой общедоступный IP-адрес в конфигурацию, чтобы позже разрешить вам доступ к веб-странице для просмотра вашего прогресса (есть еще один шаблон CloudFormation для добавления дополнительных IP-адресов, чтобы вы могли получить доступ из нескольких мест или при изменении вашего общедоступного IP-адреса).

Затем вы развертываете свое обучение с помощью другого шаблона CloudFormation, который настраивает экземпляр и связанные с ним контейнеры, работающие на нем, а также правило EventBridge и функцию Lambda для уничтожения конфигурации после указанной продолжительности (шаблон CloudFormation ограничивает это до 1 дня, но легко корректируется при необходимости).

Через несколько минут среда будет построена, и вы получите URL-адрес для подключения, чтобы вы могли наблюдать за тем, что происходит во время обучения. Это обеспечивается контейнером NGINX в экземпляре EC2.

На этой домашней странице обучения вы можете увидеть свои файлы конфигурации и проверить вывод различных контейнеров. Ссылка «Вывод» вверху дает хорошее резюме: -

Ссылку «Robomaker (Main Worker)» можно использовать для просмотра выходных данных журнала с каждого шага.

«deepracer_checkpoints.json» предоставляет сводку текущих и предыдущих контрольных точек, чтобы дать представление об улучшении модели, а «avg_eval_metric» — это процент завершения оценок для этого эпизода.

Чего мне не хватает на этом этапе, так это блокнота Jupyter, чтобы отображать вознаграждение в виде графиков, а также среднюю тренировку и оценку по мере того, как вы получаете в консоли. Вы, конечно, можете использовать отдельную записную книжку для анализа журналов после завершения обучения, но было бы неплохо видеть их в «реальном времени», например, в консоли. Меня лично не беспокоит просмотр видео во время обучения, стоимость передачи данных значительно превышает выгоду от просмотра видео автомобиля, данные должны предоставить то, что необходимо (помимо того, что трудно установить, скользит ли автомобиль). ), но вы можете включить это, если хотите.

Я надеюсь, что вышеизложенное окажется для вас полезным и поможет вам проводить больше AWS Deep Racing с меньшими затратами. Использование альтернативных методов обучения освобождает вас для того, чтобы попробовать множество разных стратегий или тренироваться гораздо дольше. Показательным примером является недавний месячный тренинг для меня, когда я использовал 459 часов спотового инстанса g4dn.2xlarge с двумя контейнерами Robomaker. 459 часов в AWS Deep Racer обошлись бы в 1606,50 долларов, но эквивалентное обучение, учитывая, что моя установка тренировалась на удвоенной скорости, стоило бы 3213,00 долларов. Мой счет пришел на $ 105,70!