Guide_Evaluation_LLM / pages /16_IV.3._Concevoir_votre_instruction_d'évaluation.py
bourdoiscatie's picture
Upload 44 files
1162aae verified
raw
history blame contribute delete
5.69 kB
import streamlit as st
st.set_page_config(layout="wide")
from streamlit_extras.switch_page_button import switch_page
st.markdown("""
## Concevoir votre instruction d'évaluation
""", unsafe_allow_html=True)
st.markdown(""" """)
st.markdown("""
### Conseils généraux pour la conception des instructions
Voici quelques indications que j'ai trouvées en ligne concernant la conception de l'instruction elle-même :
- Fournir une description claire de la tâche à accomplir :
- « Ta tâche est de faire X ».
- « On te donnera Y ».
- Fournir des indications claires sur les critères d'évaluation, y compris un système de notation détaillé si nécessaire :
- « Tu dois évaluer la propriété Z sur une échelle de 1 à 5, où 1 signifie ... ».
- « Tu dois évaluer si la propriété Z est présente dans l'échantillon Y. La propriété Z est présente si ... ».
- Fournir quelques étapes supplémentaires d'évaluation du « raisonnement » :
- « Pour juger cette tâche, tu dois d'abord t'assurer de lire attentivement l'échantillon Y pour identifier ..., puis ... ».
- Spécifier le format de sortie souhaité (l'ajout de champs facilitera la cohérence)
- « Ta réponse doit être fournie en JSON, avec le format suivant {"Score" : Ton score, "Reasoning" : Le raisonnement qui t'a conduit à ce score} ».
""", unsafe_allow_html=True)
st.success("""Nous avons traduit les instructions en utilisant le tutoiement. Il n'est pas dit que ce soit la meilleure option pour requêter le modèle. Le vouvoiement ou l'impératif pourraient être des options plus efficaces. Nous n'avons pas trouvé de publication sur ce sujet permettant de trancher. Nous vous conseillons alors de tester les trois approches.""")
st.markdown("""
Vous pouvez et devriez vous inspirer des exemples d'instructions de [MixEval](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mix_eval/judge_prompts.pyy) ou [MTBench](https://github.com/huggingface/lighteval/blob/main/src/lighteval/tasks/extended/mt_bench/judge_prompt_templates.py).
Autres remarques :
- La comparaison par paire [est mieux corrélée avec les préférences humaines](https://arxiv.org/abs/2403.16950) que la notation, et est généralement plus robuste.
- Si vous voulez vraiment un score, utilisez une échelle de nombres entiers et assurez-vous de fournir une explication détaillée de ce que [chaque score représente](https://x.com/seungonekim/status/1749289437165769177), ou une instruction additive (« attribuer 1 point à cette caractéristique de la réponse, 1 point supplémentaire si ...», etc.).
- L'utilisation d'une instruction par capacité à noter tend à donner des résultats meilleurs et plus robustes.
""", unsafe_allow_html=True)
st.markdown(""" """)
st.markdown(""" """)
st.markdown(""" """)
st.markdown("""
### Améliorer la précision du jugement
Vous pouvez également améliorer la précision en utilisant les techniques suivantes, peut-être plus coûteuses :
- **Donner quelques exemples**<br>Comme dans beaucoup d'autres tâches, si vous donnez des exemples, cela peut aider le processus de raisonnement. Cependant, cela augmente la longueur de votre contexte.
- **Référence**<br>Vous pouvez aussi ajouter une référence dans votre instruction.
- **CoT (*Chains of Thought*)**<br>Processus qui [améliore la précision](https://arxiv.org/abs/2212.08073) si vous demandez au modèle de produire sa chaîne de pensée **avant** le score (aussi observé [ici](https://x.com/seungonekim/status/1749289437165769177)).
- **Analyse multi-tours**<br>Peut améliorer [la détection des erreurs factuelles](https://arxiv.org/abs/2305.13281).
- **Utiliser un jury**<br>Plusieurs juges fournissant une réponse agrégée [donne de meilleurs résultats](https://arxiv.org/abs/2404.18796) que l'utilisation d'un seul modèle.
- Il est possible de réduire considérablement les coûts en utilisant plusieurs petits modèles au lieu d'un seul grand modèle coûteux.
- Vous pouvez également expérimenter l'utilisation d'un unique modèle mais avec des variations de température.
- **Enjeux**<br>De manière surprenante, il a été constaté que l'ajout d'enjeux dans l'instruction (ex : « Si tu réponds correctement, tu obtiendras un chaton ») peut améliorer l'exactitude des réponses. Cette méthode peut varier, il faut l'adapter à vos besoins.
""", unsafe_allow_html=True)
st.info("""En fonction des enjeux de votre cas d'usage, pour éliminer autant de biais que possible, vous devriez vous pencher sur les travaux réalisés en sociologie sur la manière de concevoir de bonnes enquêtes. Si vous considérez votre évaluateur comme un remplaçant à un annotateur humain, vous devez alors vous pencher sur des mesures similaires : calcul de l'accord entre les annotateurs, utilisation d'une méthodologie de conception d'enquête correcte pour atténuer les biais, etc.""")
st.markdown("""
Cependant, la plupart des gens ne souhaitent pas vraiment une évaluation impartiale reproductible et de grande qualité, et se contenteront d'une évaluation rapide et sale à l'aide d'instructions acceptables. Cela peut être ok, cela dépend des conséquences qui en découlent.
""", unsafe_allow_html=True)
st.markdown(""" """)
st.markdown(""" """)
st.markdown(""" """)
col1, col2, col3= st.columns(3)
with col1:
if st.button('Section précédente', use_container_width=True):
switch_page("IV.2._Définir_son_juge")
with col2:
if st.button("Accueil", use_container_width=True):
switch_page("Home")
with col3:
if st.button("Section suivante", use_container_width=True):
switch_page("IV.4._Évaluer votre évaluateur")