Этот репо содержит код, данные и модели для TMLR 2024 Paper "Tigerscore: к строительству объяснимой метрики для всех задач генерации текста"
| Другие ресурсы |
|---|
| ? Tigerscore Collections |
| ? Deggingface Demo |
Чтобы напрямую использовать Tigerscore Pipeline, вам сначала нужно установить его в качестве пакета Python.
pip install git+https://github.com/TIGER-AI-Lab/TIGERScore.git Пожалуйста, проверьте, является ли ваш torch.cuda.is_available() True для вашей локальной машины.
Кроме того, чтобы использовать Tigerscore с подробным здесь VLLM, вам необходимо безупречно установить VLLM после документа VLLM.
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/cu118Если вы хотите использовать учебные сценарии, установите зависимости, выполнив следующую команду:
pip install -r requirements.txt После установки вы можете забить текстовые поколения с помощью следующего кода Python Exmaple (см. В tigerscore_example_usage.ipynb для получения дополнительной информации):
# 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 )Результаты представляют собой список даддексов, состоящих из структурированного анализа ошибок.
[
{
"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 поддерживает быстрый вывод VLLM. На одном графическом процессоре A6000 (48 ГБ) для оценивания каждого экземпляра требуется всего 0,2 - 0,3 с .
scorer = TIGERScorer ( model_name = "TIGER-Lab/TIGERScore-7B" , quantized = True ) # 4 bit quantization on GPU Установив параметр инициализации quanitzed=True , модель установлена на загрузку в 4-битной версии с обнимающейся лицом load_in_4bit=True Option.
Обратите внимание, что, хотя использование квантования уменьшило бы требования к памяти с большим отрывом. Вы можете запустить Tigerscore примерно на графическом процессоре памяти 20+ГБ. Тем не менее, скорость вывода может быть медленнее, чем использование оригинальной версии BFLOAT16. Это зависит от вас, чтобы сделать компромисс.
scorer = TIGERScorer ( model_name = "TIGER-Lab/TIGERScore-7B-GGUF" , use_llamacpp = True )Мы также предоставляем версию Tigerscore-7B/13B LLAMACPP. Используя версию GGUF, которую мы предоставили, вы можете запустить Tigerscore на устройствах Pure CPU. Как правило, для того, чтобы оценить каждый экземпляр, требуется 20 лет .
Сценарии предварительной обработки данных и промежуточные результаты можно найти здесь
Папка xgptscore содержит все шаблоны, которые мы использовали для запроса CHATGPT или GPT-4, чтобы получить идентифицированные ошибки в выводе гипотезы для различных задач, которые участвовал в Tigerscore. Мы называем эти методы запроса API как xgptscore для планательного метода оценки AE X , запрашивая модели GPT .
Общий трубопровод XGPTSCORE - это:
./constants.py ) Проверьте xgptscore/README.md для получения более подробной информации. И как использовать наш шаблон запроса с одной функцией xgptscore()
MetricinStruct состоит из данных из 2 каналов выборки, реального канала и синтетического канала .
generate_distill_data.sh .generate_synthesis_distill_data.sh . Общая цель сбора данных 2 каналов состоит в том, чтобы убедиться, что мы охватываем столько же типов ошибок в учебных данных, чтобы наша модель лучше обобщалась.Получив эти данные, мы делаем серию эвристику, чтобы фильтровать наши плохие данные и дополнить данные:
check_data.sh )generate_inst_synthetic_data.sh в качестве дополнения к синтетическому каналу.Вы можете загрузить наши предварительно обработанные данные, используемые для Finetune Tigerscore-V1 с обнимающегося лица? напрямую:
from datasets import load_dataset
dataset = load_dataset ( "TIGER-Lab/MetricInstruct" ) Мы предоставляем наши сценарии обучения и тестирования в папке finetune , где мы используем?
finetune_llama.sh , чтобы финать модель.format_distill_data.sh для преобразования данных в формат для создания, то есть инструкция Sinlge и контекст ввода с выводом.test_llama_vllm.sh для проверки и вычисления корреляции как производительность нашей современной модели. Пожалуйста, проверьте эти сценарии, чтобы узнать более подробную информацию о нашем процессе обучения и тестирования../tigerscore/common/README.md для установки Env. Пожалуйста, процитируйте нашу статью, если у вас есть полезные данные, модель или код.
@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}
}