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 )
僅訓練極性模型。