Evaluate 文件

建立評估套件 (EvaluationSuite)

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

建立評估套件 (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_typedata

  1. task_type 對映到評估器當前支援的任務。
  2. data 可以是一個例項化的 Hugging Face 資料集物件,也可以是一個數據集的名稱。
  3. subsetsplit 可用於定義評估時應使用資料集的哪個配置名稱和資料劃分。
  4. 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
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.