DrDavis's picture
Upload folder using huggingface_hub
17c6d62 verified

์ฝœ๋ฐฑ [[callbacks]]

์ฝœ๋ฐฑ์€ PyTorch [Trainer]์˜ ๋ฐ˜๋ณต ํ•™์Šต ๋™์ž‘์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค (์ด ๊ธฐ๋Šฅ์€ TensorFlow์—์„œ๋Š” ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค). ์ฝœ๋ฐฑ์€ ๋ฐ˜๋ณต ํ•™์Šต์˜ ์ƒํƒœ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ (์ง„ํ–‰ ์ƒํ™ฉ ๋ณด๊ณ , TensorBoard ๋˜๋Š” ๊ธฐํƒ€ ๋จธ์‹  ๋Ÿฌ๋‹ ํ”Œ๋žซํผ์— ๋กœ๊ทธ ๋‚จ๊ธฐ๊ธฐ ๋“ฑ) ๊ฒฐ์ •(์˜ˆ: ์กฐ๊ธฐ ์ข…๋ฃŒ)์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝœ๋ฐฑ์€ [TrainerControl] ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋ฐ˜๋ณต ํ•™์Šต์—์„œ ์–ด๋–ค ๊ฒƒ๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” "์ฝ๊ธฐ ์ „์šฉ" ์ฝ”๋“œ ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋ณต ํ•™์Šต์— ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ ์ž‘์—…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, [Trainer]๋ฅผ ์„œ๋ธŒํด๋ž˜์Šค๋กœ ๋งŒ๋“ค์–ด ํ•„์š”ํ•œ ๋ฉ”์†Œ๋“œ๋“ค์„ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค (์˜ˆ์‹œ๋Š” trainer๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”).

๊ธฐ๋ณธ์ ์œผ๋กœ TrainingArguments.report_to๋Š” "all"๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ, [Trainer]๋Š” ๋‹ค์Œ ์ฝœ๋ฐฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • [DefaultFlowCallback]๋Š” ๋กœ๊ทธ, ์ €์žฅ, ํ‰๊ฐ€์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋™์ž‘์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • [PrinterCallback] ๋˜๋Š” [ProgressCallback]๋Š” ์ง„ํ–‰ ์ƒํ™ฉ์„ ํ‘œ์‹œํ•˜๊ณ  ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค ([TrainingArguments]๋ฅผ ํ†ตํ•ด tqdm์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์ฝœ๋ฐฑ์ด ์‚ฌ์šฉ๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋‘ ๋ฒˆ์งธ๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค).
  • [~integrations.TensorBoardCallback]๋Š” TensorBoard๊ฐ€ (PyTorch >= 1.4 ๋˜๋Š” tensorboardX๋ฅผ ํ†ตํ•ด) ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.WandbCallback]๋Š” wandb๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.CometCallback]๋Š” comet_ml์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.MLflowCallback]๋Š” mlflow๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.NeptuneCallback]๋Š” neptune์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.AzureMLCallback]๋Š” azureml-sdk๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.CodeCarbonCallback]๋Š” codecarbon์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.ClearMLCallback]๋Š” clearml์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.DagsHubCallback]๋Š” dagshub์ด ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.FlyteCallback]๋Š” flyte๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • [~integrations.DVCLiveCallback]๋Š” dvclive๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€๋งŒ ํ•ด๋‹น ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด, TrainingArguments.report_to๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํ†ตํ•ฉ ๊ธฐ๋Šฅ ๋ชฉ๋ก์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์˜ˆ: ["azure_ml", "wandb"]).

์ฝœ๋ฐฑ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ฃผ์š” ํด๋ž˜์Šค๋Š” [TrainerCallback]์ž…๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค๋Š” [Trainer]๋ฅผ ์ธ์Šคํ„ด์Šคํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ [TrainingArguments]๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ํ•ด๋‹น Trainer์˜ ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ [TrainerState]๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, [TrainerControl]์„ ํ†ตํ•ด ๋ฐ˜๋ณต ํ•™์Šต์—์„œ ์ผ๋ถ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝœ๋ฐฑ [[available-callbacks]]

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ [TrainerCallback] ๋ชฉ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

[[autodoc]] integrations.CometCallback - setup

[[autodoc]] DefaultFlowCallback

[[autodoc]] PrinterCallback

[[autodoc]] ProgressCallback

[[autodoc]] EarlyStoppingCallback

[[autodoc]] integrations.TensorBoardCallback

[[autodoc]] integrations.WandbCallback - setup

[[autodoc]] integrations.MLflowCallback - setup

[[autodoc]] integrations.AzureMLCallback

[[autodoc]] integrations.CodeCarbonCallback

[[autodoc]] integrations.NeptuneCallback

[[autodoc]] integrations.ClearMLCallback

[[autodoc]] integrations.DagsHubCallback

[[autodoc]] integrations.FlyteCallback

[[autodoc]] integrations.DVCLiveCallback - setup

TrainerCallback [[trainercallback]]

[[autodoc]] TrainerCallback

์—ฌ๊ธฐ PyTorch [Trainer]์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ์ž ์ •์˜ ์ฝœ๋ฐฑ์„ ๋“ฑ๋กํ•˜๋Š” ์˜ˆ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค:

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],  # ์šฐ๋ฆฌ๋Š” ์ฝœ๋ฐฑ ํด๋ž˜์Šค๋ฅผ ์ด ๋ฐฉ์‹์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๊ทธ๊ฒƒ์˜ ์ธ์Šคํ„ด์Šค(MyCallback())๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
)

๋˜ ๋‹ค๋ฅธ ์ฝœ๋ฐฑ์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ trainer.add_callback()์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค:

trainer = Trainer(...)
trainer.add_callback(MyCallback)
# ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์ฝœ๋ฐฑ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
trainer.add_callback(MyCallback())

TrainerState [[trainerstate]]

[[autodoc]] TrainerState

TrainerControl [[trainercontrol]]

[[autodoc]] TrainerControl