Dieses Repo enthält den Code, die Daten und Modelle für TMLR 2024 Papier "Tigerscore: Auf dem Weg zu Erklärungsmetrik für alle Aufgaben zur Erzeugung von Text" ".
| Andere Ressourcen |
|---|
| ? Tigerscore -Kollektionen |
| ? Umarmung der Demo |
Um Tigerscore Pipeline direkt zu verwenden, müssen Sie sie zunächst als Python -Paket installieren.
pip install git+https://github.com/TIGER-AI-Lab/TIGERScore.git Bitte prüfen Sie, ob Ihre torch.cuda.is_available() für Ihre lokale Maschine True .
Außerdem müssen Sie Tigerscore mit VLLM -Detaillierter verwenden, und müssen Sie vllM nach dem VLLM -Dokument mangell installieren.
pip install vllm
pip3 install -U xformers --index-url https://download.pytorch.org/whl/cu121 # Replace `cp39` with your Python version (e.g., `cp38`, `cp39`, `cp311`).
pip install https://github.com/vllm-project/vllm/releases/download/v0.2.2/vllm-0.2.2+cu118-cp39-cp39-manylinux1_x86_64.whl
pip3 install -U xformers --index-url https://download.pytorch.org/whl/cu118Wenn Sie die Trainingsskripte verwenden möchten, installieren Sie die Abhängigkeiten, indem Sie den folgenden Befehl ausführen:
pip install -r requirements.txt Nach der Installation können Sie die Textgenerationen mit dem folgenden Exmaple -Python -Code bewerten (siehe in tigerscore_example_usage.ipynb für weitere Anwendungsfälle):
# gpu device setup
import os
os . environ [ "CUDA_VISIBLE_DEVICES" ] = "0"
# example
instruction = "Write an apology letter."
input_context = "Reason: You canceled a plan at the last minute due to illness."
hypo_output = "Hey [Recipient], n n I'm really sorry for ditching our plan. I suddenly got an opportunity for a vacation so I took it. I know this might have messed up your plans and I regret that. n n Despite being under the weather, I would rather go for an adventure. I hope you can understand my perspective and I hope this incident doesn't change anything between us. n n We can reschedule our plan for another time. Sorry again for the trouble. n n Peace out, n [Your Name] n n ---"
# Load and evaluate examples in all options in 3 lines of code
from tigerscore import TIGERScorer
scorer = TIGERScorer ( model_name = "TIGER-Lab/TIGERScore-7B" ) # on GPU
# scorer = TIGERScorer(model_name="TIGER-Lab/TIGERScore-7B", quantized=True) # 4 bit quantization on GPU
# scorer = TIGERScorer(model_name="TIGER-Lab/TIGERScore-7B", use_vllm=True) # VLLM on GPU
# scorer = TIGERScorer(model_name="TIGER-Lab/TIGERScore-7B-GGUF", use_llamacpp=True) # 4 bit quantization on CPU
results = scorer . score ([ instruction ], [ hypo_output ], [ input_context ])
# print the results, which is a list of json output containging the automatically parsed results!
print ( results )Die Ergebnisse sind eine Liste von Diktieren, die aus strukturierter Fehleranalyse bestehen.
[
{
"num_errors" : 3 ,
"score" : -12.0 ,
"errors" : {
"error_0" : {
"location" : " " I'm really glad for ditching our plan. " " ,
"aspect" : " Inappropriate language or tone " ,
"explanation" : " The phrase " ditching our plan " is informal and disrespectful. It should be replaced with a more respectful and apologetic phrase like " cancelling our plan " . " ,
"severity" : " Major " ,
"score_reduction" : " 4.0 "
},
"error_1" : {
"location" : " " I suddenly got an opportunity for a vacation so I took it. " " ,
"aspect" : " Lack of apology or remorse " ,
"explanation" : " This sentence shows no remorse for cancelling the plan at the last minute. It should be replaced with a sentence that expresses regret for the inconvenience caused. " ,
"severity" : " Major " ,
"score_reduction" : " 4.0 "
},
"error_2" : {
"location" : " " I would rather go for an adventure. " " ,
"aspect" : " Incorrect reason for cancellation " ,
"explanation" : " This sentence implies that the reason for cancelling the plan was to go on an adventure, which is incorrect. The correct reason was illness. This sentence should be replaced with a sentence that correctly states the reason for cancellation. " ,
"severity" : " Major " ,
"score_reduction" : " 4.0 "
}
},
"raw_output" : " ... "
}
] scorer = TIGERScorer ( model_name = "TIGER-Lab/TIGERScore-7B" , use_vllm = True ) # VLLM on GPUTigerscore unterstützt vllM schnelle Inferenz. Bei einer einzigen GPU von A6000 (48 GB) benötigt es nur 0,2s - 0,3s für Tigerscore -13b, um jede Instanz zu bewerten.
scorer = TIGERScorer ( model_name = "TIGER-Lab/TIGERScore-7B" , quantized = True ) # 4 bit quantization on GPU Durch Einstellen des Initialisierungsparameters quanitzed=True wird das Modell so eingestellt, dass sie in 4-Bit-Version mit Umarmung face load_in_4bit=True geladen werden.
Bitte beachten Sie, dass die Verwendung von Quantisierung die Speicheranforderung um einen großen Rand verringern würde. Sie können Tigerscore mit einer 20+GB -Speicher -GPU ausführen. Die Inferenzgeschwindigkeit kann jedoch langsamer sein als die ursprüngliche Bfloat16 -Version. Es hängt davon ab, dass Sie einen Kompromiss einlassen.
scorer = TIGERScorer ( model_name = "TIGER-Lab/TIGERScore-7B-GGUF" , use_llamacpp = True )Wir bieten auch die Lamacpp-Version von Tigerscore-7b/13b. Durch die Verwendung der von uns bereitgestellten GGUF -Version können Sie Tigerscore auf reinen CPU -Geräten ausführen. Es dauert im Allgemeinen 20s für Tigerscore-13b, um jede Instanz zu erzielen.
Datensatzvorverarbeitungsskripte und Zwischenergebnisse finden Sie hier
Ordner xgptscore enthält alle Vorlagen, mit denen wir Chatgpt oder GPT-4 abfragen, um die identifizierten Fehler in der Hypotheserausgabe für verschiedene Aufgaben zu erhalten, die Tigerscore beteiligt. Wir nennen diese API -Abfragemethoden als XGPTSCORE für die AE X Planainable -Bewertungsmethode , indem Sie GPT -Modelle abfragen.
Die Gesamtpipeline von XGPTSCORE lautet:
./constants.py ) Weitere Informationen finden Sie unter xgptscore/README.md . Und wie Sie unsere Abfragevorlage mit einer einzelnen Funktion xgptscore()
MetricInstruct besteht aus Daten aus 2 Stichprobenkanälen, realem Kanal und synthetischen Kanal .
generate_distill_data.sh generiert.generate_synthesis_distill_data.sh generiert. Der Gesamtzweck von 2 Kanaldatenerfassung besteht darin, sicherzustellen, dass wir so viele Fehlertypen in den Trainingsdaten abdecken, damit unser Modell besser verallgemeinert wird.Nachdem wir diese Daten erhalten haben, machen wir eine Serie -Heuristik, um unsere schlechten Daten zu filtern und Daten zu erweitern:
check_data.sh )generate_inst_synthetic_data.sh als Ergänzung zum synthetischen Kanal zu generieren.Sie können unsere vorverarbeiteten Daten laden, die Tigerscore-V1 aus dem Umarmungsgesicht finanzieren? direkt:
from datasets import load_dataset
dataset = load_dataset ( "TIGER-Lab/MetricInstruct" ) Wir bieten unsere Trainings- und Testskripte in finetune , wo wir verwenden?
finetune_llama.sh um das Modell zu finanzieren.format_distill_data.sh um die Daten in das Format für die Finetuning zu verwandeln, dh einen Sinlge -Anweisungen und ein Eingabedontext mit einer Ausgabe.test_llama_vllm.sh um die Korrelation als Leistung unseres Geldbörsens zu testen und zu berechnen. Bitte überprüfen Sie diese Skripte, um weitere Details zu unserem Trainings- und Testprozess zu erfahren../tigerscore/common/README.md um die Env zu installieren. Bitte zitieren Sie unser Papier, wenn Sie unsere Daten, Modell oder Code nützlich bestreiten.
@article{Jiang2023TIGERScoreTB,
title={TIGERScore: Towards Building Explainable Metric for All Text Generation Tasks},
author={Dongfu Jiang and Yishan Li and Ge Zhang and Wenhao Huang and Bill Yuchen Lin and Wenhu Chen},
journal={ArXiv},
year={2023},
volume={abs/2310.00752},
url={https://api.semanticscholar.org/CorpusID:263334281}
}