DeepRacerのローカルトレーニングのパラメータを考える

## はじめに
株式会社NTTデータ デザイン＆テクノロジーコンサルティング事業本部の@nttd-kashiwabarayです。
以前以下のページでDeepRacerの学習の基本的な流れを説明しましたが、本日はDeepRacerのローカルトレーニングの主要なパラメータについて説明します。

## DeepRacerのローカルトレーニング
DeepRacerはAmazon SageMaker、AWS RoboMaker、Amazon Kinesis Video Streams、Amazon S3、CloudWatchを組み合わせて構成された<B>マネージドサービスとして提供</B>されております。<B>AWSマネジメントコンソールから簡易にトレーニングを実施する</B>ことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/fd519f87-659c-9f49-bf14-4ddef65b5c22.png)


ローカルトレーニングは上記の環境をローカル環境（自身のPC環境やEC2など）にて、トレーニングを実施できるものとなります。それぞれメリット・デメリットがありますが、一番の<B>メリットはトレーニングの費用対効果</B>となります。

2024年3月現在、DeepRacerの1時間あたりのトレーニングの料金は「トレーニングまたは評価」で1時間当たり3.5ドルの費用が発生します（その他「モデルストレージ」として1GB当たり0.23ドルの費用が発生します）。ローカルトレーニングでは、自身のPCはもちろんのこと、EC2のスポットインスタンスなどを活用すれば大きく費用を削減することが可能となります。また、学習速度も速く、カスタマイズ範囲が広いことも特長です。一方で、<B>ローカルトレーニングはサポートされておらず</B>、それなりの知見がないと環境の構築から維持・運用までが大変だったりします。

## ローカルトレーニングの主要パラメータ
まずは主要パラメータの中でも、トレーニングを実施するにあたり、<B>基本的な設定になるパラメータ</B>について説明します。

<B>■DR_WORKERS</B>
トレーニングに使用される Robomaker ワーカーの数を定義します。以下の画像はWorker数を5に設定した時のトレーニングの例となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/2c01e46a-d700-f0d1-ef84-5185341c6caf.png)

<B>■DR_UPLOAD_S3_BUCKET</B>
モデルがアップロードされるDeepRacerのバケット名を定義します。

<B>■DR_SAGEMAKER_IMAGE、DR_ROBOMAKER_IMAGE</B>
トレーニングに使用するSageMaker、RoboMakerのイメージを定義します。

<B>■DR_WORLD_NAME</B>
使用するトラックを定義します。上記のSmile Speedwayのコースの場合は「reInvent2019_track」が設定値となります。

<B>■DR_LOCAL_S3_MODEL_PREFIX、DR_LOCAL_S3_CUSTOM_FILES_PREFIX</B>
それぞれ、モデルや設定ファイル（reward_function.py、hyperparameters.json、model_metadata.json）を格納するS3バケットを定義します。

<B>■DR_LOCAL_S3_PRETRAINED</B>
新規でモデルを作成するか、クローンでモデルを作成するかを定義します。「True」を選択した場合は、クローンでモデルを作成し、「False」を選択した場合は新規でモデルを作成します。

<B>■DR_LOCAL_S3_PRETRAINED_PREFIX</B>
クローンするモデルが格納されているフォルダを定義します。
※「DR_LOCAL_S3_PRETRAINED」で「True」を選択した場合に有効

ここからは<B>トレーニングを実施するにあたって、検討が必要なパラメータ</B>について説明します。

<B>■DR_TRAIN_BEST_MODEL_METRIC</B>
学習時の評価として、「完走率」を重視するか、「報酬」を重視するかを定義します。「完走率」を選択した場合は完走率が高いモデルがBestモデルとして評価されます。逆に「報酬」を選択した場合は「報酬が高い」モデルがBestモデルとして評価されます。学習を実施するにあたって、どちらを選択するかによって評価が変わるため、検討が必要です。

<B>■DR_LOCAL_S3_PRETRAINED_CHECKPOINT</B>
上述の「DR_LOCAL_S3_PRETRAINED」で「True」に設定した場合、クローンするモデルの「Best」モデルをクローンするのか、「Last」モデルをクローンするのかを定義します。どの時点のモデルをクローンするかによって結果も変わりますので、どちらで設定するか検討しましょう。

