Лига AWS DeepRacer прошла половину пути к 2023 году. Впереди четыре месяца виртуальных гонок и нечетная физическая гонка на саммитах AWS, чтобы гонщики вышли в финал re:Invent в Лас-Вегасе!

Мой опыт был смешанным до сих пор. Мои виртуальные гонки значительно улучшились. Разрыв между моим временем и теми, кто постоянно находится на вершине, значительно сократился, и я неуклонно поднимаюсь в ежемесячной таблице лидеров. Однако мой опыт физических гонок на Лондонском саммите был настоящей катастрофой… но об этом позже!

Безусловно, самый большой скачок вперед, который у меня был, произошел в результате возможности больше экспериментировать. Этому экспериментированию способствует обучение вне консоли DeepRacer. Я не могу не подчеркнуть этого в достаточной степени — 3,50 доллара в час на консоли DeepRacer скоро накапливаются, и все, с кем я говорил, у кого все хорошо, используют альтернативные методы, например. Спотовые инстансы AWS, о которых я писал в предыдущем блоге, или DeepRacer For Cloud на локальных ПК достаточной спецификации или даже в альтернативных облаках. Я бы порекомендовал вам присоединиться к DeepRacer Community Slack, который является отличным ресурсом для устранения неполадок, а также для знакомства с людьми, которых вы, вероятно, встретите на трассе на саммитах или re:Invent. .

Сообщество DeepRacer также есть на GitHub. Здесь вы найдете кучу репозиториев, которые помогут вам в вашем путешествии: -

DeepRacer for Cloud — репозиторий, который позволяет вам тренироваться на домашних ПК и ваших собственных экземплярах в облаке, избегая 3,50 долларов США в консоли AWS.

DeepRacer Analysis предоставляет набор блокнотов Jupyter для анализа ваших тренировок и оценок. Это может быть настоящим откровением, когда вы видите, что делает ваша модель, и пытаетесь понять, почему. Легко, особенно в консоли, предположить, что 100% оценка означает, что модель готова. Напротив, изучение журналов хорошей модели покажет, что, достигнув 100% на начальном времени круга, модель продолжает улучшаться с течением времени (до определенного момента). Если вы сделаете шаг назад и подумаете об этом, то это имеет смысл — модель изначально работает для обхода трассы, а затем, если ваша функция вознаграждения хорошо написана, чтобы соотнести время круга с вознаграждением, она продолжает оптимизировать, в результате чего время круга падает: -

Вы также можете проверить соотношение времени круга и вознаграждения. В этом примере есть некоторая корреляция, но она, безусловно, может быть сильнее!

DeepRacer Log Guru предоставляет альтернативное решение для анализа с некоторыми полезными функциями, включая распределение действий, коэффициент дисконтирования, взятие линии и множество других вещей.

Тогда есть мой личный фаворит — DeepRacer on the Spot. Это действует как оболочка для DeepRacer for Cloud и позволяет проводить обучение на спотовых инстансах AWS с возможной огромной экономией. По мере того, как я прогрессировал в его использовании, я также начал вносить свой вклад в репозиторий, чтобы улучшить его. За сезон я сделал несколько значительных улучшений, которые добавили к моему личному обучению полезным навыкам реального мира, а также улучшили мой DeepRacing!

Точечное прерывание больше не приводит к окончанию тренировки. Код был обновлен для продолжения на новом экземпляре с того места, где закончился последний экземпляр, и вы найдете дополнительные модели, хранящиеся в S3, с добавлением «-continued-YYYMMDD–HHMM» к имени вашей исходной модели, обозначая время, когда прерывание произошел. Это значительное улучшение, потому что точечные прерывания являются фактом жизни и, кажется, увеличиваются только в некоторых регионах, что раздражает, если вы запустили какое-то обучение, а затем оно было прервано через час после того, как вы легли спать перед обновлением репо. us-east-1 особенно плох для прерываний, и спотовая цена в этом регионе для экземпляров g4dn неуклонно росла в течение 2023 года. Я начал использовать альтернативные регионы для своего обучения, чтобы меньше прерываний и более низкая стоимость.

Другим важным улучшением является анализ во время обучения. Вдохновленный репозиторием DeepRacer Analysis, я обновил DeepRacer on the Spot, чтобы обеспечить анализ в реальном времени, либо с помощью предварительно написанного анализа, опубликованного на веб-страницах, к которым вы можете получить доступ через nginx, либо с помощью блокнота Jupyter, в который вы можете войти и внести изменения, чтобы опросить все, что вам нужно. нравится, пока идет обучение.

Итак, что я узнал, чем стоит поделиться? Ну, это соревнование, поэтому есть только так много людей, готовых поделиться! Как заметили на днях в сообществе, когда кто-то попросил хорошую функцию вознаграждения… если вам нужна функция вознаграждения, в консоли есть несколько примеров! Однако я поделюсь несколькими вещами, которые помогли мне на этом пути….

Самое главное — перейти на DeepRacer on the Spot или DeepRacer для облака. Это открывает 10-кратный эксперимент по сравнению с консольным обучением за ту же цену, это много возможностей «быстро потерпеть неудачу» и улучшить!

Во-вторых, убедитесь, что вы анализируете свои журналы. Нет смысла тратить время и деньги на обучение, если вы не собираетесь анализировать журналы и выяснять, почему ваша модель делает то, что делает. Это единственный способ узнать, становится ли он быстрее и стабильнее, застопорился или даже стал полным мусором. Таким образом, вы можете научно улучшить его. Делать что-либо еще - это удар и промах.

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

Не полагайтесь на гиперпараметры по умолчанию. В частности, коэффициент дисконтирования по умолчанию слишком высок и составляет 0,999, что является попыткой оптимизации на (очень) долгосрочную перспективу за счет лучших краткосрочных решений. Скорость обучения по умолчанию, равная 0,0003, на мой взгляд, также довольно высока. Алгоритм использует приличный градиент (лучшее объяснение, чем я мог бы дать, можно найти здесь): -

Как видно из приведенной выше диаграммы, как более низкая, так и более высокая скорость обучения могут никогда не достичь оптимальной (самой низкой) точки. Это означает, что экспериментирование со скоростью обучения — хорошая идея, и, возможно, хорошей идеей является общая стратегия, которая способствует экспериментированию на ранних этапах разработки модели и использованию того, что было изучено позже в процессе разработки модели, с использованием клонирования более ранних режимов. Пример графика, показывающий, что пора снизить скорость обучения: -

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

Мой последний совет заключается в том, что для физических гонок нужна другая стратегия, чем для виртуальных гонок, чему я научился на лондонском саммите в этом году. Мой единственный предыдущий опыт физических гонок был получен до того, как я занялся анализом логов и тренировками на отдельных экземплярах, что означало, что я прекращал свои тренировки, когда они достигали 100% в оценке. Мои недавние усилия продолжали тренироваться еще много часов после этого момента, поскольку время круга виртуально улучшалось. Эти дополнительные знания, по-видимому, пошли мне во вред в физических гонках, поскольку мои модели изо всех сил пытались пройти круги. Кажется, они стали «перенасыщенными», когда они настолько привыкли к виртуальной, стерильной среде, что не могли справиться с морщинами, тенями и т. д. на физическом мероприятии. Подход к тренировкам «меньше да лучше», кажется, подходит для физических гонок, но мне придется подождать еще одной возможности проверить эту теорию…. Все это часть обучения!