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 上更新