Это репозиторий нашего препринта GPT-драйвера arXiv [страница проекта].
Примечание. Для запуска GPT-Driver требуется учетная запись OpenAI API.
Примечание. Здесь находится оценочный код для производительности планирования движения с разомкнутым контуром в nuScenes.
Мы представляем простой, но эффективный подход, который может превратить модель OpenAI GPT-3.5 в надежный планировщик движения для автономных транспортных средств. Планирование движения — основная задача автономного вождения, цель которой — спланировать безопасную и комфортную траекторию движения. Существующие планировщики движения преимущественно используют эвристические методы для прогнозирования траекторий движения, однако эти подходы демонстрируют недостаточные возможности обобщения перед лицом новых и невидимых сценариев вождения. В этой статье мы предлагаем новый подход к планированию движения, который использует сильные возможности рассуждения и потенциал обобщения, присущие моделям большого языка (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). Данные можно скачать на Google Drive.
б. Вы можете разместить скачанные данные здесь:
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
:
Примечание. Точная настройка стоит денег. Пожалуйста, обратитесь к странице цен. В общем, 10 миллионов токенов (точная настройка на полном обучающем наборе nuScenes для одной эпохи) будут стоить около 80 долларов США. Вы можете использовать более короткие подсказки, чтобы снизить стоимость.
д. Когда задание по точной настройке будет успешно завершено, вы получите электронное письмо с уведомлением об идентификаторе вашей точно настроенной модели GPT, например:
ft:gpt-3.5-turbo-0613:**::8**O
Этот идентификатор модели обозначает ваш собственный планировщик движений GPT и будет использоваться при оценке.
а. После получения идентификатора модели вы можете запустить эту команду, чтобы сгенерировать результаты планирования движения для набора проверки nuScenes:
python gpt-driver/test.py -i your_model_id -o your_output_file_name
Вы можете получить your_output_file_name.pkl
, содержащий Dict[token: np.array((6, 2))]
, где каждый тестовый образец имеет 3-секундную запланированную траекторию. Этот файл рассола можно напрямую использовать для оценки на nuScenes.
б. Вы можете обратиться к коду и данным здесь, чтобы оценить производительность планирования движения в 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}
}