Fine-Tuning de Phi-2 pour la Data Science (Pandas & Matplotlib)

Ce dépôt contient les poids de l'adaptateur LoRA pour le modèle Microsoft Phi-2 (2.7B). Ce projet explore l'adaptation d'un LLM dans un environnement matériel contraint, ciblant spécifiquement la génération de code Python avec les bibliothèques pandas et matplotlib.

Note : Le code source complet de l'entraînement, les scripts de filtrage des données et les configurations se trouvent sur le dépôt GitHub du projet : https://github.com/Fitz-V/Projet_CMI_L2_Finetune_Phi2 .

Architecture et Paramètres Techniques

  • Modèle de base : microsoft/phi-2 (chargé en float16)
  • Méthode d'adaptation : LoRA (Low-Rank Adaptation) avec un rang $r=16$ et $\alpha=32$.
  • Corpus d'entraînement : Sous-ensemble filtré de The Stack Dedup (isolation stricte des scripts Python contenant import pandas ou import matplotlib).
  • Statut de l'entraînement : Interrompu au Chunk 0 (voir section Limites).
  • Optimisation VRAM : Optimiseur paged_adamw_32bit et accumulation de gradients (Batch effectif de 16).

Utilisation et Inférence

Pour utiliser ce modèle, vous devez charger le modèle de base Phi-2 et y fusionner cet adaptateur LoRA via la bibliothèque peft.

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base_model_id = "microsoft/phi-2"
peft_model_id = "jhondoe789/projet_cmi_L2_phi-2_lora" #

# 1. Charger le tokenizer et le modèle de base
tokenizer = AutoTokenizer.from_pretrained(peft_model_id)
base_model = AutoModelForCausalLM.from_pretrained(base_model_id, device_map="auto", torch_dtype="auto")

# 2. Charger et appliquer l'adaptateur LoRA
model = PeftModel.from_pretrained(base_model, peft_model_id)

# 3. Inférence (Rappel : format Causal LM, pas d'instructions)
prompt = "import pandas as pd\nimport matplotlib.pyplot as plt\n\n# Load the dataset and plot a histogram of the 'age' column\n"
inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

Évaluation et Analyse Critique (Distribution Shift)

Les performances ont été mesurées via la métrique Pass@1 sur le benchmark DS-1000.

Modèle Pass@1 moyen (%)
GPT-4-turbo 53.9
GPT-3.5-turbo (0125) 39.4
GPT-3.5-turbo (0613) 38.6
Phi-2 fine-tuné (chunk0) 10.2
Mistral 7B 10.1
Phi-2 base 10.0

Analyse des résultats :

Le fine-tuning ciblé a permis l'émergence de capacités non nulles sur des bibliothèques tierces (Scipy, Sklearn), mais le score global stagne par rapport au modèle de base (10.2% vs 10.0%).

Cette stagnation s'explique par un biais d'alignement majeur (Distribution Shift) entre la phase d'apprentissage et l'évaluation : 1. L'entraînement (Causal LM) : Le modèle a ingéré du code source brut. Ses poids ont été ajustés pour la prédiction stricte du token suivant (auto-complétion de scripts). 2. L'évaluation (Instruction-following) : DS-1000 interroge les modèles à l'aide d'instructions complexes en langage naturel (ex: "Write a python function to..."). Le modèle n'ayant bénéficié d'aucune phase d'Instruction Tuning, la dégradation de certaines métriques spécifiques (comme la baisse sur matplotlib) illustre une rupture de distribution plutôt qu'une régression syntaxique : le modèle échoue à interpréter la structure de la requête, masquant ainsi ses réelles capacités de génération de code.

Limites et Biais

Outre l'absence d'Instruction Tuning mentionnée ci-dessus, ce modèle n'a été entraîné que sur une fraction initiale du corpus prévu (Chunk 0) en raison de contraintes matérielles. Par conséquent : - Il existe un risque de surapprentissage localisé sur la distribution spécifique de ce sous-ensemble de données. - Les performances peuvent se dégrader fortement si le contexte s'éloigne des schémas de code prédominants dans ce premier lot de données.

Downloads last month
24
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for jhondoe789/projet_cmi_L2_phi-2_lora

Base model

microsoft/phi-2
Adapter
(975)
this model

Dataset used to train jhondoe789/projet_cmi_L2_phi-2_lora