PrefDrive / README.md
liyun0607's picture
Update README.md
58d2d63 verified
|
Raw
History Blame Contribute Delete
7.09 kB
# 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)}",
}
```