# PrefDrive: LoRA DPO LLaMa-7B for Autonomous Driving This repository contains LoRA (Low-Rank Adaptation) parameters for a fine-tuned version of LLaMa-7B using Direct Preference Optimization (DPO). The model is trained to better align with specific driving behaviors and operational requirements through preference learning, significantly improving autonomous driving performance. ## Model Details - **Base Model**: [meta-llama/Llama-2-7b](https://huggingface.co/meta-llama/Llama-2-7b) - **Training Method**: Direct Preference Optimization (DPO) - **LoRA Parameters**: - Rank (r): 16 - Alpha (α): 16 - Target Modules: `q_proj`, `k_proj`, `v_proj`, `o_proj`, `gate_proj`, `down_proj`, `up_proj` - **Training Framework**: Unsloth + TRL - **Training Precision**: 4-bit Quantization ### Training Configuration | Parameter | Value | |-----------|-------| | Base Model | LLaMA2-7B | | Training Strategy | LoRA | | Learning Rate | 1e-5 | | Batch Size | 4 | | Gradient Accumulation Steps | 2 | | Training Epochs | 3 | | Maximum Sequence Length | 2,048 | | Warmup Ratio | 0.1 | | Max Gradient Norm | 0.3 | | DPO Beta (β) | 0.1 | | Loss Type | Sigmoid | | Training Data | Chosen & Rejected action pairs | ## Usage To use this model, you'll need to load both the base model and the LoRA adapter: ```python from peft import PeftModel, PeftConfig from transformers import AutoModelForCausalLM, AutoTokenizer # Load base model base_model_id = "meta-llama/Llama-2-7b" tokenizer = AutoTokenizer.from_pretrained(base_model_id) model = AutoModelForCausalLM.from_pretrained(base_model_id) # Load LoRA adapter peft_model_id = "[YOUR_USERNAME]/lora-dpo-llama-7b" model = PeftModel.from_pretrained(model, peft_model_id) # Use model for inference inputs = tokenizer("Hello, please", return_tensors="pt") outputs = model.generate(**inputs, max_length=100) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` For faster inference with Unsloth: ```python from unsloth import FastLanguageModel # Load the model with Unsloth model, tokenizer = FastLanguageModel.from_pretrained( "meta-llama/Llama-2-7b", load_in_4bit=True, max_seq_length=2048 ) # Load LoRA adapter model = FastLanguageModel.get_peft_model( model, "[YOUR_USERNAME]/lora-dpo-llama-7b", ) # Use model for inference inputs = tokenizer("Hello, please", return_tensors="pt") outputs = model.generate(**inputs, max_length=100) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` ## Training Dataset The model was trained on the PrefDrive dataset, a comprehensive collection of 74,040 driving sequences carefully annotated with driving preferences and driving decisions. Each entry in the dataset consists of: - A driving scenario description (s) - A preferred/chosen driving action with its reasoning and resulting waypoint (a_p) - A rejected driving action with its reasoning and resulting waypoint (a_r) This dataset captures various autonomous driving scenarios with emphasis on proper distance maintenance, trajectory smoothness, traffic rule compliance, and route adherence. ## Training Procedure The model was trained using the DPO method which directly optimizes a language model to align with driving preferences without requiring a reward model. The training process uses pairwise comparisons between preferred and rejected driving actions to update model parameters. ### Methodology The PrefDrive methodology for autonomous driving is formulated as: $\mathcal{L}_{DPO} = -\mathbb{E}_{(s,a_p,a_r)\sim\mathcal{D}}\Big[\log\sigma\Big(\beta\log\frac{\pi_\theta(a_p|s)}{\pi_{ref}(a_p|s)} - \beta\log\frac{\pi_\theta(a_r|s)}{\pi_{ref}(a_r|s)}\Big)\Big]$ where: - $\mathcal{D}$ represents our driving preference dataset - $s$ denotes the current driving scenario description - $a_p$ represents the preferred (chosen) driving action with its reasoning and resulting waypoint - $a_r$ represents the rejected driving action with its reasoning and resulting waypoint - $\pi_\theta$ is the policy model being trained - $\pi_{ref}$ is the initial reference model - $\beta$ controls the preference learning sensitivity (set to 0.1) - $\sigma$ represents the sigmoid function This formulation explicitly shows how our model learns to favor chosen driving actions over rejected ones while maintaining reasonable deviation from the reference model's behavior. ### Key Training Parameters - Learning rate: 1e-5 - Number of epochs: 3 - DPO beta: 0.1 - Loss type: Sigmoid - Max sequence length: 2048 ## Evaluation Results The model was evaluated in the CARLA simulator across different town environments. Here are the performance metrics: ### Town 01 Performance | Metric | LMDrive (baseline) | PrefDrive (Ours) | Improvement | |--------|-------------------|-----------------|-------------| | Composite Score | 53.00 | 56.12 | +5.9% | | Penalty Score | 0.86 | 0.88 | +1.5% | | Route Completion | 59.10 | 64.15 | +8.5% | | Layout Collisions | 0.73 | 0.27 | -63.5% | | Traffic Light Violations | 0.22 | 0.16 | -28.1% | | Route Deviation | 1.32 | 1.36 | +3.0% | | Vehicle Blocked | 0.11 | 0.00 | -100.0% | ### Town 04 Performance | Metric | LMDrive (baseline) | PrefDrive (Ours) | Improvement | |--------|-------------------|-----------------|-------------| | Composite Score | 60.11 | 65.93 | +9.7% | | Penalty Score | 0.93 | 0.96 | +3.2% | | Route Completion | 65.25 | 69.93 | +7.2% | | Layout Collisions | 0.00 | 0.00 | 0.0% | | Traffic Light Violations | 0.24 | 0.00 | -100.0% | | Route Deviation | 1.86 | 1.77 | -4.8% | | Vehicle Blocked | 0.00 | 0.00 | 0.0% | The results demonstrate significant improvements in crucial metrics, particularly in reducing traffic light violations and layout collisions while improving route completion. ## Limitations and Biases This model inherits the limitations and biases from the base LLaMa model. Additionally: - It's optimized specifically for autonomous driving tasks and may not perform well in unrelated domains - Performance may vary in driving environments that differ significantly from the training data - The LoRA adaptation affects specific parameter matrices and may not fully transform the base model's capabilities - While the model shows improved performance in simulated environments (CARLA), its behavior in real-world driving scenarios would require further validation and safety testing - The model is designed to work with a specific autonomous driving stack and may require adaptation for different setups ## Ethical Considerations When using this model, consider: - The potential for generating harmful, misleading, or biased content - The limitations in factual accuracy and reasoning abilities - The need for appropriate content filtering in production applications ## Citations ```bibtex @INPROCEEDINGS{Li2025, title={PrefDrive: A Preference Learning Framework for Autonomous Driving with Large Language Models}, author={Li, Yun and Javanmardi, Ehsan and Thompson, Simon and Katsumata, Kai and Orsholits, Alex and Tsukada, Manabu}, booktitle = "{2025 IEEE Intelligent Vehicles Symposium (IV)}", } ```