SetFit 文档
模型卡片
并获得增强的文档体验
开始使用
模型卡片
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) 用于您的模型卡片。例如,如果您的训练标签对于负面和正面分别为 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 |