fairseq2.recipes.lm¶
Overview¶
The fairseq2.recipes.lm
module provides utilities and recipes for language model training and fine-tuning.
This includes tools for both pre-training and instruction tuning of language models.
Key Features¶
Language model pre-training utilities
Instruction fine-tuning support
CLI setup for language model training
Common training recipes and configurations
Instruction Fine-Tuning¶
Classes¶
- class fairseq2.recipes.lm.InstructionFinetuneConfig(*, model: 'ModelSection' = <factory>, dataset: 'InstructionFinetuneDatasetSection' = <factory>, gang: 'GangSection' = <factory>, trainer: 'TrainerSection' = <factory>, optimizer: 'OptimizerSection' = <factory>, lr_scheduler: 'LRSchedulerSection' = <factory>, regime: 'RegimeSection' = <factory>, common: 'CommonSection' = <factory>)[source]¶
Bases:
object
- class fairseq2.recipes.lm.InstructionFinetuneDatasetSection(*, name: 'str' = 'foo', path: 'Path | None' = None, family: 'str' = 'generic_instruction', train_split: 'str' = 'default', valid_split: 'str | None' = None, source_encode_mode: 'str' = 'prompt', target_encode_mode: 'str' = 'prompt_response', min_seq_len: 'int' = 1, max_seq_len: 'int' = 8192, max_num_tokens: 'int' = 16384, batch_size: 'int | None' = None, max_num_valid_tokens: 'int | None' = None, example_shuffle_window: 'int' = 10000, batch_shuffle_window: 'int' = 1000, num_prefetch: 'int' = 4, extras: 'dict[str, object]' = <factory>)[source]¶
Bases:
DatasetSection
- source_encode_mode: str = 'prompt'¶
The encode mode for the prompt, determines what special tokens to add.
- target_encode_mode: str = 'prompt_response'¶
The encode mode for the target, determines what special tokens to add.
Functions¶
Preference Fine-Tuning¶
Classes (PO)¶
- class fairseq2.recipes.lm.POFinetuneConfig(*, model: 'ModelSection' = <factory>, dataset: 'POFinetuneDatasetSection' = <factory>, gang: 'GangSection' = <factory>, trainer: 'TrainerSection' = <factory>, criterion: 'POCriterionSection' = <factory>, optimizer: 'OptimizerSection' = <factory>, lr_scheduler: 'LRSchedulerSection' = <factory>, regime: 'RegimeSection' = <factory>, common: 'CommonSection' = <factory>)[source]¶
Bases:
object
- class fairseq2.recipes.lm.POFinetuneMetricBag(gang)[source]¶
Bases:
SequenceMetricBag
- Parameters:
train – If
True
, indicates that this bag is used in a training task.
- class fairseq2.recipes.lm.POCriterionSection(*, name: 'str', config: 'object')[source]¶
Bases:
object
- class fairseq2.recipes.lm.POFinetuneDatasetSection(*, name: 'str' = 'gsm8k_dpo', path: 'Path | None' = None, family: 'str' = 'generic_preference', source_encode_mode: 'str' = 'prompt', target_encode_mode: 'str' = 'prompt_response', mask_source_tokens: 'bool' = True, min_seq_len: 'int' = 1, max_seq_len: 'int' = 8192, max_num_tokens: 'int' = 16384, batch_size: 'int | None' = None, example_shuffle_window: 'int' = 10000, batch_shuffle_window: 'int' = 1000, num_prefetch: 'int' = 4, extras: 'dict[str, object]' = <factory>)[source]¶
Bases:
DatasetSection
- source_encode_mode: str = 'prompt'¶
The encode mode for the prompt, determines what special tokens to add.
- target_encode_mode: str = 'prompt_response'¶
The encode mode for the target, determines what special tokens to add.
- mask_source_tokens: bool = True¶
If
False
, calculates loss on the src tokens as well as the tgt tokens.
- min_seq_len: int = 1¶
The minimum sum of
src + tgt_chosen
andsrc + tgt_rejected
. Shorter sequences will be dropped.
- max_seq_len: int = 8192¶
The maximum sum of
src + tgt_chosen
andsrc + tgt_rejected
. Longer sequences will be dropped.
- max_num_tokens: int = 16384¶
The maximum number of total src, tgt_chosen, and tgt_rejected tokens per batch.
- class fairseq2.recipes.lm.CpoFinetuneConfig(*, beta: 'float' = 1.0, nll_scale: 'float' = 1.0)[source]¶
Bases:
object
- final class fairseq2.recipes.lm.CpoFinetuneUnit(model, gangs, beta=1.0, nll_scale=1.0)[source]¶
Bases:
AbstractTrainUnit
[PreferenceBatch
]Represents the language model CPO-finetuning unit. Paper: https://arxiv.org/abs/2401.08417.
- property metric_bag: CpoFinetuneMetricBag¶
The training-related metrics.
- class fairseq2.recipes.lm.CpoFinetuneMetricBag(gang)[source]¶
Bases:
POFinetuneMetricBag
Holds the metrics of a CPO preference finetuning task.
- Parameters:
train – If
True
, indicates that this bag is used in a training task.
- class fairseq2.recipes.lm.DpoFinetuneConfig(*, reference_model: 'ReferenceModelSection' = <factory>, reference_dtype: 'DataType' = torch.bfloat16, beta: 'float' = 0.1, nll_scale: 'float' = 0.0, length_normalization: 'bool' = False)[source]¶
Bases:
object
- reference_model: ReferenceModelSection¶
The reference model. If
None
, the recipe expects to get reference log-probabilities for chosen and rejected targets as float values in the data example (fields reference_score_rejected and reference_score_chosen).
- final class fairseq2.recipes.lm.DpoFinetuneUnit(model, reference_model, gangs, beta=0.1, nll_scale=1.0, length_normalization=False)[source]¶
Bases:
AbstractTrainUnit
[PreferenceBatch
]Represents the language model DPO-finetuning unit. Paper: https://arxiv.org/abs/2305.18290.
- property metric_bag: DpoFinetuneMetricBag¶
The training-related metrics.
- final class fairseq2.recipes.lm.DpoFinetuneUnitHandler(context)[source]¶
Bases:
POFinetuneUnitHandler
- class fairseq2.recipes.lm.DpoFinetuneMetricBag(gang)[source]¶
Bases:
POFinetuneMetricBag
Holds the metrics of a DPO preference finetuning task.
- Parameters:
train – If
True
, indicates that this bag is used in a training task.
- class fairseq2.recipes.lm.OrpoFinetuneConfig(*, orpo_lambda: 'float' = 1.0, nll_scale: 'float' = 1.0)[source]¶
Bases:
object
- final class fairseq2.recipes.lm.OrpoFinetuneUnit(model, gangs, orpo_lambda=1.0, nll_scale=1.0)[source]¶
Bases:
AbstractTrainUnit
[PreferenceBatch
]Represents the language model ORPO-finetuning unit. Paper: https://arxiv.org/abs/2403.07691.
- property metric_bag: OrpoFinetuneMetricBag¶
The training-related metrics.
- class fairseq2.recipes.lm.OrpoFinetuneMetricBag(gang)[source]¶
Bases:
POFinetuneMetricBag
Holds the metrics of a ORPO preference finetuning task.
- Parameters:
train – If
True
, indicates that this bag is used in a training task.
- class fairseq2.recipes.lm.SimPOFinetuneConfig(*, beta: 'float' = 1, gamma: 'float' = 0.5, nll_scale: 'float' = 0.0)[source]¶
Bases:
object
- final class fairseq2.recipes.lm.SimPOFinetuneUnit(model, gangs, beta=0.1, gamma=0.5, nll_scale=1.0)[source]¶
Bases:
AbstractTrainUnit
[PreferenceBatch
]Represents the language model SimPO-finetuning unit. Paper: https://arxiv.org/abs/2405.14734.
- property metric_bag: SimPOFinetuneMetricBag¶
The training-related metrics.
- class fairseq2.recipes.lm.SimPOFinetuneMetricBag(gang)[source]¶
Bases:
POFinetuneMetricBag
Holds the metrics of a SimPO preference finetuning task.
- Parameters:
train – If
True
, indicates that this bag is used in a training task.
Functions (PO)¶
Text Generation¶
Classes (Text Generation)¶
- class fairseq2.recipes.lm.TextGenerateConfig(*, model: 'ReferenceModelSection' = <factory>, dataset: 'TextGenerateDatasetSection' = <factory>, gang: 'GangSection' = <factory>, generator: 'GeneratorSection' = <factory>, seq_generator: 'SequenceGeneratorSection' = <factory>, common: 'CommonSection' = <factory>)[source]¶
Bases:
object
- class fairseq2.recipes.lm.TextGenerateDatasetSection(*, name: 'str' = 'foo', path: 'Path | None' = None, family: 'str' = 'generic_instruction', split: 'str' = 'default', min_seq_len: 'int' = 1, max_seq_len: 'int' = 8192, num_prefetch: 'int' = 4, extras: 'dict[str, object]' = <factory>)[source]¶
Bases:
DatasetSection