Este é um repositório do nosso driver GPT pré-impresso arXiv [página do projeto].
Nota: a execução do GPT-Driver requer uma conta da API OpenAI
Observação: o código de avaliação está aqui para o desempenho do planejamento de movimento de circuito aberto no nuScenes.
Apresentamos uma abordagem simples, mas eficaz, que pode transformar o modelo OpenAI GPT-3.5 em um planejador de movimento confiável para veículos autônomos. O planeamento do movimento é um desafio central na condução autónoma, com o objetivo de planear uma trajetória de condução segura e confortável. Os planeadores de movimento existentes utilizam predominantemente métodos heurísticos para prever trajetórias de condução, mas estas abordagens demonstram capacidades de generalização insuficientes face a cenários de condução novos e inéditos. Neste artigo, propomos uma nova abordagem para o planejamento de movimento que capitaliza as fortes capacidades de raciocínio e o potencial de generalização inerentes aos Grandes Modelos de Linguagem (LLMs). O insight fundamental da nossa abordagem é a reformulação do planejamento de movimento como um problema de modelagem de linguagem, uma perspectiva não explorada anteriormente. Especificamente, representamos as entradas e saídas do planejador como tokens de linguagem e aproveitamos o LLM para gerar trajetórias de direção por meio de uma descrição de linguagem de posições coordenadas. Além disso, propomos uma nova estratégia de ajuste fino de raciocínio para estimular o potencial de raciocínio numérico do LLM. Com esta estratégia, o LLM pode descrever coordenadas de trajetória altamente precisas e também o seu processo interno de tomada de decisão em linguagem natural. Avaliamos nossa abordagem no conjunto de dados nuScenes em grande escala, e extensos experimentos comprovam a eficácia, capacidade de generalização e interpretabilidade de nosso planejador de movimento baseado em GPT.
um. Clone este repositório.
git clone https://github.com/PointsCoder/GPT-Driver.git
b. Instale as bibliotecas dependentes da seguinte forma:
pip install -r requirements.txt
um. Armazenamos previamente em cache as informações usadas (detecções, previsões, trajetórias, etc.) do conjunto de dados nuScenes (cached_nuscenes_info.pkl) e modelos pré-treinados UniAD (detection_motion_result_trainval.jsonl). Os dados podem ser baixados no Google Drive.
b. Você pode colocar os dados baixados aqui:
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
├── gpt-driver
├── outputs
c. OpenAI exige o envio de um arquivo json que contém as solicitações e respostas para ajuste fino. Para construir este arquivo train.json
, execute
python gpt-driver/create_data.py
Você obterá o train.json
aqui:
GPT-Driver
├── data
│ ├── cached_nuscenes_info.pkl
│ ├── detection_motion_result_trainval.jsonl
│ ├── split.json
│ ├── train.json
├── gpt-driver
├── outputs
um. Para ajustar seu próprio modelo, você precisa primeiro registrar uma conta da API OpenAI.
b. Após o registro, você pode gerar uma chave API nas configurações da sua conta. Aqui está um exemplo:
openai.api_key = "sk-I**p"
Você precisa especificar essa chave em qualquer lugar necessário no código. Observe que esta é sua própria chave e estará vinculada ao pagamento da sua conta, portanto, mantenha-a confidencial e não a distribua a terceiros!
c. Para enviar um trabalho de ajuste fino ao OpenAI, você pode usar os seguintes comandos em seu 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)
Você também pode encontrar estes comandos em gpt-driver/finetune.py
:
Nota: O ajuste fino custa dinheiro. Consulte a página de preços. Em geral, 10 milhões de tokens (ajuste no conjunto completo de treinamento nuScenes para uma época) custarão cerca de 80 USD. Você pode usar prompts mais curtos para reduzir o custo.
d. Quando seu trabalho de ajuste for concluído com êxito, você receberá um e-mail notificando o ID do modelo GPT ajustado, como este
ft:gpt-3.5-turbo-0613:**::8**O
Este ID de modelo indica seu próprio planejador de movimento GPT e será usado na avaliação.
um. Depois de obter o ID do modelo, você pode executar este comando para gerar resultados de planejamento de movimento para o conjunto de validação nuScenes:
python gpt-driver/test.py -i your_model_id -o your_output_file_name
Você pode obter um your_output_file_name.pkl
que contém um Dict[token: np.array((6, 2))]
onde cada amostra de teste tem uma trajetória planejada de 3 segundos. Este arquivo pickle pode ser usado diretamente para avaliação em nuScenes.
b. Você pode consultar o código e os dados aqui para avaliar o desempenho do planejamento de movimento no nuScenes.
Se você achar este projeto útil em sua pesquisa, considere citar:
@article{gptdriver,
title={GPT-Driver: Learning to Drive with GPT},
author={Mao, Jiageng and Qian, Yuxi and Zhao, Hang and Wang, Yue},
year={2023}
}