Evaluate 文件
建立評估套件 (EvaluationSuite)
並獲得增強的文件體驗
開始使用
建立評估套件 (EvaluationSuite)
對模型在各種不同任務上進行評估,以瞭解其下游效能,這是很有用的。在多種型別的任務上評估模型,可以揭示在某些維度上的效能差距。例如,在訓練語言模型時,測量其在特定領域語料庫上的困惑度通常很有用,但同時在測試通用語言能力的任務(如自然語言蘊含或問答)上進行評估,或在旨在探測模型公平性和偏見維度的任務上進行評估也同樣重要。
EvaluationSuite
提供了一種將任意數量的(評估器、資料集、指標)元組組合為子任務 (SubTask) 的方法,從而可以在多個評估任務的集合上評估模型。有關當前支援的任務列表,請參閱評估器文件。
一個新的 EvaluationSuite
由一系列 SubTask
類組成,每個類定義一個評估任務。包含該定義的 Python 檔案可以上傳到 Hugging Face Hub 上的一個 Space 中,以便與社群共享,或者作為 Python 指令碼在本地儲存/載入。
有些資料集在傳遞給 Evaluator
之前需要額外的預處理。你可以為每個 SubTask
設定一個 data_preprocessor
,該預處理器會透過 `datasets` 庫的 map
操作來應用。Evaluator
的關鍵字引數可以透過 args_for_task
屬性向下傳遞。
要建立一個新的 EvaluationSuite
,請建立一個新的 Space,其中包含一個與 Space 名稱匹配的 .py 檔案,將下面的模板新增到該 Python 檔案中,併為新任務填寫屬性。
一個新的 SubTask
的強制屬性是 task_type
和 data
。
task_type
對映到評估器當前支援的任務。data
可以是一個例項化的 Hugging Face 資料集物件,也可以是一個數據集的名稱。subset
和split
可用於定義評估時應使用資料集的哪個配置名稱和資料劃分。args_for_task
應該是一個包含要傳遞給評估器的關鍵字引數 (kwargs) 的字典。
import evaluate
from evaluate.evaluation_suite import SubTask
class Suite(evaluate.EvaluationSuite):
def __init__(self, name):
super().__init__(name)
self.preprocessor = lambda x: {"text": x["text"].lower()}
self.suite = [
SubTask(
task_type="text-classification",
data="glue",
subset="sst2",
split="validation[:10]",
args_for_task={
"metric": "accuracy",
"input_column": "sentence",
"label_column": "label",
"label_mapping": {
"LABEL_0": 0.0,
"LABEL_1": 1.0
}
}
),
SubTask(
task_type="text-classification",
data="glue",
subset="rte",
split="validation[:10]",
args_for_task={
"metric": "accuracy",
"input_column": "sentence1",
"second_input_column": "sentence2",
"label_column": "label",
"label_mapping": {
"LABEL_0": 0,
"LABEL_1": 1
}
}
)
]
一個 EvaluationSuite
可以透過名稱從 Hugging Face Hub 載入,也可以透過提供路徑在本地載入,並使用 run(model_or_pipeline)
方法執行。評估結果會連同其任務名稱以及透過管道獲取預測所需時間的資訊一起返回。這些結果可以很容易地用 pandas.DataFrame
展示出來。
>>> from evaluate import EvaluationSuite
>>> suite = EvaluationSuite.load('mathemakitten/glue-evaluation-suite')
>>> results = suite.run("gpt2")
準確率 | total_time_in_seconds | samples_per_second | latency_in_seconds | task_name |
---|---|---|---|---|
0.5 | 0.740811 | 13.4987 | 0.0740811 | glue/sst2 |
0.4 | 1.67552 | 5.9683 | 0.167552 | glue/rte |