هذا هو الريبو لبرنامج GPT-Driver الخاص بنا للطباعة المسبقة لـ arXiv [صفحة المشروع].
ملاحظة: يتطلب تشغيل GPT-Driver حساب OpenAI API
ملحوظة: رمز التقييم موجود هنا لأداء تخطيط الحركة ذات الحلقة المفتوحة على nuScenes.
نقدم طريقة بسيطة ولكنها فعالة يمكنها تحويل نموذج OpenAI GPT-3.5 إلى مخطط حركة موثوق به للمركبات ذاتية القيادة. يعد تخطيط الحركة تحديًا أساسيًا في القيادة الذاتية، ويهدف إلى تخطيط مسار قيادة آمن ومريح. يستفيد مخططو الحركة الحاليون في الغالب من الأساليب الإرشادية للتنبؤ بمسارات القيادة، إلا أن هذه الأساليب تظهر عدم كفاية قدرات التعميم في مواجهة سيناريوهات القيادة الجديدة وغير المرئية. في هذه الورقة، نقترح نهجًا جديدًا لتخطيط الحركة الذي يستفيد من قدرات التفكير القوية وإمكانات التعميم الكامنة في نماذج اللغات الكبيرة (LLMs). إن الرؤية الأساسية لنهجنا هي إعادة صياغة تخطيط الحركة كمشكلة لنمذجة اللغة، وهو منظور لم يتم استكشافه من قبل. على وجه التحديد، نحن نمثل مدخلات ومخرجات المخطط كرموز لغة، ونستفيد من 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}
}