from dataclasses import dataclass
from enum import Enum
@dataclass
class Task:
benchmark: str
metric: str
col_name: str
# Init: to update with your specific keys
class Tasks(Enum):
# task_key in the json file, metric_key in the json file, name to display in the leaderboard
task0 = Task("BBH-fr", "metric_name", "BBH-fr")
task1 = Task("GPQA-fr", "metric_name", "GPQA-fr")
task2 = Task("IFEval-fr", "metric_name", "IFEval-fr")
task3 = Task("MUSR-fr", "metric_name", "MUSR-fr")
task4 = Task("MATH Lvl5-fr", "metric_name", "MATH Lvl5-fr")
task5 = Task("MMMLU-fr", "metric_name", "MMMLU-fr")
# Your leaderboard name
TITLE = """
OpenLLM French leaderboard 🇫🇷
"""
INTRODUCTION_TEXT = """
# Manifeste du Leaderboard 🇫🇷
**Création d'une plateforme d'évaluation pour les modèles de langage (LLM) francophones.**
Chère communauté, vous voici sur le Leaderboard, un classement open-source dédiée à l'évaluation des grands modèles de langage (LLM) en français. Notre mission est de mettre en lumière spécifiquement les modèles qui excellent en langue française, en fournissant des benchmarks et standards qui permettent de donner le "La" sur les avancées techniques dans les LLM en français.
Nous sommes convaincus que les LLM sont une technologie de pointe représentent l'avenir de la compréhension et de la génération du langage. Ces modèles ouvrent des pans nouveaux de productivité pour tout notre tissu d'entreprises françaises, mais auront également un impact profond sur la vie de nos concitoyens, l'éducation et dans l'héritage numérique de notre langue. Il devient urgent et vital d'oeuvrer à plus de transparence dans ce domaine stratégique des LLM dits multi-lingues. La première pièce à l'édifice est donc la mise en place d'une évaluation systématique et systémique des modèles actuels et futurs.
## Notre Mission
Le Leaderboard est né de cette conviction. Notre objectif est de créer une plateforme d'évaluation rigoureuse et transparente pour les LLM francophones, permettant de :
1. Mettre en lumière les modèles qui excellent en langue française
2. Fournir des benchmarks et des standards qui stimulent les avancées techniques
3. Promouvoir la création de modèles souverains et open source
🚀 **Soumettez votre LLM français**
Vous avez développé un LLM en français ? Soumettez-le pour évaluation ! Bien que le processus soit actuellement manuel, nous travaillons à son automatisation avec le soutien de la communauté Hugging Face.
📊 **Nos Benchmarks**
Découvrez nos benchmarks soigneusement sélectionnés [ici](https://huggingface.co/collections/le-leadboard/openllmfrenchleadboard-jeu-de-donnees-67126437539a23c65554fd88). Les évaluations sont générées et vérifiées à la fois par GPT-4 et par annotation humaine, garantissant ainsi la précision et la pertinence de nos résultats.
## Un Enjeu Stratégique
Dans l'écosystème mondial de l'IA archi dominé par la langue anglaise et quelques acteurs américains ou chinois, la voix francophone mérite d'être entendue et amplifiée. En donnant un aperçu honnête des LLMs qui capturent la richesse et les nuances de notre langue, nous nous ouvrons de nouvelles perspectives d'indépendance et de souverraineté dans ce nouveau paradigme tech.
Pour participer, soumettez votre modèle dans la section "🚀 submit here"
"""
# Quelles évaluations effectuez-vous ? Comment les gens peuvent-ils reproduire ce que vous avez fait ?
LLM_BENCHMARKS_TEXT = f"""
## Comment cela fonctionne
## Reproductibilité
Nous utilisons une version adaptée de LM Evaluation Harness [github original](https://github.com/EleutherAI/lm-evaluation-harness) pour garantir que les résultats de notre classement sont à la fois fiables et reproductibles.
## Comment reproduire les résultats :
1) Configurer le dépôt : Clonez notre repo github "lm-evaluation-harness-multilingual" - [code open-source] (https://github.com/mohamedalhajjar/lm-evaluation-harness-multilingual) et suivez les instructions d'installation.
2) Effectuer les évaluations : Pour obtenir les mêmes résultats que ceux du classement (certains tests peuvent montrer de petites variations), utilisez la commande suivante, en l'ajustant à votre modèle. Par exemple, avec le modèle Claire du Consortium OpenLLM France :
```python
lm_eval --model vllm --model_args="pretrained=OpenLLM-France/Claire-7B-FR-Instruct-0.1,tensor_parallel_size=1,dtype=auto,gpu_memory_utilization=0.8,data_parallel_size=4" --tasks=leaderboard-fr --batch_size=auto
```
## Remarques techniques :
- Nous utilisons actuellement "vllm", qui pourrait différer légèrement par rapport au résultat que vous pourriez avoir avec les standards de LM Evaluation Harness. vLLM est une bibliothèque open source conçue pour optimiser l'inférence de LLM, ce qui est adapté à notre cas d'usage et philosophie.
- Tous les tests utilisent exactement la même configuration que celle du classement original [OpenLLMLeaderboard](https://huggingface.co/spaces/open-llm-leaderboard/open_llm_leaderboard).
Les tâches et les paramètres de few-shot sont :
- BBH : 3-shot, *Big-Bench-Hard* (`acc_norm`)
- IFEval : 0-shot, *Instruction Following Evaluation* (inst_level_strict_acc,none et prompt_level_strict_acc,none)
- GPQA : 0-shot, *Generalized Purpose Question Answering* (`acc_norm`)
- MMLU : 5-shot, *hendrycksTest-abstract_algebra,hendrycksTest-anatomy,hendrycksTest-astronomy,hendrycksTest-business_ethics,hendrycksTest-clinical_knowledge,hendrycksTest-college_biology,hendrycksTest-college_chemistry,hendrycksTest-college_computer_science,hendrycksTest-college_mathematics,hendrycksTest-college_medicine,hendrycksTest-college_physics,hendrycksTest-computer_security,hendrycksTest-conceptual_physics,hendrycksTest-econometrics,hendrycksTest-electrical_engineering,hendrycksTest-elementary_mathematics,hendrycksTest-formal_logic,hendrycksTest-global_facts,hendrycksTest-high_school_biology,hendrycksTest-high_school_chemistry,hendrycksTest-high_school_computer_science,hendrycksTest-high_school_european_history,hendrycksTest-high_school_geography,hendrycksTest-high_school_government_and_politics,hendrycksTest-high_school_macroeconomics,hendrycksTest-high_school_mathematics,hendrycksTest-high_school_microeconomics,hendrycksTest-high_school_physics,hendrycksTest-high_school_psychology,hendrycksTest-high_school_statistics,hendrycksTest-high_school_us_history,hendrycksTest-high_school_world_history,hendrycksTest-human_aging,hendrycksTest-human_sexuality,hendrycksTest-international_law,hendrycksTest-jurisprudence,hendrycksTest-logical_fallacies,hendrycksTest-machine_learning,hendrycksTest-management,hendrycksTest-marketing,hendrycksTest-medical_genetics,hendrycksTest-miscellaneous,hendrycksTest-moral_disputes,hendrycksTest-moral_scenarios,hendrycksTest-nutrition,hendrycksTest-philosophy,hendrycksTest-prehistory,hendrycksTest-professional_accounting,hendrycksTest-professional_law,hendrycksTest-professional_medicine,hendrycksTest-professional_psychology,hendrycksTest-public_relations,hendrycksTest-security_studies,hendrycksTest-sociology,hendrycksTest-us_foreign_policy,hendrycksTest-virology,hendrycksTest-world_religions* (average of all the results `acc`)
- MuSR : 5-shot, *MuSR* (`acc_norm`)
"""
EVALUATION_QUEUE_TEXT = """
## Quelques bonnes pratiques avant de soumettre un modèle
### 1) Assurez-vous de pouvoir charger votre modèle et tokenizer en utilisant les AutoClasses :
```python
from transformers import AutoConfig, AutoModel, AutoTokenizer
config = AutoConfig.from_pretrained("nom de votre modèle", revision=revision)
model = AutoModel.from_pretrained("nom de votre modèle", revision=revision)
tokenizer = AutoTokenizer.from_pretrained("nom de votre modèle", revision=revision)
```
Si ce test échoue, suivez les messages d'erreur pour déboguer votre modèle avant de le soumettre. Il est probable que votre modèle ait été mal téléversé.
Note : assurez-vous que votre modèle est public !
Note : si votre modèle nécessite `use_remote_code=True`, nous ne prenons pas encore en charge cette option, mais nous travaillons à l'ajouter grâce au soutien de la communauté.
### 2) Convertissez les poids de votre modèle en [safetensors](https://huggingface.co/docs/safetensors/index)
Il s'agit d'un nouveau format pour stocker les poids qui est plus sûr et plus rapide à charger et à utiliser. Cela nous permettra également d'ajouter le nombre de paramètres de votre modèle à la `Vue Étendue` !
### 3) Assurez-vous que votre modèle dispose d'une licence ouverte !
Il s'agit d'un classement pour des LLMs ouverts, et nous aimerions que le plus de gens possible sachent qu'ils peuvent utiliser votre modèle 🤗
### 4) Complétez la fiche descriptive de votre modèle
Lorsque nous ajouterons des informations supplémentaires sur les modèles au classement, elles seront automatiquement tirées de la fiche descriptive du modèle.
## En cas d'échec du modèle
Si votre modèle apparaît dans la catégorie `FAILED`, son exécution a été interrompue.
Assurez-vous d'avoir suivi les étapes ci-dessus en premier.
Si tout est en ordre, vérifiez que vous pouvez lancer EleutherAIHarness sur votre modèle localement, en utilisant la commande ci-dessus sans modifications (vous pouvez ajouter `--limit` pour limiter le nombre d'exemples par tâche).
"""
CITATION_BUTTON_LABEL = "Copy the following snippet to cite these results"
CITATION_BUTTON_TEXT = r"""
@misc{openllm-French-leaderboard,
author = {Mohamad Alhajar, Alexandre Lavallée},
title = {Open LLM French Leaderboard v0.2},
year = {2024},
publisher = {Mohamad Alhajar},
howpublished = "\url{https://huggingface.co/spaces/le-leadboard/OpenLLMFrenchLeaderboard}"
}
"""