<B>■DR_TRAIN_CHANGE_START_POSITION</B>
トレーニング中のスタート地点をラウンドロビンさせるかどうかを定義します。「True」にした場合は開始位置を変化しながら学習が進みます。「False」にした場合は、トレーニング中のスタート地点は固定となります。

<B>■DR_TRAIN_ROUND_ROBIN_ADVANCE_DISTANCE</B>
ラウンドロビンでスタートラインを変更させる際に、エピソード毎にどの程度進めるかを定義します。設定値は0-1の間の値を設定します。例えば、「0.1」という値を設定した場合は、エピソード毎にトラックの10%ずつ開始位置が変更されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/ccd13eb4-4899-d991-83da-20d161d54fd1.png)


<B>■DR_TRAIN_START_POSITION_OFFSET</B>
エピソードの最初のスタートラインをどこに設定するかを定義します。「0」を設定した場合は、トラックのスタートラインから開始され、「0.1」を設定した場合は、トラックの10%進んだ場所がスタートラインとなります。

その他いくつか<B>必要に応じて活用する可能性があるパラメータ</B>について説明します。

<B>■DR_TRAIN_ALTERNATE_DRIVING_DIRECTION</B>
エピソードごとに時計回りと反時計回りに交互に運転するかどうかを定義します。「True」を選択した場合は、エピソードごとに時計回りと反時計回りを交互に運転します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120881/983732df-a4eb-55f4-1745-a4d49ebc1ec2.png)

<B>■DR_ENABLE_DOMAIN_RANDOMIZATION</B>
エピソードごとに異なる環境の色と照明を変更させるかを定義します。「True」に設定した場合、環境の色と照明が変更します。モデルをロバストにしたい場合に活用します。


## まとめ
今回はDeepRacerのローカルトレーニングについて、主要なパラメータに絞ってご説明をさせていただきましたが、いかがでしたでしょうか。他にもいくつものパラメータが存在しますが、よく検討すべきパラメータについてご説明させていただきました。
トレーニングを実施して、速く走らせるためには、1つ1つのパラメータも理解しつつ、適宜必要なパラメータについて、設定を変更していく必要があります。自身の学習状況を確認しながら、各パラメータの設定について検討いただければと思います。
Deepracerはアクションスペース、報酬関数、ハイパーパラメータに加えてこのような環境面でも検討することが出てきますので、試行錯誤を楽しみながら、ぜひレースに参加していただければと思います。

## 仲間募集

NTTデータ テクノロジーコンサルティング事業本部 では、以下の職種を募集しています。

<details><summary>1. クラウド技術を活用したデータ分析プラットフォームの開発・構築(ITアーキテクト/クラウドエンジニア)</summary>

クラウド／プラットフォーム技術の知見に基づき、DWH、BI、ETL領域におけるソリューション開発を推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/cloud_engineer

</details>

<details><summary>2. データサイエンス領域（データサイエンティスト／データアナリスト）</summary>

データ活用／情報処理／AI／BI／統計学などの情報科学を活用し、よりデータサイエンスの観点から、データ分析プロジェクトのリーダーとしてお客様のDX／デジタルサクセスを推進します。
https://enterprise-aiiot.nttdata.com/recruitment/career_sp/datascientist

</details>

<details><summary>3.お客様のAI活用の成功を推進するAIサクセスマネージャー</summary>

DataRobotをはじめとしたAIソリューションやサービスを使って、
お客様のAIプロジェクトを成功させ、ビジネス価値を創出するための活動を実施し、
お客様内でのAI活用を拡大、NTTデータが提供するAIソリューションの利用継続を推進していただく人材を募集しています。
https://nttdata.jposting.net/u/job.phtml?job_code=804

</details>

<details><summary>4.DX／デジタルサクセスを推進するデータサイエンティスト《管理職/管理職候補》</summary>
データ分析プロジェクトのリーダとして、正確な課題の把握、適切な評価指標の設定、分析計画策定や適切な分析手法や技術の評価・選定といったデータ活用の具現化、高度化を行い分析結果の見える化・お客様の納得感醸成を行うことで、ビジネス成果・価値を出すアクションへとつなげることができるデータサイエンティスト人材を募集しています。

https://nttdata.jposting.net/u/job.phtml?job_code=898

</details>


## ソリューション紹介

<details><summary> Trusted Data Foundationについて</summary><div>

