Il s'agit d'un dépôt de notre pilote GPT pré-imprimé arXiv [Page du projet].
Remarque : L'exécution de GPT-Driver nécessite un compte API OpenAI
Remarque : le code d'évaluation est ici pour les performances de planification de mouvement en boucle ouverte sur nuScenes.
Nous présentons une approche simple mais efficace qui peut transformer le modèle OpenAI GPT-3.5 en un planificateur de mouvement fiable pour les véhicules autonomes. La planification des mouvements est un défi majeur dans la conduite autonome, visant à planifier une trajectoire de conduite sûre et confortable. Les planificateurs de mouvement existants exploitent principalement des méthodes heuristiques pour prévoir les trajectoires de conduite, mais ces approches démontrent des capacités de généralisation insuffisantes face à des scénarios de conduite nouveaux et inédits. Dans cet article, nous proposons une nouvelle approche de la planification de mouvement qui capitalise sur les fortes capacités de raisonnement et le potentiel de généralisation inhérents aux grands modèles linguistiques (LLM). L’idée fondamentale de notre approche est la reformulation de la planification de mouvement en tant que problème de modélisation du langage, une perspective non explorée auparavant. Plus précisément, nous représentons les entrées et sorties du planificateur sous forme de jetons de langage et exploitons le LLM pour générer des trajectoires de conduite grâce à une description linguistique des positions de coordonnées. De plus, nous proposons une nouvelle stratégie d’incitation-raisonnement-ajustement pour stimuler le potentiel de raisonnement numérique du LLM. Avec cette stratégie, le LLM peut décrire des coordonnées de trajectoire très précises ainsi que son processus de prise de décision interne en langage naturel. Nous évaluons notre approche sur l'ensemble de données nuScenes à grande échelle, et des expériences approfondies justifient l'efficacité, la capacité de généralisation et l'interprétabilité de notre planificateur de mouvement basé sur GPT.
un. Clonez ce référentiel.
git clone https://github.com/PointsCoder/GPT-Driver.git
b. Installez les bibliothèques dépendantes comme suit :
pip install -r requirements.txt
un. Nous avons pré-mis en cache les informations utilisées (détections, prédictions, trajectoires, etc.) à partir de l'ensemble de données nuScenes (cached_nuscenes_info.pkl) et des modèles pré-entraînés UniAD (detection_motion_result_trainval.jsonl). Les données peuvent être téléchargées sur Google Drive.
b. Vous pouvez mettre les données téléchargées ici :
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
├── gpt-driver
├── outputs
c. OpenAI nécessite de soumettre un fichier json contenant les invites et les réponses pour un réglage précis. Pour créer ce fichier train.json
, exécutez
python gpt-driver/create_data.py
Vous obtiendrez le train.json
ici :
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
│ ├── train.json
├── gpt-driver
├── outputs
un. Pour affiner votre propre modèle, vous devez d'abord enregistrer un compte API OpenAI.
b. Après l'inscription, vous pouvez générer une clé API dans les paramètres de votre compte. Voici un exemple :
openai.api_key = "sk-I**p"
Vous devez spécifier cette clé n'importe où dans le code. Veuillez noter qu'il s'agit de votre propre clé et qu'elle sera liée au paiement de votre facture, alors gardez-la confidentielle et ne la distribuez pas à d'autres !
c. Pour soumettre une tâche de réglage fin à OpenAI, vous pouvez utiliser les commandes suivantes dans votre console 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)
Vous pouvez également trouver ces commandes dans gpt-driver/finetune.py
:
Remarque : le réglage fin coûte de l'argent. Veuillez vous référer à la page des tarifs. En général, 10 millions de jetons (ajustement précis de l'ensemble complet de formation nuScenes pour une époque) coûteront environ 80 USD. Vous pouvez utiliser des invites plus courtes pour réduire le coût.
d. Une fois votre travail de réglage terminé avec succès, vous recevrez un e-mail vous informant de votre identifiant de modèle GPT affiné, comme ceci
ft:gpt-3.5-turbo-0613:**::8**O
Cet identifiant de modèle désigne votre propre planificateur de mouvements GPT et sera utilisé lors de l'évaluation.
un. Après avoir obtenu votre identifiant de modèle, vous pouvez exécuter cette commande pour générer des résultats de planification de mouvement pour l'ensemble de validation nuScenes :
python gpt-driver/test.py -i your_model_id -o your_output_file_name
Vous pouvez obtenir un your_output_file_name.pkl
qui contient un Dict[token: np.array((6, 2))]
où chaque échantillon de test a une trajectoire planifiée de 3 secondes. Ce fichier pickle peut être directement utilisé pour l'évaluation sur nuScenes.
b. Vous pouvez vous référer au code et aux données ici pour évaluer les performances de planification de mouvement sur nuScenes.
Si vous trouvez ce projet utile dans votre recherche, pensez à citer :
@article{gptdriver,
title={GPT-Driver: Learning to Drive with GPT},
author={Mao, Jiageng and Qian, Yuxi and Zhao, Hang and Wang, Yue},
year={2023}
}