Qingchen Yu 1,* , Zifan Zheng 1,* , Shichao Song 2,* , Zhiyu Li 1,† , Feiyu Xiong 1 , Bo Tang 1 , Ding Chen 1
1 Institute for Advanced Algorithms Research, Shanghai, 2 Renmin University of China
Wer sollte auf unsere Arbeit achten?
Wichtig
? Star uns! Wenn Sie unser Projekt auf GitHub markieren, erhalten Sie alle Veröffentlichungsbenachrichtigungen sofort. Wir freuen uns über Ihre Unterstützung!
Wir fassen unsere Hauptbeiträge wie folgt zusammen:
Wie in der Abbildung dargestellt, werden Fälle veranschaulicht, in denen Bewertungsframeworks wie LM Eval Harness und OpenCompass nicht in der Lage waren, wichtige Antworten zu extrahieren. Insbesondere stellen A/T/C/M Aufgaben mit den Optionen Alphabet/Kurztext/Kategorialbezeichnung/Mathe dar.
Benchmark-Datensatz erstellen : Um den Bewertungsprozess mit xFinder zu optimieren, haben wir verschiedene gängige Benchmark-Datensätze in einem einheitlichen JSON-Format standardisiert. Einzelheiten zur Implementierung finden Sie unter create_benchmark_dataset.py. Wenn Sie Ihre eigenen Datensätze mit xFinder auswerten möchten, lesen Sie bitte unsere bereitgestellte Skriptvorlage benchmark_dataset_template.py für Anleitungen zur Formatkonvertierung.
Bereiten Sie QA-Paare und LLM-Ausgaben vor : Sammeln Sie die LLM-Ausgaben, die Sie auswerten möchten. Stellen Sie sicher, dass Ihre Daten die folgenden Elemente enthalten:
Stellen Sie das xFinder-Modell bereit : Wählen Sie eines der folgenden Modelle für die Bereitstellung aus:
Führen Sie nach der Bereitstellung des xFinder-Modells die folgenden Schritte aus, um eine Bewertung durchzuführen:
# Install xfinder
conda create -n xfinder_env python=3.10 -y
conda activate xfinder_env
pip install xfinder
# Perform an evaluation with xFinder (a built-in example)
CUDA_VISIBLE_DEVICES=0 python -m xfinder.eval --run-example --model-name xFinder-qwen1505 --inference-mode local --model-path-or-url /path/to/anonymized/model/xFinder-qwen1505
Mit dieser Methode können Sie mehrere in einer JSON-Datei gespeicherte Beispiele auswerten.
# Initialize Evaluator object
evaluator = Evaluator (
model_name = "xFinder-qwen1505" , # Model name
inference_mode = "api" , # Inference mode, 'local' or 'api'
model_path_or_url = "http://your-anonymized-url/generate" , # Anonymized model path or URL
)
# Perform batch evaluation
data_path = "/path/to/your/data/example.json" # User needs to provide their own data path
accuracy = evaluator . evaluate ( data_path )
print ( f"Batch evaluation accuracy: { accuracy } " )
Mit dieser Methode können Sie einzelne Beispiele bewerten, die in ein LLM-Bewertungsframework integriert werden können.
# Initialize Evaluator object
evaluator = Evaluator (
model_name = "xFinder-qwen1505" , # Model name
inference_mode = "local" , # Inference mode, 'local' or 'api'
model_path_or_url = "IAAR-Shanghai/xFinder-qwen1505" , # Anonymized model path or URL
)
# Define input for a single evaluation
question = "What is the capital of France?"
llm_output = "The capital of France is Paris."
standard_answer_range = "[ " Paris " , " Lyon " , " Marseille " ]"
key_answer_type = "short_text"
correct_answer = "Paris"
# Perform single example evaluation
result = evaluator . evaluate_single_example (
question ,
llm_output ,
standard_answer_range ,
key_answer_type ,
correct_answer
)
Tipp
demo.ipynb
.export HF_ENDPOINT=https://hf-mirror.com
aus, um den chinesischen Spiegel zu verwenden, wenn Sie keine Verbindung zu Hugging Face herstellen können.Wir zeigen Fälle bei vier Arten von Fragen, bei denen RegEx die Antworten nicht oder häufig falsch extrahiert, während xFinder die Schlüsselantworten genau extrahiert.
{
"key_answer_type" : " alphabet option " ,
"question" : " A man is seen playing guitar on a stage with others playing instruments behind him. The man grabs a guitar from the audience and begins playing both one after the other ... " ,
"llm_output" : " Option A is the correct choice as it describes ... " ,
"standard_answer_range" : " [['A', 'strums the guitar in the end, continues playing the guitar with the crowd following him as well as lining up next to him.'], ['B', 'continues playing the instruments and ends by waving to the crowd and walking off stage.'], ['C', 'then turns to the audience and gives a stuffed toy to the audience and continues playing.'], ['D', 'finally stops playing and moves his hands for the crowd to see.']] " ,
"gold_label" : " A " ,
"xFinder_output" : " A " ,
},
{
"key_answer_type" : " short text " ,
"question" : " If you really wanted a grape, where would you go to get it? Answer Choices: winery / fruit stand / field / kitchen / food " ,
"llm_output" : " The answer is winery / fruit stand / field / kitchen / food ... " ,
"standard_answer_range" : " [ " winery " , " fruit stand " , " field " , " kitchen " , " food " ] " ,
"gold_label" : " [No valid answer] " ,
"xFinder_output" : " [No valid answer] " ,
},
{
"key_answer_type" : " categorical label " ,
"question" : " How tall is the Sears Building ? " ,
"llm_output" : " The Sears Building is a specific structure, so the answer would be a Location ... " ,
"standard_answer_range" : " ['Abbreviation', 'Entity', 'Description', 'Person', 'Location', 'Number'] " ,
"gold_label" : " Location " ,
"xFinder_output" : " Location " ,
},
{
"key_answer_type" : " math " ,
"question" : " Mike made 69 dollars mowing lawns over the summer. If he spent 24 dollars buying new mower blades, how many 5 dollar games could he buy with the money he had left? " ,
"llm_output" : " To find out how many 5 dollar ... Let's calculate that: nn $45 / $5 = 9 nn So, Mike could buy 9 5 dollar games with the money he had left. " ,
"standard_answer_range" : " a(n) number / set / vector / matrix / interval / expression / function / equation / inequality " ,
"gold_label" : " 9 " ,
"xFinder_output" : " 9 " ,
}
Basis : OpenCompass, LM Eval Harness, UltraEval, GPT-4. Unsere Methode : xFinder-qwen1505, xFinder-qwen1518, xFinder-gemma7, xFinder-chatglm36base, xFinder-llama38, xFinder-llama38it.
Wir haben ihre Genauigkeit beim Extrahieren wichtiger Antworten sowohl aus dem KAF-Testsatz als auch aus den Generalisierungssätzen bewertet. Der Maßstab in der Tabelle ist die Genauigkeit.
@article{xFinder,
title={xFinder: Robust and Pinpoint Answer Extraction for Large Language Models},
author={Qingchen Yu and Zifan Zheng and Shichao Song and Zhiyu Li and Feiyu Xiong and Bo Tang and Ding Chen},
journal={arXiv preprint arXiv:2405.11874},
year={2024},
}
?Zurück nach oben