## Don’t Forget the Enjoin: FocalLoRA for Instruction Hierarchical Alignment in Large Language Models

### framework
![framework](figure/framework.png)

### Data Generation
```
python dataGeneration.py
```
The second type of data is obtained by reversing the system with the user instruction.

### Attention Visualization

visualization_attention.py is used to visualize the attention heatmaps before and after fine-tuning the model. An example script is:
```
python visualization_attention.py \
  --model_path "/home/user/models/Meta-Llama-3.1-8B-Instruct/" \
  --lora_path "/home/user/LoraAdapter_set/llama3_loraAdapter3_0.3/" \
  --json_file "json/test.json" \
  --cuda 0\
  --important_file "outputs/case_outputs/important_heads.json" \
  --output_path "./attention_visualization/lora_llama_case" 
```

To reproduce the conflict-vs-normal case study described in the paper, run the helper script:

```
./visualize.sh
```

This script constructs the greenhouse-effect prompts (English-only system, optional French-only user instruction), and renders attention maps for both the base model and the fine-tuned LoRA adapter under `attention_visualization/base_model` and `attention_visualization/finetuned`.

### Model fine-tuning
```
python _tuning.py \
  --model_path "/home/user/models/Meta-Llama-3.1-8B-Instruct/" \
  --json_path "data/language_instruction.json" \
  --output_dir "LoraAdapter_set/llama3_loraAdapter3_0.5" \
  --topk 10 \
  --epochs 10 \
  --lr 2e-4 \
  --lambda_focus 1 \
  --tune_path tuneData
```

### Model Output
```
python GetAS.py \
  --json_path data/case_instruction.json\
  --model_path "/home/user/models/Meta-Llama-3.1-8B-Instruct/" \
  --lora_path "" \
  --output_dir "results/llama" \
  --cuda 1
```
