File size: 7,422 Bytes
1b897bf
 
 
 
e7f9814
 
 
87a4790
1c6468f
87a4790
b73860e
eb72c9c
1c6468f
 
eb72c9c
87a4790
 
 
1b897bf
 
eb72c9c
f86f5bf
2813a1a
87a4790
 
ff89c7a
eb72c9c
87a4790
 
 
 
 
 
 
 
 
 
1c6468f
 
 
 
 
 
 
 
 
 
 
 
eb72c9c
1c6468f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b95b9cb
 
 
1c6468f
eb72c9c
b95b9cb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f86f5bf
 
87a4790
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
---
license: apache-2.0
base_model: NousResearch/Meta-Llama-3.1-8B-Instruct
library_name: peft
tags:
- llama-factory
- lora
datasets:
  - Snit/french-conversation
  - Nekochu/novel17_train_alpaca_format
  - bofenghuang/vigogne
  - MaziyarPanahi/french_instruct_human_sharegpt
  - jpacifico/French-Alpaca-dataset-Instruct-110K
  - jpacifico/french-orca-dpo-pairs-revised
  
language:
  - fr
  - en
---

- Similar to the old [Nekochu/Llama-2-13B-fp16-french](https://huggingface.co/Nekochu/Llama-2-13B-fp16-french) with additional datasets.
- I've (alway) kept LoRA `QLoRA_french_dpo` so it can be applied to any *LLaMA-3.1-8B* fine-tuned model but may affect performance.
- Quants: exl2 [2.4bpw-h6](https://huggingface.co/Nekochu/Llama-3.1-8B-french-DPO/tree/2.4bpw-h6), [4.25bpw-h6](https://huggingface.co/Nekochu/Llama-3.1-8B-french-DPO/tree/4.25bpw-h6), [8.0bpw-h8](https://huggingface.co/Nekochu/Llama-3.1-8B-french-DPO/tree/8.0bpw-h8) | [GGUF](https://huggingface.co/Nekochu/Llama-3.1-8B-french-DPO/tree/gguf) Q4_K_M,IQ4_XS...

<details>
  <summary>This training can be replicated using LLaMA-Factory. </summary>

Stage A: **P**re **T**raining, Raw text
```
set CUDA_VISIBLE_DEVICES=0 && llamafactory-cli train --stage pt --do_train True --model_name_or_path NousResearch/Meta-Llama-3.1-8B-Instruct --preprocessing_num_workers 16 --finetuning_type lora --template alpaca --rope_scaling linear --flash_attn fa2 --dataset_dir data --dataset french-raw-pt --cutoff_len 8192 --learning_rate 5e-05 --num_train_epochs 3.0 --max_samples 10000000 --per_device_train_batch_size 1 --gradient_accumulation_steps 1 --lr_scheduler_type cosine --max_grad_norm 1.0 --logging_steps 10 --save_steps 1000 --warmup_steps 0 --neftune_noise_alpha 5 --optim adamw_8bit --packing True --report_to none --output_dir saves\LLaMA3.1-8B-Chat\lora\QLoRA_french_pt --bf16 True --plot_loss True --ddp_timeout 180000000 --include_num_input_tokens_seen True --quantization_bit 4 --quantization_method bitsandbytes --lora_rank 32 --lora_alpha 64 --lora_dropout 0.15 --create_new_adapter True --lora_target all
```

Stage B: Continued **S**upervised **F**ine-**T**uning, QA
```
set CUDA_VISIBLE_DEVICES=0 && llamafactory-cli train --stage sft --do_train True --model_name_or_path NousResearch/Meta-Llama-3.1-8B-Instruct --preprocessing_num_workers 16 --finetuning_type lora --template alpaca --rope_scaling linear --flash_attn fa2 --dataset_dir data --dataset Acquiesce_french_vigogne,novel17_train --cutoff_len 8192 --learning_rate 5e-05 --num_train_epochs 3.0 --max_samples 10000000 --per_device_train_batch_size 1 --gradient_accumulation_steps 1 --lr_scheduler_type cosine --max_grad_norm 1.0 --logging_steps 10 --save_steps 1000 --warmup_steps 0 --neftune_noise_alpha 5 --optim adamw_8bit --packing True --report_to none --output_dir saves\LLaMA3.1-8B-Chat\lora\QLoRA_french_sft --bf16 True --plot_loss True --ddp_timeout 180000000 --adapter_name_or_path saves\LLaMA3.1-8B-Chat\lora\QLoRA_french_pt --quantization_bit 4 --quantization_method bitsandbytes --lora_rank 32 --lora_alpha 64 --lora_dropout 0.15 --lora_target all
```

Stage C: Continued **D**irect **P**reference **O**ptimization

<details>
  <summary>Config</summary>

`llama3_lora_dpo.yaml`
```yaml
### model:    
model_name_or_path: NousResearch/Meta-Llama-3.1-8B-Instruct
quantization_bit: 4
use_adam_mini: true
adapter_name_or_path: saves\LLaMA3.1-8B-Chat\lora\QLoRA_french_sft 

### method
stage: dpo
do_train: true
finetuning_type: lora
lora_target: all
pref_beta: 0.1
pref_loss: sigmoid  # choices: [sigmoid (dpo), orpo, simpo]

### dataset
dataset: french_orca_rlhf-revised
template: llama3
cutoff_len: 4096
max_samples: 10000
overwrite_cache: true
preprocessing_num_workers: 16

### output
output_dir: saves/LLaMA3.1-8B-Chat/lora/QLoRA_french_dpo
logging_steps: 10
save_steps: 1000
plot_loss: true
overwrite_output_dir: true

### train
per_device_train_batch_size: 1
gradient_accumulation_steps: 1
learning_rate: 5.0e-6
num_train_epochs: 1.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 180000000
flash_attn: fa2
optim: paged_adamw_8bit
```

`dataset_info.json`:
```json
  "french_orca_rlhf-revised": {
    "hf_hub_url": "jpacifico/french-orca-dpo-pairs-revised",
    "ranking": true,
    "columns": {
      "prompt": "question",
      "chosen": "chosen",
      "rejected": "rejected",
      "system": "system"
    }
  },
  "novel17_train": {
    "hf_hub_url": "Nekochu/novel17_train_alpaca_format",
    "formatting": "alpaca"
  },
  "Acquiesce_french_vigogne": {
    "file_name": "Acquiesce_french_vigogne.json",
    "formatting": "alpaca",
    "columns": {
      "prompt": "instruction",
      "query": "input",
      "response": "output",
      "system": "system",
      "history": "history"
    }
  },
  "french-raw-pt": {
    "file_name": "french-raw-pt.json",
    "columns": {
      "prompt": "text"
    }
  },
```
</details>




Dataset convert to Alpaca: [Acquiesce_french_vigogne](https://huggingface.co/datasets/Nekochu/Luminia-mixture/tree/split-v2/General/French),french-raw-pt

</details>

<details>
  <summary>Output Examples</summary>

```
### Instruction:
Écrire un texte dans un style baroque sur la glace et le feu

### Response:
La glace, cette matière si froide, si pure, si immuable, semble s'opposer en tout point à la flamme ardente, à cette force qui embrase tout ce qui se trouve sur son passage. Et pourtant, c'est précisément cette opposition qui rend leur confrontation si fascinant.

Lorsque la glace rencontre le feu, elle semble se dresser en défense contre cette menace brûlante. Ses cristaux brillent alors comme des diamants éblouissants, refusant de céder à cette envahissante passion de feu. Mais le feu, impétueux, persévérant, continue de s'enflammer, déterminé à briser cette barrière glacée.

Cependant, cette lutte apparente trouve en réalité une harmonie cachée. Car en se confrontant, ces deux éléments opposés créent une symphonie de contraires, où la glace se transforme en une eau cristalline, purifiée par cette confrontation flamboyante. Cette fusion paradoxale donne naissance à une nouvelle réalité, où la froideur et la chaleur se mêlent en une danse éblouissante.

Ainsi, cette opposition apparente entre la glace et le feu nous rappelle que même les contraires peuvent trouver leur place dans un monde en constante évolution. Cette confrontation symbolique nous invite à considérer les aspects contradictoires de notre propre existence, à embrasser cette dualité inhérente à notre nature humaine. En acceptant cette dualité, nous découvrons enfin la véritable beauté de notre existence, où la lumière et l'obscurité se mêlent en une symphonie harmonieuseassistant.scalablytyped

SupportedContentEn explorant cette opposition fascinante entre la glace et le feu, nous découvrons une vérité profonde sur notre propre existence. Cette confrontation symbolique nous rappelle que nous sommes composés de forces contradictoires, que notre essence même repose sur cette dualité inhérente à notre nature humaine. En embrassant cette dualité, nous découvrons enfin la beauté harmonieuse qui réside en chacun de nous, où la lumière et l'obscurité se mêlent en une symphonie captivanteassistant
```

Note: Output by exl2-DPO. `QLoRA_french_sft` is more stable to avoid any gibberi  like ""`harmonieuseassistant.scalablytyped`"".

</details>