이것은 arXiv 사전 인쇄 GPT-Driver [프로젝트 페이지]의 저장소입니다.
참고: GPT-Driver를 실행하려면 OpenAI API 계정이 필요합니다.
참고: NuScenes의 개방 루프 동작 계획 성능에 대한 평가 코드가 여기에 있습니다.
우리는 OpenAI GPT-3.5 모델을 자율주행차를 위한 신뢰할 수 있는 모션 플래너로 변환할 수 있는 간단하면서도 효과적인 접근 방식을 제시합니다. 모션 플래닝(Motion Planning)은 자율주행의 핵심 과제로, 안전하고 편안한 주행 궤적을 계획하는 것을 목표로 합니다. 기존 모션 플래너는 주행 궤적을 예측하기 위해 주로 휴리스틱 방법을 활용하지만 이러한 접근 방식은 새롭고 보이지 않는 주행 시나리오에 직면하여 일반화 기능이 충분하지 않음을 보여줍니다. 본 논문에서는 LLM(대형 언어 모델)에 내재된 강력한 추론 기능과 일반화 잠재력을 활용하는 동작 계획에 대한 새로운 접근 방식을 제안합니다. 우리 접근 방식의 근본적인 통찰력은 이전에 탐구되지 않았던 관점인 언어 모델링 문제로서 동작 계획을 재구성하는 것입니다. 구체적으로, 우리는 플래너 입력 및 출력을 언어 토큰으로 표현하고 LLM을 활용하여 좌표 위치에 대한 언어 설명을 통해 주행 궤적을 생성합니다. 또한 우리는 LLM의 수치 추론 잠재력을 자극하기 위한 새로운 프롬프트-추론-미세 조정 전략을 제안합니다. 이 전략을 통해 LLM은 매우 정확한 궤도 좌표와 내부 의사 결정 프로세스를 자연어로 설명할 수 있습니다. 우리는 대규모 nuScenes 데이터 세트에 대한 접근 방식을 평가하고 광범위한 실험을 통해 GPT 기반 모션 플래너의 효율성, 일반화 능력 및 해석 가능성을 입증했습니다.
에이. 이 저장소를 복제하세요.
git clone https://github.com/PointsCoder/GPT-Driver.git
비. 다음과 같이 종속 라이브러리를 설치합니다.
pip install -r requirements.txt
에이. nuScenes 데이터 세트(cached_nuscenes_info.pkl) 및 UniAD 사전 학습 모델(Detection_motion_result_trainval.jsonl)에서 사용된 정보(탐지, 예측, 궤적 등)를 사전 캐시했습니다. 데이터는 구글 드라이브에서 다운로드 가능합니다.
비. 다운로드한 데이터를 여기에 넣을 수 있습니다:
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
├── gpt-driver
├── outputs
기음. 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 계정을 등록해야 합니다.
비. 등록 후 계정 설정에서 API 키를 생성할 수 있습니다. 예는 다음과 같습니다.
openai.api_key = "sk-I**p"
코드에서 필요한 위치에 이 키를 지정해야 합니다. 이는 귀하의 키이며 청구서 결제와 연결되므로 이를 기밀로 유지하고 다른 사람에게 배포하지 마십시오!
기음. 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만 개의 토큰(한 시대에 대한 전체 nuScenes 훈련 세트에서 미세 조정)의 비용은 약 80 USD입니다. 더 짧은 프롬프트를 사용하여 비용을 줄일 수 있습니다.
디. 미세 조정 작업이 성공적으로 완료되면 다음과 같이 미세 조정된 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
각 테스트 샘플에는 3초 계획 궤적이 있는 Dict[token: np.array((6, 2))]
가 포함된 your_output_file_name.pkl
을 얻을 수 있습니다. 이 피클 파일은 nuScenes 평가에 직접 사용될 수 있습니다.
비. NuScene의 모션 계획 성능을 평가하기 위해 여기에서 코드와 데이터를 참조할 수 있습니다.
이 프로젝트가 귀하의 연구에 유용하다고 생각되면 다음을 인용해 보십시오.
@article{gptdriver,
title={GPT-Driver: Learning to Drive with GPT},
author={Mao, Jiageng and Qian, Yuxi and Zhao, Hang and Wang, Yue},
year={2023}
}