这是我们的 arXiv 预印本 GPT-Driver [项目页面] 的存储库。
注意:运行 GPT-Driver 需要 OpenAI API 帐户
注意:此处提供了 nuScenes 上开环运动规划性能的评估代码。
我们提出了一种简单而有效的方法,可以将 OpenAI GPT-3.5 模型转变为自动驾驶车辆的可靠运动规划器。运动规划是自动驾驶的核心挑战,旨在规划安全舒适的驾驶轨迹。现有的运动规划器主要利用启发式方法来预测驾驶轨迹,但这些方法在面对新奇和未见过的驾驶场景时表现出不足的泛化能力。在本文中,我们提出了一种新的运动规划方法,该方法利用了大型语言模型(LLM)固有的强大推理能力和泛化潜力。我们方法的基本见解是将运动规划重新表述为语言建模问题,这是以前未探讨过的观点。具体来说,我们将规划器的输入和输出表示为语言标记,并利用 LLM 通过坐标位置的语言描述生成驾驶轨迹。此外,我们提出了一种新颖的提示推理微调策略来激发法学硕士的数字推理潜力。通过这种策略,法学硕士可以用自然语言描述高精度的轨迹坐标及其内部决策过程。我们在大规模 nuScenes 数据集上评估了我们的方法,并且广泛的实验证实了我们基于 GPT 的运动规划器的有效性、泛化能力和可解释性。
一个。克隆这个存储库。
git clone https://github.com/PointsCoder/GPT-Driver.git
b.安装依赖库如下:
pip install -r requirements.txt
一个。我们预先缓存了 nuScenes 数据集 (cached_nuscenes_info.pkl) 和 UniAD 预训练模型 (detection_motion_result_trainval.jsonl) 中使用的信息(检测、预测、轨迹等)。数据可以在 Google Drive 下载。
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
一个。要微调您自己的模型,您需要首先注册一个 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
中找到这些命令:
注意:微调需要花钱。请参阅定价页面。一般来说,1000 万个代币(在一个 epoch 的完整 nuScenes 训练集上进行微调)将花费大约 80 美元。您可以使用较短的提示来降低成本。
d.当您的微调作业成功完成后,您将收到一封电子邮件,通知您微调的 GPT 模型 ID,如下所示
ft:gpt-3.5-turbo-0613:**::8**O
该模型 ID 表示您自己的 GPT 运动规划器,将用于评估。
一个。获取模型 ID 后,您可以运行以下命令来生成 nuScenes 验证集的运动规划结果:
python gpt-driver/test.py -i your_model_id -o your_output_file_name
您可以获得包含Dict[token: np.array((6, 2))]
的your_output_file_name.pkl
,其中每个测试样本都有 3 秒的计划轨迹。该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}
}