SetFit 文档
训练器类
并获得增强的文档体验
开始使用
训练器类
TrainingArguments
类 setfit.TrainingArguments
< 源 >( output_dir: str = 'checkpoints' batch_size: Union[int, Tuple[int, int]] = (16, 2) num_epochs: Union[int, Tuple[int, int]] = (1, 16) max_steps: int = -1 sampling_strategy: str = 'oversampling' num_iterations: Optional[int] = None body_learning_rate: Union[float, Tuple[float, float]] = (2e-05, 1e-05) head_learning_rate: float = 0.01 loss: Callable = <class 'sentence_transformers.losses.CosineSimilarityLoss.CosineSimilarityLoss'> distance_metric: Callable = <function BatchHardTripletLossDistanceFunction.cosine_distance at 0x7f2cdea71ea0> margin: float = 0.25 end_to_end: bool = False use_amp: bool = False warmup_proportion: float = 0.1 l2_weight: Optional[float] = 0.01 max_length: Optional[int] = None samples_per_label: int = 2 show_progress_bar: bool = True seed: int = 42 report_to: str = 'all' run_name: Optional[str] = None logging_dir: Optional[str] = None logging_strategy: str = 'steps' logging_first_step: bool = True logging_steps: int = 50 eval_strategy: str = 'no' evaluation_strategy: Optional[str] = None eval_steps: Optional[int] = None eval_delay: int = 0 eval_max_steps: int = -1 save_strategy: str = 'steps' save_steps: int = 500 save_total_limit: Optional[int] = 1 load_best_model_at_end: bool = False metric_for_best_model: Optional[str] = 'embedding_loss' greater_is_better: bool = False )
参数
- output_dir (
str
, 默认为"checkpoints"
) — 模型预测和检查点将被写入的输出目录。 - batch_size (
Union[int, Tuple[int, int]]
, 默认为(16, 2)
) — 分别设置嵌入和分类器训练阶段的批量大小,如果提供整数则设置两者。请注意,分类器的批量大小仅在可微分 PyTorch 头中使用。 - num_epochs (
Union[int, Tuple[int, int]]
, 默认为(1, 16)
) — 分别设置嵌入和分类器训练阶段的 epoch 数,如果提供整数则设置两者。请注意,分类器的 epoch 数仅在可微分 PyTorch 头中使用。 - max_steps (
int
, 默认为-1
) — 如果设置为正数,则为要执行的训练总步数。覆盖num_epochs
。当所有数据耗尽时,训练可能会在达到设定的步数之前停止。 - sampling_strategy (
str
, 默认为"oversampling"
) — 训练中如何抽取对的采样策略。可能的值有:"oversampling"
:抽取偶数个正/负句子对,直到每个句子对都被抽取。"undersampling"
:抽取最少数量的正/负句子对,直到少数类中的每个句子对都被抽取。"unique"
:抽取所有句子对组合(可能导致正/负句子对数量不平衡)。
默认设置为
"oversampling"
,确保所有句子对至少被抽取一次。或者,设置num_iterations
将覆盖此参数并确定生成的句子对的数量。 - num_iterations (
int
, 可选) — 如果未设置,sampling_strategy
将决定要生成的句子对的数量。此参数设置生成句子对的迭代次数,并与Setfit兼容。如果使用三元组损失,此参数将被忽略。它仅与 CosineSimilarityLoss
一起使用。 - l2_weight (
float
, 可选) — 可选的 l2 权重,用于模型主体和头部,在分类器训练阶段如果使用可微分 PyTorch 头,则将其传递给AdamW
优化器。 - max_length (
int
, 可选) — 标记器可以生成的最大令牌长度。如果未提供,将使用SentenceTransformer
主体的最大长度。 - samples_per_label (
int
, 默认为2
) — 每个标签连续、随机且唯一的样本数。这仅与三元组损失相关,对于CosineSimilarityLoss
则被忽略。批量大小应为 samples_per_label 的倍数。 - 和 mlflow 日志记录。
- 日志目录。默认为 *runs/CURRENT_DATETIME_HOSTNAME*。
- eval_delay (
float
, 可选) — 在进行第一次评估之前等待的 epoch 或步数,具体取决于 eval_strategy。 - eval_max_steps (
int
, 默认为-1
) — 如果设置为正数,则为要执行的评估总步数。当所有数据耗尽时,评估可能会在达到设定的步数之前停止。 - save_total_limit (
int
, 可选, 默认为1
) — 如果传入值,将限制检查点总数。删除output_dir
中较旧的检查点。请注意,如果eval_strategy
不是"no"
,则始终保留最佳模型。 - load_best_model_at_end (
bool
, 可选, 默认为False
) — 训练结束时是否加载训练期间找到的最佳模型。当设置为
True
时,参数save_strategy
需要与eval_strategy
相同,如果是“steps”,则save_steps
必须是eval_steps
的整数倍。
TrainingArguments 是与训练循环本身相关的参数子集。请注意,SetFit 的训练在幕后包含两个阶段:微调嵌入和训练分类头。因此,某些训练参数可以是元组,其中两个值分别用于两个阶段。第二个值通常仅在使用use_differentiable_head=True
加载模型时才使用。
从字典初始化 TrainingArguments 实例。
创建此 TrainingArguments 实例的浅拷贝。
DistillationTrainer
class setfit.DistillationTrainer
< source >( teacher_model: SetFitModel student_model: typing.Optional[ForwardRef('SetFitModel')] = None args: TrainingArguments = None train_dataset: typing.Optional[ForwardRef('Dataset')] = None eval_dataset: typing.Optional[ForwardRef('Dataset')] = None model_init: typing.Optional[typing.Callable[[], ForwardRef('SetFitModel')]] = None metric: typing.Union[str, typing.Callable[[ForwardRef('Dataset'), ForwardRef('Dataset')], typing.Dict[str, float]]] = 'accuracy' column_mapping: typing.Optional[typing.Dict[str, str]] = None )
参数
- teacher_model (
SetFitModel
) — 要模仿的教师模型。 - student_model (
SetFitModel
, 可选) — 要训练的模型。如果未提供,则必须传递model_init
。 - args (
TrainingArguments
, 可选) — 要使用的训练参数。 - train_dataset (
Dataset
) — 训练数据集。 - eval_dataset (
Dataset
, 可选) — 评估数据集。 - model_init (
Callable[[], SetFitModel]
, 可选) — 实例化要使用的模型的函数。如果提供,每次调用 train() 都将从该函数提供的模型新实例开始,当传递trial
时。 - metric (
str
或Callable
, 可选, 默认为"accuracy"
) — 用于评估的指标。如果提供字符串,则将其视为指标名称并使用默认设置加载。如果提供可调用对象,则它必须接受两个参数 (y_pred
,y_test
)。 - column_mapping (
Dict[str, str]
, 可选) — 数据集中列名到模型所需列名的映射。预期格式为包含以下格式的字典:{"text_column_name": "text", "label_column_name": "label"}
。
使用知识蒸馏压缩 SetFit 模型的训练器。
add_callback
< source > ( callback: typing.Union[type, transformers.trainer_callback.TrainerCallback] )
将回调添加到当前 TrainerCallback
列表中。
apply_hyperparameters
< source > ( params: typing.Dict[str, typing.Any] final_model: bool = False )
将超参数字典应用于训练器和模型
评估
< source > ( dataset: typing.Optional[datasets.arrow_dataset.Dataset] = None metric_key_prefix: str = 'test' ) → Dict[str, float]
计算给定分类器的指标。
hyperparameter_search
< source > ( hp_space: typing.Optional[typing.Callable[[ForwardRef('optuna.Trial')], typing.Dict[str, float]]] = None compute_objective: typing.Optional[typing.Callable[[typing.Dict[str, float]], float]] = None n_trials: int = 10 direction: str = 'maximize' backend: typing.Union[ForwardRef('str'), transformers.trainer_utils.HPSearchBackend, NoneType] = None hp_name: typing.Optional[typing.Callable[[ForwardRef('optuna.Trial')], str]] = None **kwargs ) → trainer_utils.BestRun
参数
- hp_space (
Callable[["optuna.Trial"], Dict[str, float]]
, 可选) — 定义超参数搜索空间的函数。默认为default_hp_space_optuna
。 - compute_objective (
Callable[[Dict[str, float]], float]
, 可选) — 一个函数,用于根据evaluate
方法返回的指标计算要最小化或最大化的目标。默认为default_compute_objective
,它使用指标的总和。 - n_trials (
int
, 可选, 默认为 100) — 要测试的试验运行次数。 - direction (
str
, 可选, 默认为"maximize"
) — 是优化更大还是更小的目标。可以是"minimize"
或"maximize"
,在优化验证损失时应选择"minimize"
,在优化一个或多个指标时应选择"maximize"
。 - backend (
str
或HPSearchBackend
, 可选) — 用于超参数搜索的后端。目前仅支持 optuna。TODO: 添加对 ray 和 sigopt 的支持。 - hp_name (
Callable[["optuna.Trial"], str]]
, 可选) — 定义试验/运行名称的函数。默认为 None。 - kwargs (
Dict[str, Any]
, 可选) — 传递给optuna.create_study
的额外关键字参数。更多信息请参阅:
返回
trainer_utils.BestRun
关于最佳运行的所有信息。
使用 optuna
启动超参数搜索。优化量由 compute_objective
确定,默认情况下,如果没有提供指标,则返回评估损失,否则返回所有指标的总和。
要使用此方法,您需要在初始化 Trainer 时提供 model_init
:我们需要在每次新运行时重新初始化模型。
pop_callback
< source > ( callback: typing.Union[type, transformers.trainer_callback.TrainerCallback] ) → TrainerCallback
从当前 TrainerCallback
列表中删除回调并返回它。
如果未找到回调,则返回 None
(并且不会引发错误)。
push_to_hub
< source > ( repo_id: str **kwargs ) → str
参数
- repo_id (
str
) — 要推送到的完整仓库 ID,例如"tomaarsen/setfit-sst2"
。 - config (
dict
, 可选) — 要与模型权重一起保存的配置对象。 - commit_message (
str
, 可选) — 推送时提交的消息。 - private (
bool
, 可选) — 是否将仓库设为私有。如果为None
(默认),则除非组织默认设置为私有,否则仓库将是公共的。如果仓库已存在,则此值将被忽略。 - api_endpoint (
str
, 可选) — 将模型推送到 Hub 时使用的 API 端点。 - token (
str
, 可选) — 用作远程文件 HTTP bearer 授权的 token。如果未设置,将使用通过transformers-cli login
登录时设置的 token(存储在~/.huggingface
中)。 - branch (
str
, 可选) — 推送模型的 git 分支。默认为仓库中指定的默认分支,即"main"
。 - create_pr (
boolean
, 可选) — 是否从branch
创建一个包含该提交的 Pull Request。默认为False
。 - allow_patterns (
List[str]
或str
, 可选) — 如果提供,则只推送至少匹配一个模式的文件。 - ignore_patterns (
List[str]
或str
, 可选) — 如果提供,则不推送匹配任何模式的文件。
返回
字符串
模型在给定仓库中的提交 URL。
使用 huggingface_hub
将模型检查点上传到 Hub。
有关 huggingface_hub
版本的完整参数列表,请参阅 huggingface_hub 文档。
remove_callback
< source > ( callback: typing.Union[type, transformers.trainer_callback.TrainerCallback] )
从当前 TrainerCallback
列表中删除回调。
train
< source > ( args: typing.Optional[setfit.training_args.TrainingArguments] = None trial: typing.Union[ForwardRef('optuna.Trial'), typing.Dict[str, typing.Any], NoneType] = None **kwargs )
主训练入口点。
train_classifier
< source > ( x_train: typing.List[str] args: typing.Optional[setfit.training_args.TrainingArguments] = None )
执行分类器阶段的方法:拟合学生分类器头。
train_embeddings
< source > ( x_train: typing.List[str] y_train: typing.Union[typing.List[int], typing.List[typing.List[int]], NoneType] = None x_eval: typing.Optional[typing.List[str]] = None y_eval: typing.Union[typing.List[int], typing.List[typing.List[int]], NoneType] = None args: typing.Optional[setfit.training_args.TrainingArguments] = None )
执行嵌入阶段的方法:微调 SentenceTransformer
主体。
AbsaTrainer
class setfit.AbsaTrainer
< source >( model: AbsaModel args: typing.Optional[setfit.training_args.TrainingArguments] = None polarity_args: typing.Optional[setfit.training_args.TrainingArguments] = None train_dataset: typing.Optional[ForwardRef('Dataset')] = None eval_dataset: typing.Optional[ForwardRef('Dataset')] = None metric: typing.Union[str, typing.Callable[[ForwardRef('Dataset'), ForwardRef('Dataset')], typing.Dict[str, float]]] = 'accuracy' metric_kwargs: typing.Optional[typing.Dict[str, typing.Any]] = None callbacks: typing.Optional[typing.List[transformers.trainer_callback.TrainerCallback]] = None column_mapping: typing.Optional[typing.Dict[str, str]] = None )
参数
- model (
AbsaModel
) — 要训练的 AbsaModel 模型。 - args (
TrainingArguments
, 可选) — 要使用的训练参数。如果未定义polarity_args
,则args
将同时用于方面模型和极性模型。 - polarity_args (
TrainingArguments
, 可选) — 用于极性模型的训练参数。如果未定义,则args
将同时用于方面模型和极性模型。 - train_dataset (
Dataset
) — 训练数据集。数据集必须包含“text”、“span”、“label”和“ordinal”列。 - eval_dataset (
Dataset
, 可选) — 评估数据集。数据集必须包含“text”、“span”、“label”和“ordinal”列。 - metric (
str
或Callable
, 可选, 默认为"accuracy"
) — 用于评估的指标。如果提供字符串,则将其视为指标名称并使用默认设置加载。如果提供可调用对象,则它必须接受两个参数 (y_pred
,y_test
)。 - metric_kwargs (
Dict[str, Any]
, 可选) — 如果metric
是“f1”等评估字符串,则传递给评估函数的关键字参数。例如,对于多标签设置中计算 f1 的平均策略很有用。 - callbacks (
List[``TrainerCallback``]
, 可选) — 用于自定义训练循环的回调列表。这将添加到 此处 详细介绍的默认回调列表中。如果要删除使用的默认回调之一,请使用 Trainer.remove_callback() 方法。 - column_mapping (
Dict[str, str]
, 可选) — 数据集中列名到模型所需列名的映射。预期格式为包含以下格式的字典:{"text_column_name": "text", "span_column_name": "span", "label_column_name: "label", "ordinal_column_name": "ordinal"}
。
训练 SetFit ABSA 模型的训练器。
add_callback
< source > ( callback: typing.Union[type, transformers.trainer_callback.TrainerCallback] )
将回调添加到当前 TrainerCallback
列表中。
评估
< source > ( dataset: typing.Optional[datasets.arrow_dataset.Dataset] = None ) → Dict[str, Dict[str, float]]
计算给定分类器的指标。
pop_callback
< source > ( callback: typing.Union[type, transformers.trainer_callback.TrainerCallback] ) → Tuple[``TrainerCallback
, TrainerCallback``]
从当前 TrainerCallback
列表中删除回调并返回它。
如果未找到回调,则返回 None
(并且不会引发错误)。
push_to_hub
< source > ( repo_id: str polarity_repo_id: typing.Optional[str] = None **kwargs )
参数
- repo_id (
str
) — 要推送到的完整仓库 ID,例如"tomaarsen/setfit-aspect"
。 - repo_id (
str
) — 要推送到的完整仓库 ID,例如"tomaarsen/setfit-sst2"
。 - config (
dict
, 可选) — 要与模型权重一起保存的配置对象。 - commit_message (
str
, 可选) — 推送时提交的消息。 - private (
bool
, 可选) — 是否将仓库设为私有。如果为None
(默认),则除非组织的默认设置为私有,否则仓库将是公开的。如果仓库已存在,此值将被忽略。 - api_endpoint (
str
, 可选) — 将模型推送到 Hub 时使用的 API 终点。 - token (
str
, 可选) — 用作远程文件 HTTP 承载授权的令牌。如果未设置,将使用通过transformers-cli login
登录时设置的令牌(存储在~/.huggingface
中)。 - branch (
str
, 可选) — 推送模型的 git 分支。默认为仓库中指定的默认分支,即"main"
。 - create_pr (
boolean
, 可选) — 是否从branch
创建一个包含该提交的拉取请求。默认为False
。 - allow_patterns (
List[str]
或str
, 可选) — 如果提供,则只推送与至少一个模式匹配的文件。 - ignore_patterns (
List[str]
或str
, 可选) — 如果提供,则不推送与任何模式匹配的文件。
使用 huggingface_hub
将模型检查点上传到 Hub。
有关 huggingface_hub
版本的完整参数列表,请参阅 huggingface_hub 文档。
remove_callback
< 源 > ( callback: typing.Union[type, transformers.trainer_callback.TrainerCallback] )
从当前 TrainerCallback
列表中删除回调。
train
< 源 > ( args: typing.Optional[setfit.training_args.TrainingArguments] = None polarity_args: typing.Optional[setfit.training_args.TrainingArguments] = None trial: typing.Union[ForwardRef('optuna.Trial'), typing.Dict[str, typing.Any], NoneType] = None **kwargs )
主训练入口点。
train_aspect
< 源 > ( args: typing.Optional[setfit.training_args.TrainingArguments] = None trial: typing.Union[ForwardRef('optuna.Trial'), typing.Dict[str, typing.Any], NoneType] = None **kwargs )
仅训练方面模型。
train_polarity
< 源 > ( args: typing.Optional[setfit.training_args.TrainingArguments] = None trial: typing.Union[ForwardRef('optuna.Trial'), typing.Dict[str, typing.Any], NoneType] = None **kwargs )
仅训练极性模型。