ne pas versioner le lora

This commit is contained in:
Alex 2026-01-14 18:00:42 +01:00
parent 8d2e5ac021
commit c5d372e98d
22 changed files with 25200 additions and 3 deletions

1
Finetunning/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
qwen2.5*/

68
Finetunning/mergeLora.py Normal file
View File

@ -0,0 +1,68 @@
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
# ----------------------------
# Configuration
# ----------------------------
BASE_MODEL = "Qwen/Qwen2.5-7B-Instruct"
LORA_DIR = "./qwen2.5-7b-uk-fr-lora" # dossier issu du fine-tuning
OUTPUT_DIR = "./qwen2.5-7b-uk-fr-merged" # modèle fusionné final
DTYPE = torch.float16 # GGUF-friendly
DEVICE = "cpu" # merge sur CPU (stable, sûr)
print("=== LoRA merge script started ===")
# ----------------------------
# Load base model
# ----------------------------
print("[1/4] Loading base model...")
base_model = AutoModelForCausalLM.from_pretrained(
BASE_MODEL,
torch_dtype=DTYPE,
device_map=DEVICE,
trust_remote_code=True,
)
print("Base model loaded.")
# ----------------------------
# Load tokenizer
# ----------------------------
print("[2/4] Loading tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(
BASE_MODEL,
trust_remote_code=True
)
tokenizer.pad_token = tokenizer.eos_token
print("Tokenizer loaded.")
# ----------------------------
# Load LoRA adapter
# ----------------------------
print("[3/4] Loading LoRA adapter...")
model = PeftModel.from_pretrained(
base_model,
LORA_DIR,
)
print("LoRA adapter loaded.")
# ----------------------------
# Merge LoRA into base model
# ----------------------------
print("[4/4] Merging LoRA into base model...")
model = model.merge_and_unload()
print("LoRA successfully merged.")
# ----------------------------
# Save merged model
# ----------------------------
print("Saving merged model...")
model.save_pretrained(
OUTPUT_DIR,
safe_serialization=True,
)
tokenizer.save_pretrained(OUTPUT_DIR)
print("=== Merge completed successfully ===")
print(f"Merged model saved in: {OUTPUT_DIR}")

View File

@ -80,3 +80,27 @@ Vous pouvez modifier les paramètres suivants dans `main.py` :
- `OUTPUT_PDF_PATH` : Chemin et nom du fichier PDF de sortie (généré autoamtiquement) - `OUTPUT_PDF_PATH` : Chemin et nom du fichier PDF de sortie (généré autoamtiquement)
--- ---
## Finnetunning
Le finne-tunning permet d'avoir une meilleur traduction. C'est un processus long en temps de calcul, mais permet une traduction plus précise.
Le principe est le suivant :
```
1⃣ Dataset dentraînement (pairs.json)
2⃣ Fine-tuning LoRA (finetuning.py)
3⃣ Validation / Évaluation (validation.py)
4⃣ Merge LoRA + modèle de base (mergeLora.py)
5⃣ Conversion en GGUF
6⃣ Ollama (inférence finale)
```
### validation
e script tests plusieurs prompt et renvoie celui avec le meilleur score BLEU.
Il faut ensuite copier ce prompt dans le fichier modelFile.

View File

@ -3,14 +3,15 @@ PARAMETER temperature 0.2
PARAMETER num_ctx 8192 PARAMETER num_ctx 8192
SYSTEM """ SYSTEM """
Tu es un traducteur spécialisé dans les mémoires ukrainiennes des années 1910. Tu es un traducteur spécialisé dans les mémoires ukrainiennes des années 1910.
- Utilise le glossaire fourni pour les noms de lieux et termes historiques.
- Garde le style narratif et les tournures orales de l'auteur. - Garde le style narratif et les tournures orales de l'auteur.
- Respecte les règles de traduction suivantes :
Règles strictes : Règles strictes :
1. **Conserve tous les noms de lieux** dans leur forme originale (ex. : Львів → Lviv, mais ajoute une note si nécessaire entre [ ]). 1. **Conserve tous les noms de lieux** dans leur forme originale (ex. : Львів → Lviv, mais ajoute une note si nécessaire entre [ ]).
2. **Respecte le style narratif** : garde les tournures orales et les expressions propres à lauteur. 2. **Respecte le style narratif** : garde les tournures orales et les expressions propres à l'auteur.
3. **Pour les termes historiques** (ex. : "powiat"), utilise le terme français standard et ajoute une note explicative. 3. **Pour les termes historiques** (ex. : "powiat"), utilise le terme français standard et ajoute une note explicative.
4. **Conserve les citations** russe/allemand/polonais intégrés au texte (mais ajoute une note de fin de paragraphe entre [ ] en la traduisant et en précisant la langue d'origine. 4. **Conserve les citations** russe/allemand/polonais intégrés au texte (mais ajoute une note de fin de paragraphe entre [ ] en la traduisant et en précisant la langue d'origine.
5. **Structure** : Garde les sauts de ligne et la mise en page originale. 5. **Structure** : Garde les sauts de ligne et la mise en page originale.
6. **Notes du traducteur** : Ajoute entre crochets [ ] les explications contextuelles si un contexte historique existe (ex. : "[Note : le context]"). 6. **Notes du traducteur** : Ajoute entre crochets [ ] les explications contextuelles si un contexte historique exist.
""" """

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff