これは、arXiv プレプリント GPT ドライバーのリポジトリ [プロジェクト ページ] です。
注: GPT ドライバーを実行するには、OpenAI API アカウントが必要です
注: nuScenes での開ループ モーション プランニング パフォーマンス用の評価コードがここにあります。
OpenAI GPT-3.5 モデルを自動運転車向けの信頼できるモーション プランナーに変換できる、シンプルかつ効果的なアプローチを紹介します。動作計画は自動運転における中心的な課題であり、安全で快適な運転軌道を計画することを目的としています。既存のモーション プランナーは主にヒューリスティック手法を活用して運転軌道を予測していますが、これらのアプローチは、斬新で見たことのない運転シナリオに直面した場合、一般化機能が不十分であることを示しています。この論文では、大規模言語モデル (LLM) に固有の強力な推論能力と一般化の可能性を活用した、動作計画への新しいアプローチを提案します。私たちのアプローチの基本的な洞察は、動作計画を言語モデリングの問題として再定式化することであり、これまで検討されていなかった視点です。具体的には、プランナーの入力と出力を言語トークンとして表し、LLM を活用して、座標位置の言語記述を通じて運転軌道を生成します。さらに、LLM の数値推論の可能性を刺激するための新しいプロンプト推論微調整戦略を提案します。この戦略により、LLM は高精度の軌道座標とその内部意思決定プロセスを自然言語で記述することができます。私たちは大規模な nuScenes データセットに対するアプローチを評価し、広範な実験により GPT ベースのモーション プランナーの有効性、一般化能力、解釈可能性を実証しました。
a.このリポジトリのクローンを作成します。
git clone https://github.com/PointsCoder/GPT-Driver.git
b.次のように依存ライブラリをインストールします。
pip install -r requirements.txt
a. nuScenes データセット (cached_nuscenes_info.pkl) および UniAD 事前トレーニング済みモデル (detection_motion_result_trainval.jsonl) から使用される情報 (検出、予測、軌跡など) を事前にキャッシュしました。データはGoogleドライブからダウンロードできます。
b.ダウンロードしたデータはここに置くことができます:
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
├── gpt-driver
├── outputs
c. OpenAI では、微調整のためのプロンプトと回答を含む json ファイルを送信する必要があります。このtrain.json
ファイルを構築するには、次のコマンドを実行します。
python gpt-driver/create_data.py
ここでtrain.json
取得します。
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
│ ├── train.json
├── gpt-driver
├── outputs
a.独自のモデルを微調整するには、まず OpenAI API アカウントを登録する必要があります。
b.登録後、アカウント設定で API キーを生成できます。以下に例を示します。
openai.api_key = "sk-I**p"
コード内の必要な場所にこのキーを指定する必要があります。これはあなた自身のキーであり、請求書の支払いにリンクされるため、これを機密として保管し、他の人に配布しないでください。
c.微調整ジョブを OpenAI に送信するには、Python コンソールで次のコマンドを使用できます。
import openai
openai.api_key = "sk-I**p"
# This will take some time for uploading train.json to the OpenAI server.
response = openai.File.create(file=open("train.json", "r"), purpose='fine-tune')
# Get the file id after waiting for some minutes.
train_file_id = response["id"]
# Launch a fine-tune job. Fine-tuning takes several hours to complete.
response = openai.FineTuningJob.create(training_file=train_file_id, model="gpt-3.5-turbo", hyperparameters={"n_epochs":1, })
# Optionally, you can check your fine-tune job status with these commands
finetune_job_id = response["id"]
openai.FineTuningJob.retrieve(finetune_job_id)
これらのコマンドはgpt-driver/finetune.py
にもあります。
注:微調整には費用がかかります。料金ページをご覧ください。一般に、1,000 万トークン (1 エポックの完全な nuScenes トレーニング セットで微調整) のコストは約 80 米ドルになります。コストを削減するために、より短いプロンプトを使用できます。
d.微調整ジョブが正常に完了すると、次のような微調整された GPT モデル ID を通知する電子メールが届きます。
ft:gpt-3.5-turbo-0613:**::8**O
このモデル ID は独自の GPT モーション プランナーを示し、評価に使用されます。
a.モデル ID を取得したら、次のコマンドを実行して、nuScenes 検証セットのモーション プランニング結果を生成できます。
python gpt-driver/test.py -i your_model_id -o your_output_file_name
各テスト サンプルに 3 秒間の計画された軌道があるDict[token: np.array((6, 2))]
を含むyour_output_file_name.pkl
を取得できます。この pickle ファイルは、nuScenes での評価に直接使用できます。
b. nuScenes でのモーション プランニングのパフォーマンスを評価するためのコードとデータは、ここで参照できます。
このプロジェクトがあなたの研究に役立つと思われる場合は、次の引用を検討してください。
@article{gptdriver,
title={GPT-Driver: Learning to Drive with GPT},
author={Mao, Jiageng and Qian, Yuxi and Zhao, Hang and Wang, Yue},
year={2023}
}