SetFit 文档

模型卡片

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

模型卡片

SetFit 附带了大量自动生成的模型卡片/README。在本操作指南中,我们将探讨如何充分利用这种自动生成。

例如,tomaarsen/setfit-all-MiniLM-L6-v2-sst2-32-shot 模型已遵循本指南中的所有步骤,以生成最广泛的自动生成的模型卡片。

指定元数据

虽然 SetFit 可以通过其训练和配置推断出有关您的模型的许多信息,但某些元数据通常无法(轻易地)推断出来。例如

  • language:模型语言,例如英语为“en”。
  • license:模型许可证,例如“mit”或“apache-2.0”。
  • dataset_name:数据集的漂亮名称,例如“Amazon Counterfactual”。
  • dataset_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 上更新