Transformers documentation

Callbacks

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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:

lớp transformers.integrations.CometCallback

< >

( )

Một TrainerCallback gửi các nhật ký đến Comet ML.

cài đặt

< >

( argsstatemodel )

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ệc COMET_EXPERIMENT_KEY có đượ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ầu COMET_EXPERIMENT_KEY phả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à TRUE hoặc FALSE.

Để 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.

lớp transformers.DefaultFlowCallback

< >

( )

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.

lớp transformers.PrinterCallback

< >

( )

Một TrainerCallback đơn giản chỉ in ra các log.

lớp transformers.ProgressCallback

< >

( max_str_len: int = 100 )

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

< >

( early_stopping_patience: int = 1early_stopping_threshold: float | None = 0.0 )

Tham số

  • early_stopping_patience (int) — Dùng cùng với metric_for_best_model để dừng huấn luyện khi chỉ số được chỉ định xấu đi trong early_stopping_patience lần đánh giá liên tiếp.
  • early_stopping_threshold(float, optional) — Dùng cùng TrainingArguments metric_for_best_model và 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

< >

( tb_writer = None )

Tham số

  • tb_writer (SummaryWriter, tùy chọn) — Writer sẽ được sử dụng. Nếu không được đặt, một writer sẽ được khởi tạo.

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())

lớp transformers.integrations.TrackioCallback

< >

( )

Một TrainerCallback ghi log các chỉ số vào Trackio.

cài đặt

< >

( argsstatemodel**kwargs )

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.

lớp transformers.integrations.WandbCallback

< >

( )

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

< >

( argsstatemodel**kwargs )

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ỗi args.save_steps . Nếu đặt là "false", mô hình sẽ không được tải lên. Sử dụng cùng với load_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.

lớp transformers.integrations.MLflowCallback

< >

( )

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

< >

( argsstatemodel )

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ành True hoặc 1, mỗi checkpoint được lưu trong output_dir củ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ệm Default trong 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ành True hoặ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ường MLFLOW_RUN_ID được đặt, start_run sẽ 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.

class transformers.integrations.AzureMLCallback

< >

( azureml_run = None )

Một TrainerCallback gửi các nhật ký đến AzureML.

lớp transformers.integrations.CodeCarbonCallback

< >

( )

Một TrainerCallback theo dõi lượng khí thải CO2 của quá trình huấn luyện.

lớp transformers.integrations.ClearMLCallback

< >

( )

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.

lớp transformers.integrations.DagsHubCallback

< >

( )

TrainerCallback ghi log vào DagsHub. Kế thừa từ MLflowCallback

cài đặt

< >

( *args**kwargs )

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

< >

( 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.

Ví dụ:

# Note: This example skips over some setup steps for brevity.
from flytekit import current_context, task


@task
def train_hf_transformer():
    cp = current_context().checkpoint
    trainer = Trainer(..., callbacks=[FlyteCallback()])
    output = trainer.train(resume_from_checkpoint=cp.restore())

lớp transformers.integrations.KubeflowCallback

< >

( )

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ái
  • KUBEFLOW_TRAINER_SERVER_CA_CERT: Đường dẫn đến chứng chỉ CA để xác minh TLS
  • KUBEFLOW_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

< >

( 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ụng dvclive.Live.log_artifact() để ghi log các checkpoint được tạo bởi Trainer hay không. Nếu đặt thành True, 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_dir củ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

< >

( argsstatemodel )

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ụng dvclive.Live.log_artifact() để ghi log các checkpoint được tạo bởi Trainer hay không. Nếu đặt thành True hoặ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ành all, toàn bộ output_dir của TrainingArguments sẽ được ghi log tại mỗi checkpoint.

lớp transformers.integrations.SwanLabCallback

< >

( )

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

< >

( argsstatemodel**kwargs )

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 đây

  • SWANLAB_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 lai

  • SWANLAB_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ới SWANLAB_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ụng resume_from_checkpoint.

TrainerCallback

lớp transformers.TrainerCallback

< >

( )

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 ([PreTrainedTokenizer hoặc BaseImageProcessor hoặc ProcessorMixin hoặc FeatureExtractionMixin]) — 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

< >

( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )

Sự kiện được gọi vào đầu một epoch.

on_epoch_end

< >

( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )

Sự kiện được gọi vào cuối một epoch.

on_evaluate

< >

( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )

Sự kiện được gọi sau một giai đoạn đánh giá.

on_init_end

< >

( 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.

on_log

< >

( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )

Sự kiện được gọi sau khi ghi lại các nhật ký cuối cùng.

on_optimizer_step

< >

( 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

< >

( 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

< >

( 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

< >

( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )

Sự kiện được gọi sau một bước dự đoán.

on_push_begin

< >

( 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.

on_save

< >

( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )

Sự kiện được gọi sau khi lưu checkpoint.

on_step_begin

< >

( 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

< >

( 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

< >

( 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

< >

( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )

Sự kiện được gọi vào đầu quá trình huấn luyện.

on_train_end

< >

( 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

< >

( 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ụng auto_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ập best_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ị True cho 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ào Trainer mà 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àm state và 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.

compute_steps

< >

( argsmax_steps )

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.

init_training_references

< >

( trainermax_stepsnum_train_epochstrial )

Lưu trữ các tham chiếu huấn luyện ban đầu cần thiết trong self

load_from_json

< >

( json_path: str )

Tạo một instance từ nội dung của json_path.

save_to_json

< >

( json_path: str )

Lưu nội dung của instance này dưới định dạng JSON trong json_path.

TrainerControl

lớp transformers.TrainerControl

< >

( 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ành False. 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ành False và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ành False ở đầ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ành False ở đầ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ành False ở đầ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.

Update on GitHub