～データ資産を分析活用するための環境をオールインワンで提供するソリューション～
https://enterprise-aiiot.nttdata.com/tdf/
最新のクラウド技術を採用して弊社が独自に設計したリファレンスアーキテクチャ（Datalake+DWH+AI/BI）を顧客要件に合わせてカスタマイズして提供します。
可視化、機械学習、DeepLearningなどデータ資産を分析活用するための環境がオールインワンで用意されており、これまでとは別次元の量と質のデータを用いてアジリティ高くDX推進を実現できます。

</div></details>


<details><summary> TDF-AM（Trusted Data FoundationⓇ - Analytics Managed Service）について</summary><div>

～データ活用基盤の段階的な拡張支援（Quick Start) と保守運用のマネジメント（Analytics Managed）をご提供することでお客様のDXを成功に導く、データ活用プラットフォームサービス～
https://enterprise-aiiot.nttdata.com/service/tdf/tdf_am
TDFⓇ-AMは、データ活用をQuickに始めることができ、データ活用の成熟度に応じて段階的に環境を拡張します。プラットフォームの保守運用はNTTデータが一括で実施し、お客様は成果創出に専念することが可能です。また、日々最新のテクノロジーをキャッチアップし、常に活用しやすい環境を提供します。なお、ご要望に応じて上流のコンサルティングフェーズからAI/BIなどのデータ活用支援に至るまで、End to Endで課題解決に向けて伴走することも可能です。

</div></details>


<details><summary>NTTデータとTableauについて </summary><div>

ビジュアル分析プラットフォームのTableauと2014年にパートナー契約を締結し、自社の経営ダッシュボード基盤への採用や独自のコンピテンシーセンターの設置などの取り組みを進めてきました。さらに2019年度にはSalesforceとワンストップでのサービスを提供開始するなど、積極的にビジネスを展開しています。

これまでPartner of the Year, Japanを4年連続で受賞しており、2021年にはアジア太平洋地域で最もビジネスに貢献したパートナーとして表彰されました。
また、2020年度からは、Tableauを活用したデータ活用促進のコンサルティングや導入サービスの他、AI活用やデータマネジメント整備など、お客さまの企業全体のデータ活用民主化を成功させるためのノウハウ・方法論を体系化した「デジタルサクセス」プログラムを提供開始しています。
https://enterprise-aiiot.nttdata.com/service/tableau

</div></details>


<details><summary>NTTデータとAlteryxについて </summary><div>
Alteryxは、業務ユーザーからIT部門まで誰でも使えるセルフサービス分析プラットフォームです。

Alteryx導入の豊富な実績を持つNTTデータは、最高位にあたるAlteryx Premiumパートナーとしてお客さまをご支援します。

導入時のプロフェッショナル支援など独自メニューを整備し、特定の業種によらない多くのお客さまに、Alteryxを活用したサービスの強化・拡充を提供します。

https://enterprise-aiiot.nttdata.com/service/alteryx

</div></details>

<details><summary>NTTデータとDataRobotについて </summary><div>
DataRobotは、包括的なAIライフサイクルプラットフォームです。

NTTデータはDataRobot社と戦略的資本業務提携を行い、経験豊富なデータサイエンティストがAI・データ活用を起点にお客様のビジネスにおける価値創出をご支援します。

https://enterprise-aiiot.nttdata.com/service/datarobot

</div></details>

<details><summary> NTTデータとInformaticaについて</summary><div>

データ連携や処理方式を専門領域として10年以上取り組んできたプロ集団であるNTTデータは、データマネジメント領域でグローバルでの高い評価を得ているInformatica社とパートナーシップを結び、サービス強化を推進しています。
https://enterprise-aiiot.nttdata.com/service/informatica

</div></details>

<details><summary>NTTデータとSnowflakeについて </summary><div>
NTTデータでは、Snowflake Inc.とソリューションパートナー契約を締結し、クラウド・データプラットフォーム「Snowflake」の導入・構築、および活用支援を開始しています。

NTTデータではこれまでも、独自ノウハウに基づき、ビッグデータ・AIなど領域に係る市場競争力のあるさまざまなソリューションパートナーとともにエコシステムを形成し、お客さまのビジネス変革を導いてきました。
Snowflakeは、これら先端テクノロジーとのエコシステムの形成に強みがあり、NTTデータはこれらを組み合わせることでお客さまに最適なインテグレーションをご提供いたします。

https://enterprise-aiiot.nttdata.com/service/snowflake

</div></details>