Transformers documentation
Trainer
Trainer
Lớp Trainer cung cấp API để huấn luyện đầy đủ tính năng trong PyTorch, và hỗ trợ huấn luyện phân tán trên nhiều GPU/TPU, độ chính xác hỗn hợp cho NVIDIA GPUs, AMD GPUs, và torch.amp cho PyTorch. Trainer đi đôi với lớp TrainingArguments, cung cấp nhiều tùy chọn để tùy chỉnh cách huấn luyện mô hình. Cùng nhau, hai lớp này cung cấp API huấn luyện hoàn chỉnh.
Seq2SeqTrainer và Seq2SeqTrainingArguments kế thừa từ các lớp Trainer và TrainingArguments, được điều chỉnh để huấn luyện các mô hình cho các tác vụ sequence-to-sequence như tóm tắt hoặc dịch thuật.
Lớp Trainer được tối ưu hóa cho các mô hình 🤗 Transformers và có thể có những hành vi bất ngờ khi được sử dụng với các mô hình khác. Khi sử dụng nó với mô hình của riêng bạn, hãy đảm bảo:
- mô hình của bạn luôn trả về các tuple hoặc các lớp con của ModelOutput
- mô hình của bạn có thể tính toán loss nếu có cung cấp đối số
labelsvà loss đó được trả về như phần tử đầu tiên của tuple (nếu mô hình của bạn trả về tuples)- mô hình của bạn có thể nhận nhiều đối số nhãn (dùng
label_namestrong TrainingArguments để chỉ định tên của chúng cho Trainer) nhưng không đối số nào được đặt tên là"label"
Trainer
lớp transformers.Trainer
< source >( model: typing.Union[transformers.modeling_utils.PreTrainedModel, torch.nn.Module, NoneType] = Noneargs: transformers.training_args.TrainingArguments | None = Nonedata_collator: collections.abc.Callable[[list[typing.Any]], dict[str, typing.Any]] | None = Nonetrain_dataset: Dataset | IterableDataset | datasets.Dataset | None = Noneeval_dataset: Dataset | dict[str, Dataset] | datasets.Dataset | None = Noneprocessing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.image_processing_utils.BaseImageProcessor | transformers.feature_extraction_utils.FeatureExtractionMixin | transformers.processing_utils.ProcessorMixin | None = Nonemodel_init: collections.abc.Callable[..., transformers.modeling_utils.PreTrainedModel] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[[transformers.trainer_utils.EvalPrediction], dict] | None = Nonecallbacks: list[transformers.trainer_callback.TrainerCallback] | None = Noneoptimizers: tuple = (None, None)optimizer_cls_and_kwargs: tuple[type[torch.optim.Optimizer], dict[str, typing.Any]] | None = Nonepreprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
Tham số
- model (PreTrainedModel hoặc
torch.nn.Module, tùy chọn) — Mô hình cần huấn luyện, đánh giá hoặc sử dụng để dự đoán. Nếu không được cung cấp, mộtmodel_initphải được truyền vào.Trainer được tối ưu hóa để hoạt động với PreTrainedModel do thư viện cung cấp. Bạn vẫn có thể sử dụng các mô hình tự định nghĩa của mình dưới dạng
torch.nn.Modulemiễn là chúng hoạt động theo cách tương tự như các mô hình của 🤗 Transformers. - args (TrainingArguments, tùy chọn) —
Các tham số để tinh chỉnh cho quá trình huấn luyện. Nếu không được cung cấp, giá trị mặc định sẽ là một instance cơ bản của TrainingArguments với
output_dirđược đặt thành một thư mục có tên tmp_trainer trong thư mục hiện tại. - data_collator (
DataCollator, tùy chọn) — Hàm được sử dụng để tạo một batch từ danh sách các phần tử củatrain_datasethoặceval_dataset. Mặc định sẽ là default_data_collator() nếu không cung cấpprocessing_class, hoặc một instance của DataCollatorWithPadding nếu processing_class là feature extractor hoặc tokenizer. - train_dataset (
torch.utils.data.Dataset|torch.utils.data.IterableDataset|datasets.Dataset, tuỳ chọn) — Bộ dữ liệu được sử dụng để huấn luyện. Nếu đó là một Dataset, các cột không được chấp nhận bởi phương thứcmodel.forward()sẽ tự động bị loại bỏ. Lưu ý rằng nếu đó là một torch.utils.data.IterableDataset có một số yếu tố ngẫu nhiên và bạn đang huấn luyện theo cách phân tán, bộ dữ liệu iterable của bạn phải sử dụng một bộ tạo (generator) thuộc tính bên trong là torch.Generator cho sự ngẫu nhiên hóa, và bộ tạo này phải giống nhau trên tất cả các tiến trình (và Trainer sẽ tự động đặt seed của bộ tạo này ở mỗi epoch), hoặc phải có phương thức set_epoch() để đặt seed cho các RNG được sử dụng bên trong. Nếu bộ dữ liệu không triển khai __len__ (ví dụ: một IterableDataset dạng streaming), max_steps phải được đặt, vì tổng số bước huấn luyện không thể suy ra được.Lưu ý rằng nếu đó là một
torch.utils.data.IterableDatasetcó một số yếu tố ngẫu nhiên và bạn đang huấn luyện theo cách phân tán, bộ dữ liệu lặp của bạn phải sử dụng một thuộc tính nội bộgeneratorlà mộttorch.Generatorcho việc ngẫu nhiên hóa, và thuộc tính này phải giống nhau trên tất cả các tiến trình (và Trainer sẽ tự động đặt seed củageneratornày ở mỗi epoch) hoặc phải có một phương thứcset_epoch()mà bên trong sẽ đặt seed cho các RNG được sử dụng.Nếu tập dữ liệu không triển khai
__len__(ví dụ mộtIterableDatasetdạng streaming), thìmax_stepsphải được đặt, vì tổng số bước huấn luyện không thể suy ra được. - eval_dataset (
torch.utils.data.Dataset| dict[str,torch.utils.data.Dataset] |datasets.Dataset, optional) — Bộ dữ liệu được sử dụng để đánh giá. Nếu là Dataset, các cột không được phương thứcmodel.forward()chấp nhận sẽ được tự động loại bỏ. Nếu là một từ điển, quá trình đánh giá sẽ được thực hiện trên từng bộ dữ liệu, với tên chỉ số được bổ sung thêm khóa từ điển ở phía trước. - processing_class (
PreTrainedTokenizerBasehoặcBaseImageProcessorhoặcFeatureExtractionMixinhoặcProcessorMixin, tùy chọn) — Lớp xử lý được dùng để xử lý dữ liệu. Nếu được cung cấp, lớp này sẽ được dùng để tự động xử lý các đầu vào cho mô hình, và nó sẽ được lưu cùng với mô hình để dễ dàng chạy lại một phiên huấn luyện bị gián đoạn hoặc tái sử dụng mô hình đã tinh chỉnh. - model_init (
Callable[[], PreTrainedModel], tuỳ chọn) — Một hàm khởi tạo mô hình sẽ được sử dụng. Nếu được cung cấp, mỗi lần gọi train() sẽ bắt đầu từ một bản thể mới của mô hình do hàm này tạo ra.Hàm này có thể không có tham số, hoặc có một tham số duy nhất chứa đối tượng trial của optuna/Ray Tune, để có thể chọn các kiến trúc khác nhau dựa trên các siêu tham số (chẳng hạn như số lượng lớp, kích thước của các lớp bên trong, xác suất dropout, v.v.).
- compute_loss_func (
Callable, tùy chọn) — Một hàm nhận vào đầu ra thô của mô hình, nhãn và số lượng mục trong toàn bộ batch tích lũy (batch_size * gradient_accumulation_steps) và trả về loss. Ví dụ, xem hàm loss mặc định được Trainer sử dụng. - compute_metrics (
Callable[[EvalPrediction], Dict], tùy chọn) — Hàm sẽ được sử dụng để tính toán các chỉ số đánh giá. Hàm này phải nhận một EvalPrediction và trả về một từ điển ánh xạ từ chuỗi đến giá trị chỉ số. Lưu ý Khi truyền TrainingArgs vớibatch_eval_metricsđược đặt thànhTrue, hàm compute_metrics của bạn phải nhận một tham số booleancompute_result. Tham số này sẽ được kích hoạt sau batch đánh giá cuối cùng để báo hiệu rằng hàm cần tính toán và trả về các thống kê tổng hợp toàn cục thay vì tích lũy các thống kê ở cấp độ batch - callbacks (Danh sách TrainerCallback, tùy chọn) —
Danh sách các callback để tùy chỉnh vòng lặp huấn luyện. Những callback này sẽ được thêm vào danh sách các callback mặc định được mô tả chi tiết tại đây.
Nếu bạn muốn xóa một trong các callback mặc định được sử dụng, hãy dùng phương thức Trainer.remove_callback().
- optimizers (
tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR], tùy chọn, mặc định là(None, None)) — Một tuple chứa optimizer và scheduler cần sử dụng. Mặc định sẽ là một instance củaAdamWtrên model của bạn và một scheduler được tạo bởi get_linear_schedule_with_warmup() được điều khiển bởiargs. - optimizer_cls_and_kwargs (
tuple[Type[torch.optim.Optimizer], dict[str, Any]], tuỳ chọn) — Một tuple chứa lớp optimizer và các đối số từ khóa cần sử dụng. Ghi đèoptimvàoptim_argstrongargs. Không tương thích vớioptimizersđối số.Khác với
optimizers, đối số này giúp tránh việc phải đặt các tham số mô hình lên đúng thiết bị trước khi khởi tạo Trainer. - preprocess_logits_for_metrics (
Callable[[torch.Tensor, torch.Tensor], torch.Tensor], tuỳ chọn) — Một hàm tiền xử lý logits ngay trước khi lưu chúng vào bộ nhớ đệm ở mỗi bước đánh giá. Hàm này phải nhận hai tensor, gồm logits và nhãn, và trả về logits sau khi đã xử lý theo mong muốn. Các thay đổi do hàm này thực hiện sẽ được phản ánh trong các dự đoán màcompute_metrics.Lưu ý rằng nhãn (tham số thứ hai) sẽ là
Nonenếu tập dữ liệu không có chúng.
Trainer là vòng lặp huấn luyện và đánh giá đơn giản nhưng đầy đủ tính năng cho PyTorch, được tối ưu hóa cho 🤗 Transformers.
Các thuộc tính quan trọng:
- model — Luôn trỏ đến mô hình cốt lõi. Nếu đang sử dụng mô hình transformers, nó sẽ là một lớp con của PreTrainedModel.
- model_wrapped — Luôn trỏ đến model ngoài cùng trong trường hợp một hoặc nhiều module khác bọc model gốc. Đây là model cần được sử dụng cho bước forward. Ví dụ, dưới
DeepSpeed, model bên trong được bọc trongDeepSpeedvà sau đó lại được bọc trongtorch.nn.DistributedDataParallel. Nếu model bên trong chưa được bọc, thìself.model_wrappedgiống hệtself.model. - is_model_parallel — Cho biết mô hình đã được chuyển sang chế độ song song hóa mô hình hay chưa (khác với song song hóa dữ liệu, điều này có nghĩa là một số lớp của mô hình được chia ra trên các GPU khác nhau).
- place_model_on_device — Có hay không tự động đặt mô hình lên thiết bị. Mặc định là
Truetrừ khi model parallel, DeepSpeed, FSDP, full fp16/bf16 eval, hoặc SageMaker MP đang hoạt động. Có thể ghi đè bằng cách kế thừaTrainingArgumentsvà ghi đè thuộc tínhplace_model_on_device. - is_in_train — Cho biết mô hình có đang chạy
trainhay không (ví dụ: khievaluateđược gọi trong khi đang ở trongtrain) - loss_is_scaled_for_ga — Xác định xem loss được trả về bởi
compute_lossđã được scale cho gradient accumulation hay chưa.True:training_stepsử dụng giá trị này như là.False:training_stepchia nó cho số bước gradient accumulation.None(mặc định): loss được coi là đã scale khi nó được chuẩn hóa bởinum_items_in_batch, tức là khi model chấp nhận loss kwargs hoặc mộtcompute_loss_funcđược truyền vào. Các lớp con tự tính toán loss của chúng nên đặt giá trị này.
add_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Tham số
- callback (
typehoặc [`~transformers.TrainerCallback`]) — Một class TrainerCallback hoặc một instance của TrainerCallback. Trong trường hợp đầu tiên, sẽ instantiate một member của class đó.
Thêm một callback vào danh sách TrainerCallback hiện tại.
Một wrapper trợ giúp tạo ra context manager phù hợp cho autocast trong khi cung cấp các đối số mong muốn, tùy thuộc vào tình huống. Chúng tôi dựa vào accelerate cho autocast, do đó không thực hiện gì ở đây.
Gọi model_init để lấy một instance model mới, tùy chọn có điều kiện dựa trên một thử nghiệm siêu tham số.
compute_loss
< source >( model: Moduleinputs: dictreturn_outputs: bool = Falsenum_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None )
Tham số
- model (
nn.Module) — Mô hình để tính toán loss. - inputs (
dict[str, torch.Tensor | Any]) — Dữ liệu đầu vào cho mô hình. - return_outputs (
bool, tùy chọn, mặc định làFalse) — Có nên trả về đầu ra của mô hình cùng với loss hay không. - num_items_in_batch (Optional[torch.Tensor], tùy chọn) — Số lượng mục trong batch. Nếu không được truyền vào, loss sẽ được tính toán bằng cách sử dụng logic giảm batch size mặc định.
Cách mà Trainer tính toán loss. Mặc định, tất cả các model trả về loss ở phần tử đầu tiên.
Tạo lớp con và ghi đè để có hành vi tùy chỉnh. Nếu bạn tự tính toán loss, hãy đặt loss_is_scaled_for_ga để cho biết loss đã được scale cho gradient accumulation hay chưa: False nếu đó là trung bình trên mỗi batch (lúc đó Trainer sẽ chia nó cho số bước gradient accumulation), True nếu bạn đã chuẩn hóa nó trên toàn bộ batch đã tích lũy.
Một lớp bọc trợ giúp để nhóm các trình quản lý ngữ cảnh lại với nhau.
Tạo accelerator và thực hiện các bước thiết lập sau khi tạo (FSDP, DeepSpeed, v.v.).
create_model_card
< source >( language: str | None = Nonelicense: str | None = Nonetags: str | list[str] | None = Nonemodel_name: str | None = Nonefinetuned_from: str | None = Nonetasks: str | list[str] | None = Nonedataset_tags: str | list[str] | None = Nonedataset: str | list[str] | None = Nonedataset_args: str | list[str] | None = None )
Tham số
- language (
str, tùy chọn) — Ngôn ngữ của mô hình (nếu có) - license (
str, tùy chọn) — Giấy phép của mô hình. Mặc định sẽ dùng giấy phép của mô hình được huấn luyện trước đó, nếu mô hình gốc được truyền vàoTrainercó nguồn gốc từ một kho trên Hub. - tags (
strhoặclist[str], tùy chọn) — Một số thẻ cần được bao gồm trong metadata của model card. - model_name (
str, tùy chọn) — Tên của mô hình. - finetuned_from (
str, tùy chọn) — Tên của mô hình được dùng để tinh chỉnh mô hình này (nếu có). Mặc định sẽ là tên của kho chứa mô hình gốc được truyền vàoTrainer(nếu nó đến từ Hub). - tasks (
strhoặclist[str], tùy chọn) — Một hoặc nhiều định danh tác vụ, sẽ được bao gồm trong metadata của model card. - dataset_tags (
strhoặclist[str], tùy chọn) — Một hoặc nhiều thẻ dữ liệu, sẽ được bao gồm trong metadata của model card. - dataset (
strhoặclist[str], tùy chọn) — Một hoặc nhiều định danh bộ dữ liệu, sẽ được bao gồm trong metadata của thẻ mô hình. - dataset_args (
strhoặclist[str], tùy chọn) — Một hoặc nhiều đối số tập dữ liệu, sẽ được bao gồm trong metadata của model card.
Tạo bản nháp của thẻ mô hình (model card) bằng cách sử dụng thông tin có sẵn của Trainer.
create_optimizer
< source >( model = None ) → torch.optim.Optimizer
Trả về
torch.optim.Optimizer
Thư mục cài đặt của trình tối ưu.
Cấu hình bộ tối ưu.
Chúng tôi cung cấp một giá trị mặc định hợp lý và hoạt động tốt. Nếu bạn muốn sử dụng thứ khác, bạn có thể truyền một tuple vào init của Trainer thông qua optimizers, hoặc tạo một lớp con và ghi đè phương thức này trong lớp con đó.
Cài đặt bộ tối ưu hóa và trình lập lịch tốc độ học.
Chúng tôi cung cấp một giá trị mặc định hợp lý và hoạt động tốt. Nếu bạn muốn sử dụng thứ khác, bạn có thể truyền một tuple vào init của Trainer thông qua optimizers, hoặc tạo một lớp con và ghi đè phương thức này (hoặc create_optimizer và/hoặc create_scheduler) trong lớp con đó.
create_scheduler
< source >( num_training_steps: intoptimizer: typing.Optional[torch.optim.Optimizer] = None ) → torch.optim.lr_scheduler.LRScheduler
Cấu hình trình lập lịch. Trình tối ưu của trainer phải được thiết lập trước khi phương thức này được gọi hoặc được truyền dưới dạng một đối số.
Hoàn tất các bộ theo dõi và hủy nhóm tiến trình phân tán.
Gọi lệnh này một lần, ở cuối cùng của script, sau tất cả những gì cần đến các tiến trình khác: train(), evaluate(), predict(), save_model() và push_to_hub() đều giao tiếp giữa các tiến trình và sẽ thất bại khi nhóm đã bị xóa.
evaluate
< source >( eval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )
Tham số
- eval_dataset (
Dataset| dict[str,Dataset], tuỳ chọn) — Truyền một dataset nếu bạn muốn ghi đè lênself.eval_dataset. Nếu đó là một Dataset, các cột không được chấp nhận bởimodel.forward()phương thức sẽ tự động bị loại bỏ. Nếu đó là một từ điển, nó sẽ đánh giá trên từng dataset, thêm tiền tố là khóa từ điển vào tên chỉ số.Nếu bạn truyền một từ điển có tên các bộ dữ liệu làm khóa và các bộ dữ liệu làm giá trị, evaluate sẽ chạy các đánh giá riêng biệt trên từng bộ dữ liệu. Điều này có thể hữu ích để theo dõi cách huấn luyện ảnh hưởng đến các bộ dữ liệu khác hoặc đơn giản là để có được đánh giá chi tiết hơn. Khi sử dụng với
load_best_model_at_end, hãy đảm bảometric_for_best_modeltham chiếu đến đúng một trong các bộ dữ liệu. Ví dụ, nếu bạn truyền{"data1": data1, "data2": data2}cho hai bộ dữ liệudata1vàdata2, bạn có thể chỉ địnhmetric_for_best_model="eval_data1_loss"để sử dụng loss trêndata1vàmetric_for_best_model="eval_data2_loss"cho loss trêndata2. - ignore_keys (
list[str], tùy chọn) — Danh sách các khóa trong đầu ra của mô hình của bạn (nếu đó là một từ điển) cần được bỏ qua khi thu thập các dự đoán. - metric_key_prefix (
str, tùy chọn, mặc định là"eval") — Một tiền tố tùy chọn được sử dụng làm tiền tố cho khóa của các chỉ số. Ví dụ, chỉ số “bleu” sẽ được đặt tên là “eval_bleu” nếu tiền tố là “eval” (mặc định)
Chạy đánh giá và trả về các chỉ số.
Script gọi sẽ có trách nhiệm cung cấp một phương thức để tính toán các chỉ số, vì chúng phụ thuộc vào tác vụ (truyền vào tham số compute_metrics của init).
Bạn cũng có thể tạo lớp con và ghi đè phương thức này để chèn hành vi tùy chỉnh.
evaluation_loop
< source >( dataloader: DataLoaderdescription: strprediction_loss_only: bool | None = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )
Vòng lặp dự đoán/đánh giá, được dùng chung bởi Trainer.evaluate() và Trainer.predict().
Hoạt động cả khi có nhãn lẫn khi không có nhãn.
floating_point_ops
< source >( inputs: dict ) → int
Đối với các mô hình kế thừa từ PreTrainedModel, hãy sử dụng phương thức đó để tính toán số lượng phép toán số dấu phẩy động cho mỗi lượt truyền ngược + truyền xuôi. Nếu sử dụng một mô hình khác, hãy triển khai một phương thức như vậy trong mô hình hoặc kế thừa lớp con và ghi đè phương thức này.
Thu thập một số lượng batch được chỉ định từ bộ lặp epoch và tùy chọn đếm số lượng phần tử trong các batch để điều chỉnh loss một cách chính xác.
Lấy kích thước song song ngữ cảnh
Lấy tất cả tên tham số mà weight decay sẽ được áp dụng.
Hàm này lọc các tham số theo hai cách:
- Theo loại lớp (các thể hiện của các lớp được chỉ định trong ALL_LAYERNORM_LAYERS)
- Theo mẫu tên tham số (chứa ‘bias’, hoặc biến thể của ‘norm’)
get_eval_dataloader
< source >( eval_dataset: typing.Union[str, torch.utils.data.Dataset, NoneType] = None )
Tham số
- eval_dataset (
strhoặctorch.utils.data.Dataset, tùy chọn) — Nếu làstr, sẽ sử dụngself.eval_dataset[eval_dataset]làm tập dữ liệu đánh giá. Nếu làDataset, sẽ ghi đè lênself.eval_dataset. Nếu là Dataset, các cột không được phương thứcmodel.forward()chấp nhận sẽ tự động bị loại bỏ.
Trả về ~torch.utils.data.DataLoader đánh giá.
Hãy tạo lớp con và ghi đè phương thức này nếu bạn muốn chèn một số hành vi tùy chỉnh.
Trả về tốc độ học của từng tham số từ self.optimizer.
Lấy số lượng tham số có thể huấn luyện.
get_optimizer_cls_and_kwargs
< source >( args: TrainingArgumentsmodel: transformers.modeling_utils.PreTrainedModel | None = None )
Trả về lớp optimizer và các tham số optimizer dựa trên các đối số huấn luyện.
get_optimizer_group
< source >( param: typing.Union[str, torch.nn.parameter.Parameter, NoneType] = None )
Trả về nhóm optimizer cho một tham số nếu được cung cấp, nếu không thì trả về tất cả các nhóm optimizer cho các tham số.
Lấy kích thước song song chuỗi
get_test_dataloader
< source >( test_dataset: Dataset )
Tham số
- test_dataset (
torch.utils.data.Dataset, tùy chọn) — Bộ dữ liệu kiểm tra cần sử dụng. Nếu đây là một Dataset, các cột không được phương thứcmodel.forward()chấp nhận sẽ tự động bị loại bỏ.
Trả về ~torch.utils.data.DataLoader kiểm thử.
Hãy tạo lớp con và ghi đè phương thức này nếu bạn muốn chèn một số hành vi tùy chỉnh.
Tính toán kích thước lô tổng (micro_batch grad_accum dp_world_size).
Đảm bảo tính tương thích với tất cả các chiều song song: TP, CP và SP.
Công thức: dp_world_size = world_size // (tp_size cp_size sp_size)
Trong đó:
- TP (Tensor Parallelism): Các lớp mô hình được chia nhỏ trên các GPU
- CP (Context Parallelism): Các chuỗi được chia bằng Ring Attention (FSDP2)
- SP (Song song chuỗi): Các chuỗi được chia bằng ALST/Ulysses (DeepSpeed)
Tất cả các chiều đều tách biệt và nhân với nhau: world_size = dp_size tp_size cp_size * sp_size
Lấy kích thước song song tensor từ cấu hình mô hình hoặc cấu hình DeepSpeed.
Trả về ~torch.utils.data.DataLoader cho quá trình huấn luyện.
Sẽ không dùng bộ lấy mẫu nào nếu train_dataset không triển khai __len__, ngược lại sẽ dùng bộ lấy mẫu ngẫu nhiên (được điều chỉnh cho huấn luyện phân tán nếu cần).
Hãy tạo lớp con và ghi đè phương thức này nếu bạn muốn chèn một số hành vi tùy chỉnh.
tìm kiếm siêu tham số
< source >( hp_space: collections.abc.Callable[['optuna.Trial'], dict[str, float]] | None = Nonecompute_objective: collections.abc.Callable[[dict[str, float]], float] | None = Nonen_trials: int = 20direction: str | list[str] = 'minimize'backend: str | transformers.trainer_utils.HPSearchBackend | None = Nonehp_name: collections.abc.Callable[['optuna.Trial'], str] | None = None**kwargs ) → [trainer_utils.BestRun or list[trainer_utils.BestRun]]
Tham số
- hp_space (
Callable[["optuna.Trial"], dict[str, float]], tùy chọn) — Một hàm xác định không gian tìm kiếm siêu tham số. Mặc định sẽ làdefault_hp_space_optuna()hoặcdefault_hp_space_ray()tùy thuộc vào backend của bạn. - compute_objective (
Callable[[dict[str, float]], float], tùy chọn) — Hàm tính toán mục tiêu cần tối thiểu hóa hoặc tối đa hóa từ các chỉ số được trả về bởi phương thứcevaluate. Mặc định sẽ làdefault_compute_objective(). - n_trials (
int, tùy chọn, mặc định là 100) — Số lần chạy thử nghiệm để kiểm tra. - direction (
strhoặclist[str], tùy chọn, mặc định là"minimize") — Nếu là tối ưu hóa đơn mục tiêu, direction làstr, có thể là"minimize"hoặc"maximize", bạn nên chọn"minimize"khi tối ưu hóa validation loss,"maximize"khi tối ưu hóa một hoặc vài metrics. Nếu là tối ưu hóa đa mục tiêu, direction làlist[str], có thể là List của"minimize"và"maximize", bạn nên chọn"minimize"khi tối ưu hóa validation loss,"maximize"khi tối ưu hóa một hoặc vài metrics. - backend (
strhoặc~training_utils.HPSearchBackend, không bắt buộc) — Backend được sử dụng cho việc tìm kiếm siêu tham số. Mặc định sẽ là optuna hoặc Ray Tune, tùy thuộc vào thư viện nào được cài đặt. Nếu tất cả đều được cài đặt, mặc định sẽ là optuna. - hp_name (
Callable[["optuna.Trial"], str]], tuỳ chọn) — Một hàm định nghĩa tên của trial/run. Mặc định là None. - kwargs (
dict[str, Any], tuỳ chọn) — Các tham số từ khóa bổ sung cho mỗi backend:optuna: các tham số từ optuna.study.create_study cũng như các tham sốtimeout,n_jobsvàgc_after_trialtừ optuna.study.Study.optimizeray: các tham số từ tune.run. Nếuresources_per_trialkhông được đặt trongkwargs, giá trị mặc định là 1 lõi CPU và 1 GPU (nếu có sẵn). Nếuprogress_reporterkhông được đặt trongkwargs, ray.tune.CLIReporter sẽ được sử dụng.
Trả về
[trainer_utils.BestRun hoặc list[trainer_utils.BestRun]]
Tất cả thông tin về lần chạy tốt nhất hoặc các lần chạy tốt nhất cho tối ưu hóa đa mục tiêu. Tóm tắt thí nghiệm có thể được tìm thấy trong thuộc tính run_summary cho backend Ray.
Khởi chạy tìm kiếm siêu tham số bằng optuna hoặc Ray Tune. Đại lượng được tối ưu được xác định bởi compute_objective, mặc định là một hàm trả về loss đánh giá khi không có metric nào được cung cấp, hoặc tổng của tất cả các metric nếu có.
Để sử dụng phương pháp này, bạn cần đã cung cấp
model_initkhi khởi tạo Trainer của mình: chúng ta cần khởi tạo lại mô hình ở mỗi lần chạy mới. Điều này không tương thích với tham sốoptimizers, vì vậy bạn cần tạo lớp con của Trainer và ghi đè phương thức create_optimizer_and_scheduler() cho optimizer/scheduler tùy chỉnh.
init_hf_repo
< source >( token: str | None = Noneprivate: bool | None = None )
Khởi tạo một kho git trong self.args.hub_model_id.
Dù quy trình này có phải là tiến trình chính cục bộ (ví dụ: trên một máy nếu huấn luyện theo cách phân tán trên nhiều máy) hay không.
Dù quy trình này có phải là quy trình chính toàn cục hay không (khi huấn luyện theo cách phân tán trên nhiều máy, điều này chỉ True với một quy trình).
log
< source >( logs: dictstart_time: float | None = None )
Ghi logs trên các đối tượng khác nhau đang theo dõi quá trình huấn luyện.
Kế thừa và ghi đè phương thức này để chèn hành vi tùy chỉnh.
log_metrics
< source >( splitmetrics )
Ghi lại các chỉ số theo một định dạng đặc biệt.
Trong môi trường phân tán, điều này chỉ được thực hiện cho tiến trình có rank 0.
Ghi chú về báo cáo bộ nhớ:
Để có báo cáo về mức sử dụng bộ nhớ, bạn cần cài đặt psutil. Bạn có thể thực hiện điều đó bằng pip install psutil.
Bây giờ khi phương thức này được thực thi, bạn sẽ thấy một báo cáo bao gồm:
init_mem_cpu_alloc_delta = 1301MB
init_mem_cpu_peaked_delta = 154MB
init_mem_gpu_alloc_delta = 230MB
init_mem_gpu_peaked_delta = 0MB
train_mem_cpu_alloc_delta = 1345MB
train_mem_cpu_peaked_delta = 0MB
train_mem_gpu_alloc_delta = 693MB
train_mem_gpu_peaked_delta = 7MBHiểu về các báo cáo:
- đoạn đầu tiên, ví dụ
train__, cho bạn biết các chỉ số này thuộc giai đoạn nào. Các báo cáo bắt đầu bằnginit_sẽ được thêm vào giai đoạn đầu tiên được thực thi. Do đó, nếu chỉ chạy đánh giá, mức sử dụng bộ nhớ của__init__sẽ được báo cáo cùng với các chỉ sốeval_. - đoạn thứ ba, là
cpuhoặcgpu, cho biết đó là bộ nhớ RAM chung hay bộ nhớ gpu0. *_alloc_delta- là sự chênh lệch của bộ đếm bộ nhớ đã dùng/đã cấp phát giữa thời điểm kết thúc và bắt đầu của giai đoạn - giá trị này có thể âm nếu một hàm đã giải phóng nhiều bộ nhớ hơn so với lượng đã cấp phát.*_peaked_delta- là bộ nhớ bổ sung đã được sử dụng và sau đó được giải phóng - so với bộ nhớ đã cấp phát hiện tại - giá trị này không bao giờ âm. Khi xem xét các chỉ số của bất kỳ giai đoạn nào, bạn cộngalloc_delta+peaked_deltađể biết lượng bộ nhớ cần thiết để hoàn thành giai đoạn đó.
Việc báo cáo chỉ được thực hiện cho tiến trình có rank 0 và gpu 0 (nếu có gpu). Thông thường điều này là đủ vì tiến trình chính thực hiện phần lớn công việc, nhưng điều này có thể không hoàn toàn đúng nếu sử dụng model parallel, khi đó các GPU khác có thể sử dụng một lượng bộ nhớ gpu khác nhau. Điều này cũng không giống nhau dưới DataParallel, nơi gpu0 có thể yêu cầu nhiều bộ nhớ hơn đáng kể so với phần còn lại vì nó lưu trữ gradient và trạng thái optimizer cho tất cả các GPU tham gia. Có lẽ trong tương lai, các báo cáo này sẽ phát triển để đo lường cả những điều đó.
Chỉ số RAM CPU đo RSS (Resident Set Size) bao gồm cả bộ nhớ duy nhất của tiến trình và bộ nhớ được chia sẻ với các tiến trình khác. Cần lưu ý rằng chỉ số này không bao gồm bộ nhớ đã bị hoán đổi (swapped out), do đó các báo cáo có thể không chính xác.
Bộ nhớ đỉnh của CPU được đo bằng một luồng lấy mẫu. Do GIL của python, một số đỉnh bộ nhớ có thể bị bỏ sót nếu luồng đó không có cơ hội chạy khi bộ nhớ được sử dụng ở mức cao nhất. Do đó, báo cáo này có thể thấp hơn thực tế. Việc sử dụng tracemalloc sẽ báo cáo chính xác bộ nhớ đỉnh, nhưng nó không báo cáo các cấp phát bộ nhớ nằm ngoài python. Vì vậy, nếu một phần mở rộng C++ CUDA tự cấp phát bộ nhớ của riêng nó, điều đó sẽ không được báo cáo. Và do đó, phương pháp này đã bị loại bỏ để ưu tiên cho cách tiếp cận lấy mẫu bộ nhớ, vốn đọc mức sử dụng bộ nhớ hiện tại của tiến trình.
Việc báo cáo bộ nhớ đã cấp phát và bộ nhớ đỉnh trên GPU được thực hiện bằng torch.cuda.memory_allocated() và torch.cuda.max_memory_allocated(). Chỉ số này chỉ báo cáo các “độ tăng” cho các lần cấp phát bộ nhớ đặc thù của PyTorch, vì hệ thống quản lý bộ nhớ torch.cuda không theo dõi bất kỳ bộ nhớ nào được cấp phát bên ngoài PyTorch. Ví dụ, lệnh gọi cuda đầu tiên thường sẽ nạp các CUDA kernel, có thể chiếm từ 0,5 đến 2GB bộ nhớ GPU.
Lưu ý rằng trình theo dõi này không tính đến các cấp phát bộ nhớ nằm ngoài các lệnh gọi __init__, train, evaluate và predict của Trainer.
Vì các cuộc gọi evaluation có thể xảy ra trong quá trình train, chúng ta không thể xử lý các cuộc gọi lồng nhau vì torch.cuda.max_memory_allocated là một bộ đếm duy nhất, nên nếu nó bị đặt lại bởi một cuộc gọi eval lồng nhau, bộ theo dõi của train sẽ báo cáo thông tin không chính xác. Nếu vấn đề pytorch này được giải quyết, sẽ có thể thay đổi lớp này để có thể tái nhập (re-entrant). Cho đến khi đó, chúng ta chỉ theo dõi mức ngoài cùng của các phương thức train, evaluate và predict. Điều này có nghĩa là nếu eval được gọi trong khi train đang chạy, thì train sẽ chịu trách nhiệm tính toán mức sử dụng bộ nhớ của chính nó và của eval.
Điều này cũng có nghĩa là nếu bất kỳ công cụ nào khác được sử dụng cùng với Trainer gọi torch.cuda.reset_peak_memory_stats, các thống kê bộ nhớ GPU đỉnh có thể không chính xác. Và Trainer sẽ làm gián đoạn hành vi bình thường của bất kỳ công cụ nào như vậy dựa vào việc tự gọi torch.cuda.reset_peak_memory_stats.
Để đạt hiệu suất tốt nhất, bạn có thể cân nhắc tắt hồ sơ bộ nhớ cho các lần chạy trong môi trường sản xuất.
metrics_format
< source >( metrics: dict ) → metrics (dict[str, float])
Định dạng lại các giá trị chỉ số của Trainer thành định dạng dễ đọc cho con người.
Trợ lý để lấy số lượng mẫu trong một ~torch.utils.data.DataLoader bằng cách truy cập vào dataset của nó. Khi
dataloader.dataset không tồn tại hoặc không có độ dài, hàm sẽ ước lượng tốt nhất có thể
pop_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback ) → TrainerCallback
Tham số
- callback (
typehoặc [`~transformers.TrainerCallback`]) — Một class TrainerCallback hoặc một instance của TrainerCallback. Trong trường hợp đầu tiên, sẽ lấy thành viên đầu tiên của class đó được tìm thấy trong danh sách các callback.
Trả về
Callback đã được xóa, nếu tìm thấy.
Xóa một callback khỏi danh sách TrainerCallback hiện tại và trả về nó.
Nếu không tìm thấy callback, hàm trả về None (và không có lỗi nào được ném ra).
predict
< source >( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test' )
Tham số
- test_dataset (
Dataset) — Dataset để chạy các dự đoán. Nếu đây là mộtdatasets.Dataset, các cột không được chấp nhận bởi phương thứcmodel.forward()sẽ tự động bị loại bỏ. - ignore_keys (
list[str], tùy chọn) — Danh sách các khóa trong đầu ra của mô hình của bạn (nếu đó là một từ điển) cần được bỏ qua khi thu thập các dự đoán. - metric_key_prefix (
str, tùy chọn, mặc định là"test") — Một tiền tố tùy chọn được sử dụng làm tiền tố cho khóa của các chỉ số. Ví dụ, chỉ số “bleu” sẽ được đặt tên là “test_bleu” nếu tiền tố là “test” (mặc định)
Chạy dự đoán và trả về các dự đoán cùng các chỉ số tiềm năng.
Tùy thuộc vào bộ dữ liệu và trường hợp sử dụng của bạn, bộ dữ liệu kiểm tra có thể chứa nhãn. Trong trường hợp đó, phương thức này cũng sẽ trả về các chỉ số, giống như trong evaluate().
Nếu dự đoán hoặc nhãn của bạn có độ dài chuỗi khác nhau (ví dụ vì bạn đang thực hiện đệm động trong một tác vụ phân loại token), các dự đoán sẽ được đệm (về phía bên phải) để cho phép ghép nối thành một mảng duy nhất. Chỉ số đệm là -100.
Trả về: NamedTuple Một namedtuple với các khóa sau:
- predictions (
np.ndarray): Các dự đoán trêntest_dataset. - label_ids (
np.ndarray, tùy chọn): Các nhãn (nếu tập dữ liệu có chứa nhãn). - metrics (
dict[str, float], tùy chọn): Từ điển các chỉ số tiềm năng (nếu tập dữ liệu chứa nhãn).
prediction_step
< source >( model: Moduleinputs: dictprediction_loss_only: boolignore_keys: list[str] | None = None ) → tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]
Tham số
- model (
nn.Module) — Mô hình cần đánh giá. - inputs (
dict[str, torch.Tensor | Any]) — Các đầu vào và mục tiêu của mô hình.Từ điển sẽ được giải nén trước khi được đưa vào mô hình. Hầu hết các mô hình kỳ vọng các mục tiêu nằm dưới tham số
labels. Hãy kiểm tra tài liệu của mô hình để biết tất cả các tham số được chấp nhận. - prediction_loss_only (
bool) — Có nên chỉ trả về loss hay không. - ignore_keys (
list[str], tùy chọn) — Danh sách các khóa trong đầu ra của mô hình của bạn (nếu đó là một từ điển) cần được bỏ qua khi thu thập các dự đoán.
Trả về
tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]
Một tuple chứa loss, logits và labels (mỗi thành phần đều là tùy chọn).
Thực hiện bước đánh giá trên model bằng cách sử dụng inputs.
Tạo lớp con và ghi đè để chèn hành vi tùy chỉnh.
push_to_hub
< source >( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = Noneprivate: bool | None = None**kwargs )
Tham số
- commit_message (
str, tùy chọn, mặc định là"End of training") — Thông điệp để commit khi đẩy lên. - blocking (
bool, tùy chọn, mặc định làTrue) — Xác định xem hàm có chỉ trả về khigit pushđã hoàn tất hay không. - token (
str, tùy chọn, mặc định làNone) — Token có quyền ghi để ghi đè lên các args gốc của Trainer. - revision (
str, tùy chọn) — Phiên bản git để commit từ. Mặc định là đầu của nhánh “main”. - private (
bool, tuỳ chọn) — Xác định xem có đặt kho thành riêng tư khi tạo hay không. Mặc định làargs.hub_private_repo. Không có tác dụng nếu kho đã tồn tại. - kwargs (
dict[str, Any], tùy chọn) — Các đối số từ khóa bổ sung được truyền đến create_model_card().
Tải self.model và self.processing_class lên 🤗 model hub tại repo self.args.hub_model_id.
remove_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Tham số
- callback (
typehoặc [`~transformers.TrainerCallback`]) — Một class TrainerCallback hoặc một instance của TrainerCallback. Trong trường hợp đầu tiên, sẽ xóa thành viên đầu tiên của class đó được tìm thấy trong danh sách các callback.
Xóa một callback khỏi danh sách TrainerCallback hiện tại.
save_metrics
< source >( splitmetricscombined = True )
Lưu các chỉ số vào một tệp json cho phần chia đó, ví dụ train_results.json.
Trong môi trường phân tán, điều này chỉ được thực hiện cho tiến trình có rank 0.
Để hiểu các chỉ số, vui lòng đọc docstring của log_metrics(). Điểm khác biệt duy nhất là các con số thô chưa được định dạng được lưu trong phương thức hiện tại.
Sẽ lưu mô hình, để bạn có thể tải lại bằng from_pretrained().
Chỉ lưu từ tiến trình chính.
Lưu trạng thái của Trainer, vì Trainer.save_model chỉ lưu tokenizer cùng với model.
Trong môi trường phân tán, điều này chỉ được thực hiện cho tiến trình có rank 0.
Tính toán và trả về các giá trị sau:
num_train_epochsnum_update_steps_per_epochnum_examplesnum_train_samplestotal_train_batch_sizesteps_in_epoch(tổng số lô mỗi epoch)max_steps
Lưu trữ số lượng phép toán số dấu phẩy động đã được thực hiện trong mô hình.
train
< source >( resume_from_checkpoint: str | bool | None = Nonetrial: optuna.Trial | dict[str, Any] | None = Noneignore_keys_for_eval: list[str] | None = None ) → TrainOutput
Tham số
- resume_from_checkpoint (
strhoặcbool, tùy chọn) — Nếu làstr, đường dẫn cục bộ đến checkpoint đã lưu bởi một phiên Trainer trước đó. Nếu làboolvà bằngTrue, tải checkpoint cuối cùng trong args.output_dir do một phiên Trainer trước đó lưu lại. Nếu có, quá trình huấn luyện sẽ tiếp tục từ trạng thái model/optimizer/scheduler được tải tại đây. - trial (
optuna.Trialhoặcdict[str, Any], tùy chọn) — Lần chạy thử nghiệm hoặc từ điển siêu tham số cho việc tìm kiếm siêu tham số. - ignore_keys_for_eval (
list[str], tùy chọn) — Một danh sách các khóa trong đầu ra của mô hình của bạn (nếu đó là một từ điển) cần được bỏ qua khi thu thập các dự đoán để đánh giá trong quá trình huấn luyện.
Trả về
TrainOutput
Đối tượng chứa số bước toàn cục, tổn thất huấn luyện và các chỉ số.
Điểm vào chính cho quá trình huấn luyện.
training_step
< source >( model: Moduleinputs: dictnum_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None ) → torch.Tensor
Tham số
- model (
nn.Module) — Mô hình cần huấn luyện. - inputs (
dict[str, torch.Tensor | Any]) — Các đầu vào và mục tiêu của mô hình.Từ điển sẽ được giải nén trước khi được đưa vào mô hình. Hầu hết các mô hình kỳ vọng các mục tiêu nằm dưới tham số
labels. Hãy kiểm tra tài liệu của mô hình để biết tất cả các tham số được chấp nhận.
Trả về
torch.Tensor
Tensor chứa tổn thất huấn luyện trên lô này.
Thực hiện một bước huấn luyện trên một lô dữ liệu đầu vào.
Tạo lớp con và ghi đè để chèn hành vi tùy chỉnh.
Seq2SeqTrainer
lớp transformers.Seq2SeqTrainer
< source >( model: typing.Union[ForwardRef('PreTrainedModel'), torch.nn.Module, NoneType] = Noneargs: typing.Optional[ForwardRef('TrainingArguments')] = Nonedata_collator: typing.Optional[ForwardRef('DataCollator')] = Nonetrain_dataset: typing.Union[torch.utils.data.Dataset, ForwardRef('IterableDataset'), ForwardRef('datasets.Dataset'), NoneType] = Noneeval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneprocessing_class: typing.Union[ForwardRef('PreTrainedTokenizerBase'), ForwardRef('BaseImageProcessor'), ForwardRef('FeatureExtractionMixin'), ForwardRef('ProcessorMixin'), NoneType] = Nonemodel_init: collections.abc.Callable[[], 'PreTrainedModel'] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[['EvalPrediction'], dict] | None = Nonecallbacks: list['TrainerCallback'] | None = Noneoptimizers: tuple = (None, None)preprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
evaluate
< source >( eval_dataset: typing.Optional[torch.utils.data.Dataset] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval'**gen_kwargs )
Tham số
- eval_dataset (
Dataset, tùy chọn) — Truyền một dataset nếu bạn muốn ghi đè lênself.eval_dataset. Nếu nó là một Dataset, các cột không được chấp nhận bởi phương thứcmodel.forward()sẽ tự động bị loại bỏ. Nó phải triển khai phương thức__len__. - ignore_keys (
list[str], tùy chọn) — Danh sách các khóa trong đầu ra của mô hình của bạn (nếu đó là một từ điển) cần được bỏ qua khi thu thập các dự đoán. - metric_key_prefix (
str, tùy chọn, mặc định là"eval") — Một tiền tố tùy chọn được sử dụng làm tiền tố cho khóa của các chỉ số. Ví dụ, chỉ số “bleu” sẽ được đặt tên là “eval_bleu” nếu tiền tố là"eval"(mặc định) - max_length (
int, tùy chọn) — Chiều dài đích tối đa được sử dụng khi dự đoán bằng phương thức generate. - num_beams (
int, tùy chọn) — Số lượng beam cho beam search sẽ được sử dụng khi dự đoán bằng phương thức generate. 1 có nghĩa là không dùng beam search. - gen_kwargs —
Các kwargs cụ thể bổ sung cho
generate.
Chạy đánh giá và trả về các chỉ số.
Script gọi sẽ có trách nhiệm cung cấp một phương thức để tính toán các chỉ số, vì chúng phụ thuộc vào tác vụ (truyền vào tham số compute_metrics của init).
Bạn cũng có thể tạo lớp con và ghi đè phương thức này để chèn hành vi tùy chỉnh.
predict
< source >( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test'**gen_kwargs )
Tham số
- test_dataset (
Dataset) — Dataset để chạy các dự đoán. Nếu là Dataset, các cột không được chấp nhận bởi phương thứcmodel.forward()sẽ tự động bị loại bỏ. Phải triển khai phương thức__len__ - ignore_keys (
list[str], tùy chọn) — Danh sách các khóa trong đầu ra của mô hình của bạn (nếu đó là một từ điển) cần được bỏ qua khi thu thập các dự đoán. - metric_key_prefix (
str, tùy chọn, mặc định là"eval") — Một tiền tố tùy chọn được sử dụng làm tiền tố cho khóa của các chỉ số. Ví dụ, chỉ số “bleu” sẽ được đặt tên là “eval_bleu” nếu tiền tố là"eval"(mặc định) - max_length (
int, tùy chọn) — Chiều dài đích tối đa được sử dụng khi dự đoán bằng phương thức generate. - num_beams (
int, tùy chọn) — Số lượng beam cho beam search sẽ được sử dụng khi dự đoán bằng phương thức generate. 1 có nghĩa là không dùng beam search. - gen_kwargs —
Các kwargs cụ thể bổ sung cho
generate.
Chạy dự đoán và trả về các dự đoán cùng các chỉ số tiềm năng.
Tùy thuộc vào bộ dữ liệu và trường hợp sử dụng của bạn, bộ dữ liệu kiểm tra có thể chứa nhãn. Trong trường hợp đó, phương thức này cũng sẽ trả về các chỉ số, giống như trong evaluate().
Nếu các dự đoán hoặc nhãn của bạn có độ dài chuỗi khác nhau (ví dụ vì bạn đang thực hiện đệm động trong một tác vụ phân loại token), các dự đoán sẽ được đệm (ở phía bên phải) để cho phép ghép nối thành một mảng duy nhất. Chỉ số đệm là -100.
Trả về: NamedTuple Một namedtuple với các khóa sau:
- predictions (
np.ndarray): Các dự đoán trêntest_dataset. - label_ids (
np.ndarray, tùy chọn): Các nhãn (nếu tập dữ liệu có chứa nhãn). - metrics (
dict[str, float], tùy chọn): Từ điển các chỉ số tiềm năng (nếu tập dữ liệu chứa nhãn).
TrainingArguments
lớp transformers.TrainingArguments
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1 )
Tham số
- output_dir (
str, tùy chọn, mặc định là"trainer_output") — Thư mục đầu ra, nơi các dự đoán của mô hình và các checkpoint sẽ được ghi.
Thời gian huấn luyện và kích thước lô
- per_device_train_batch_size (
int, tùy chọn, mặc định là 8) — Kích thước lô trên mỗi thiết bị. Kích thước lô toàn cục được tính là:per_device_train_batch_size * number_of_devicestrong các cấu hình đa GPU hoặc phân tán. - num_train_epochs(
float, tuỳ chọn, mặc định là 3.0) — Tổng số epoch huấn luyện cần thực hiện (nếu không phải số nguyên, sẽ thực hiện phần thập phân theo phần trăm của epoch cuối trước khi dừng huấn luyện). - max_steps (
int, tùy chọn, mặc định là -1) — Ghi đènum_train_epochs. Nếu được đặt thành một số dương, đây là tổng số bước huấn luyện cần thực hiện. Đối với một tập dữ liệu hữu hạn, quá trình huấn luyện sẽ lặp lại qua tập dữ liệu (nếu toàn bộ dữ liệu đã được dùng hết) cho đến khi đạtmax_steps. Tham số này phải được đặt thành một giá trị dương khi tập dữ liệu huấn luyện không triển khai__len__(ví dụ: một tập dữ liệu streaming), vì khi đó tổng số bước không thể suy ra được và là bắt buộc để giới hạn vòng lặp huấn luyện và cấu hình trình lập lịch tốc độ học.
Tốc độ học & Bộ lập lịch
- learning_rate (
float, tùy chọn, mặc định là 5e-5) — Tốc độ học ban đầu cho bộ tối ưu. Đây thường là tốc độ học đỉnh khi sử dụng trình lập lịch có giai đoạn làm nóng (warmup). - lr_scheduler_type (
strhoặc SchedulerType, tùy chọn, mặc định là"linear") — Loại trình điều khiển tốc độ học (learning rate scheduler) cần sử dụng. Xem SchedulerType để biết tất cả các giá trị khả dụng. Các lựa chọn phổ biến:- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dicthoặcstr, tùy chọn, mặc định làNone) — Các đối số bổ sung cho lr_scheduler. Xem tài liệu của từng scheduler để biết các giá trị có thể. - warmup_steps (
inthoặcfloat, tùy chọn, mặc định là 0) — Số bước cho quá trình warmup tuyến tính từ 0 đếnlearning_rate. Warmup giúp ổn định quá trình huấn luyện trong giai đoạn đầu. Có thể là:- Một số nguyên: số bước khởi động chính xác
- Một số float trong khoảng [0, 1): được hiểu là tỷ lệ so với tổng số bước huấn luyện
Trình tối ưu
- optim (
strhoặctraining_args.OptimizerNames, tuỳ chọn, mặc định là"adamw_torch"(đối với torch>=2.8"adamw_torch_fused")) — Bộ tối ưu cần sử dụng. Các lựa chọn phổ biến:"adamw_torch": AdamW của PyTorch (mặc định được khuyến nghị)"adamw_torch_fused": Lõi AdamW đã hợp nhất"adamw_hf": Bản triển khai AdamW của HuggingFace"sgd": Stochastic Gradient Descent có momentum"adafactor": Bộ tối ưu hóa tiết kiệm bộ nhớ cho các mô hình lớn"adamw_8bit": AdamW 8-bit (yêu cầu bitsandbytes) XemOptimizerNamesđể biết danh sách đầy đủ.
- optim_args (
str, tùy chọn) — Các đối số tùy chọn được cung cấp cho các bộ tối ưu hóa như AnyPrecisionAdamW, AdEMAMix và GaLore. - weight_decay (
float, tùy chọn, mặc định là 0) — Hệ số suy giảm trọng số được áp dụng bởi bộ tối ưu (không phải hàm mất mát). Thêm quy tắc hóa L2 để ngăn chặn quá khớp bằng cách phạt các trọng số lớn. Tự động loại trừ khỏi các tham số bias và LayerNorm. Các giá trị điển hình: 0.01 (chuẩn), 0.1 (quy tắc hóa mạnh hơn), 0.0 (không quy tắc hóa). - adam_beta1 (
float, tùy chọn, mặc định là 0.9) — Tốc độ suy giảm mũ cho các ước lượng moment thứ nhất (momentum) trong các optimizer dựa trên Adam. Kiểm soát mức độ lịch sử gradient được giữ lại. - adam_beta2 (
float, tùy chọn, mặc định là 0.999) — Tốc độ suy giảm mũ cho các ước lượng mô-men thứ hai (phương sai) trong các bộ tối ưu hóa dựa trên Adam. Kiểm soát việc điều chỉnh tỷ lệ học thích ứng. - adam_epsilon (
float, tùy chọn, mặc định là 1e-8) — Giá trị epsilon cho sự ổn định số trong các bộ tối ưu hóa dựa trên Adam. Ngăn chặn việc chia cho số 0 ở mẫu số của quy tắc cập nhật. - optim_target_modules (
Union[str, list[str]], tùy chọn) — Các module đích cần tối ưu hóa, tức là tên các module mà bạn muốn huấn luyện. Hiện được sử dụng cho thuật toán GaLore và thuật toán APOLLO. Xem cài đặt GaLore và cài đặt APOLLO để biết thêm chi tiết. Bạn cần đảm bảo truyền một optimizer GaLore hoặc APOLLO hợp lệ, ví dụ một trong các lựa chọn: “apollo_adamw”, “galore_adamw”, “galore_adamw_8bit”, “galore_adafactor” và đảm bảo rằng các module đích chỉ là các modulenn.Linear.
Điều hòa & Ổn định huấn luyện
- gradient_accumulation_steps (
int, tuỳ chọn, mặc định là 1) — Số bước cập nhật để tích lũy gradient trước khi thực hiện một lượt backward/update. Mô phỏng kích thước batch lớn hơn mà không cần thêm bộ nhớ. Kích thước batch hiệu dụng =per_device_train_batch_size × num_devices × gradient_accumulation_steps.Khi sử dụng gradient accumulation, một “step” được tính là một bước có backward pass. Do đó, việc ghi log, đánh giá và lưu sẽ diễn ra mỗi
gradient_accumulation_steps × xxx_stepví dụ huấn luyện. - average_tokens_across_devices (
bool, tùy chọn, mặc định làTrue) — Có trung bình hóa token giữa các thiết bị hay không. Nếu bật, sẽ sử dụng all_reduce để đồng bộ hóa num_tokens_in_batch nhằm tính toán loss chính xác. Tham khảo: https://github.com/huggingface/transformers/issues/34242 - max_grad_norm (
float, tùy chọn, mặc định là 1.0) — Chuẩn gradient tối đa cho việc cắt gradient. Được áp dụng sau bước truyền ngược, trước bước tối ưu hóa. Ngăn chặn hiện tượng bùng nổ gradient bằng cách thu nhỏ gradient khi chuẩn toàn cục của chúng vượt quá ngưỡng này. Đặt thành 0 để tắt việc cắt. Các giá trị điển hình: 1.0 (chuẩn), 0.5 (thận trọng hơn), 5.0 (ít quyết liệt hơn). - label_smoothing_factor (
float, tùy chọn, mặc định là 0.0) — Hệ số làm mịn nhãn để ngăn ngừa sự tự tin quá mức. Thay thế các mục tiêu cứng 0/1 bằng các mục tiêu mềm: 0 trở thànhε/num_labelsvà 1 trở thành1 - ε + ε/num_labels, trong đó ε =label_smoothing_factor. Giá trị 0 có nghĩa là không làm mịn. Khoảng điển hình: từ 0.0 đến 0.1.
Huấn luyện độ chính xác hỗn hợp
- bf16 (
bool, tùy chọn, mặc định làFalse) — Bật huấn luyện độ chính xác hỗn hợp bfloat16 (BF16) Thường được ưu tiên hơn FP16 do có độ ổn định số tốt hơn và không cần bù trừ độ mất mát (loss scaling). - fp16 (
bool, tùy chọn, mặc định làFalse) — Bật huấn luyện độ chính xác hỗn hợp float16 (FP16). Hãy cân nhắc sử dụng BF16 thay thế nếu phần cứng của bạn hỗ trợ. - bf16_full_eval (
bool, tuỳ chọn, mặc định làFalse) — Sử dụng độ chính xác BF16 đầy đủ cho đánh giá (không chỉ độ chính xác hỗn hợp). Nhanh hơn và tiết kiệm bộ nhớ nhưng có thể ảnh hưởng nhẹ đến giá trị các chỉ số. Chỉ áp dụng trong quá trình đánh giá. - fp16_full_eval (
bool, tùy chọn, mặc định làFalse) — Sử dụng độ chính xác FP16 đầy đủ cho đánh giá (không chỉ là độ chính xác hỗn hợp). Nhanh hơn và tiết kiệm bộ nhớ nhưng có thể ảnh hưởng nhẹ đến giá trị các chỉ số. Chỉ áp dụng trong quá trình đánh giá. - tf32 (
bool, tùy chọn) — Bật chế độ TensorFloat-32 (TF32) trên các GPU Ampere và mới hơn. TF32 sử dụng độ chính xác 19-bit cho các phép nhân ma trận (thay vì 23-bit của FP32), mang lại tốc độ tăng lên đến 8 lần với sự suy giảm độ chính xác không đáng kể. Giá trị mặc định phụ thuộc vào phiên bản PyTorch. Xem tài liệu TF32.
Kiểm tra kích hoạt
- activation_checkpointing (
bool, tùy chọn, mặc định làFalse) — Bật activation checkpointing để đánh đổi hiệu suất tính toán lấy bộ nhớ. Giảm mức sử dụng bộ nhớ bằng cách xóa các activation trong quá trình forward và tính lại chúng trong quá trình backward. Cho phép huấn luyện các mô hình hoặc kích thước batch lớn hơn với chi phí là tốc độ huấn luyện chậm hơn khoảng 20%. - activation_checkpointing_kwargs (
dict, tùy chọn, mặc định làNone) — Các đối số dạng từ khóa được truyền choactivation_checkpointing_enable().every_n_layerschỉ checkpoint mỗi n lớp decoder thay vì tất cả;1là hành vi tất cả hoặc không thông thường, và các giá trị lớn hơn trao đổi một phần bộ nhớ lấy tốc độ.offloadgiữ các activation đã lưu trong bộ nhớ host dạng pinned, giúp giải phónglayers x sequence x hiddenbyte bộ nhớ thiết bị nhưng làm chậm bước tính toán. Bất kỳ khóa nào khác đều được chuyển tiếp đếntorch.utils.checkpoint.checkpoint. - gradient_checkpointing (
bool, tùy chọn) — Biệt danh đã ngừng hỗ trợ củaactivation_checkpointing, sẽ bị loại bỏ trong v6. - gradient_checkpointing_kwargs (
dict, tùy chọn) — Biệt danh đã ngừng hỗ trợ củaactivation_checkpointing_kwargs, sẽ bị loại bỏ trong v6.
Biên dịch
- torch_compile (
bool, tùy chọn, mặc định làFalse) — Biên dịch mô hình bằngtorch.compile()của PyTorch 2.0 để huấn luyện nhanh hơn. Có thể tăng tốc độ 20-50% mà không cần thay đổi mã. Sử dụng cài đặt biên dịch mặc định trừ khi chỉ địnhtorch_compile_backendhoặctorch_compile_mode. - torch_compile_backend (
str, tuỳ chọn) — Backend chotorch.compile(). Nếu được đặt, sẽ tự động bậttorch_compile. Các lựa chọn bao gồm"inductor"(mặc định),"aot_eager","cudagraphs". Các backend khác nhau tùy theo phiên bản PyTorch - xem tài liệu PyTorch để biết các tùy chọn khả dụng. - torch_compile_mode (
str, tùy chọn) — Chế độ biên dịch chotorch.compile(). Nếu được đặt, sẽ tự động bậttorch_compile. Các tùy chọn:"default","reduce-overhead"(giảm thiểu overhead của Python),"max-autotune"(tối ưu hóa mạnh mẽ, thời gian biên dịch chậm hơn).
Kernels
- use_liger_kernel (
bool, tùy chọn, mặc định làFalse) — Bật các tối ưu hóa Liger Kernel. Tăng thông lượng đa GPU khoảng 20% và giảm mức sử dụng bộ nhớ khoảng 60%. Hoạt động với Flash Attention, FSDP và DeepSpeed. Hiện hỗ trợ các mô hình Llama, Mistral, Mixtral và Gemma. - liger_kernel_config (
Optional[dict], tùy chọn) — Cấu hình cho Liger Kernel. Được truyền dưới dạng kwargs cho_apply_liger_kernel_to_instance(). Các tùy chọn thường bao gồm:"rope","swiglu","cross_entropy","fused_linear_cross_entropy","rms_norm". Nếu làNone, sẽ sử dụng cấu hình mặc định.
Tối ưu hóa bổ sung
- use_cache (
bool, tùy chọn, mặc định làFalse) — Có bật bộ nhớ đệm cho mô hình hay không. Đối với huấn luyện, điều này thường không cần thiết, ngoại trừ một số phương pháp PEFT sử dụngpast_key_values. - neftune_noise_alpha (
Optional[float]) — Nếu không phảiNone, tham số này sẽ kích hoạt nhúng nhiễu NEFTune. Điều này có thể cải thiện đáng kể hiệu suất của mô hình trong quá trình tinh chỉnh theo hướng dẫn. Xem bài báo gốc và mã nguồn gốc. Hỗ trợPreTrainedModelcủa transformers và cảPeftModeltừ peft. Bài báo gốc sử dụng các giá trị trong khoảng [5.0, 15.0]. - torch_empty_cache_steps (
int, tùy chọn) — Số bước cần chờ trước khi gọitorch.<device>.empty_cache(). Nếu không được đặt hoặc được đặt thành None, bộ nhớ đệm sẽ không được làm trống. Điều này có thể giúp tránh các lỗi hết bộ nhớ CUDA bằng cách giảm mức sử dụng VRAM cao nhất, với chi phí là hiệu suất chậm hơn khoảng 10%. - auto_find_batch_size (
bool, tùy chọn, mặc định làFalse) — Có nên tự động tìm kích thước lô (batch size) huấn luyện phù hợp với bộ nhớ thông qua suy giảm mũ, tránh các lỗi CUDA Out-of-Memory hay không. Kích thước lô đánh giá sẽ không được điều chỉnh.
Ghi log & Giám sát huấn luyện
- logging_strategy (
strhoặc IntervalStrategy, tùy chọn, mặc định là"steps") — Chiến lược ghi log cần áp dụng trong quá trình huấn luyện. Các giá trị có thể là:"no": Không ghi nhật ký trong quá trình huấn luyện."epoch": Việc ghi log được thực hiện vào cuối mỗi epoch."steps": Việc ghi log được thực hiện mỗilogging_steps.
- logging_steps (
inthoặcfloat, tùy chọn, mặc định là 500) — Số bước cập nhật giữa hai lần ghi log nếulogging_strategy="steps". Phải là một số nguyên hoặc một số thực trong khoảng[0,1). Nếu nhỏ hơn 1, sẽ được hiểu là tỷ lệ so với tổng số bước huấn luyện. - logging_first_step (
bool, tùy chọn, mặc định làFalse) — Có ghi log bướcglobal_stepđầu tiên hay không. - log_on_each_node (
bool, tùy chọn, mặc định làTrue) — Trong huấn luyện phân tán đa nút, có nên ghi log bằnglog_levelmột lần cho mỗi nút hay chỉ trên nút chính. - logging_nan_inf_filter (
bool, tùy chọn, mặc định làTrue) — Lọc các giá trị loss NaN và Inf khi ghi log. NếuTrue, sẽ thay thế các loss huấn luyện NaN/Inf bằng trung bình của các loss hợp lệ gần nhất, và loại trừ các batch NaN/Inf (ví dụ: các batch không có token nhãn) khỏi loss đánh giá. Không ảnh hưởng đến việc tính toán gradient, chỉ ảnh hưởng đến ghi log. - include_num_input_tokens_seen (
Optional[Union[str, bool]], tùy chọn, mặc định là “no”) — Có theo dõi số lượng token đầu vào đã nhìn thấy hay không. Phải là một trong [“all”, “non_padding”, “no”] hoặc một giá trị boolean, tương ứng với “all” hoặc “no”. Có thể chậm hơn trong huấn luyện phân tán vì phải gọi các thao tác gather.
Ghi nhật ký
- log_level (
str, tùy chọn, mặc định làpassive) — Mức độ ghi log cho tiến trình chính. Các tùy chọn:"debug","info","warning","error","critical", hoặc"passive"(không thay đổi mức độ ghi log hiện tại của Transformers, mặc định là"warning") - log_level_replica (
str, tùy chọn, mặc định là"warning") — Mức ghi log cho các tiến trình bản sao trong huấn luyện phân tán. Các tùy chọn giống vớilog_level. - disable_tqdm (
bool, tùy chọn) — Tắt các thanh tiến trình tqdm. Mặc định làTruenếulog_levellà warning hoặc thấp hơn,Falsetrong các trường hợp khác.
Tích hợp theo dõi thí nghiệm
- report_to (
strhoặclist[str], tùy chọn, mặc định là"none") — Danh sách các tích hợp để báo cáo kết quả và nhật ký. Các nền tảng được hỗ trợ là"azure_ml","clearml","codecarbon","comet_ml","dagshub","dvclive","flyte","mlflow","swanlab","tensorboard","trackio"và"wandb". Sử dụng"all"để báo cáo cho tất cả các tích hợp đã cài đặt,"none"để không sử dụng tích hợp nào. - run_name (
str, tùy chọn) — Mô tả cho lần chạy. Thường được sử dụng cho ghi log trackio, wandb, mlflow, comet và swanlab. - project (
str, tùy chọn, mặc định là"huggingface") — Tên của dự án được sử dụng cho việc ghi log. Hiện tại, chỉ được sử dụng bởi Trackio. - trackio_space_id (
strhoặcNone, tùy chọn, mặc định làNone) — ID của Hugging Face Space được sử dụng để ghi log Trackio trực tiếp với một Space dựa trên Gradio. Nên là tên Space đầy đủ như'username/reponame'hoặc'orgname/reponame', hoặc chỉ cần'reponame'(Space sẽ được tạo trong namespace của người dùng đang đăng nhập). Nếu làNone, các chỉ số sẽ chỉ được ghi vào một thư mục cục bộ (không có Space trên Hub). Gradio Space đó có quyền đọc và ghi vào Bucket của Trackio, đây là điều bạn cần khi quá trình huấn luyện đang diễn ra—ví dụ khi tiếp tục một lần chạy chưa hoàn tất hoặc tổng hợp log từ nhiều máy. Space sẽ là công khai trừ khi bạn đặthub_private_repo=Truehoặc mặc định của tổ chức bạn là tạo các Space riêng tư. - trackio_bucket_id (
strhoặcNone, tùy chọn, mặc định làNone) — Bucket id tùy chọn của Hugging Face cho Trackio. Nếu không được đặt, Trackio sẽ tự suy ra một id. Được sử dụng cùng với một Gradio Space (trackio_space_id) và khi triển khai một Space tĩnh (trackio_static_space_idkhông phải làFalse). - trackio_static_space_id (
str,False, hoặcNone, tùy chọn, mặc định làNone) — ID của Hugging Face Space sẽ được sử dụng cho static Space được tạo sau khi quá trình huấn luyện hoàn tất. Phải là tên Space đầy đủ như'username/reponame'hoặc'orgname/reponame', hoặc chỉ là'reponame'(Space sẽ được tạo trong namespace của người dùng đang đăng nhập). Nếu là False, sẽ không tạo static Space. Nếu là None và model được đẩy lên Hub, một static Space sẽ được tạo với tên mặc định và liên kết này sẽ được thêm vào model card. Space sẽ là công khai trừ khi bạn đặthub_private_repo=Truehoặc mặc định của tổ chức bạn là tạo các Space riêng tư.
Đánh giá
- eval_strategy (
strhoặc IntervalStrategy, tùy chọn, mặc định là"no") — Thời điểm chạy đánh giá. Các tùy chọn:"no": Không đánh giá trong quá trình huấn luyện"steps": Đánh giá mỗieval_steps"epoch": Đánh giá vào cuối mỗi epoch
- eval_steps (
inthoặcfloat, tùy chọn) — Số bước cập nhật giữa hai lần đánh giá nếueval_strategy="steps". Nếu không được đặt, giá trị mặc định sẽ giống vớilogging_steps. Phải là một số nguyên hoặc số thực trong khoảng[0,1). Nếu nhỏ hơn 1, sẽ được hiểu là tỷ lệ so với tổng số bước huấn luyện. - eval_delay (
float, tùy chọn) — Số epoch hoặc bước cần chờ trước khi có thể thực hiện lần đánh giá đầu tiên, tùy thuộc vào eval_strategy. - per_device_eval_batch_size (
int, tùy chọn, mặc định là 8) — Kích thước lô trên mỗi lõi bộ tăng tốc/CPU của thiết bị để đánh giá. - prediction_loss_only (
bool, tùy chọn, mặc định làFalse) — Khi thực hiện đánh giá và tạo dự đoán, chỉ trả về loss. - eval_on_start (
bool, tùy chọn, mặc định làFalse) — Có thực hiện một bước đánh giá (kiểm tra tính hợp lệ) trước khi huấn luyện hay không, để đảm bảo các bước xác thực hoạt động chính xác. - eval_do_concat_batches (
bool, tùy chọn, mặc định làTrue) — Có nên nối đệ quy các inputs/losses/labels/predictions giữa các batch hay không. NếuFalse, thay vào đó sẽ lưu chúng dưới dạng các danh sách, với mỗi batch được giữ riêng biệt. - eval_use_gather_object (
bool, tùy chọn, mặc định làFalse) — Có nên chạy gather object đệ quy trên một danh sách/bộ/bộ từ điển lồng nhau các đối tượng từ tất cả các thiết bị hay không. Chỉ nên bật tính năng này nếu người dùng không chỉ trả về các tensor, và điều này đang bị PyTorch khuyến cáo không nên làm. Điều này hữu ích khi cấu trúc nhãn không theo chuẩn, như trong các tác vụ thị giác máy tính. - eval_accumulation_steps (
int, tùy chọn) — Số bước dự đoán để tích lũy các tensor đầu ra trước khi chuyển kết quả sang CPU. Nếu không được đặt, toàn bộ các dự đoán sẽ được tích lũy trên bộ tăng tốc thiết bị trước khi được chuyển sang CPU (nhanh hơn nhưng yêu cầu nhiều bộ nhớ hơn).
Tính toán chỉ số
- include_for_metrics (
list[str], tùy chọn, mặc định là[]) — Bao gồm thêm dữ liệu trong hàmcompute_metricsnếu cần cho việc tính toán metrics. Các tùy chọn có thể thêm vàoinclude_for_metricsdanh sách:"inputs": Dữ liệu đầu vào được truyền vào mô hình, dùng để tính toán các chỉ số phụ thuộc vào đầu vào."loss": Các giá trị loss được tính trong quá trình đánh giá, dùng để tính các chỉ số phụ thuộc vào loss.
- batch_eval_metrics (
bool, tùy chọn, mặc định làFalse) — Nếu đặt thànhTrue, quá trình đánh giá sẽ gọi compute_metrics ở cuối mỗi batch để tích lũy thống kê thay vì lưu tất cả eval logits trong bộ nhớ. Khi đặt thànhTrue, bạn phải truyền một hàm compute_metrics nhận một đối số booleancompute_result, khi được truyềnTrue, sẽ kích hoạt các thống kê tổng hợp toàn cục cuối cùng từ các thống kê tổng hợp cấp batch mà bạn đã tích lũy trên tập đánh giá.
Checkpointing & Saving
- save_only_model (
bool, tùy chọn, mặc định làFalse) — Chỉ lưu trọng số mô hình, không lưu trạng thái optimizer/scheduler/RNG. Điều này giảm đáng kể kích thước checkpoint nhưng ngăn việc tiếp tục huấn luyện từ checkpoint. Sử dụng khi bạn chỉ cần mô hình đã huấn luyện để suy luận, không cần tiếp tục huấn luyện. Bạn chỉ có thể tải mô hình bằngfrom_pretrainedkhi tùy chọn này được đặt thànhTrue. - save_strategy (
strhoặcSaveStrategy, tuỳ chọn, mặc định là"steps") — Chiến lược lưu checkpoint áp dụng trong quá trình huấn luyện. Các giá trị có thể là:"no": Không thực hiện lưu trong quá trình huấn luyện."epoch": Việc lưu được thực hiện vào cuối mỗi epoch."steps": Việc lưu được thực hiện mỗisave_steps."best": Việc lưu được thực hiện mỗi khi đạt được mộtbest_metricmới.
- save_steps (
inthoặcfloat, tùy chọn, mặc định là 500) — Số bước cập nhật trước khi lưu hai checkpoint nếusave_strategy="steps". Phải là một số nguyên hoặc một số thực trong khoảng[0,1). Nếu nhỏ hơn 1, sẽ được hiểu là tỷ lệ so với tổng số bước huấn luyện. - save_on_each_node (
bool, tùy chọn, mặc định làFalse) — Khi thực hiện huấn luyện phân tán đa nút, có nên lưu mô hình và checkpoint trên mỗi nút hay chỉ trên nút chính. Không nên kích hoạt tùy chọn này khi các nút khác nhau sử dụng cùng một bộ lưu trữ, vì các tệp sẽ được lưu với cùng tên trên mỗi nút. - save_total_limit (
int, tùy chọn) — Số lượng checkpoint tối đa được giữ lại. Các checkpoint cũ hơn trongoutput_dirsẽ bị xóa. Khiload_best_model_at_end=True, checkpoint tốt nhất luôn được giữ lại cùng với các checkpoint mới nhất. Ví dụ,save_total_limit=5sẽ giữ lại 4 checkpoint mới nhất cùng với checkpoint tốt nhất - enable_jit_checkpoint (
bool, tuỳ chọn, mặc định làFalse) — Bật checkpoint Just-In-Time khi nhận tín hiệu SIGTERM để kết thúc một cách êm dịu trên các tác vụ có thể bị thu hồi. Quan trọng: Hãy cấu hình thời gian tắt máy êm dịu của trình điều phối để dành đủ thời gian. Với Kubernetes, hãy đặtterminationGracePeriodSeconds(mặc định 30s thường không đủ). Với Slurm, hãy dùng--signal=TERM@<seconds>. Thời gian ân hạn yêu cầu ≥ thời gian lặp dài nhất + thời gian lưu checkpoint.
Tích hợp Hugging Face Hub
- push_to_hub (
bool, tùy chọn, mặc định làFalse) — Có đẩy mô hình lên Hub mỗi khi mô hình được lưu hay không. Nếu được kích hoạt,output_dirsẽ bắt đầu một thư mục git được đồng bộ với kho (được xác định bởihub_model_id) và nội dung sẽ được đẩy mỗi khi một thao tác lưu được kích hoạt (tùy thuộc vàosave_strategycủa bạn). Việc gọi save_model() cũng sẽ kích hoạt một lần đẩy. - hub_token (
str, tùy chọn) — Token được sử dụng để đẩy mô hình lên Hub. Mặc định sẽ dùng token trong thư mục cache được lấy bằnghf auth login. - hub_private_repo (
bool, tùy chọn) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. Nếu báo cáo lên Trackio với triển khai đến Hugging Face Spaces được bật, cùng một logic sẽ xác định xem Space có ở chế độ riêng tư hay không. - hub_model_id (
str, tùy chọn) — Tên của kho cần đồng bộ với output_dir cục bộ. Nó có thể là một ID mô hình đơn giản, trong trường hợp đó mô hình sẽ được đẩy vào namespace của bạn. Ngược lại, nó phải là tên kho đầy đủ, ví dụ"user_name/model", cho phép bạn đẩy vào một tổ chức mà bạn là thành viên bằng"organization_name/model". Mặc định sẽ làuser_name/output_dir_namevới output_dir_name là tên củaoutput_dir. - hub_strategy (
strhoặcHubStrategy, tuỳ chọn, mặc định là"every_save") — Xác định nội dung và thời điểm đẩy lên Hub. Các tùy chọn:"end": Chỉ đẩy ở cuối quá trình huấn luyện"every_save": Push ở mỗi lần lưu (bất đồng bộ để không chặn quá trình huấn luyện)"checkpoint": Giống như"every_save"nhưng có thêm việc đẩy checkpoint mới nhất vào thư mục con"last-checkpoint"để dễ dàng tiếp tục"all_checkpoints": Đẩy tất cả các checkpoint khi chúng xuất hiện
- hub_always_push (
bool, tùy chọn, mặc định làFalse) — Trừ khi giá trị này làTrue,Trainersẽ bỏ qua việc đẩy checkpoint khi lần đẩy trước đó chưa hoàn tất. - hub_revision (
str, tùy chọn) — Phiên bản (revision) được sử dụng khi đẩy lên Hub. Có thể là tên nhánh, thẻ (tag) hoặc hash của commit.
Theo dõi mô hình tốt nhất
- load_best_model_at_end (
bool, tùy chọn, mặc định làFalse) — Tải checkpoint tốt nhất vào cuối quá trình huấn luyện. Yêu cầueval_strategyphải được thiết lập. Khi được bật, checkpoint tốt nhất luôn được lưu (xemsave_total_limit).Khi `True`, `save_strategy` phải khớp với `eval_strategy` (trừ khi `save_strategy` là `"best"`), và nếu sử dụng `"steps"`, `save_steps` phải là bội số của `eval_steps`. - metric_for_best_model (
str, tùy chọn) — Chỉ số được sử dụng để so sánh các mô hình khiload_best_model_at_end=True. Phải là tên chỉ số được trả về bởi quá trình đánh giá, có hoặc không có tiền tố"eval_". Mặc định là"loss". Nếu bạn đặt giá trị này,greater_is_bettersẽ mặc định làTruetrừ khi tên kết thúc bằng"loss". Ví dụ:"accuracy","f1","eval_bleu". - greater_is_better (
bool, tùy chọn) — Liệu giá trị chỉ số cao hơn có tốt hơn không. Mặc định dựa trênmetric_for_best_model:Truenếu tên chỉ số không kết thúc bằng"loss",Falsetrong trường hợp còn lại.
Tiếp tục huấn luyện
- ignore_data_skip (
bool, tùy chọn, mặc định làFalse) — Khi tiếp tục huấn luyện, bỏ qua việc tua nhanh qua tập dữ liệu để đạt đến trạng thái trước đó. NếuTrue, quá trình huấn luyện sẽ bắt đầu từ đầu tập dữ liệu (tiếp tục nhanh hơn nhưng kết quả sẽ không khớp với phiên huấn luyện bị gián đoạn). NếuFalse, sẽ bỏ qua các dữ liệu đã xem (tiếp tục chậm hơn nhưng tiếp tục chính xác). - restore_callback_states_from_checkpoint (
bool, tùy chọn, mặc định làFalse) — Khôi phục trạng thái callback từ checkpoint khi tiếp tục huấn luyện. NếuTrue, sẽ ghi đè lên các callback được truyền vào Trainer nếu chúng tồn tại trong checkpoint.
Tính tái lập
- full_determinism (
bool, tùy chọn, mặc định làFalse) — NếuTrue, enable_full_determinism() sẽ được gọi thay vì set_seed() để đảm bảo kết quả có thể tái lập trong huấn luyện phân tán. Lưu ý: điều này sẽ ảnh hưởng tiêu cực đến hiệu suất, vì vậy chỉ nên sử dụng để gỡ lỗi. - seed (
int, tùy chọn, mặc định là 42) — Hạt ngẫu nhiên sẽ được đặt ở đầu quá trình huấn luyện. Để đảm bảo khả năng tái lập giữa các lần chạy, hãy sử dụng hàm~Trainer.model_initđể khởi tạo mô hình nếu nó có một số tham số được khởi tạo ngẫu nhiên. - data_seed (
int, tùy chọn) — Hạt ngẫu nhiên (random seed) được sử dụng với các trình lấy mẫu dữ liệu (data samplers). Nếu không được đặt, các trình tạo ngẫu nhiên cho việc lấy mẫu dữ liệu sẽ sử dụng cùng hạt vớiseed. Điều này có thể được sử dụng để đảm bảo khả năng tái lập của việc lấy mẫu dữ liệu, độc lập với hạt của mô hình.
Cấu hình phần cứng
- use_cpu (
bool, tùy chọn, mặc định làFalse) — Có sử dụng cpu hay không. Nếu đặt thành False, chúng tôi sẽ sử dụng thiết bị/backend torch khả dụng.
Cấu hình Accelerate
- accelerator_config (
str,dict, hoặcAcceleratorConfig, tùy chọn) — Cấu hình cho tích hợp Accelerate bên trong. Có thể là:- Đường dẫn đến tệp cấu hình JSON:
"accelerator_config.json" - Từ điển với các tùy chọn cấu hình
AcceleratorConfiginstance Các tùy chọn chính:split_batches(bool, mặc định làFalse): Có nên chia các batch giữa các thiết bị hay không. NếuTrue, kích thước batch thực tế sẽ giống nhau trên tất cả các thiết bị (tổng số phải chia hết cho num_processes). NếuFalse, mỗi thiết bị sẽ nhận kích thước batch được chỉ định.dispatch_batches(bool): NếuTrue, chỉ tiến trình chính sẽ lặp qua dataloader và phân phối các batch đến các thiết bị. Mặc định làTruechoIterableDataset,Falsetrong các trường hợp khác.even_batches(bool, mặc định làTrue): Nhân bản các mẫu từ đầu bộ dữ liệu để đảm bảo tất cả các worker nhận được kích thước batch bằng nhau.use_seedable_sampler(bool, mặc định làTrue): Sử dụng trình lấy mẫu ngẫu nhiên có thể đặt hạt giống hoàn toàn để đảm bảo khả năng tái lập.use_configured_state(bool, mặc định làFalse): Sử dụngAcceleratorState/PartialStateđã được khởi tạo sẵn thay vì tạo mới. Có thể gây ra các vấn đề khi tinh chỉnh siêu tham số.
- Đường dẫn đến tệp cấu hình JSON:
- parallelism_config (
ParallelismConfig, tùy chọn) — Cấu hình song song cho phiên huấn luyện. Yêu cầu Accelerate1.10.1
Dataloader
- dataloader_drop_last (
bool, tùy chọn, mặc định làFalse) — Có nên loại bỏ batch cuối cùng không hoàn chỉnh (nếu độ dài của tập dữ liệu không chia hết cho kích thước batch) hay không. - dataloader_num_workers (
int, tùy chọn, mặc định là 0) — Số lượng tiến trình con được sử dụng để nạp dữ liệu (chỉ dành cho PyTorch). Giá trị 0 có nghĩa là dữ liệu sẽ được nạp trong tiến trình chính. - dataloader_pin_memory (
bool, tùy chọn, mặc định làTrue) — Liệu bạn có muốn ghim bộ nhớ trong các trình tải dữ liệu hay không. Giá trị mặc định sẽ làTrue. - dataloader_persistent_workers (
bool, tùy chọn, mặc định làFalse) — Nếu là True, trình tải dữ liệu sẽ không tắt các tiến trình worker sau khi một tập dữ liệu đã được tiêu thụ một lần. Điều này cho phép giữ các phiên bản Dataset của worker ở trạng thái hoạt động. Có thể tăng tốc độ huấn luyện, nhưng sẽ làm tăng mức sử dụng RAM. Mặc định sẽ làFalse. - dataloader_prefetch_factor (
int, tùy chọn) — Số lượng batch được tải trước bởi mỗi worker. 2 nghĩa là tổng cộng sẽ có 2 * num_workers batch được tải trước trên tất cả các worker. - dataloader_multiprocessing_context (
str, tuỳ chọn) — Phương thức khởi tạo multiprocessing được sử dụng cho các worker tải dữ liệu ("fork","spawn"hoặc"forkserver"). Mặc định là phương thức khởi tạo mặc định của PyTorch, ngoại trừ trên MPS vớidataloader_num_workers > 1, khi đó mặc định là"fork". Hãy dùng"spawn"khi stream từ các nguồn mà các đối tượng của chúng không an toàn khi fork (ví dụ HDFS quapyarrow). Khi dùng"spawn", bất kỳcollate_fntùy chỉnh hoặc mã dataset nào cũng phải có thể import được ở cấp module (không dùng lambda/closure). - dataloader_in_order (
bool, tùy chọn, mặc định làTrue) — NếuTrue, trình tải dữ liệu sẽ trả về các lô theo thứ tự các worker được khởi tạo. Đặt thànhFalseđể trả về các lô ngay khi chúng sẵn sàng, điều này có thể giảm độ trễ cuối cho các tác vụ truyền trực tiếpIterableDataset. Yêu cầu PyTorch >= 2.6. - remove_unused_columns (
bool, tùy chọn, mặc định làTrue) — Có tự động xóa các cột không được sử dụng bởi phương thức forward của mô hình hay không. - label_names (
list[str], tùy chọn) — Danh sách các khóa trong từ điển đầu vào của bạn tương ứng với nhãn. Cuối cùng sẽ mặc định là danh sách các tên tham số được mô hình chấp nhận mà chứa từ “label”, trừ khi mô hình được sử dụng là một trong cácXxxForQuestionAnswering, trong trường hợp đó nó cũng sẽ bao gồm các khóa["start_positions", "end_positions"]. Bạn chỉ nên chỉ địnhlabel_namesnếu bạn đang sử dụng tên nhãn tùy chỉnh hoặc nếuforwardcủa mô hình của bạn tiêu thụ nhiều tensor nhãn (ví dụ: extractive QA). - train_sampling_strategy (
str, tuỳ chọn, mặc định là"random") — Bộ lấy mẫu (sampler) được sử dụng cho dataloader huấn luyện. Các giá trị có thể là:"random": Sử dụngRandomSampler(mặc định)."sequential": Sử dụngSequentialSampler."group_by_length": Sử dụngLengthGroupedSamplerđể nhóm các mẫu có độ dài xấp xỉ bằng nhau lại với nhau (nhằm giảm thiểu padding và tăng hiệu quả)."batch_rebalance": Sử dụngBatchRebalanceSamplerđể cân bằng chi phí token đệm giữa các thiết bị và các bước tích lũy gradient trong mỗi batch hiệu dụng, giảm thiểu lãng phí do đệm và bộ nhớ đỉnh so với"group_by_length". Hiện tại chỉ hỗ trợ huấn luyện song song dữ liệu (chưa hỗ trợ song song tensor).
Lưu ý: Khi sử dụng
IterableDataset, đối số này sẽ bị bỏ qua. - length_column_name (
str, tùy chọn, mặc định là"length") — Tên cột cho các độ dài đã tính trước. Nếu cột tồn tại, việc nhóm theo độ dài sẽ sử dụng các giá trị này thay vì tính toán chúng khi khởi động huấn luyện. Bỏ qua trừ khitrain_sampling_strategylà"group_by_length"hoặc"batch_rebalance"và tập dữ liệu là một instance củaDataset.
DDP (DistributedDataParallel)
- ddp_find_unused_parameters (
bool, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờfind_unused_parametersđược truyền choDistributedDataParallel. Mặc định sẽ làFalsenếu sử dụng gradient checkpointing, ngược lại làTrue. - ddp_bucket_cap_mb (
int, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờbucket_cap_mbđược truyền choDistributedDataParallel. - ddp_broadcast_buffers (
bool, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờbroadcast_buffersđược truyền choDistributedDataParallel. Mặc định sẽ làFalsenếu sử dụng gradient checkpointing,Truetrong các trường hợp khác. - ddp_static_graph (
bool, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờstatic_graphđược truyền choDistributedDataParallel. - ddp_backend (
str, tùy chọn) — Backend để sử dụng cho huấn luyện phân tán. Phải là một trong"nccl","mpi","xccl","gloo","hccl". - ddp_timeout (
int, tùy chọn, mặc định là 1800) — Thời gian chờ cho các lệnh gọitorch.distributed.init_process_group, được sử dụng để tránh hết thời gian chờ socket GPU khi thực hiện các thao tác chậm trong các lần chạy phân tán. Vui lòng tham khảo tài liệu PyTorch để biết thêm thông tin.
FSDP (Fully Sharded Data Parallel)
- fsdp (
bool, tùy chọn, mặc định làNone) — Bật PyTorch Fully Sharded Data Parallel (FSDP) cho huấn luyện phân tán. TruyềnTrueđể bật FSDP. - fsdp_config (
strhoặcdict, tuỳ chọn) — Cấu hình cho khifsdpđược bật. Truyền đường dẫn đến tệp cấu hình JSON, chẳng hạn nhưfsdp_config.json, hoặc một dict đã được nạp sẵn.Các khóa được hỗ trợ:
- version (
int, tùy chọn, mặc định là2): Phiên bản FSDP cần sử dụng (2cho FSDP2,1cho FSDP1 cũ). - reshard_after_forward (
bool, tuỳ chọn, mặc định làTrue): Có nên reshard các tham số sau bước forward hay không. Đặt thànhFalseđể giữ các tham số ở trạng thái đã gather giữa các bước forward và backward, tránh việc thực hiện lại all-gather, và sử dụng bộ nhớ đỉnh cao hơn. - cpu_offload (
bool, tùy chọn, mặc định làFalse): Chuyển các tham số và gradient sang CPU khi không được sử dụng để tiết kiệm bộ nhớ GPU. - activation_checkpointing (
bool, tùy chọn, mặc định làFalse): Đặt thànhTrueđể giảm bộ nhớ bằng cách tính lại các activation trong bước truyền ngược. Khi sử dụng FSDP, hãy ưu tiên tham số này hơn đối số huấn luyệnactivation_checkpointing, vì đối số đó gây ra một all-gather thừa trong bước truyền ngược. - cpu_ram_efficient_loading (
bool, tùy chọn, mặc định làFalse): Đặt thànhTrueđể tải checkpoint được huấn luyện trước chỉ trên tiến trình đầu tiên. Các tiến trình khác bắt đầu với trọng số trống và nhận trọng số qua broadcast. - state_dict_type (
str, tùy chọn, mặc định là"FULL_STATE_DICT"): Định dạng checkpoint:"FULL_STATE_DICT"(một tệp tương thích với HF duy nhất) hoặc"SHARDED_STATE_DICT"(một tệp cho mỗi rank, nhanh hơn với các mô hình lớn). - auto_wrap_policy (
str, tùy chọn, mặc định là"TRANSFORMER_BASED_WRAP"): Chính sách auto-wrap cần sử dụng. Chọn"TRANSFORMER_BASED_WRAP","SIZE_BASED_WRAP"hoặc"NO_WRAP". - transformer_layer_cls_to_wrap (
list[str], optional): Tên lớp (phân biệt hoa thường) của các lớp Transformer cần bọc, ví dụLlamaDecoderLayer. Thông thường không cần thiết: chính sách bọc sẽ tự động dùng_no_split_modulescủa mô hình, vốn bao phủ hầu hết các mô hình transformers. - min_num_params (
int, tùy chọn, mặc định là0): Số lượng tham số tối thiểu cho mỗi module để tự động bọc dựa trên kích thước (được sử dụng vớiauto_wrap_policy="SIZE_BASED_WRAP"). - xla (
bool, tùy chọn, mặc định làFalse): Có sử dụng PyTorch/XLA Fully Sharded Data Parallel Training hay không. Tính năng thử nghiệm. - xla_fsdp_settings (
dict, tùy chọn): Từ điển các tham số bọc XLA FSDP. Để xem danh sách đầy đủ các tùy chọn, hãy xem mã nguồn XLA FSDP. - xla_fsdp_grad_ckpt (
bool, tùy chọn, mặc định làFalse): Đặt thànhTrueđể sử dụng gradient checkpointing trên mỗi lớp được bọc bởi XLA FSDP lồng nhau. Yêu cầuxla=Truevà một chính sách tự động bọc (min_num_paramshoặctransformer_layer_cls_to_wrap).
- version (
DeepSpeed
- deepspeed (
strhoặcdict, tuỳ chọn) — Bật DeepSpeed tích hợp. Giá trị là một trong các lựa chọn sau:- Đường dẫn đến tệp cấu hình JSON của DeepSpeed:
"ds_config.json" - Đã tải cấu hình dưới dạng từ điển
Nếu sử dụng khởi tạo ZeRO, hãy khởi tạo mô hình của bạn sau khi khởi tạo
TrainingArguments, nếu không ZeRO sẽ không được áp dụng.
- Đường dẫn đến tệp cấu hình JSON của DeepSpeed:
Gỡ lỗi & Phân tích hiệu năng (Thử nghiệm)
- debug (
strhoặc danh sáchDebugOption, tuỳ chọn, mặc định là"") — Bật một hoặc nhiều tính năng gỡ lỗi. Đây là tính năng thử nghiệm. Các tuỳ chọn khả dụng:- “underflow_overflow”: phát hiện tràn trong đầu vào/đầu ra của mô hình và báo cáo các khung cuối cùng dẫn đến sự kiện
- “tpu_metrics_debug”: in các chỉ số gỡ lỗi trên TPU
- skip_memory_metrics (
bool, tùy chọn, mặc định làTrue) — Có bỏ qua việc thêm báo cáo bộ nhớ của trình phân tích vào các chỉ số hay không. Mặc định là bỏ qua vì điều này làm chậm tốc độ huấn luyện và đánh giá.
Cờ kịch bản bên ngoài (không được Trainer sử dụng)
- do_train (
bool, tùy chọn, mặc định làFalse) — Có chạy huấn luyện hay không. Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để sử dụng trong các script huấn luyện/đánh giá của bạn. - do_eval (
bool, tùy chọn) — Có chạy đánh giá trên tập kiểm tra hay không. Sẽ được đặt thànhTruenếueval_strategykhác"no". Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để bạn sử dụng trong các script huấn luyện/đánh giá của mình. - do_predict (
bool, tùy chọn, mặc định làFalse) — Có chạy dự đoán trên tập kiểm tra hay không. Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để các script huấn luyện/đánh giá của bạn sử dụng. - resume_from_checkpoint (
str, tùy chọn) — Đường dẫn đến thư mục chứa checkpoint hợp lệ cho model của bạn. Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để các script huấn luyện/đánh giá của bạn sử dụng.
Lớp cấu hình để kiểm soát mọi khía cạnh của việc huấn luyện mô hình với Trainer. TrainingArguments tập trung tất cả các siêu tham số, cài đặt tối ưu hóa, tùy chọn ghi nhật ký và lựa chọn hạ tầng cần thiết cho việc huấn luyện.
HfArgumentParser có thể chuyển lớp này thành các đối số argparse có thể được chỉ định trên dòng lệnh.
Trả về cấp độ log cần sử dụng tùy thuộc vào việc tiến trình này là tiến trình chính của node 0, tiến trình chính của node khác 0, hay một tiến trình không chính.
Đối với tiến trình chính, mức ghi log mặc định là mức ghi log đã được thiết lập (logging.WARNING nếu bạn không làm gì) trừ khi bị ghi đè bởi đối số log_level.
Đối với các tiến trình bản sao, mức log mặc định là logging.WARNING trừ khi được ghi đè bởi đối số log_level_replica.
Việc lựa chọn giữa cấu hình tiến trình chính và tiến trình bản sao được thực hiện dựa trên giá trị trả về của should_log.
Lấy số bước được sử dụng cho quá trình làm nóng tuyến tính.
main_process_first
< source >( local = Truedesc = 'work' )
Tham số
- local (
bool, tuỳ chọn, mặc định làTrue) — nếuTruethì “first” có nghĩa là tiến trình rank 0 của mỗi node; nếuFalsethì “first” có nghĩa là tiến trình rank 0 của node rank 0. Trong môi trường đa node có hệ thống tệp dùng chung, bạn hầu như sẽ muốn dùnglocal=Falseđể chỉ tiến trình chính của node đầu tiên thực hiện xử lý. Tuy nhiên, nếu hệ thống tệp không dùng chung, thì tiến trình chính của mỗi node sẽ cần thực hiện xử lý, đây là hành vi mặc định. - desc (
str, tùy chọn, mặc định là"work") — mô tả công việc sẽ được sử dụng trong nhật ký gỡ lỗi
Một trình quản lý ngữ cảnh cho môi trường phân tán của torch, nơi cần thực hiện một số thao tác trên tiến trình chính trong khi chặn các bản sao, và khi hoàn tất thì giải phóng các bản sao đó.
Một ứng dụng như vậy là cho tính năng map của datasets, vốn nên được chạy một lần trên tiến trình chính để đạt hiệu quả, sau khi hoàn thành sẽ lưu một phiên bản kết quả được cache và sau đó được các bản sao tự động tải về.
set_dataloader
< source >( train_batch_size: int = 8eval_batch_size: int = 8drop_last: bool = Falsenum_workers: int = 0pin_memory: bool = Truepersistent_workers: bool = Falseprefetch_factor: int | None = Nonemultiprocessing_context: str | None = Nonein_order: bool = Trueauto_find_batch_size: bool = Falseignore_data_skip: bool = Falsesampler_seed: int | None = None )
Tham số
- drop_last (
bool, tùy chọn, mặc định làFalse) — Có nên loại bỏ batch cuối cùng không hoàn chỉnh (nếu độ dài của tập dữ liệu không chia hết cho kích thước batch) hay không. - num_workers (
int, tùy chọn, mặc định là 0) — Số lượng tiến trình con được sử dụng để nạp dữ liệu (chỉ dành cho PyTorch). Giá trị 0 có nghĩa là dữ liệu sẽ được nạp trong tiến trình chính. - pin_memory (
bool, tùy chọn, mặc định làTrue) — Xác định có ghim bộ nhớ trong các trình tải dữ liệu hay không. Mặc định làTrue. - persistent_workers (
bool, tùy chọn, mặc định làFalse) — Nếu là True, trình tải dữ liệu sẽ không tắt các tiến trình worker sau khi một tập dữ liệu đã được tiêu thụ một lần. Điều này cho phép giữ các phiên bản Dataset của worker ở trạng thái hoạt động. Có thể tăng tốc quá trình huấn luyện, nhưng sẽ làm tăng mức sử dụng RAM. Mặc định sẽ làFalse. - prefetch_factor (
int, tùy chọn) — Số lượng batch được tải trước bởi mỗi worker. 2 có nghĩa là tổng cộng sẽ có 2 * num_workers batch được tải trước trên tất cả các worker. - multiprocessing_context (
str, tuỳ chọn) — Phương thức khởi tạo multiprocessing được sử dụng cho các worker tải dữ liệu ("fork","spawn"hoặc"forkserver"). Mặc định là phương thức khởi tạo mặc định của PyTorch. Hãy dùng"spawn"khi stream từ các nguồn có các đối tượng không an toàn khi fork (ví dụ HDFS quapyarrow). Khi dùng"spawn", bất kỳcollate_fnhoặc mã dataset tùy chỉnh nào cũng phải có thể import được ở cấp module (không dùng lambda/closure). - in_order (
bool, tuỳ chọn, mặc định làTrue) — NếuTrue, data loader sẽ trả về các batch theo thứ tự các worker được khởi tạo. Đặt thànhFalseđể trả về các batch ngay khi chúng sẵn sàng, điều này có thể giảm độ trễ cuối cho các tác vụ streaming củaIterableDataset. Yêu cầu PyTorch >= 2.6. - auto_find_batch_size (
bool, tùy chọn, mặc định làFalse) — Có nên tự động tìm kích thước batch phù hợp với bộ nhớ thông qua suy giảm mũ, tránh các lỗi CUDA Out-of-Memory hay không. Yêu cầu phải cài đặt accelerate (pip install accelerate) - ignore_data_skip (
bool, tùy chọn, mặc định làFalse) — Khi tiếp tục huấn luyện, có bỏ qua các epoch và batch để đưa việc tải dữ liệu về cùng giai đoạn như trong lần huấn luyện trước hay không. Nếu đặt thànhTrue, quá trình huấn luyện sẽ bắt đầu nhanh hơn (vì bước bỏ qua này có thể mất rất nhiều thời gian) nhưng sẽ không cho ra kết quả giống như nếu quá trình huấn luyện bị gián đoạn đó được tiếp tục. - sampler_seed (
int, tùy chọn) — Hạt ngẫu nhiên (random seed) được sử dụng với các trình lấy mẫu dữ liệu (data samplers). Nếu không được đặt, các trình tạo ngẫu nhiên cho việc lấy mẫu dữ liệu sẽ sử dụng cùng hạt vớiself.seed. Điều này có thể được sử dụng để đảm bảo khả năng tái lập của việc lấy mẫu dữ liệu, độc lập với hạt của mô hình.
Một phương thức nhóm lại tất cả các đối số liên quan đến việc tạo các dataloader.
set_evaluate
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'no'steps: int = 500batch_size: int = 8accumulation_steps: int | None = Nonedelay: float | None = Noneloss_only: bool = False )
Tham số
- strategy (
strhoặc IntervalStrategy, tùy chọn, mặc định là"no") — Chiến lược đánh giá cần áp dụng trong quá trình huấn luyện. Các giá trị có thể là:"no": Không thực hiện đánh giá trong quá trình huấn luyện."steps": Việc đánh giá được thực hiện (và ghi log) mỗisteps."epoch": Việc đánh giá được thực hiện vào cuối mỗi epoch.
Việc đặt
strategykhác"no"sẽ đặtself.do_evalthànhTrue. - steps (
int, tùy chọn, mặc định là 500) — Số bước cập nhật giữa hai lần đánh giá nếustrategy="steps". - batch_size (
inttùy chọn, mặc định là 8) — Kích thước batch trên mỗi thiết bị (GPU/lõi TPU/CPU…) được sử dụng cho đánh giá. - accumulation_steps (
int, tùy chọn) — Số bước dự đoán để tích lũy các tensor đầu ra trước khi chuyển kết quả sang CPU. Nếu không được đặt, toàn bộ các dự đoán sẽ được tích lũy trên GPU/TPU trước khi được chuyển sang CPU (nhanh hơn nhưng yêu cầu nhiều bộ nhớ hơn). - delay (
float, tùy chọn) — Số epoch hoặc bước cần chờ trước khi có thể thực hiện đánh giá đầu tiên, tùy thuộc vào eval_strategy. - loss_only (
bool, tùy chọn, mặc định làFalse) — Bỏ qua tất cả các đầu ra ngoại trừ loss.
Một phương thức nhóm lại tất cả các đối số liên quan đến đánh giá.
set_logging
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500report_to: str | list[str] = 'none'level: str = 'passive'first_step: bool = Falsenan_inf_filter: bool = Falseon_each_node: bool = Falsereplica_level: str = 'passive' )
Tham số
- strategy (
strhoặc IntervalStrategy, tùy chọn, mặc định là"steps") — Chiến lược ghi log cần áp dụng trong quá trình huấn luyện. Các giá trị có thể là:"no": Không ghi nhật ký trong quá trình huấn luyện."epoch": Việc ghi log được thực hiện vào cuối mỗi epoch."steps": Việc ghi log được thực hiện mỗilogging_steps.
- steps (
int, tùy chọn, mặc định là 500) — Số bước cập nhật giữa hai lần ghi log nếustrategy="steps". - level (
str, tùy chọn, mặc định là"passive") — Mức độ ghi log của Logger được sử dụng trên tiến trình chính. Các lựa chọn khả dụng là các mức log dưới dạng chuỗi:"debug","info","warning","error"và"critical", cùng với mức"passive"không thiết lập gì và để ứng dụng tự đặt mức. - report_to (
strhoặclist[str], tùy chọn, mặc định là"none") — Danh sách các tích hợp để báo cáo kết quả và nhật ký. Các nền tảng được hỗ trợ là"azure_ml","clearml","codecarbon","comet_ml","dagshub","dvclive","flyte","mlflow","swanlab","tensorboard","trackio"và"wandb". Sử dụng"all"để báo cáo cho tất cả các tích hợp đã cài đặt,"none"cho trường hợp không có tích hợp nào. - first_step (
bool, tùy chọn, mặc định làFalse) — Có ghi log và đánh giáglobal_stepđầu tiên hay không. - nan_inf_filter (
bool, tuỳ chọn, mặc định làTrue) — Có lọcnanvàinfloss để ghi log hay không. Nếu đặt làTrueloss của mỗi bước lànanhoặcinfsẽ được lọc và thay thế bằng loss trung bình của cửa sổ ghi log hiện tại.nan_inf_filterchỉ ảnh hưởng đến việc ghi log các giá trị loss, nó không thay đổi cách gradient được tính toán hoặc áp dụng cho mô hình. - on_each_node (
bool, tùy chọn, mặc định làTrue) — Trong huấn luyện phân tán đa nút, có nên ghi log bằnglog_levelmột lần cho mỗi nút hay chỉ trên nút chính. - replica_level (
str, tùy chọn, mặc định là"passive") — Mức độ ghi log của logger để sử dụng trên các bản sao. Các lựa chọn giống nhưlog_level
Một phương thức nhóm lại tất cả các đối số liên quan đến ghi log.
set_lr_scheduler
< source >( name: str | transformers.trainer_utils.SchedulerType = 'linear'num_epochs: float = 3.0max_steps: int = -1warmup_steps: float = 0 )
Tham số
- name (
strhoặc SchedulerType, tuỳ chọn, mặc định là"linear") — Loại scheduler cần sử dụng. Xem tài liệu của SchedulerType để biết tất cả các giá trị có thể. - num_epochs(
float, tuỳ chọn, mặc định là 3.0) — Tổng số epoch huấn luyện cần thực hiện (nếu không phải số nguyên, sẽ thực hiện phần thập phân theo phần trăm của epoch cuối trước khi dừng huấn luyện). - max_steps (
int, tùy chọn, mặc định là -1) — Nếu được đặt thành một số dương, đây là tổng số bước huấn luyện cần thực hiện. Tham số này ghi đè lênnum_train_epochs. Đối với một tập dữ liệu hữu hạn, quá trình huấn luyện sẽ lặp lại qua tập dữ liệu (nếu toàn bộ dữ liệu đã được dùng hết) cho đến khi đạt đếnmax_steps. Tham số này phải được đặt thành một giá trị dương khi tập dữ liệu huấn luyện không triển khai__len__(ví dụ: một tập dữ liệu streaming), vì khi đó tổng số bước không thể suy ra được và là bắt buộc để giới hạn vòng lặp huấn luyện và cấu hình trình lập lịch tốc độ học. - warmup_steps (
float, tùy chọn, mặc định là 0) — Số bước được sử dụng cho quá trình tăng dần tuyến tính từ 0 đếnlearning_rate. Phải là một số nguyên hoặc một số float trong khoảng[0,1). Nếu nhỏ hơn 1, giá trị này sẽ được hiểu là tỷ lệ số bước được sử dụng cho quá trình tăng dần tuyến tính từ 0 đếnlearning_rate.
Một phương thức nhóm lại tất cả các đối số liên quan đến trình lập lịch tốc độ học và các siêu tham số của nó.
set_optimizer
< source >( name: str | transformers.training_args.OptimizerNames = 'adamw_torch'learning_rate: float = 5e-05weight_decay: float = 0beta1: float = 0.9beta2: float = 0.999epsilon: float = 1e-08args: str | None = None )
Tham số
- name (
strhoặctraining_args.OptimizerNames, tùy chọn, mặc định là"adamw_torch") — Bộ tối ưu hóa cần sử dụng:"adamw_torch","adamw_torch_fused","adamw_anyprecision"hoặc"adafactor". - learning_rate (
float, tùy chọn, mặc định là 5e-5) — Tốc độ học ban đầu. - weight_decay (
float, tùy chọn, mặc định là 0) — Hệ số suy giảm trọng số (nếu khác 0) được áp dụng cho tất cả các lớp, ngoại trừ trọng số của tất cả các bias và LayerNorm. - beta1 (
float, tùy chọn, mặc định là 0.9) — Siêu tham số beta1 cho bộ tối ưu adam hoặc các biến thể của nó. - beta2 (
float, tùy chọn, mặc định là 0.999) — Siêu tham số beta2 cho bộ tối ưu adam hoặc các biến thể của nó. - epsilon (
float, tùy chọn, mặc định là 1e-8) — Siêu tham số epsilon cho bộ tối ưu adam hoặc các biến thể của nó. - args (
str, tùy chọn) — Các đối số tùy chọn được cung cấp cho AnyPrecisionAdamW (chỉ hữu ích khioptim="adamw_anyprecision").
Một phương thức nhóm lại tất cả các đối số liên quan đến bộ tối ưu hóa và các siêu tham số của nó.
set_push_to_hub
< source >( model_id: strstrategy: str | transformers.trainer_utils.HubStrategy = 'every_save'token: str | None = Noneprivate_repo: bool | None = Nonealways_push: bool = Falserevision: str | None = None )
Tham số
- model_id (
str) — Tên của kho cần đồng bộ với output_dir cục bộ. Nó có thể là một model ID đơn giản, trong trường hợp đó model sẽ được đẩy vào namespace của bạn. Ngược lại, nó phải là tên kho đầy đủ, ví dụ"user_name/model", cho phép bạn đẩy vào một tổ chức mà bạn là thành viên bằng"organization_name/model". - strategy (
strhoặcHubStrategy, tuỳ chọn, mặc định là"every_save") — Xác định phạm vi của những gì được đẩy lên Hub và thời điểm thực hiện. Các giá trị có thể là:"end": đẩy model, cấu hình của nó, processing_class ví dụ tokenizer (nếu được truyền vào Trainer) và bản nháp model card khi phương thức save_model() được gọi."every_save": đẩy model, cấu hình của nó, processing_class (ví dụ tokenizer, nếu được truyền vào Trainer) và một bản nháp của model card mỗi khi có thao tác lưu model. Các thao tác đẩy được thực hiện bất đồng bộ để không chặn quá trình huấn luyện, và nếu việc lưu diễn ra rất thường xuyên, một thao tác đẩy mới chỉ được thực hiện khi thao tác trước đó đã hoàn tất. Một thao tác đẩy cuối cùng sẽ được thực hiện với model cuối cùng khi kết thúc huấn luyện."checkpoint": giống như"every_save"nhưng checkpoint mới nhất cũng được đẩy vào một thư mục con có tên là last-checkpoint, cho phép bạn tiếp tục huấn luyện một cách dễ dàng vớitrainer.train(resume_from_checkpoint="last-checkpoint")."all_checkpoints": giống như"checkpoint"nhưng tất cả các checkpoint được đẩy lên theo đúng thứ tự xuất hiện trong thư mục đầu ra (do đó bạn sẽ nhận được một thư mục checkpoint cho mỗi thư mục trong kho lưu trữ cuối cùng của bạn)
- token (
str, tùy chọn) — Token được sử dụng để đẩy mô hình lên Hub. Mặc định sẽ dùng token trong thư mục cache được lấy bằnghf auth login. - private_repo (
bool, tùy chọn, mặc định làFalse) — Có nên đặt kho thành riêng tư hay không. Nếu làNone(mặc định), kho sẽ là công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. - always_push (
bool, tùy chọn, mặc định làFalse) — Trừ khi giá trị này làTrue,Trainersẽ bỏ qua việc đẩy checkpoint nếu lần đẩy trước đó chưa hoàn tất. - revision (
str, tùy chọn) — Phiên bản (revision) cần sử dụng khi đẩy lên Hub. Có thể là tên nhánh, thẻ (tag) hoặc mã băm (hash) của commit.
Một phương thức nhóm lại tất cả các đối số liên quan đến việc đồng bộ hóa checkpoint với Hub.
Việc gọi phương thức này sẽ đặt
self.push_to_hubthànhTrue, điều này có nghĩa làoutput_dirsẽ bắt đầu một thư mục git được đồng bộ với kho (được xác định bởimodel_id) và nội dung sẽ được đẩy lên mỗi khi một thao tác lưu được kích hoạt (tùy thuộc vàoself.save_strategycủa bạn). Việc gọi save_model() cũng sẽ kích hoạt một lần đẩy.
set_save
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500total_limit: int | None = Noneon_each_node: bool = False )
Tham số
- strategy (
strhoặc IntervalStrategy, tùy chọn, mặc định là"steps") — Chiến lược lưu checkpoint áp dụng trong quá trình huấn luyện. Các giá trị có thể là:"no": Không thực hiện lưu trong quá trình huấn luyện."epoch": Việc lưu được thực hiện vào cuối mỗi epoch."steps": Việc lưu được thực hiện mỗisave_steps.
- steps (
int, tùy chọn, mặc định là 500) — Số bước cập nhật trước khi lưu hai checkpoint nếustrategy="steps". - total_limit (
int, tùy chọn) — Nếu có truyền giá trị, sẽ giới hạn tổng số checkpoint. Các checkpoint cũ hơn trongoutput_dirsẽ bị xóa. - on_each_node (
bool, tùy chọn, mặc định làFalse) — Khi huấn luyện phân tán đa nút, có nên lưu mô hình và checkpoint trên mỗi nút hay chỉ trên nút chính hay không.Không nên kích hoạt tính năng này khi các node khác nhau sử dụng cùng một bộ lưu trữ, vì các tệp sẽ được lưu với cùng tên trên mỗi node.
Một phương thức nhóm lại tất cả các đối số liên quan đến việc lưu checkpoint.
set_testing
< source >( batch_size: int = 8loss_only: bool = False )
Một phương pháp nhóm lại tất cả các đối số cơ bản liên quan đến việc kiểm tra trên một tập dữ liệu giữ lại.
Gọi phương thức này sẽ tự động đặt
self.do_predictthànhTrue.
set_training
< source >( learning_rate: float = 5e-05batch_size: int = 8weight_decay: float = 0num_epochs: float = 3max_steps: int = -1gradient_accumulation_steps: int = 1seed: int = 42activation_checkpointing: bool = Falsegradient_checkpointing: bool | None = None )
Tham số
- learning_rate (
float, tùy chọn, mặc định là 5e-5) — Tốc độ học ban đầu cho bộ tối ưu. - batch_size (
inttùy chọn, mặc định là 8) — Kích thước batch trên mỗi thiết bị (GPU/lõi TPU/CPU…) được sử dụng cho huấn luyện. - weight_decay (
float, tùy chọn, mặc định là 0) — Hệ số suy giảm trọng số (nếu khác 0) được áp dụng cho tất cả các lớp, ngoại trừ trọng số của tất cả các bias và LayerNorm, trong bộ tối ưu hóa. - num_epochs (
float, tùy chọn, mặc định là 3.0) — Tổng số epoch huấn luyện cần thực hiện (nếu không phải số nguyên, sẽ thực hiện phần thập phân theo phần trăm của epoch cuối trước khi dừng huấn luyện). - max_steps (
int, tùy chọn, mặc định là -1) — Nếu được đặt thành một số dương, đây là tổng số bước huấn luyện cần thực hiện. Tham số này ghi đè lênnum_train_epochs. Đối với một tập dữ liệu hữu hạn, quá trình huấn luyện sẽ lặp lại qua tập dữ liệu (nếu toàn bộ dữ liệu đã được dùng hết) cho đến khi đạt đếnmax_steps. Tham số này phải được đặt thành một giá trị dương khi tập dữ liệu huấn luyện không triển khai__len__(ví dụ: một tập dữ liệu streaming), vì khi đó tổng số bước không thể suy ra được và là bắt buộc để giới hạn vòng lặp huấn luyện và cấu hình trình lập lịch tốc độ học. - gradient_accumulation_steps (
int, tuỳ chọn, mặc định là 1) — Số bước cập nhật để tích lũy gradient trước khi thực hiện một lượt backward/update.Khi sử dụng gradient accumulation, một bước được tính là một bước có backward pass. Do đó, logging, evaluation, save sẽ được thực hiện mỗi
gradient_accumulation_steps * xxx_stepví dụ huấn luyện. - seed (
int, tùy chọn, mặc định là 42) — Hạt ngẫu nhiên sẽ được đặt ở đầu quá trình huấn luyện. Để đảm bảo khả năng tái lập giữa các lần chạy, hãy sử dụng hàm~Trainer.model_initđể khởi tạo mô hình nếu nó có một số tham số được khởi tạo ngẫu nhiên. - activation_checkpointing (
bool, tùy chọn, mặc định làFalse) — Nếu là True, sử dụng activation checkpointing để tiết kiệm bộ nhớ với chi phí là quá trình backward chậm hơn. - gradient_checkpointing (
bool, tùy chọn) — Biệt danh đã ngừng hỗ trợ củaactivation_checkpointing, sẽ bị loại bỏ trong v6.
Một phương thức nhóm lại tất cả các đối số cơ bản liên quan đến quá trình huấn luyện.
Gọi phương thức này sẽ tự động đặt
self.do_trainthànhTrue.
Thực hiện serialize instance này trong khi thay thế Enum bằng giá trị của chúng (để hỗ trợ serialize JSON). Nó làm mờ các giá trị token bằng cách xóa giá trị của chúng.
Chuẩn hóa bản thể này thành một chuỗi JSON.
Chuẩn hóa chuỗi hóa để sử dụng với hparams của TensorBoard
Seq2SeqTrainingArguments
lớp transformers.Seq2SeqTrainingArguments
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1sortish_sampler: bool = Falsepredict_with_generate: bool = Falsegeneration_max_length: int | None = Nonegeneration_num_beams: int | None = Nonegeneration_config: str | pathlib.Path | transformers.generation.configuration_utils.GenerationConfig | None = None )
Tham số
- output_dir (
str, tùy chọn, mặc định là"trainer_output") — Thư mục đầu ra, nơi các dự đoán của mô hình và các checkpoint sẽ được ghi.
Thời gian huấn luyện và kích thước lô
- per_device_train_batch_size (
int, tùy chọn, mặc định là 8) — Kích thước lô trên mỗi thiết bị. Kích thước lô toàn cục được tính là:per_device_train_batch_size * number_of_devicestrong các cấu hình đa GPU hoặc phân tán. - num_train_epochs(
float, tuỳ chọn, mặc định là 3.0) — Tổng số epoch huấn luyện cần thực hiện (nếu không phải số nguyên, sẽ thực hiện phần thập phân theo phần trăm của epoch cuối trước khi dừng huấn luyện). - max_steps (
int, tùy chọn, mặc định là -1) — Ghi đènum_train_epochs. Nếu được đặt thành một số dương, đây là tổng số bước huấn luyện cần thực hiện. Đối với một tập dữ liệu hữu hạn, quá trình huấn luyện sẽ lặp lại qua tập dữ liệu (nếu toàn bộ dữ liệu đã được dùng hết) cho đến khi đạtmax_steps. Tham số này phải được đặt thành một giá trị dương khi tập dữ liệu huấn luyện không triển khai__len__(ví dụ: một tập dữ liệu streaming), vì khi đó tổng số bước không thể suy ra được và là bắt buộc để giới hạn vòng lặp huấn luyện và cấu hình trình lập lịch tốc độ học.
Tốc độ học & Bộ lập lịch
- learning_rate (
float, tùy chọn, mặc định là 5e-5) — Tốc độ học ban đầu cho bộ tối ưu. Đây thường là tốc độ học đỉnh khi sử dụng trình lập lịch có giai đoạn làm nóng (warmup). - lr_scheduler_type (
strhoặc SchedulerType, tùy chọn, mặc định là"linear") — Loại trình điều khiển tốc độ học (learning rate scheduler) cần sử dụng. Xem SchedulerType để biết tất cả các giá trị khả dụng. Các lựa chọn phổ biến:- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dicthoặcstr, tùy chọn, mặc định làNone) — Các đối số bổ sung cho lr_scheduler. Xem tài liệu của từng scheduler để biết các giá trị có thể. - warmup_steps (
inthoặcfloat, tùy chọn, mặc định là 0) — Số bước cho quá trình warmup tuyến tính từ 0 đếnlearning_rate. Warmup giúp ổn định quá trình huấn luyện trong giai đoạn đầu. Có thể là:- Một số nguyên: số bước khởi động chính xác
- Một số float trong khoảng [0, 1): được hiểu là tỷ lệ so với tổng số bước huấn luyện
Trình tối ưu
- optim (
strhoặctraining_args.OptimizerNames, tuỳ chọn, mặc định là"adamw_torch"(đối với torch>=2.8"adamw_torch_fused")) — Bộ tối ưu cần sử dụng. Các lựa chọn phổ biến:"adamw_torch": AdamW của PyTorch (mặc định được khuyến nghị)"adamw_torch_fused": Lõi AdamW đã hợp nhất"adamw_hf": Bản triển khai AdamW của HuggingFace"sgd": Stochastic Gradient Descent có momentum"adafactor": Bộ tối ưu hóa tiết kiệm bộ nhớ cho các mô hình lớn"adamw_8bit": AdamW 8-bit (yêu cầu bitsandbytes) XemOptimizerNamesđể biết danh sách đầy đủ.
- optim_args (
str, tùy chọn) — Các đối số tùy chọn được cung cấp cho các bộ tối ưu hóa như AnyPrecisionAdamW, AdEMAMix và GaLore. - weight_decay (
float, tùy chọn, mặc định là 0) — Hệ số suy giảm trọng số được áp dụng bởi bộ tối ưu (không phải hàm mất mát). Thêm quy tắc hóa L2 để ngăn chặn quá khớp bằng cách phạt các trọng số lớn. Tự động loại trừ khỏi các tham số bias và LayerNorm. Các giá trị điển hình: 0.01 (chuẩn), 0.1 (quy tắc hóa mạnh hơn), 0.0 (không quy tắc hóa). - adam_beta1 (
float, tùy chọn, mặc định là 0.9) — Tốc độ suy giảm mũ cho các ước lượng moment thứ nhất (momentum) trong các optimizer dựa trên Adam. Kiểm soát mức độ lịch sử gradient được giữ lại. - adam_beta2 (
float, tùy chọn, mặc định là 0.999) — Tốc độ suy giảm mũ cho các ước lượng mô-men thứ hai (phương sai) trong các bộ tối ưu hóa dựa trên Adam. Kiểm soát việc điều chỉnh tỷ lệ học thích ứng. - adam_epsilon (
float, tùy chọn, mặc định là 1e-8) — Giá trị epsilon cho sự ổn định số trong các bộ tối ưu hóa dựa trên Adam. Ngăn chặn việc chia cho số 0 ở mẫu số của quy tắc cập nhật. - optim_target_modules (
Union[str, list[str]], tùy chọn) — Các module đích cần tối ưu hóa, tức là tên các module mà bạn muốn huấn luyện. Hiện được sử dụng cho thuật toán GaLore và thuật toán APOLLO. Xem cài đặt GaLore và cài đặt APOLLO để biết thêm chi tiết. Bạn cần đảm bảo truyền một optimizer GaLore hoặc APOLLO hợp lệ, ví dụ một trong các lựa chọn: “apollo_adamw”, “galore_adamw”, “galore_adamw_8bit”, “galore_adafactor” và đảm bảo rằng các module đích chỉ là các modulenn.Linear.
Điều hòa & Ổn định huấn luyện
- gradient_accumulation_steps (
int, tuỳ chọn, mặc định là 1) — Số bước cập nhật để tích lũy gradient trước khi thực hiện một lượt backward/update. Mô phỏng kích thước batch lớn hơn mà không cần thêm bộ nhớ. Kích thước batch hiệu dụng =per_device_train_batch_size × num_devices × gradient_accumulation_steps.Khi sử dụng gradient accumulation, một “step” được tính là một bước có backward pass. Do đó, việc ghi log, đánh giá và lưu sẽ diễn ra mỗi
gradient_accumulation_steps × xxx_stepví dụ huấn luyện. - average_tokens_across_devices (
bool, tùy chọn, mặc định làTrue) — Có trung bình hóa token giữa các thiết bị hay không. Nếu bật, sẽ sử dụng all_reduce để đồng bộ hóa num_tokens_in_batch nhằm tính toán loss chính xác. Tham khảo: https://github.com/huggingface/transformers/issues/34242 - max_grad_norm (
float, tùy chọn, mặc định là 1.0) — Chuẩn gradient tối đa cho việc cắt gradient. Được áp dụng sau bước truyền ngược, trước bước tối ưu hóa. Ngăn chặn hiện tượng bùng nổ gradient bằng cách thu nhỏ gradient khi chuẩn toàn cục của chúng vượt quá ngưỡng này. Đặt thành 0 để tắt việc cắt. Các giá trị điển hình: 1.0 (chuẩn), 0.5 (thận trọng hơn), 5.0 (ít quyết liệt hơn). - label_smoothing_factor (
float, tùy chọn, mặc định là 0.0) — Hệ số làm mịn nhãn để ngăn ngừa sự tự tin quá mức. Thay thế các mục tiêu cứng 0/1 bằng các mục tiêu mềm: 0 trở thànhε/num_labelsvà 1 trở thành1 - ε + ε/num_labels, trong đó ε =label_smoothing_factor. Giá trị 0 có nghĩa là không làm mịn. Khoảng điển hình: từ 0.0 đến 0.1.
Huấn luyện độ chính xác hỗn hợp
- bf16 (
bool, tùy chọn, mặc định làFalse) — Bật huấn luyện độ chính xác hỗn hợp bfloat16 (BF16) Thường được ưu tiên hơn FP16 do có độ ổn định số tốt hơn và không cần bù trừ độ mất mát (loss scaling). - fp16 (
bool, tùy chọn, mặc định làFalse) — Bật huấn luyện độ chính xác hỗn hợp float16 (FP16). Hãy cân nhắc sử dụng BF16 thay thế nếu phần cứng của bạn hỗ trợ. - bf16_full_eval (
bool, tuỳ chọn, mặc định làFalse) — Sử dụng độ chính xác BF16 đầy đủ cho đánh giá (không chỉ độ chính xác hỗn hợp). Nhanh hơn và tiết kiệm bộ nhớ nhưng có thể ảnh hưởng nhẹ đến giá trị các chỉ số. Chỉ áp dụng trong quá trình đánh giá. - fp16_full_eval (
bool, tùy chọn, mặc định làFalse) — Sử dụng độ chính xác FP16 đầy đủ cho đánh giá (không chỉ là độ chính xác hỗn hợp). Nhanh hơn và tiết kiệm bộ nhớ nhưng có thể ảnh hưởng nhẹ đến giá trị các chỉ số. Chỉ áp dụng trong quá trình đánh giá. - tf32 (
bool, tùy chọn) — Bật chế độ TensorFloat-32 (TF32) trên các GPU Ampere và mới hơn. TF32 sử dụng độ chính xác 19-bit cho các phép nhân ma trận (thay vì 23-bit của FP32), mang lại tốc độ tăng lên đến 8 lần với sự suy giảm độ chính xác không đáng kể. Giá trị mặc định phụ thuộc vào phiên bản PyTorch. Xem tài liệu TF32.
Kiểm tra kích hoạt
- activation_checkpointing (
bool, tùy chọn, mặc định làFalse) — Bật activation checkpointing để đánh đổi hiệu suất tính toán lấy bộ nhớ. Giảm mức sử dụng bộ nhớ bằng cách xóa các activation trong quá trình forward và tính lại chúng trong quá trình backward. Cho phép huấn luyện các mô hình hoặc kích thước batch lớn hơn với chi phí là tốc độ huấn luyện chậm hơn khoảng 20%. - activation_checkpointing_kwargs (
dict, tùy chọn, mặc định làNone) — Các đối số dạng từ khóa được truyền choactivation_checkpointing_enable().every_n_layerschỉ checkpoint mỗi n lớp decoder thay vì tất cả;1là hành vi tất cả hoặc không thông thường, và các giá trị lớn hơn trao đổi một phần bộ nhớ lấy tốc độ.offloadgiữ các activation đã lưu trong bộ nhớ host dạng pinned, giúp giải phónglayers x sequence x hiddenbyte bộ nhớ thiết bị nhưng làm chậm bước tính toán. Bất kỳ khóa nào khác đều được chuyển tiếp đếntorch.utils.checkpoint.checkpoint. - gradient_checkpointing (
bool, tùy chọn) — Biệt danh đã ngừng hỗ trợ củaactivation_checkpointing, sẽ bị loại bỏ trong v6. - gradient_checkpointing_kwargs (
dict, tùy chọn) — Biệt danh đã ngừng hỗ trợ củaactivation_checkpointing_kwargs, sẽ bị loại bỏ trong v6.
Biên dịch
- torch_compile (
bool, tùy chọn, mặc định làFalse) — Biên dịch mô hình bằngtorch.compile()của PyTorch 2.0 để huấn luyện nhanh hơn. Có thể tăng tốc độ 20-50% mà không cần thay đổi mã. Sử dụng cài đặt biên dịch mặc định trừ khi chỉ địnhtorch_compile_backendhoặctorch_compile_mode. - torch_compile_backend (
str, tuỳ chọn) — Backend chotorch.compile(). Nếu được đặt, sẽ tự động bậttorch_compile. Các lựa chọn bao gồm"inductor"(mặc định),"aot_eager","cudagraphs". Các backend khác nhau tùy theo phiên bản PyTorch - xem tài liệu PyTorch để biết các tùy chọn khả dụng. - torch_compile_mode (
str, tùy chọn) — Chế độ biên dịch chotorch.compile(). Nếu được đặt, sẽ tự động bậttorch_compile. Các tùy chọn:"default","reduce-overhead"(giảm thiểu overhead của Python),"max-autotune"(tối ưu hóa mạnh mẽ, thời gian biên dịch chậm hơn).
Kernels
- use_liger_kernel (
bool, tùy chọn, mặc định làFalse) — Bật các tối ưu hóa Liger Kernel. Tăng thông lượng đa GPU khoảng 20% và giảm mức sử dụng bộ nhớ khoảng 60%. Hoạt động với Flash Attention, FSDP và DeepSpeed. Hiện hỗ trợ các mô hình Llama, Mistral, Mixtral và Gemma. - liger_kernel_config (
Optional[dict], tùy chọn) — Cấu hình cho Liger Kernel. Được truyền dưới dạng kwargs cho_apply_liger_kernel_to_instance(). Các tùy chọn thường bao gồm:"rope","swiglu","cross_entropy","fused_linear_cross_entropy","rms_norm". Nếu làNone, sẽ sử dụng cấu hình mặc định.
Tối ưu hóa bổ sung
- use_cache (
bool, tùy chọn, mặc định làFalse) — Có bật bộ nhớ đệm cho mô hình hay không. Đối với huấn luyện, điều này thường không cần thiết, ngoại trừ một số phương pháp PEFT sử dụngpast_key_values. - neftune_noise_alpha (
Optional[float]) — Nếu không phảiNone, tham số này sẽ kích hoạt nhúng nhiễu NEFTune. Điều này có thể cải thiện đáng kể hiệu suất của mô hình trong quá trình tinh chỉnh theo hướng dẫn. Xem bài báo gốc và mã nguồn gốc. Hỗ trợPreTrainedModelcủa transformers và cảPeftModeltừ peft. Bài báo gốc sử dụng các giá trị trong khoảng [5.0, 15.0]. - torch_empty_cache_steps (
int, tùy chọn) — Số bước cần chờ trước khi gọitorch.<device>.empty_cache(). Nếu không được đặt hoặc được đặt thành None, bộ nhớ đệm sẽ không được làm trống. Điều này có thể giúp tránh các lỗi hết bộ nhớ CUDA bằng cách giảm mức sử dụng VRAM cao nhất, với chi phí là hiệu suất chậm hơn khoảng 10%. - auto_find_batch_size (
bool, tùy chọn, mặc định làFalse) — Có nên tự động tìm kích thước lô (batch size) huấn luyện phù hợp với bộ nhớ thông qua suy giảm mũ, tránh các lỗi CUDA Out-of-Memory hay không. Kích thước lô đánh giá sẽ không được điều chỉnh.
Ghi log & Giám sát huấn luyện
- logging_strategy (
strhoặc IntervalStrategy, tùy chọn, mặc định là"steps") — Chiến lược ghi log cần áp dụng trong quá trình huấn luyện. Các giá trị có thể là:"no": Không ghi nhật ký trong quá trình huấn luyện."epoch": Việc ghi log được thực hiện vào cuối mỗi epoch."steps": Việc ghi log được thực hiện mỗilogging_steps.
- logging_steps (
inthoặcfloat, tùy chọn, mặc định là 500) — Số bước cập nhật giữa hai lần ghi log nếulogging_strategy="steps". Phải là một số nguyên hoặc một số thực trong khoảng[0,1). Nếu nhỏ hơn 1, sẽ được hiểu là tỷ lệ so với tổng số bước huấn luyện. - logging_first_step (
bool, tùy chọn, mặc định làFalse) — Có ghi log bướcglobal_stepđầu tiên hay không. - log_on_each_node (
bool, tùy chọn, mặc định làTrue) — Trong huấn luyện phân tán đa nút, có nên ghi log bằnglog_levelmột lần cho mỗi nút hay chỉ trên nút chính. - logging_nan_inf_filter (
bool, tùy chọn, mặc định làTrue) — Lọc các giá trị loss NaN và Inf khi ghi log. NếuTrue, sẽ thay thế các loss huấn luyện NaN/Inf bằng trung bình của các loss hợp lệ gần nhất, và loại trừ các batch NaN/Inf (ví dụ: các batch không có token nhãn) khỏi loss đánh giá. Không ảnh hưởng đến việc tính toán gradient, chỉ ảnh hưởng đến ghi log. - include_num_input_tokens_seen (
Optional[Union[str, bool]], tùy chọn, mặc định là “no”) — Có theo dõi số lượng token đầu vào đã nhìn thấy hay không. Phải là một trong [“all”, “non_padding”, “no”] hoặc một giá trị boolean, tương ứng với “all” hoặc “no”. Có thể chậm hơn trong huấn luyện phân tán vì phải gọi các thao tác gather.
Ghi nhật ký
- log_level (
str, tùy chọn, mặc định làpassive) — Mức độ ghi log cho tiến trình chính. Các tùy chọn:"debug","info","warning","error","critical", hoặc"passive"(không thay đổi mức độ ghi log hiện tại của Transformers, mặc định là"warning") - log_level_replica (
str, tùy chọn, mặc định là"warning") — Mức ghi log cho các tiến trình bản sao trong huấn luyện phân tán. Các tùy chọn giống vớilog_level. - disable_tqdm (
bool, tùy chọn) — Tắt các thanh tiến trình tqdm. Mặc định làTruenếulog_levellà warning hoặc thấp hơn,Falsetrong các trường hợp khác.
Tích hợp theo dõi thí nghiệm
- report_to (
strhoặclist[str], tùy chọn, mặc định là"none") — Danh sách các tích hợp để báo cáo kết quả và nhật ký. Các nền tảng được hỗ trợ là"azure_ml","clearml","codecarbon","comet_ml","dagshub","dvclive","flyte","mlflow","swanlab","tensorboard","trackio"và"wandb". Sử dụng"all"để báo cáo cho tất cả các tích hợp đã cài đặt,"none"để không sử dụng tích hợp nào. - run_name (
str, tùy chọn) — Mô tả cho lần chạy. Thường được sử dụng cho ghi log trackio, wandb, mlflow, comet và swanlab. - project (
str, tùy chọn, mặc định là"huggingface") — Tên của dự án được sử dụng cho việc ghi log. Hiện tại, chỉ được sử dụng bởi Trackio. - trackio_space_id (
strhoặcNone, tùy chọn, mặc định làNone) — ID của Hugging Face Space được sử dụng để ghi log Trackio trực tiếp với một Space dựa trên Gradio. Nên là tên Space đầy đủ như'username/reponame'hoặc'orgname/reponame', hoặc chỉ cần'reponame'(Space sẽ được tạo trong namespace của người dùng đang đăng nhập). Nếu làNone, các chỉ số sẽ chỉ được ghi vào một thư mục cục bộ (không có Space trên Hub). Gradio Space đó có quyền đọc và ghi vào Bucket của Trackio, đây là điều bạn cần khi quá trình huấn luyện đang diễn ra—ví dụ khi tiếp tục một lần chạy chưa hoàn tất hoặc tổng hợp log từ nhiều máy. Space sẽ là công khai trừ khi bạn đặthub_private_repo=Truehoặc mặc định của tổ chức bạn là tạo các Space riêng tư. - trackio_bucket_id (
strhoặcNone, tùy chọn, mặc định làNone) — Bucket id tùy chọn của Hugging Face cho Trackio. Nếu không được đặt, Trackio sẽ tự suy ra một id. Được sử dụng cùng với một Gradio Space (trackio_space_id) và khi triển khai một Space tĩnh (trackio_static_space_idkhông phải làFalse). - trackio_static_space_id (
str,False, hoặcNone, tùy chọn, mặc định làNone) — ID của Hugging Face Space sẽ được sử dụng cho static Space được tạo sau khi quá trình huấn luyện hoàn tất. Phải là tên Space đầy đủ như'username/reponame'hoặc'orgname/reponame', hoặc chỉ là'reponame'(Space sẽ được tạo trong namespace của người dùng đang đăng nhập). Nếu là False, sẽ không tạo static Space. Nếu là None và model được đẩy lên Hub, một static Space sẽ được tạo với tên mặc định và liên kết này sẽ được thêm vào model card. Space sẽ là công khai trừ khi bạn đặthub_private_repo=Truehoặc mặc định của tổ chức bạn là tạo các Space riêng tư.
Đánh giá
- eval_strategy (
strhoặc IntervalStrategy, tùy chọn, mặc định là"no") — Thời điểm chạy đánh giá. Các tùy chọn:"no": Không đánh giá trong quá trình huấn luyện"steps": Đánh giá mỗieval_steps"epoch": Đánh giá vào cuối mỗi epoch
- eval_steps (
inthoặcfloat, tùy chọn) — Số bước cập nhật giữa hai lần đánh giá nếueval_strategy="steps". Nếu không được đặt, giá trị mặc định sẽ giống vớilogging_steps. Phải là một số nguyên hoặc số thực trong khoảng[0,1). Nếu nhỏ hơn 1, sẽ được hiểu là tỷ lệ so với tổng số bước huấn luyện. - eval_delay (
float, tùy chọn) — Số epoch hoặc bước cần chờ trước khi có thể thực hiện lần đánh giá đầu tiên, tùy thuộc vào eval_strategy. - per_device_eval_batch_size (
int, tùy chọn, mặc định là 8) — Kích thước lô trên mỗi lõi bộ tăng tốc/CPU của thiết bị để đánh giá. - prediction_loss_only (
bool, tùy chọn, mặc định làFalse) — Khi thực hiện đánh giá và tạo dự đoán, chỉ trả về loss. - eval_on_start (
bool, tùy chọn, mặc định làFalse) — Có thực hiện một bước đánh giá (kiểm tra tính hợp lệ) trước khi huấn luyện hay không, để đảm bảo các bước xác thực hoạt động chính xác. - eval_do_concat_batches (
bool, tùy chọn, mặc định làTrue) — Có nên nối đệ quy các inputs/losses/labels/predictions giữa các batch hay không. NếuFalse, thay vào đó sẽ lưu chúng dưới dạng các danh sách, với mỗi batch được giữ riêng biệt. - eval_use_gather_object (
bool, tùy chọn, mặc định làFalse) — Có nên chạy gather object đệ quy trên một danh sách/bộ/bộ từ điển lồng nhau các đối tượng từ tất cả các thiết bị hay không. Chỉ nên bật tính năng này nếu người dùng không chỉ trả về các tensor, và điều này đang bị PyTorch khuyến cáo không nên làm. Điều này hữu ích khi cấu trúc nhãn không theo chuẩn, như trong các tác vụ thị giác máy tính. - eval_accumulation_steps (
int, tùy chọn) — Số bước dự đoán để tích lũy các tensor đầu ra trước khi chuyển kết quả sang CPU. Nếu không được đặt, toàn bộ các dự đoán sẽ được tích lũy trên bộ tăng tốc thiết bị trước khi được chuyển sang CPU (nhanh hơn nhưng yêu cầu nhiều bộ nhớ hơn).
Tính toán chỉ số
- include_for_metrics (
list[str], tùy chọn, mặc định là[]) — Bao gồm thêm dữ liệu trong hàmcompute_metricsnếu cần cho việc tính toán metrics. Các tùy chọn có thể thêm vàoinclude_for_metricsdanh sách:"inputs": Dữ liệu đầu vào được truyền vào mô hình, dùng để tính toán các chỉ số phụ thuộc vào đầu vào."loss": Các giá trị loss được tính trong quá trình đánh giá, dùng để tính các chỉ số phụ thuộc vào loss.
- batch_eval_metrics (
bool, tùy chọn, mặc định làFalse) — Nếu đặt thànhTrue, quá trình đánh giá sẽ gọi compute_metrics ở cuối mỗi batch để tích lũy thống kê thay vì lưu tất cả eval logits trong bộ nhớ. Khi đặt thànhTrue, bạn phải truyền một hàm compute_metrics nhận một đối số booleancompute_result, khi được truyềnTrue, sẽ kích hoạt các thống kê tổng hợp toàn cục cuối cùng từ các thống kê tổng hợp cấp batch mà bạn đã tích lũy trên tập đánh giá.
Checkpointing & Saving
- save_only_model (
bool, tùy chọn, mặc định làFalse) — Chỉ lưu trọng số mô hình, không lưu trạng thái optimizer/scheduler/RNG. Điều này giảm đáng kể kích thước checkpoint nhưng ngăn việc tiếp tục huấn luyện từ checkpoint. Sử dụng khi bạn chỉ cần mô hình đã huấn luyện để suy luận, không cần tiếp tục huấn luyện. Bạn chỉ có thể tải mô hình bằngfrom_pretrainedkhi tùy chọn này được đặt thànhTrue. - save_strategy (
strhoặcSaveStrategy, tuỳ chọn, mặc định là"steps") — Chiến lược lưu checkpoint áp dụng trong quá trình huấn luyện. Các giá trị có thể là:"no": Không thực hiện lưu trong quá trình huấn luyện."epoch": Việc lưu được thực hiện vào cuối mỗi epoch."steps": Việc lưu được thực hiện mỗisave_steps."best": Việc lưu được thực hiện mỗi khi đạt được mộtbest_metricmới.
- save_steps (
inthoặcfloat, tùy chọn, mặc định là 500) — Số bước cập nhật trước khi lưu hai checkpoint nếusave_strategy="steps". Phải là một số nguyên hoặc một số thực trong khoảng[0,1). Nếu nhỏ hơn 1, sẽ được hiểu là tỷ lệ so với tổng số bước huấn luyện. - save_on_each_node (
bool, tùy chọn, mặc định làFalse) — Khi thực hiện huấn luyện phân tán đa nút, có nên lưu mô hình và checkpoint trên mỗi nút hay chỉ trên nút chính. Không nên kích hoạt tùy chọn này khi các nút khác nhau sử dụng cùng một bộ lưu trữ, vì các tệp sẽ được lưu với cùng tên trên mỗi nút. - save_total_limit (
int, tùy chọn) — Số lượng checkpoint tối đa được giữ lại. Các checkpoint cũ hơn trongoutput_dirsẽ bị xóa. Khiload_best_model_at_end=True, checkpoint tốt nhất luôn được giữ lại cùng với các checkpoint mới nhất. Ví dụ,save_total_limit=5sẽ giữ lại 4 checkpoint mới nhất cùng với checkpoint tốt nhất - enable_jit_checkpoint (
bool, tuỳ chọn, mặc định làFalse) — Bật checkpoint Just-In-Time khi nhận tín hiệu SIGTERM để kết thúc một cách êm dịu trên các tác vụ có thể bị thu hồi. Quan trọng: Hãy cấu hình thời gian tắt máy êm dịu của trình điều phối để dành đủ thời gian. Với Kubernetes, hãy đặtterminationGracePeriodSeconds(mặc định 30s thường không đủ). Với Slurm, hãy dùng--signal=TERM@<seconds>. Thời gian ân hạn yêu cầu ≥ thời gian lặp dài nhất + thời gian lưu checkpoint.
Tích hợp Hugging Face Hub
- push_to_hub (
bool, tùy chọn, mặc định làFalse) — Có đẩy mô hình lên Hub mỗi khi mô hình được lưu hay không. Nếu được kích hoạt,output_dirsẽ bắt đầu một thư mục git được đồng bộ với kho (được xác định bởihub_model_id) và nội dung sẽ được đẩy mỗi khi một thao tác lưu được kích hoạt (tùy thuộc vàosave_strategycủa bạn). Việc gọi save_model() cũng sẽ kích hoạt một lần đẩy. - hub_token (
str, tùy chọn) — Token được sử dụng để đẩy mô hình lên Hub. Mặc định sẽ dùng token trong thư mục cache được lấy bằnghf auth login. - hub_private_repo (
bool, tùy chọn) — Xác định có làm cho kho (repo) ở chế độ riêng tư hay không. Nếu làNone(mặc định), kho sẽ ở chế độ công khai trừ khi mặc định của tổ chức là riêng tư. Giá trị này bị bỏ qua nếu kho đã tồn tại. Nếu báo cáo lên Trackio với triển khai đến Hugging Face Spaces được bật, cùng một logic sẽ xác định xem Space có ở chế độ riêng tư hay không. - hub_model_id (
str, tùy chọn) — Tên của kho cần đồng bộ với output_dir cục bộ. Nó có thể là một ID mô hình đơn giản, trong trường hợp đó mô hình sẽ được đẩy vào namespace của bạn. Ngược lại, nó phải là tên kho đầy đủ, ví dụ"user_name/model", cho phép bạn đẩy vào một tổ chức mà bạn là thành viên bằng"organization_name/model". Mặc định sẽ làuser_name/output_dir_namevới output_dir_name là tên củaoutput_dir. - hub_strategy (
strhoặcHubStrategy, tuỳ chọn, mặc định là"every_save") — Xác định nội dung và thời điểm đẩy lên Hub. Các tùy chọn:"end": Chỉ đẩy ở cuối quá trình huấn luyện"every_save": Push ở mỗi lần lưu (bất đồng bộ để không chặn quá trình huấn luyện)"checkpoint": Giống như"every_save"nhưng có thêm việc đẩy checkpoint mới nhất vào thư mục con"last-checkpoint"để dễ dàng tiếp tục"all_checkpoints": Đẩy tất cả các checkpoint khi chúng xuất hiện
- hub_always_push (
bool, tùy chọn, mặc định làFalse) — Trừ khi giá trị này làTrue,Trainersẽ bỏ qua việc đẩy checkpoint khi lần đẩy trước đó chưa hoàn tất. - hub_revision (
str, tùy chọn) — Phiên bản (revision) được sử dụng khi đẩy lên Hub. Có thể là tên nhánh, thẻ (tag) hoặc hash của commit.
Theo dõi mô hình tốt nhất
- load_best_model_at_end (
bool, tùy chọn, mặc định làFalse) — Tải checkpoint tốt nhất vào cuối quá trình huấn luyện. Yêu cầueval_strategyphải được thiết lập. Khi được bật, checkpoint tốt nhất luôn được lưu (xemsave_total_limit).Khi `True`, `save_strategy` phải khớp với `eval_strategy` (trừ khi `save_strategy` là `"best"`), và nếu sử dụng `"steps"`, `save_steps` phải là bội số của `eval_steps`. - metric_for_best_model (
str, tùy chọn) — Chỉ số được sử dụng để so sánh các mô hình khiload_best_model_at_end=True. Phải là tên chỉ số được trả về bởi quá trình đánh giá, có hoặc không có tiền tố"eval_". Mặc định là"loss". Nếu bạn đặt giá trị này,greater_is_bettersẽ mặc định làTruetrừ khi tên kết thúc bằng"loss". Ví dụ:"accuracy","f1","eval_bleu". - greater_is_better (
bool, tùy chọn) — Liệu giá trị chỉ số cao hơn có tốt hơn không. Mặc định dựa trênmetric_for_best_model:Truenếu tên chỉ số không kết thúc bằng"loss",Falsetrong trường hợp còn lại.
Tiếp tục huấn luyện
- ignore_data_skip (
bool, tùy chọn, mặc định làFalse) — Khi tiếp tục huấn luyện, bỏ qua việc tua nhanh qua tập dữ liệu để đạt đến trạng thái trước đó. NếuTrue, quá trình huấn luyện sẽ bắt đầu từ đầu tập dữ liệu (tiếp tục nhanh hơn nhưng kết quả sẽ không khớp với phiên huấn luyện bị gián đoạn). NếuFalse, sẽ bỏ qua các dữ liệu đã xem (tiếp tục chậm hơn nhưng tiếp tục chính xác). - restore_callback_states_from_checkpoint (
bool, tùy chọn, mặc định làFalse) — Khôi phục trạng thái callback từ checkpoint khi tiếp tục huấn luyện. NếuTrue, sẽ ghi đè lên các callback được truyền vào Trainer nếu chúng tồn tại trong checkpoint.
Tính tái lập
- full_determinism (
bool, tùy chọn, mặc định làFalse) — NếuTrue, enable_full_determinism() sẽ được gọi thay vì set_seed() để đảm bảo kết quả có thể tái lập trong huấn luyện phân tán. Lưu ý: điều này sẽ ảnh hưởng tiêu cực đến hiệu suất, vì vậy chỉ nên sử dụng để gỡ lỗi. - seed (
int, tùy chọn, mặc định là 42) — Hạt ngẫu nhiên sẽ được đặt ở đầu quá trình huấn luyện. Để đảm bảo khả năng tái lập giữa các lần chạy, hãy sử dụng hàm~Trainer.model_initđể khởi tạo mô hình nếu nó có một số tham số được khởi tạo ngẫu nhiên. - data_seed (
int, tùy chọn) — Hạt ngẫu nhiên (random seed) được sử dụng với các trình lấy mẫu dữ liệu (data samplers). Nếu không được đặt, các trình tạo ngẫu nhiên cho việc lấy mẫu dữ liệu sẽ sử dụng cùng hạt vớiseed. Điều này có thể được sử dụng để đảm bảo khả năng tái lập của việc lấy mẫu dữ liệu, độc lập với hạt của mô hình.
Cấu hình phần cứng
- use_cpu (
bool, tùy chọn, mặc định làFalse) — Có sử dụng cpu hay không. Nếu đặt thành False, chúng tôi sẽ sử dụng thiết bị/backend torch khả dụng.
Cấu hình Accelerate
- accelerator_config (
str,dict, hoặcAcceleratorConfig, tùy chọn) — Cấu hình cho tích hợp Accelerate bên trong. Có thể là:- Đường dẫn đến tệp cấu hình JSON:
"accelerator_config.json" - Từ điển với các tùy chọn cấu hình
AcceleratorConfiginstance Các tùy chọn chính:split_batches(bool, mặc định làFalse): Có nên chia các batch giữa các thiết bị hay không. NếuTrue, kích thước batch thực tế sẽ giống nhau trên tất cả các thiết bị (tổng số phải chia hết cho num_processes). NếuFalse, mỗi thiết bị sẽ nhận kích thước batch được chỉ định.dispatch_batches(bool): NếuTrue, chỉ tiến trình chính sẽ lặp qua dataloader và phân phối các batch đến các thiết bị. Mặc định làTruechoIterableDataset,Falsetrong các trường hợp khác.even_batches(bool, mặc định làTrue): Nhân bản các mẫu từ đầu bộ dữ liệu để đảm bảo tất cả các worker nhận được kích thước batch bằng nhau.use_seedable_sampler(bool, mặc định làTrue): Sử dụng trình lấy mẫu ngẫu nhiên có thể đặt hạt giống hoàn toàn để đảm bảo khả năng tái lập.use_configured_state(bool, mặc định làFalse): Sử dụngAcceleratorState/PartialStateđã được khởi tạo sẵn thay vì tạo mới. Có thể gây ra các vấn đề khi tinh chỉnh siêu tham số.
- Đường dẫn đến tệp cấu hình JSON:
- parallelism_config (
ParallelismConfig, tùy chọn) — Cấu hình song song cho phiên huấn luyện. Yêu cầu Accelerate1.10.1
Dataloader
- dataloader_drop_last (
bool, tùy chọn, mặc định làFalse) — Có nên loại bỏ batch cuối cùng không hoàn chỉnh (nếu độ dài của tập dữ liệu không chia hết cho kích thước batch) hay không. - dataloader_num_workers (
int, tùy chọn, mặc định là 0) — Số lượng tiến trình con được sử dụng để nạp dữ liệu (chỉ dành cho PyTorch). Giá trị 0 có nghĩa là dữ liệu sẽ được nạp trong tiến trình chính. - dataloader_pin_memory (
bool, tùy chọn, mặc định làTrue) — Liệu bạn có muốn ghim bộ nhớ trong các trình tải dữ liệu hay không. Giá trị mặc định sẽ làTrue. - dataloader_persistent_workers (
bool, tùy chọn, mặc định làFalse) — Nếu là True, trình tải dữ liệu sẽ không tắt các tiến trình worker sau khi một tập dữ liệu đã được tiêu thụ một lần. Điều này cho phép giữ các phiên bản Dataset của worker ở trạng thái hoạt động. Có thể tăng tốc độ huấn luyện, nhưng sẽ làm tăng mức sử dụng RAM. Mặc định sẽ làFalse. - dataloader_prefetch_factor (
int, tùy chọn) — Số lượng batch được tải trước bởi mỗi worker. 2 nghĩa là tổng cộng sẽ có 2 * num_workers batch được tải trước trên tất cả các worker. - dataloader_multiprocessing_context (
str, tuỳ chọn) — Phương thức khởi tạo multiprocessing được sử dụng cho các worker tải dữ liệu ("fork","spawn"hoặc"forkserver"). Mặc định là phương thức khởi tạo mặc định của PyTorch, ngoại trừ trên MPS vớidataloader_num_workers > 1, khi đó mặc định là"fork". Hãy dùng"spawn"khi stream từ các nguồn mà các đối tượng của chúng không an toàn khi fork (ví dụ HDFS quapyarrow). Khi dùng"spawn", bất kỳcollate_fntùy chỉnh hoặc mã dataset nào cũng phải có thể import được ở cấp module (không dùng lambda/closure). - dataloader_in_order (
bool, tùy chọn, mặc định làTrue) — NếuTrue, trình tải dữ liệu sẽ trả về các lô theo thứ tự các worker được khởi tạo. Đặt thànhFalseđể trả về các lô ngay khi chúng sẵn sàng, điều này có thể giảm độ trễ cuối cho các tác vụ truyền trực tiếpIterableDataset. Yêu cầu PyTorch >= 2.6. - remove_unused_columns (
bool, tùy chọn, mặc định làTrue) — Có tự động xóa các cột không được sử dụng bởi phương thức forward của mô hình hay không. - label_names (
list[str], tùy chọn) — Danh sách các khóa trong từ điển đầu vào của bạn tương ứng với nhãn. Cuối cùng sẽ mặc định là danh sách các tên tham số được mô hình chấp nhận mà chứa từ “label”, trừ khi mô hình được sử dụng là một trong cácXxxForQuestionAnswering, trong trường hợp đó nó cũng sẽ bao gồm các khóa["start_positions", "end_positions"]. Bạn chỉ nên chỉ địnhlabel_namesnếu bạn đang sử dụng tên nhãn tùy chỉnh hoặc nếuforwardcủa mô hình của bạn tiêu thụ nhiều tensor nhãn (ví dụ: extractive QA). - train_sampling_strategy (
str, tuỳ chọn, mặc định là"random") — Bộ lấy mẫu (sampler) được sử dụng cho dataloader huấn luyện. Các giá trị có thể là:"random": Sử dụngRandomSampler(mặc định)."sequential": Sử dụngSequentialSampler."group_by_length": Sử dụngLengthGroupedSamplerđể nhóm các mẫu có độ dài xấp xỉ bằng nhau lại với nhau (nhằm giảm thiểu padding và tăng hiệu quả)."batch_rebalance": Sử dụngBatchRebalanceSamplerđể cân bằng chi phí token đệm giữa các thiết bị và các bước tích lũy gradient trong mỗi batch hiệu dụng, giảm thiểu lãng phí do đệm và bộ nhớ đỉnh so với"group_by_length". Hiện tại chỉ hỗ trợ huấn luyện song song dữ liệu (chưa hỗ trợ song song tensor).
Lưu ý: Khi sử dụng
IterableDataset, đối số này sẽ bị bỏ qua. - length_column_name (
str, tùy chọn, mặc định là"length") — Tên cột cho các độ dài đã tính trước. Nếu cột tồn tại, việc nhóm theo độ dài sẽ sử dụng các giá trị này thay vì tính toán chúng khi khởi động huấn luyện. Bỏ qua trừ khitrain_sampling_strategylà"group_by_length"hoặc"batch_rebalance"và tập dữ liệu là một instance củaDataset.
DDP (DistributedDataParallel)
- ddp_find_unused_parameters (
bool, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờfind_unused_parametersđược truyền choDistributedDataParallel. Mặc định sẽ làFalsenếu sử dụng gradient checkpointing, ngược lại làTrue. - ddp_bucket_cap_mb (
int, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờbucket_cap_mbđược truyền choDistributedDataParallel. - ddp_broadcast_buffers (
bool, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờbroadcast_buffersđược truyền choDistributedDataParallel. Mặc định sẽ làFalsenếu sử dụng gradient checkpointing,Truetrong các trường hợp khác. - ddp_static_graph (
bool, tùy chọn) — Khi sử dụng huấn luyện phân tán, giá trị của cờstatic_graphđược truyền choDistributedDataParallel. - ddp_backend (
str, tùy chọn) — Backend để sử dụng cho huấn luyện phân tán. Phải là một trong"nccl","mpi","xccl","gloo","hccl". - ddp_timeout (
int, tùy chọn, mặc định là 1800) — Thời gian chờ cho các lệnh gọitorch.distributed.init_process_group, được sử dụng để tránh hết thời gian chờ socket GPU khi thực hiện các thao tác chậm trong các lần chạy phân tán. Vui lòng tham khảo tài liệu PyTorch để biết thêm thông tin.
FSDP (Fully Sharded Data Parallel)
- fsdp (
bool, tùy chọn, mặc định làNone) — Bật PyTorch Fully Sharded Data Parallel (FSDP) cho huấn luyện phân tán. TruyềnTrueđể bật FSDP. - fsdp_config (
strhoặcdict, tuỳ chọn) — Cấu hình cho khifsdpđược bật. Truyền đường dẫn đến tệp cấu hình JSON, chẳng hạn nhưfsdp_config.json, hoặc một dict đã được nạp sẵn.Các khóa được hỗ trợ:
- version (
int, tùy chọn, mặc định là2): Phiên bản FSDP cần sử dụng (2cho FSDP2,1cho FSDP1 cũ). - reshard_after_forward (
bool, tuỳ chọn, mặc định làTrue): Có nên reshard các tham số sau bước forward hay không. Đặt thànhFalseđể giữ các tham số ở trạng thái đã gather giữa các bước forward và backward, tránh việc thực hiện lại all-gather, và sử dụng bộ nhớ đỉnh cao hơn. - cpu_offload (
bool, tùy chọn, mặc định làFalse): Chuyển các tham số và gradient sang CPU khi không được sử dụng để tiết kiệm bộ nhớ GPU. - activation_checkpointing (
bool, tùy chọn, mặc định làFalse): Đặt thànhTrueđể giảm bộ nhớ bằng cách tính lại các activation trong bước truyền ngược. Khi sử dụng FSDP, hãy ưu tiên tham số này hơn đối số huấn luyệnactivation_checkpointing, vì đối số đó gây ra một all-gather thừa trong bước truyền ngược. - cpu_ram_efficient_loading (
bool, tùy chọn, mặc định làFalse): Đặt thànhTrueđể tải checkpoint được huấn luyện trước chỉ trên tiến trình đầu tiên. Các tiến trình khác bắt đầu với trọng số trống và nhận trọng số qua broadcast. - state_dict_type (
str, tùy chọn, mặc định là"FULL_STATE_DICT"): Định dạng checkpoint:"FULL_STATE_DICT"(một tệp tương thích với HF duy nhất) hoặc"SHARDED_STATE_DICT"(một tệp cho mỗi rank, nhanh hơn với các mô hình lớn). - auto_wrap_policy (
str, tùy chọn, mặc định là"TRANSFORMER_BASED_WRAP"): Chính sách auto-wrap cần sử dụng. Chọn"TRANSFORMER_BASED_WRAP","SIZE_BASED_WRAP"hoặc"NO_WRAP". - transformer_layer_cls_to_wrap (
list[str], optional): Tên lớp (phân biệt hoa thường) của các lớp Transformer cần bọc, ví dụLlamaDecoderLayer. Thông thường không cần thiết: chính sách bọc sẽ tự động dùng_no_split_modulescủa mô hình, vốn bao phủ hầu hết các mô hình transformers. - min_num_params (
int, tùy chọn, mặc định là0): Số lượng tham số tối thiểu cho mỗi module để tự động bọc dựa trên kích thước (được sử dụng vớiauto_wrap_policy="SIZE_BASED_WRAP"). - xla (
bool, tùy chọn, mặc định làFalse): Có sử dụng PyTorch/XLA Fully Sharded Data Parallel Training hay không. Tính năng thử nghiệm. - xla_fsdp_settings (
dict, tùy chọn): Từ điển các tham số bọc XLA FSDP. Để xem danh sách đầy đủ các tùy chọn, hãy xem mã nguồn XLA FSDP. - xla_fsdp_grad_ckpt (
bool, tùy chọn, mặc định làFalse): Đặt thànhTrueđể sử dụng gradient checkpointing trên mỗi lớp được bọc bởi XLA FSDP lồng nhau. Yêu cầuxla=Truevà một chính sách tự động bọc (min_num_paramshoặctransformer_layer_cls_to_wrap).
- version (
DeepSpeed
- deepspeed (
strhoặcdict, tuỳ chọn) — Bật DeepSpeed tích hợp. Giá trị là một trong các lựa chọn sau:- Đường dẫn đến tệp cấu hình JSON của DeepSpeed:
"ds_config.json" - Đã tải cấu hình dưới dạng từ điển
Nếu sử dụng khởi tạo ZeRO, hãy khởi tạo mô hình của bạn sau khi khởi tạo
TrainingArguments, nếu không ZeRO sẽ không được áp dụng.
- Đường dẫn đến tệp cấu hình JSON của DeepSpeed:
Gỡ lỗi & Phân tích hiệu năng (Thử nghiệm)
- debug (
strhoặc danh sáchDebugOption, tuỳ chọn, mặc định là"") — Bật một hoặc nhiều tính năng gỡ lỗi. Đây là tính năng thử nghiệm. Các tuỳ chọn khả dụng:- “underflow_overflow”: phát hiện tràn trong đầu vào/đầu ra của mô hình và báo cáo các khung cuối cùng dẫn đến sự kiện
- “tpu_metrics_debug”: in các chỉ số gỡ lỗi trên TPU
- skip_memory_metrics (
bool, tùy chọn, mặc định làTrue) — Có bỏ qua việc thêm báo cáo bộ nhớ của trình phân tích vào các chỉ số hay không. Mặc định là bỏ qua vì điều này làm chậm tốc độ huấn luyện và đánh giá.
Cờ kịch bản bên ngoài (không được Trainer sử dụng)
- do_train (
bool, tùy chọn, mặc định làFalse) — Có chạy huấn luyện hay không. Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để sử dụng trong các script huấn luyện/đánh giá của bạn. - do_eval (
bool, tùy chọn) — Có chạy đánh giá trên tập kiểm tra hay không. Sẽ được đặt thànhTruenếueval_strategykhác"no". Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để bạn sử dụng trong các script huấn luyện/đánh giá của mình. - do_predict (
bool, tùy chọn, mặc định làFalse) — Có chạy dự đoán trên tập kiểm tra hay không. Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để các script huấn luyện/đánh giá của bạn sử dụng. - resume_from_checkpoint (
str, tùy chọn) — Đường dẫn đến thư mục chứa checkpoint hợp lệ cho model của bạn. Tham số này không được Trainer sử dụng trực tiếp, mà được thiết kế để các script huấn luyện/đánh giá của bạn sử dụng. - sortish_sampler (
bool, tuỳ chọn, mặc định làFalse) — có sử dụng sortish sampler hay không. Hiện tại chỉ khả thi nếu các dataset nền tảng là Seq2SeqDataset nhưng sẽ sớm khả dụng rộng rãi hơn.Nó sắp xếp các đầu vào theo độ dài nhằm giảm thiểu kích thước đệm, với một chút ngẫu nhiên cho tập huấn luyện.
- predict_with_generate (
bool, tùy chọn, mặc định làFalse) — Có sử dụng generate để tính các chỉ số sinh (ROUGE, BLEU) hay không. - generation_max_length (
int, tùy chọn) —max_lengthđược sử dụng trong mỗi vòng lặp đánh giá khipredict_with_generate=True. Mặc định sẽ dùng giá trịmax_lengthcủa cấu hình mô hình. - generation_num_beams (
int, tùy chọn) —num_beamsđược sử dụng trong mỗi vòng lặp đánh giá khipredict_with_generate=True. Mặc định sẽ dùng giá trịnum_beamscủa cấu hình mô hình. - generation_config (
strhoặcPathhoặc GenerationConfig, tùy chọn) — Cho phép nạp một GenerationConfig từ phương thứcfrom_pretrained. Điều này có thể là:- một chuỗi, model id của một cấu hình model được huấn luyện trước được lưu trữ trong một kho model trên huggingface.co.
- đường dẫn đến một thư mục chứa tệp cấu hình được lưu bằng phương thức
save_pretrained(), ví dụ:
./my_model_directory/. - một đối tượng GenerationConfig.
Lớp cấu hình để kiểm soát mọi khía cạnh của việc huấn luyện mô hình với Trainer. TrainingArguments tập trung tất cả các siêu tham số, cài đặt tối ưu hóa, tùy chọn ghi nhật ký và lựa chọn hạ tầng cần thiết cho việc huấn luyện.
HfArgumentParser có thể chuyển lớp này thành các đối số argparse có thể được chỉ định trên dòng lệnh.
Thực hiện serialize instance này trong khi thay thế Enum bằng giá trị của chúng và GenerationConfig bằng các từ điển (để hỗ trợ serialize JSON). Nó làm mờ các giá trị token bằng cách xóa giá trị của chúng.