SetFit 文件

模型卡片

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

模型卡

SetFit 帶有大量自動生成的模型卡/README。在本指南中,我們將探討如何充分利用這種自動生成。

例如,tomaarsen/setfit-all-MiniLM-L6-v2-sst2-32-shot 模型已遵循本指南中的所有步驟,以生成最全面的自動生成模型卡。

指定元資料

儘管 SetFit 可以透過其訓練和配置推斷出大量關於模型的資訊,但有些元資料通常無法(輕鬆地)推斷出來。例如:

  • 語言:模型語言,例如英語的“en”。
  • 許可證:模型許可證,例如“mit”或“apache-2.0”。
  • 資料集名稱:資料集的易讀名稱,例如“Amazon Counterfactual”。
  • 資料集 ID:資料集的資料集 ID,例如“dair-ai/emotion”。

建議在呼叫 `SetFitModel.from_pretrained()` 時將這些資訊指定給 SetFitModel,以便將這些資訊包含在模型卡及其元資料中。這可以透過 SetFitModelCardData 例項和 `model_card_data` 關鍵字引數來完成,例如:

from setfit import SetFitModel

model = SetFitModel.from_pretrained(
    "BAAI/bge-small-en-v1.5",
    model_card_data=SetFitModelCardData(
        language="en",
        license="apache-2.0",
        dataset_id="sst2",
        dataset_name="SST2",
    )
)

有關您可以在 README 中指定的更多資訊,請參閱 SetFitModelCardData 文件。

標籤

如果您的訓練資料集中的標籤都是整數,建議您為 SetFitModel 提供標籤。然後,這些標籤可以 1) 用於推理,以及 2) 用於您的模型卡。例如,如果您的訓練標籤分別是表示負面和正面的 01,則可以這樣載入模型:

model = SetFitModel.from_pretrained(
    "BAAI/bge-small-en-v1.5",
    labels=["negative", "positive"],
    model_card_data=SetFitModelCardData(
        language="en",
        license="apache-2.0",
        dataset_id="sst2",
        dataset_name="SST2",
    )
)

呼叫 SetFitModel.predict() 時,訓練好的模型現在將輸出字串或字串列表,而不是您的整數標籤

model.predict([
    "It's a charming and often affecting journey.",
    "It's slow -- very, very slow.",
    "A sometimes tedious film.",
])
# => ['positive', 'negative', 'negative']

此外,模型卡將包含標籤,例如它將使用下表

標籤 示例
負面
  • “難以接受的苦果,而且”
  • “憤慨”
  • “典型的好萊塢無視歷史真相和現實的做法在這裡起作用”
正面
  • “對於沒有讀過這本書的人來說是一次感人的經歷”
  • “在最好的意義上,這兩個詞都是如此”
  • “特別適合這項工作”

而不是這個

標籤 示例
0
  • “難以接受的苦果,而且”
  • “憤慨”
  • “典型的好萊塢無視歷史真相和現實的做法在這裡起作用”
1
  • “對於沒有讀過這本書的人來說是一次感人的經歷”
  • “在最好的意義上,這兩個詞都是如此”
  • “特別適合這項工作”

以及下表

標籤 訓練樣本數
負面 32
正面 32

而不是這個

標籤 訓練樣本數
0 32
1 32

排放跟蹤

可以安裝 codecarbon Python 包,以在訓練期間自動跟蹤碳排放。此資訊將包含在模型卡中,例如以列表形式如下所示

環境影響

碳排放使用 CodeCarbon 測量。

  • 碳排放量:0.003 千克二氧化碳
  • 使用小時數:0.072 小時

自定義指標

如果您使用自定義指標,那麼它們也將包含在您的模型卡中!例如,如果您使用以下 metric 函式

from setfit import SetFitModel, Trainer, TrainingArguments

...

def compute_metrics(y_pred, y_test):
    accuracy = accuracy_score(y_test, y_pred)
    precision = precision_score(y_test, y_pred)
    recall = recall_score(y_test, y_pred)
    f1 = f1_score(y_test, y_pred)
    return { 'accuracy': accuracy, 'precision': precision, 'recall': recall, 'f1': f1}

...

trainer = Trainer(
    model=model,
    args=args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    metric=compute_metrics,
)
trainer.train()

model.save_pretrained("setfit-bge-small-v1.5-sst2-8-shot")

那麼最終的模型卡將包含您的特殊指標!例如,元資料將包括:

    metrics:
    - type: accuracy
      value: 0.8061504667764964
      name: Accuracy
    - type: precision
      value: 0.7293729372937293
      name: Precision
    - type: recall
      value: 0.9724972497249725
      name: Recall
    - type: f1
      value: 0.8335690711928335
      name: F1

此外,“評估”部分將顯示您的指標

指標

標籤 準確率 精度 召回率 F1
所有 0.8062 0.7294 0.9725 0.8336
< > 在 GitHub 上更新

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