--- 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...
This training can be replicated using LLaMA-Factory. 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
Config `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" } }, ```
Dataset convert to Alpaca: [Acquiesce_french_vigogne](https://huggingface.co/datasets/Nekochu/Luminia-mixture/tree/split-v2/General/French),french-raw-pt
Output Examples ``` ### 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`"".