Transformers documentation
Callbacks
Callbacks
Callbacks là các đối tượng có thể tùy chỉnh hành vi của vòng lặp huấn luyện trong Trainer của PyTorch, cho phép kiểm tra trạng thái của vòng lặp huấn luyện (để báo cáo tiến độ, ghi log trên TensorBoard hoặc các nền tảng ML khác…) và đưa ra các quyết định (như dừng sớm).
Callbacks là các đoạn mã “chỉ đọc”, ngoại trừ đối tượng TrainerControl mà chúng trả về, chúng không thể thay đổi bất kỳ điều gì trong vòng lặp huấn luyện. Đối với các tùy chỉnh yêu cầu thay đổi trong vòng lặp huấn luyện, bạn nên kế thừa Trainer và ghi đè các phương thức cần thiết (xem trainer để có ví dụ).
Mặc định, TrainingArguments.report_to được đặt thành "none".
Lớp chính triển khai các callback là TrainerCallback. Nó nhận TrainingArguments được dùng để khởi tạo Trainer, có thể truy cập trạng thái nội bộ của Trainer đó thông qua TrainerState, và có thể thực hiện một số hành động trên vòng lặp huấn luyện thông qua TrainerControl.
Các Callback có sẵn
Dưới đây là danh sách các TrainerCallback có sẵn trong thư viện:
Một TrainerCallback gửi các nhật ký đến Comet ML.
Cài đặt tích hợp Comet tùy chọn.
Môi trường:
- COMET_MODE (
str, tuỳ chọn, mặc định làget_or_create): Kiểm soát việc tạo và ghi log vào một thí nghiệm Comet mới hay thêm vào một thí nghiệm hiện có. Nó chấp nhận các giá trị sau:get_or_create: Tự động quyết định dựa trên việcCOMET_EXPERIMENT_KEYcó được đặt hay không và liệu một Experiment với khóa đó đã tồn tại hay chưa.create: Luôn tạo một Comet Experiment mới.get: Luôn cố gắng thêm vào một Comet Experiment hiện có. Yêu cầuCOMET_EXPERIMENT_KEYphải được đặt.
- COMET_START_ONLINE (
bool, tùy chọn): Có tạo Experiment trực tuyến hay ngoại tuyến hay không. - COMET_PROJECT_NAME (
str, tùy chọn): Tên dự án Comet cho các thí nghiệm. - COMET_LOG_ASSETS (
str, tùy chọn, mặc định làTRUE): Có ghi log các tài sản huấn luyện (checkpoints, v.v.) lên Comet hay không. Có thể làTRUEhoặcFALSE.
Để biết thêm về một số mục có thể cấu hình trong môi trường, hãy xem tại đây.
Một TrainerCallback xử lý luồng mặc định của vòng lặp huấn luyện cho việc ghi log, đánh giá và tạo checkpoint.
Một TrainerCallback đơn giản chỉ in ra các log.
Một TrainerCallback hiển thị tiến trình của quá trình huấn luyện hoặc đánh giá.
Bạn có thể sửa đổi max_str_len để kiểm soát độ dài cắt ngắn của các chuỗi khi ghi log.
lớp transformers.EarlyStoppingCallback
< source >( early_stopping_patience: int = 1early_stopping_threshold: float | None = 0.0 )
Tham số
- early_stopping_patience (
int) — Dùng cùng vớimetric_for_best_modelđể dừng huấn luyện khi chỉ số được chỉ định xấu đi trongearly_stopping_patiencelần đánh giá liên tiếp. - early_stopping_threshold(
float, optional) — Dùng cùng TrainingArgumentsmetric_for_best_modelvàearly_stopping_patienceđể chỉ định mức độ cải thiện cần thiết của chỉ số được chỉ định để đáp ứng điều kiện dừng sớm. `
Một TrainerCallback xử lý việc dừng sớm.
Callback này phụ thuộc vào chức năng load_best_model_at_end của đối số TrainingArguments để đặt best_metric trong TrainerState. Lưu ý rằng nếu đối số save_steps của TrainingArguments khác với eval_steps, thì early stopping sẽ không xảy ra cho đến bước lưu tiếp theo.
lớp transformers.integrations.TensorBoardCallback
< source >( tb_writer = None )
Một TrainerCallback gửi các nhật ký đến TensorBoard.
Môi trường:
- TENSORBOARD_LOGGING_DIR (
str, tùy chọn, mặc định làNone): Thư mục ghi log để lưu kết quả. Giá trị mặc định là os.path.join(args.output_dir, default_logdir())
Một TrainerCallback ghi log các chỉ số vào Trackio.
Cài đặt tích hợp Trackio tùy chọn.
Để tùy chỉnh cấu hình, bạn cũng có thể đặt project, trackio_space_id, trackio_bucket_id, trackio_static_space_id và hub_private_repo trong TrainingArguments.
Một TrainerCallback ghi lại các chỉ số, phương tiện và điểm kiểm tra mô hình vào Weight and Biases.
Cài đặt tích hợp tùy chọn Weights & Biases (wandb).
Có thể kế thừa và ghi đè phương thức này để tùy chỉnh quá trình thiết lập nếu cần. Tìm thêm thông tin tại đây. Bạn cũng có thể ghi đè các biến môi trường sau:
Môi trường:
- WANDB_LOG_MODEL (
str, tùy chọn, mặc định là"false"): Có nên ghi log mô hình và các checkpoint trong quá trình huấn luyện hay không. Có thể là"end","checkpoint"hoặc"false". Nếu đặt là"end", mô hình sẽ được tải lên vào cuối quá trình huấn luyện. Nếu đặt là"checkpoint", checkpoint sẽ được tải lên mỗiargs.save_steps. Nếu đặt là"false", mô hình sẽ không được tải lên. Sử dụng cùng vớiload_best_model_at_end()để tải lên mô hình tốt nhất. - WANDB_WATCH (
str, tùy chọn, mặc định là"false"): Có thể là"gradients","all","parameters"hoặc"false". Đặt thành"all"để ghi log gradient và tham số. - WANDB_PROJECT (
str, tùy chọn, mặc định là"huggingface"): Đặt giá trị này thành một chuỗi tùy chỉnh để lưu kết quả vào một dự án khác.
Một TrainerCallback gửi các log đến MLflow. Có thể bị vô hiệu hóa bằng cách đặt biến môi trường DISABLE_MLFLOW_INTEGRATION = TRUE.
Cài đặt tích hợp MLflow tùy chọn.
Môi trường:
- HF_MLFLOW_LOG_ARTIFACTS (
str, tuỳ chọn): Có nên sử dụng tiện ích.log_artifact()của MLflow để ghi log các artifact hay không. Điều này chỉ có ý nghĩa nếu ghi log lên một máy chủ từ xa, ví dụ s3 hoặc GCS. Nếu đặt thànhTruehoặc 1, mỗi checkpoint được lưu trongoutput_dircủa TrainingArguments sẽ được sao chép vào kho lưu trữ artifact cục bộ hoặc từ xa tại mỗi lần lưu. Việc sử dụng mà không có kho lưu trữ từ xa sẽ chỉ sao chép các tệp vào vị trí artifact của bạn. - MLFLOW_TRACKING_URI (
str, tùy chọn): Có lưu các run tại một đường dẫn cụ thể hay trên máy chủ từ xa hay không. Mặc định không được đặt, điều này sẽ bỏ qua việc thiết lập URI theo dõi hoàn toàn. - MLFLOW_EXPERIMENT_NAME (
str, tuỳ chọn, mặc định làNone): Xác định có sử dụng một experiment_name của MLflow để khởi chạy run hay không. Mặc định làNone, trỏ đến thí nghiệmDefaulttrong MLflow. Ngược lại, đây là tên thí nghiệm (phân biệt hoa thường) cần được kích hoạt. Nếu thí nghiệm với tên này không tồn tại, một thí nghiệm mới với tên này sẽ được tạo. - MLFLOW_TAGS (
str, tùy chọn): Một chuỗi chứa bản dump của từ điển các cặp khóa/giá trị sẽ được thêm vào chạy MLflow dưới dạng thẻ. Ví dụ:os.environ['MLFLOW_TAGS']='{"release.candidate": "RC1", "release.version": "2.2.0"}'. - MLFLOW_NESTED_RUN (
str, tùy chọn): Có sử dụng các run lồng nhau của MLflow hay không. Nếu đặt thànhTruehoặc 1, sẽ tạo một run lồng nhau bên trong run hiện tại. - MLFLOW_RUN_ID (
str, tùy chọn): Cho phép gắn lại vào một run hiện có, điều này hữu ích khi tiếp tục huấn luyện từ một checkpoint. Khi biến môi trườngMLFLOW_RUN_IDđược đặt,start_runsẽ cố gắng tiếp tục một run với run ID được chỉ định và các tham số khác sẽ bị bỏ qua. - MLFLOW_FLATTEN_PARAMS (
str, tùy chọn, mặc định làFalse): Có nên làm phẳng từ điển tham số trước khi ghi log hay không. - MLFLOW_MAX_LOG_PARAMS (
int, tùy chọn): Đặt số lượng tham số tối đa để ghi log trong lần chạy.
Một TrainerCallback gửi các nhật ký đến AzureML.
Một TrainerCallback theo dõi lượng khí thải CO2 của quá trình huấn luyện.
Một TrainerCallback gửi các nhật ký đến ClearML.
Môi trường:
- CLEARML_PROJECT (
str, tùy chọn, mặc định làHuggingFace Transformers): Tên dự án ClearML. - CLEARML_TASK (
str, tùy chọn, mặc định làTrainer): Tên tác vụ ClearML. - CLEARML_LOG_MODEL (
bool, tùy chọn, mặc định làFalse): Có nên ghi log các mô hình dưới dạng artifact trong quá trình huấn luyện hay không.
TrainerCallback ghi log vào DagsHub. Kế thừa từ MLflowCallback
Cài đặt tích hợp ghi log của DagsHub.
Môi trường:
- HF_DAGSHUB_LOG_ARTIFACTS (
str, tùy chọn): Có nên lưu các sản phẩm dữ liệu và mô hình cho thí nghiệm hay không. Mặc định làFalse.
lớp transformers.integrations.FlyteCallback
< source >( save_log_history: bool = Truesync_checkpoints: bool = True )
Tham số
- save_log_history (
bool, tùy chọn, mặc định làTrue) — Khi được đặt thành True, nhật ký huấn luyện sẽ được lưu dưới dạng một Flyte Deck. - sync_checkpoints (
bool, tùy chọn, mặc định làTrue) — Khi được đặt thành True, các checkpoint sẽ được đồng bộ hóa với Flyte và có thể được sử dụng để tiếp tục huấn luyện trong trường hợp bị gián đoạn.
Một TrainerCallback gửi các log đến Flyte. Lưu ý: Callback này chỉ hoạt động bên trong một task của Flyte.
Một TrainerCallback báo cáo tiến độ huấn luyện cho Kubeflow Trainer.
Callback này được đăng ký tự động khi huấn luyện bên trong một Kubeflow TrainJob với cổng tính năng TrainJobRuntimeStatus được bật. Bộ điều khiển Kubeflow sẽ tiêm các biến môi trường cần thiết vào pod huấn luyện.
Biến môi trường (được tiêm bởi bộ điều khiển):
KUBEFLOW_TRAINER_SERVER_URL: điểm cuối HTTPS cho các bản cập nhật trạng tháiKUBEFLOW_TRAINER_SERVER_CA_CERT: Đường dẫn đến chứng chỉ CA để xác minh TLSKUBEFLOW_TRAINER_SERVER_TOKEN: Đường dẫn đến token của service account để xác thực
Thông tin được báo cáo:
- Tỷ lệ tiến độ (0-100%)
- Thời gian còn lại ước tính (giây)
- Các chỉ số huấn luyện (loss, learning_rate, v.v.)
Các tính năng:
- Tự động hạn chế tần suất (tối đa 1 cập nhật mỗi 5 giây) để tránh quá tải bộ điều khiển
- Caching token (5 phút) để giảm thiểu I/O tệp
- Chỉ rank 0 báo cáo tiến độ trong huấn luyện phân tán
- Lỗi im lặng - các vấn đề về mạng sẽ không làm gián đoạn quá trình huấn luyện
Có thể tắt bằng cách đặt biến môi trường DISABLE_KUBEFLOW_INTEGRATION=TRUE.
lớp transformers.integrations.DVCLiveCallback
< source >( live: typing.Any | None = Nonelog_model: typing.Union[typing.Literal['all'], bool, NoneType] = None**kwargs )
Tham số
- live (
dvclive.Live, tùy chọn, mặc định làNone) — Thư mục Live tùy chọn. Nếu là None, một thư mục mới sẽ được tạo bằng **kwargs. - log_model (Union[Literal[“all”], bool], tùy chọn, mặc định là
None) — Có nên sử dụngdvclive.Live.log_artifact()để ghi log các checkpoint được tạo bởi Trainer hay không. Nếu đặt thànhTrue, checkpoint cuối cùng sẽ được ghi log vào cuối quá trình huấn luyện. Nếu đặt thành"all", toàn bộoutput_dircủa TrainingArguments sẽ được ghi log tại mỗi checkpoint.
Một TrainerCallback gửi các log đến DVCLive.
Sử dụng các biến môi trường bên dưới trong setup để cấu hình tích hợp. Để tùy chỉnh callback này ngoài các biến môi trường đó, xem ở đây.
Cài đặt tích hợp DVCLive tùy chọn. Để tùy chỉnh callback này ngoài các biến môi trường bên dưới, xem tại đây.
Môi trường:
- HF_DVCLIVE_LOG_MODEL (
str, tùy chọn): Có nên sử dụngdvclive.Live.log_artifact()để ghi log các checkpoint được tạo bởi Trainer hay không. Nếu đặt thànhTruehoặc 1, checkpoint cuối cùng sẽ được ghi log vào cuối quá trình huấn luyện. Nếu đặt thànhall, toàn bộoutput_dircủa TrainingArguments sẽ được ghi log tại mỗi checkpoint.
Một TrainerCallback ghi lại các chỉ số, phương tiện và điểm kiểm tra mô hình vào SwanLab.
Cài đặt tích hợp tùy chọn SwanLab (swanlab).
Bạn có thể kế thừa và ghi đè phương thức này để tùy chỉnh quá trình thiết lập nếu cần. Tìm thêm thông tin tại đây.
Bạn cũng có thể ghi đè các biến môi trường sau. Tìm thêm thông tin về biến môi trường tại đây
Môi trường:
SWANLAB_API_KEY (
str, tùy chọn, mặc định làNone): Khóa API đám mây. Trong quá trình đăng nhập, biến môi trường này được kiểm tra trước tiên. Nếu nó không tồn tại, hệ thống sẽ kiểm tra xem người dùng đã đăng nhập hay chưa. Nếu chưa, quy trình đăng nhập sẽ được khởi động.- Nếu một chuỗi được truyền vào giao diện đăng nhập, biến môi trường này sẽ bị bỏ qua.
- Nếu người dùng đã đăng nhập, biến môi trường này sẽ có ưu tiên cao hơn thông tin đăng nhập được lưu cục bộ.
SWANLAB_PROJECT (
str, tùy chọn, mặc định làNone): Đặt giá trị này thành một chuỗi tùy chỉnh để lưu kết quả vào một dự án khác. Nếu không được chỉ định, tên của thư mục chạy hiện tại sẽ được sử dụng.SWANLAB_LOG_DIR (
str, tùy chọn, mặc định làswanlog): Biến môi trường này chỉ định đường dẫn lưu trữ cho các tệp nhật ký khi chạy ở chế độ cục bộ. Mặc định, nhật ký được lưu trong một thư mục có tên swanlog dưới thư mục làm việc.SWANLAB_MODE (
Literal["local", "cloud", "disabled"], tuỳ chọn, mặc định làcloud): Chế độ phân tích của SwanLab, liên quan đến các callback được đăng ký bởi người vận hành. Hiện tại có ba chế độ: local, cloud và disabled. Lưu ý: Phân biệt chữ hoa chữ thường. Tìm thêm thông tin tại đâySWANLAB_LOG_MODEL (
str, tùy chọn, mặc định làNone): SwanLab hiện chưa hỗ trợ chức năng chế độ lưu trữ. Tính năng này sẽ có sẵn trong một bản phát hành tương laiSWANLAB_WEB_HOST (
str, tùy chọn, mặc định làNone): Địa chỉ web cho môi trường đám mây SwanLab của phiên bản riêng tư (miễn phí)SWANLAB_API_HOST (
str, tùy chọn, mặc định làNone): Địa chỉ API cho môi trường đám mây SwanLab của phiên bản riêng tư (miễn phí)SWANLAB_RUN_ID (
str, tùy chọn, mặc định làNone): ID của thí nghiệm để tiếp tục một lần chạy trước đó. Sử dụng cùng vớiSWANLAB_RESUMEđể tiếp tục một thí nghiệm hiện có.SWANLAB_RESUME (
str, tùy chọn, mặc định làNone): Chế độ tiếp tục ("must","allow","never"). Mặc định là"allow"khi sử dụngresume_from_checkpoint.
TrainerCallback
lớp transformers.TrainerCallback
< source >( )
Tham số
- args (TrainingArguments) — Các đối số huấn luyện được sử dụng để khởi tạo Trainer.
- state (TrainerState) — Trạng thái hiện tại của Trainer.
- control (TrainerControl) — Đối tượng được trả về cho Trainer và có thể được sử dụng để đưa ra một số quyết định.
- model (PreTrainedModel hoặc
torch.nn.Module) — Mô hình đang được huấn luyện. - processing_class ([
PreTrainedTokenizerhoặcBaseImageProcessorhoặcProcessorMixinhoặcFeatureExtractionMixin]) — Lớp xử lý được sử dụng để mã hóa dữ liệu. Có thể là một tokenizer, một processor, một image processor hoặc một feature extractor. - optimizer (
torch.optim.Optimizer) — Bộ tối ưu được sử dụng cho các bước huấn luyện. - lr_scheduler (
torch.optim.lr_scheduler.LambdaLR) — Trình lập lịch được sử dụng để thiết lập tốc độ học. - train_dataloader (
torch.utils.data.DataLoader, tùy chọn) — Dataloader hiện tại được sử dụng cho quá trình huấn luyện. - eval_dataloader (
torch.utils.data.DataLoader, tùy chọn) — Dataloader hiện tại được sử dụng để đánh giá. - metrics (
dict[str, float]) — Các chỉ số được tính toán trong giai đoạn đánh giá gần nhất.Chúng chỉ có thể truy cập trong sự kiện
on_evaluate. - logs (
dict[str, float]) — Các giá trị cần ghi log.Chúng chỉ có thể truy cập được trong sự kiện
on_log.
Một lớp dành cho các đối tượng sẽ kiểm tra trạng thái của vòng lặp huấn luyện tại một số sự kiện và đưa ra một số quyết định. Tại mỗi sự kiện đó, các đối số sau đây có sẵn:
Đối tượng control là đối tượng duy nhất có thể được thay đổi bởi callback, trong trường hợp đó, sự kiện thay đổi nó phải trả về phiên bản đã được sửa đổi.
Các đối số args, state và control là các đối số theo vị trí cho tất cả các sự kiện, tất cả các đối số khác được nhóm trong kwargs.
Bạn có thể giải nén các đối số cần thiết trong chữ ký của sự kiện bằng cách sử dụng chúng. Ví dụ, hãy xem mã của
PrinterCallback đơn giản.
Ví dụ:
class PrinterCallback(TrainerCallback):
def on_log(self, args, state, control, logs=None, **kwargs):
_ = logs.pop("total_flos", None)
if state.is_local_process_zero:
print(logs)on_epoch_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào đầu một epoch.
on_epoch_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào cuối một epoch.
on_evaluate
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi sau một giai đoạn đánh giá.
on_init_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào cuối quá trình khởi tạo của Trainer.
Sự kiện được gọi sau khi ghi lại các nhật ký cuối cùng.
on_optimizer_step
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi sau bước tối ưu hóa nhưng trước khi các gradient được đặt về không. Hữu ích để theo dõi các gradient.
on_pre_optimizer_step
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi trước bước tối ưu hóa nhưng sau khi cắt tỉa gradient. Hữu ích để giám sát gradient.
on_predict
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControlmetrics**kwargs )
Sự kiện được gọi sau một lần dự đoán thành công.
on_prediction_step
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi sau một bước dự đoán.
on_push_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi trước khi đẩy mô hình lên hub, ở đầu của Trainer.push_to_hub và Trainer._push_from_checkpoint.
Sự kiện được gọi sau khi lưu checkpoint.
on_step_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào đầu mỗi bước huấn luyện. Nếu sử dụng tích lũy gradient, một bước huấn luyện có thể bao gồm nhiều đầu vào.
on_step_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào cuối một bước huấn luyện. Nếu sử dụng tích lũy gradient, một bước huấn luyện có thể mất nhiều đầu vào.
on_substep_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào cuối một substep trong quá trình tích lũy gradient.
on_train_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào đầu quá trình huấn luyện.
on_train_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Sự kiện được gọi vào cuối quá trình huấn luyện.
Dưới đây là một ví dụ về cách đăng ký một callback tùy chỉnh với Trainer của PyTorch:
class MyCallback(TrainerCallback):
"A callback that prints a message at the beginning of training"
def on_train_begin(self, args, state, control, **kwargs):
print("Starting training")
trainer = Trainer(
model,
args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
callbacks=[MyCallback], # We can either pass the callback class this way or an instance of it (MyCallback())
)Một cách khác để đăng ký callback là gọi trainer.add_callback() như sau:
trainer = Trainer(...)
trainer.add_callback(MyCallback)
# Alternatively, we can pass an instance of the callback class
trainer.add_callback(MyCallback())TrainerState
lớp transformers.TrainerState
< source >( epoch: float = 0global_step: int = 0max_steps: int = 0logging_steps: int = 500eval_steps: int = 500save_steps: int = 500train_batch_size: int | None = Nonenum_train_epochs: int = 0num_input_tokens_seen: int = 0total_flos: float = 0log_history: list = Nonebest_metric: float | None = Nonebest_global_step: int | None = Nonebest_model_checkpoint: str | None = Noneis_local_process_zero: bool = Trueis_world_process_zero: bool = Trueis_hyper_param_search: bool = Falsetrial_name: str | None = Nonetrial_params: dict[str, str | float | int | bool] | None = Nonestateful_callbacks: list['TrainerCallback'] | None = None )
Tham số
- epoch (
float, tùy chọn) — Chỉ được đặt trong quá trình huấn luyện, đại diện cho epoch mà quá trình huấn luyện đang ở (phần thập phân là phần trăm của epoch hiện tại đã hoàn thành). - global_step (
int, tùy chọn, mặc định là 0) — Trong quá trình huấn luyện, đại diện cho số bước cập nhật đã hoàn thành. - max_steps (
int, tùy chọn, mặc định là 0) — Số bước cập nhật cần thực hiện trong quá trình huấn luyện hiện tại. - logging_steps (
int, tùy chọn, mặc định là 500) — Ghi log mỗi X bước cập nhật - eval_steps (
int, tùy chọn) — Chạy đánh giá mỗi X bước. - save_steps (
int, tùy chọn, mặc định là 500) — Lưu checkpoint mỗi X bước cập nhật. - train_batch_size (
int, tùy chọn) — Kích thước lô (batch size) cho dataloader huấn luyện. Chỉ cần thiết lập khi đã sử dụngauto_find_batch_size. - num_input_tokens_seen (
int, tùy chọn, mặc định là 0) — Khi theo dõi các token đầu vào, đây là số lượng token đã được xem trong quá trình huấn luyện (số lượng token đầu vào, không phải số lượng token dự đoán). - total_flos (
float, tùy chọn, mặc định là 0) — Tổng số phép toán số dấu phẩy động mà mô hình đã thực hiện kể từ khi bắt đầu huấn luyện (được lưu dưới dạng số float để tránh tràn). - log_history (
list[dict[str, float]], tùy chọn) — Danh sách các nhật ký được thực hiện kể từ khi bắt đầu huấn luyện. - best_metric (
float, tùy chọn) — Khi theo dõi mô hình tốt nhất, giá trị của chỉ số tốt nhất được ghi nhận cho đến hiện tại. - best_global_step (
int, tùy chọn) — Khi theo dõi mô hình tốt nhất, bước mà tại đó chỉ số tốt nhất được ghi nhận. Được dùng để thiết lậpbest_model_checkpoint. - best_model_checkpoint (
str, tùy chọn) — Khi theo dõi mô hình tốt nhất, giá trị của tên checkpoint cho mô hình tốt nhất được tìm thấy cho đến nay. - is_local_process_zero (
bool, tuỳ chọn, mặc định làTrue) — Quyết định xem tiến 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. - is_world_process_zero (
bool, tùy chọn, mặc định làTrue) — Quyết định xem tiến trình này có phải là tiến 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ỉ có giá trịTruecho một tiến trình). - is_hyper_param_search (
bool, tùy chọn, mặc định làFalse) — Liệu chúng ta có đang trong quá trình tìm kiếm siêu tham số bằng Trainer.hyperparameter_search hay không. Điều này sẽ ảnh hưởng đến cách dữ liệu được ghi log trong TensorBoard. - stateful_callbacks (
list[StatefulTrainerCallback], tùy chọn) — Các callback được gắn vàoTrainermà trạng thái của chúng cần được lưu hoặc khôi phục. Các callback liên quan cần triển khai một hàmstatevàfrom_state.
Một lớp chứa trạng thái bên trong của Trainer sẽ được lưu cùng với model và optimizer khi checkpointing và được truyền cho TrainerCallback.
Trong toàn bộ lớp này, một bước được hiểu là một bước cập nhật. Khi sử dụng tích lũy gradient, một bước cập nhật có thể yêu cầu nhiều lần truyền tiến và truyền lùi: nếu bạn sử dụng
gradient_accumulation_steps=n, thì một bước cập nhật yêu cầu xử lý n lô dữ liệu.
Tính toán và lưu trữ giá trị tuyệt đối cho các bước ghi log, eval và lưu dựa trên việc đó có phải là một tỷ lệ hay không.
Lưu trữ các tham chiếu huấn luyện ban đầu cần thiết trong self
Tạo một instance từ nội dung của json_path.
Lưu nội dung của instance này dưới định dạng JSON trong json_path.
TrainerControl
lớp transformers.TrainerControl
< source >( should_training_stop: bool = Falseshould_epoch_stop: bool = Falseshould_save: bool = Falseshould_evaluate: bool = Falseshould_log: bool = False )
Tham số
- should_training_stop (
bool, tuỳ chọn, mặc định làFalse) — Liệu quá trình huấn luyện có nên bị gián đoạn hay không.Nếu
True, biến này sẽ không được đặt lại thànhFalse. Quá trình huấn luyện sẽ chỉ dừng lại. - should_epoch_stop (
bool, tuỳ chọn, mặc định làFalse) — Liệu epoch hiện tại có nên bị ngắt hay không.Nếu
True, biến này sẽ được đặt lại thànhFalsevào đầu epoch tiếp theo. - should_save (
bool, tuỳ chọn, mặc định làFalse) — Liệu mô hình có nên được lưu ở bước này hay không.Nếu
True, biến này sẽ được đặt lại thànhFalseở đầu bước tiếp theo. - should_evaluate (
bool, tùy chọn, mặc định làFalse) — Liệu mô hình có nên được đánh giá ở bước này hay không.Nếu
True, biến này sẽ được đặt lại thànhFalseở đầu bước tiếp theo. - should_log (
bool, tuỳ chọn, mặc định làFalse) — Liệu các log có nên được báo cáo ở bước này hay không.Nếu
True, biến này sẽ được đặt lại thànhFalseở đầu bước tiếp theo.
Một lớp xử lý luồng điều khiển của Trainer. Lớp này được TrainerCallback sử dụng để kích hoạt một số công tắc trong vòng lặp huấn luyện.