SetFit 文档
模型卡片
并获得增强的文档体验
开始使用
模型卡
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) 用于您的模型卡。例如,如果您的训练标签分别是表示负面和正面的 0
和 1
,则可以这样加载模型:
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 |