Dies ist ein Repo unseres arXiv-Preprint-GPT-Treibers [Projektseite].
Hinweis: Für die Ausführung des GPT-Treibers ist ein OpenAI-API-Konto erforderlich
Hinweis: Hier finden Sie den Evaluierungscode für die Open-Loop-Bewegungsplanungsleistung auf nuScenes.
Wir präsentieren einen einfachen, aber effektiven Ansatz, der das OpenAI GPT-3.5-Modell in einen zuverlässigen Bewegungsplaner für autonome Fahrzeuge verwandeln kann. Die Bewegungsplanung ist eine zentrale Herausforderung beim autonomen Fahren und zielt darauf ab, eine sichere und komfortable Fahrroute zu planen. Bestehende Bewegungsplaner nutzen überwiegend heuristische Methoden, um Fahrtrajektorien vorherzusagen. Diese Ansätze weisen jedoch angesichts neuartiger und unbekannter Fahrszenarien unzureichende Generalisierungsfähigkeiten auf. In diesem Artikel schlagen wir einen neuartigen Ansatz zur Bewegungsplanung vor, der sich die starken Argumentationsfähigkeiten und das Generalisierungspotenzial von Large Language Models (LLMs) zunutze macht. Die grundlegende Erkenntnis unseres Ansatzes ist die Neuformulierung der Bewegungsplanung als Sprachmodellierungsproblem, eine Perspektive, die bisher nicht untersucht wurde. Konkret stellen wir die Eingaben und Ausgaben des Planers als Sprach-Tokens dar und nutzen das LLM, um Fahrtrajektorien durch eine sprachliche Beschreibung der Koordinatenpositionen zu generieren. Darüber hinaus schlagen wir eine neuartige Strategie zur Anregung, Begründung und Feinabstimmung vor, um das numerische Denkpotenzial des LLM zu stimulieren. Mit dieser Strategie kann das LLM hochpräzise Flugbahnkoordinaten und auch seinen internen Entscheidungsprozess in natürlicher Sprache beschreiben. Wir evaluieren unseren Ansatz anhand des umfangreichen nuScenes-Datensatzes und umfangreiche Experimente belegen die Wirksamkeit, Generalisierungsfähigkeit und Interpretierbarkeit unseres GPT-basierten Bewegungsplaners.
A. Klonen Sie dieses Repository.
git clone https://github.com/PointsCoder/GPT-Driver.git
B. Installieren Sie die abhängigen Bibliotheken wie folgt:
pip install -r requirements.txt
A. Wir haben die verwendeten Informationen (Erkennungen, Vorhersagen, Flugbahnen usw.) aus dem nuScenes-Datensatz (cached_nuscenes_info.pkl) und vorab trainierten UniAD-Modellen (detection_motion_result_trainval.jsonl) vorab zwischengespeichert. Die Daten können bei Google Drive heruntergeladen werden.
B. Die heruntergeladenen Daten können Sie hier ablegen:
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
├── gpt-driver
├── outputs
C. OpenAI erfordert die Übermittlung einer JSON-Datei, die die Eingabeaufforderungen und Antworten zur Feinabstimmung enthält. Um diese train.json
Datei zu erstellen, führen Sie Folgendes aus:
python gpt-driver/create_data.py
Sie erhalten die train.json
hier:
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
│ ├── train.json
├── gpt-driver
├── outputs
A. Um Ihr eigenes Modell zu verfeinern, müssen Sie zunächst ein OpenAI-API-Konto registrieren.
B. Nach der Registrierung können Sie in Ihren Kontoeinstellungen einen API-Schlüssel generieren. Hier ist ein Beispiel:
openai.api_key = "sk-I**p"
Sie müssen diesen Schlüssel an einer beliebigen Stelle im Code angeben. Bitte beachten Sie, dass dies Ihr eigener Schlüssel ist und mit der Zahlung Ihrer Rechnung verknüpft wird. Behandeln Sie ihn daher vertraulich und geben Sie ihn nicht an andere weiter!
C. Um einen Feinabstimmungsauftrag an OpenAI zu senden, können Sie die folgenden Befehle in Ihrer Python-Konsole verwenden:
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)
Sie finden diese Befehle auch in gpt-driver/finetune.py
:
Hinweis: Feinabstimmung kostet Geld. Bitte beachten Sie die Preisseite. Im Allgemeinen kosten 10 Millionen Token (Feinabstimmung des gesamten nuScenes-Trainingssatzes für eine Epoche) etwa 80 USD. Sie können kürzere Eingabeaufforderungen verwenden, um die Kosten zu senken.
D. Wenn Ihr Feinabstimmungsauftrag erfolgreich abgeschlossen wurde, erhalten Sie eine E-Mail mit der Benachrichtigung über Ihre feinabgestimmte GPT-Modell-ID, etwa so
ft:gpt-3.5-turbo-0613:**::8**O
Diese Modell-ID bezeichnet Ihren eigenen GPT-Bewegungsplaner und wird bei der Auswertung verwendet.
A. Nachdem Sie Ihre Modell-ID erhalten haben, können Sie diesen Befehl ausführen, um Bewegungsplanungsergebnisse für den nuScenes-Validierungssatz zu generieren:
python gpt-driver/test.py -i your_model_id -o your_output_file_name
Sie können eine your_output_file_name.pkl
erhalten, die ein Dict[token: np.array((6, 2))]
enthält, in dem jede Testprobe eine geplante Flugbahn von 3 Sekunden hat. Diese Pickle-Datei kann direkt zur Auswertung auf nuScenes verwendet werden.
B. Zur Bewertung der Bewegungsplanungsleistung in nuScenes können Sie sich hier auf den Code und die Daten beziehen.
Wenn Sie dieses Projekt für Ihre Forschung nützlich finden, ziehen Sie bitte Folgendes in Betracht:
@article{gptdriver,
title={GPT-Driver: Learning to Drive with GPT},
author={Mao, Jiageng and Qian, Yuxi and Zhao, Hang and Wang, Yue},
year={2023}
}