Try in Colab
๋ช ์ค์ ์ฝ๋๋ก ์ฐจ์ธ๋ ๋ก๊น ๊ตฌํ

์ฝ๋๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด Google Colab์ ํ์ธํด ๋ณด์ธ์.
์์ํ๊ธฐ: Experiments ์ถ์
๊ฐ์ ํ๊ณ API ํค ๋ง๋ค๊ธฐ
API ํค๋ ์ฌ์ฉ์์ ์ปดํจํฐ๊ฐ W&B์ ์ธ์ฆ๋๋๋ก ํฉ๋๋ค. ์ฌ์ฉ์ ํ๋กํ์์ API ํค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.๋ณด๋ค ๊ฐ์ํ๋ ๋ฐฉ๋ฒ์ ์ํ์๋ฉด https://wandb.ai/authorize๋ก ๋ฐ๋ก ์ด๋ํ์ฌ API ํค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ํ์๋ API ํค๋ฅผ ๋ณต์ฌํ์ฌ ๋น๋ฐ๋ฒํธ ๊ด๋ฆฌ์์ ๊ฐ์ ์์ ํ ์์น์ ์ ์ฅํ์ธ์.
- ์ค๋ฅธ์ชฝ ์๋จ ๋ชจ์๋ฆฌ์ ์๋ ์ฌ์ฉ์ ํ๋กํ ์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค.
- User Settings๋ฅผ ์ ํํ ๋ค์ API Keys ์น์ ์ผ๋ก ์คํฌ๋กคํฉ๋๋ค.
- Reveal์ ํด๋ฆญํฉ๋๋ค. ํ์๋ API ํค๋ฅผ ๋ณต์ฌํฉ๋๋ค. API ํค๋ฅผ ์จ๊ธฐ๋ ค๋ฉด ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นฉ๋๋ค.
wandb ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋ฐ ๋ก๊ทธ์ธ
wandb ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก์ปฌ์ ์ค์นํ๊ณ ๋ก๊ทธ์ธํ๋ ๋ฐฉ๋ฒ:
- Command Line
- Python
- Python notebook
-
WANDB_API_KEYํ๊ฒฝ ๋ณ์๋ฅผ API ํค๋ก ์ค์ ํฉ๋๋ค. -
wandb๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๊ณ ๋ก๊ทธ์ธํฉ๋๋ค.
ํ๋ก์ ํธ ์ด๋ฆ ์ง์
W&B Project๋ ๊ด๋ จ Runs์์ ๊ธฐ๋ก๋ ๋ชจ๋ ์ฐจํธ, ๋ฐ์ดํฐ ๋ฐ Models๊ฐ ์ ์ฅ๋๋ ๊ณณ์ ๋๋ค. ํ๋ก์ ํธ ์ด๋ฆ์ ์ง์ ํ๋ฉด ์์ ์ ๊ตฌ์ฑํ๊ณ ๋จ์ผ ํ๋ก์ ํธ์ ๋ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํ ๊ณณ์ ๋ณด๊ดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. Run์ ํ๋ก์ ํธ์ ์ถ๊ฐํ๋ ค๋ฉดWANDB_PROJECT ํ๊ฒฝ ๋ณ์๋ฅผ ํ๋ก์ ํธ ์ด๋ฆ์ผ๋ก ์ค์ ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. WandbCallback์ ์ด ํ๋ก์ ํธ ์ด๋ฆ ํ๊ฒฝ ๋ณ์๋ฅผ ๊ฐ์ ธ์ Run์ ์ค์ ํ ๋ ์ฌ์ฉํฉ๋๋ค.
- Command Line
- Python
- Python notebook
Trainer๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ ์ ํ๋ก์ ํธ ์ด๋ฆ์ ์ค์ ํด์ผ ํฉ๋๋ค.huggingface๋ก ์ค์ ๋ฉ๋๋ค.
ํธ๋ ์ด๋ Runs๋ฅผ W&B์ ๋ก๊น
Trainer ํธ๋ ์ด๋ ์ธ์๋ฅผ ์ ์ํ ๋ ์ฝ๋ ๋ด๋ถ ๋๋ ์ปค๋งจ๋๋ผ์ธ์์ ๊ฐ์ฅ ์ค์ํ ๋จ๊ณ๋ W&B๋ฅผ ์ฌ์ฉํ์ฌ ๋ก๊น
์ ํ์ฑํํ๊ธฐ ์ํด report_to๋ฅผ "wandb"๋ก ์ค์ ํ๋ ๊ฒ์
๋๋ค.
TrainingArguments์ logging_steps ์ธ์๋ ํธ๋ ์ด๋ ์ค์ ํธ๋ ์ด๋ ๋ฉํธ๋ฆญ์ด W&B๋ก ํธ์๋๋ ๋น๋๋ฅผ ์ ์ดํฉ๋๋ค. run_name ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ W&B์์ ํธ๋ ์ด๋ Run์ ์ด๋ฆ์ ์ง์ ํ ์๋ ์์ต๋๋ค.
์ด์ ๋ชจ๋ธ์ด ํธ๋ ์ด๋ํ๋ ๋์ ์์ค, ํ๊ฐ ๋ฉํธ๋ฆญ, ๋ชจ๋ธ ํ ํด๋ก์ง ๋ฐ ๊ทธ๋ ์ด๋์ธํธ๋ฅผ W&B์ ๋ก๊น
ํฉ๋๋ค.
- Command Line
- Python
TensorFlow๋ฅผ ์ฌ์ฉํ๊ณ ๊ณ์ ๊ฐ์? PyTorch
Trainer๋ฅผ TensorFlow TFTrainer๋ก ๋ฐ๊พธ๊ธฐ๋ง ํ์ธ์.๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ ์ค์
Artifacts๋ฅผ ์ฌ์ฉํ๋ฉด ์ต๋ 100GB์ Models ๋ฐ Datasets๋ฅผ ๋ฌด๋ฃ๋ก ์ ์ฅํ ๋ค์ Weights & Biases Registry๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Registry๋ฅผ ์ฌ์ฉํ๋ฉด Models๋ฅผ ๋ฑ๋กํ์ฌ ํ์ํ๊ณ ํ๊ฐํ๊ณ , ์คํ ์ด์ง์ ์ค๋นํ๊ฑฐ๋ ํ๋ก๋์ ํ๊ฒฝ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. Hugging Face ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ Artifacts์ ๋ก๊น ํ๋ ค๋ฉดWANDB_LOG_MODEL ํ๊ฒฝ ๋ณ์๋ฅผ ๋ค์ _์ค ํ๋_๋ก ์ค์ ํฉ๋๋ค.
checkpoint:TrainingArguments์์args.save_steps๋ง๋ค ์ฒดํฌํฌ์ธํธ๋ฅผ ์ ๋ก๋ํฉ๋๋ค.end:load_best_model_at_end๋ ์ค์ ๋ ๊ฒฝ์ฐ ํธ๋ ์ด๋์ด ๋๋๋ฉด ๋ชจ๋ธ์ ์ ๋ก๋ํฉ๋๋ค.false: ๋ชจ๋ธ์ ์ ๋ก๋ํ์ง ์์ต๋๋ค.
- Command Line
- Python
- Python notebook
Trainer๋ Models๋ฅผ W&B Project์ ์
๋ก๋ํฉ๋๋ค. ๋ก๊น
ํ๋ ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ Artifacts UI๋ฅผ ํตํด ๋ณผ ์ ์์ผ๋ฉฐ ์ ์ฒด ๋ชจ๋ธ ๊ณ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค(UI์์ ์์ ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ ๋ณด๋ ค๋ฉด ์ฌ๊ธฐ ์ฐธ์กฐ).
๊ธฐ๋ณธ์ ์ผ๋ก
WANDB_LOG_MODEL์ด end๋ก ์ค์ ๋ ๊ฒฝ์ฐ ๋ชจ๋ธ์ model-{run_id}๋ก W&B Artifacts์ ์ ์ฅ๋๊ณ , WANDB_LOG_MODEL์ด checkpoint๋ก ์ค์ ๋ ๊ฒฝ์ฐ checkpoint-{run_id}๋ก ์ ์ฅ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ TrainingArguments์์ run_name์ ์ ๋ฌํ๋ฉด ๋ชจ๋ธ์ model-{run_name} ๋๋ checkpoint-{run_name}๋ก ์ ์ฅ๋ฉ๋๋ค.W&B Registry
์ฒดํฌํฌ์ธํธ๋ฅผ Artifacts์ ๋ก๊น ํ ํ์๋ **Registry**๋ฅผ ์ฌ์ฉํ์ฌ ์ต๊ณ ์ ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ ๋ฑ๋กํ๊ณ ํ ์ ์ฒด์์ ์ค์ ์ง์คํํ ์ ์์ต๋๋ค. Registry๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ๋ณ๋ก ์ต๊ณ ์ Models๋ฅผ ๊ตฌ์ฑํ๊ณ , Models์ ๋ผ์ดํ์ฌ์ดํด์ ๊ด๋ฆฌํ๊ณ , ์ ์ฒด ML ๋ผ์ดํ์ฌ์ดํด์ ์ถ์ ๋ฐ ๊ฐ์ฌํ๊ณ , ๋ค์ด์คํธ๋ฆผ ์์ ์ ์๋ํํ ์ ์์ต๋๋ค. ๋ชจ๋ธ Artifact๋ฅผ ์ฐ๊ฒฐํ๋ ค๋ฉด Registry๋ฅผ ์ฐธ์กฐํ์ธ์.ํธ๋ ์ด๋ ์ค ํ๊ฐ ๊ฒฐ๊ณผ ์๊ฐํ
ํธ๋ ์ด๋ ๋๋ ํ๊ฐ ์ค ๋ชจ๋ธ ์ถ๋ ฅ์ ์๊ฐํํ๋ ๊ฒ์ ๋ชจ๋ธ ํธ๋ ์ด๋ ๋ฐฉ์์ ์ค์ ๋ก ์ดํดํ๋ ๋ฐ ์ข ์ข ํ์์ ์ ๋๋ค. Transformers Trainer์ ์ฝ๋ฐฑ ์์คํ ์ ์ฌ์ฉํ๋ฉด ๋ชจ๋ธ์ ํ ์คํธ ์์ฑ ์ถ๋ ฅ ๋๋ ๊ธฐํ ์์ธก๊ณผ ๊ฐ์ ์ถ๊ฐ์ ์ธ ์ ์ฉํ ๋ฐ์ดํฐ๋ฅผ W&B Tables์ ๋ก๊น ํ ์ ์์ต๋๋ค. ์๋์ **์ฌ์ฉ์ ์ง์ ๋ก๊น ์น์ **์์ ํธ๋ ์ด๋ ์ค ํ๊ฐ ์ถ๋ ฅ์ ๋ก๊น ํ์ฌ ๋ค์๊ณผ ๊ฐ์ W&B Table์ ๋ก๊น ํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ฒด ๊ฐ์ด๋๋ฅผ ์ฐธ์กฐํ์ธ์.
W&B Run ์ข ๋ฃ(๋ ธํธ๋ถ ์ ์ฉ)
ํธ๋ ์ด๋์ด Python ์คํฌ๋ฆฝํธ์ ์บก์ํ๋ ๊ฒฝ์ฐ ์คํฌ๋ฆฝํธ๊ฐ ์๋ฃ๋๋ฉด W&B Run์ด ์ข ๋ฃ๋ฉ๋๋ค. Jupyter ๋๋ Google Colab ๋ ธํธ๋ถ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐwandb.finish()๋ฅผ ํธ์ถํ์ฌ ํธ๋ ์ด๋์ด ์๋ฃ๋์์์ ์๋ ค์ผ ํฉ๋๋ค.
๊ฒฐ๊ณผ ์๊ฐํ
ํธ๋ ์ด๋ ๊ฒฐ๊ณผ๋ฅผ ๋ก๊น ํ์ผ๋ฉด W&B Dashboard์์ ๊ฒฐ๊ณผ๋ฅผ ๋์ ์ผ๋ก ํ์ํ ์ ์์ต๋๋ค. ์ ์ฐํ๊ณ ๋ํํ ์๊ฐํ๋ฅผ ํตํด ํ ๋ฒ์ ์์ญ ๊ฐ์ Runs๋ฅผ ๋น๊ตํ๊ณ , ํฅ๋ฏธ๋ก์ด ๋ฐ๊ฒฌ์ ํ๋ํ๊ณ , ๋ณต์กํ ๋ฐ์ดํฐ์์ ํต์ฐฐ๋ ฅ์ ์ป๋ ๊ฒ์ด ์ฝ์ต๋๋ค.๊ณ ๊ธ ๊ธฐ๋ฅ ๋ฐ FAQ
์ต๊ณ ์ ๋ชจ๋ธ์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
TrainingArguments๋ฅผ load_best_model_at_end=True๋ก Trainer์ ์ ๋ฌํ๋ฉด W&B๋ ๊ฐ์ฅ ์ฑ๋ฅ์ด ์ข์ ๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ Artifacts์ ์ ์ฅํฉ๋๋ค.
๋ชจ๋ธ ์ฒดํฌํฌ์ธํธ๋ฅผ Artifacts๋ก ์ ์ฅํ๋ ๊ฒฝ์ฐ Registry๋ก ์น๊ฒฉํ ์ ์์ต๋๋ค. Registry์์ ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
- ML ์์ ๋ณ๋ก ์ต๊ณ ์ ๋ชจ๋ธ ๋ฒ์ ์ ๊ตฌ์ฑํฉ๋๋ค.
- Models๋ฅผ ์ค์ ์ง์คํํ๊ณ ํ๊ณผ ๊ณต์ ํฉ๋๋ค.
- ํ๋ก๋์ ์ ์ํด Models๋ฅผ ์คํ ์ด์งํ๊ฑฐ๋ ์ถ๊ฐ ํ๊ฐ๋ฅผ ์ํด ๋ถ๋งํฌํฉ๋๋ค.
- ๋ค์ด์คํธ๋ฆผ CI/CD ํ๋ก์ธ์ค๋ฅผ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค.
์ ์ฅ๋ ๋ชจ๋ธ์ ๋ก๋ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
WANDB_LOG_MODEL์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ์ W&B Artifacts์ ์ ์ฅํ ๊ฒฝ์ฐ ์ถ๊ฐ ํธ๋ ์ด๋์ ์ํด ๋๋ ์ถ๋ก ์ ์คํํ๊ธฐ ์ํด ๋ชจ๋ธ ๊ฐ์ค์น๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ์ด์ ๊ณผ ๋์ผํ Hugging Face ์ํคํ
์ฒ์ ๋ค์ ๋ก๋ํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ฒดํฌํฌ์ธํธ์์ ํธ๋ ์ด๋์ ์ฌ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
WANDB_LOG_MODEL='checkpoint'๋ฅผ ์ค์ ํ ๊ฒฝ์ฐ model_dir์ TrainingArguments์ model_name_or_path ์ธ์๋ก ์ฌ์ฉํ๊ณ resume_from_checkpoint=True๋ฅผ Trainer์ ์ ๋ฌํ์ฌ ํธ๋ ์ด๋์ ์ฌ๊ฐํ ์๋ ์์ต๋๋ค.
ํธ๋ ์ด๋ ์ค์ ํ๊ฐ ์ํ์ ๋ก๊น ํ๊ณ ๋ณด๋ ๋ฐฉ๋ฒ
TransformersTrainer๋ฅผ ํตํด W&B์ ๋ก๊น
ํ๋ ๊ฒ์ Transformers ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ WandbCallback์์ ์ฒ๋ฆฌํฉ๋๋ค. Hugging Face ๋ก๊น
์ ์ฌ์ฉ์ ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ WandbCallback์ ์๋ธํด๋์ฑํ๊ณ Trainer ํด๋์ค์ ์ถ๊ฐ์ ์ธ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ ์ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ์ด ์ฝ๋ฐฑ์ ์์ ํ ์ ์์ต๋๋ค.
์๋๋ ์ด ์๋ก์ด ์ฝ๋ฐฑ์ HF Trainer์ ์ถ๊ฐํ๋ ์ผ๋ฐ์ ์ธ ํจํด์ด๋ฉฐ, ์๋์๋ ํ๊ฐ ์ถ๋ ฅ์ W&B Table์ ๋ก๊น
ํ๋ ์ฝ๋ ์์ฑ ์์ ๊ฐ ์์ต๋๋ค.
ํธ๋ ์ด๋ ์ค ํ๊ฐ ์ํ ๋ณด๊ธฐ
๋ค์ ์น์ ์์๋ ๋ชจ๋ธ ์์ธก์ ์คํํ๊ณ ํธ๋ ์ด๋ ์ค์ ํ๊ฐ ์ํ์ W&B Table์ ๋ก๊น ํ๋๋กWandbCallback์ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค. Trainer ์ฝ๋ฐฑ์ on_evaluate ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ eval_steps์์ ์ํํฉ๋๋ค.
์ฌ๊ธฐ์๋ ํ ํฌ๋์ด์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ์ถ๋ ฅ์์ ์์ธก ๋ฐ ๋ ์ด๋ธ์ ๋์ฝ๋ฉํ๋ decode_predictions ํจ์๋ฅผ ์์ฑํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์์ธก ๋ฐ ๋ ์ด๋ธ์์ pandas DataFrame์ ๋ง๋ค๊ณ DataFrame์ epoch ์ด์ ์ถ๊ฐํฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก DataFrame์์ wandb.Table์ ๋ง๋ค๊ณ wandb์ ๋ก๊น
ํฉ๋๋ค.
๋ํ ์์ธก์ freq ์ํฌํฌ๋ง๋ค ๋ก๊น
ํ์ฌ ๋ก๊น
๋น๋๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค.
์ฐธ๊ณ : ์ผ๋ฐ์ ์ธ WandbCallback๊ณผ ๋ฌ๋ฆฌ ์ด ์ฌ์ฉ์ ์ง์ ์ฝ๋ฐฑ์ Trainer๋ฅผ ์ธ์คํด์คํํ ํ์ Trainer์ ์ถ๊ฐํด์ผ ํ๋ฉฐ Trainer ์ด๊ธฐํ ์ค์๋ ์ถ๊ฐํ๋ฉด ์ ๋ฉ๋๋ค.
Trainer ์ธ์คํด์ค๋ ์ด๊ธฐํ ์ค์ ์ฝ๋ฐฑ์ ์ ๋ฌ๋๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด๋ค ์ถ๊ฐ W&B ์ค์ ์ด ์ ๊ณต๋๋์?
ํ๊ฒฝ ๋ณ์๋ฅผ ์ค์ ํ์ฌTrainer๋ก ๋ก๊น
๋๋ ํญ๋ชฉ์ ์ถ๊ฐ๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. W&B ํ๊ฒฝ ๋ณ์์ ์ ์ฒด ๋ชฉ๋ก์ ์ฌ๊ธฐ์์ ์ฐพ์ ์ ์์ต๋๋ค.
- Command Line
- Notebook
wandb.init๋ฅผ ์ฌ์ฉ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ธ๊ฐ์?
Trainer๊ฐ ์ฌ์ฉํ๋ WandbCallback์ Trainer๊ฐ ์ด๊ธฐํ๋ ๋ ๋ด๋ถ์ ์ผ๋ก wandb.init๋ฅผ ํธ์ถํฉ๋๋ค. ๋๋ Trainer๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ ์ wandb.init๋ฅผ ํธ์ถํ์ฌ Run์ ์๋์ผ๋ก ์ค์ ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด W&B Run ๊ตฌ์ฑ์ ์์ ํ ์ ์ดํ ์ ์์ต๋๋ค.
init์ ์ ๋ฌํ ์ ์๋ ์๋ ์๋์ ๊ฐ์ต๋๋ค. wandb.init๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฐธ์กฐ ์ค๋ช
์๋ฅผ ํ์ธํ์ธ์.