국문과 유목민

[WandB] Huggingface라이브러리와 사용하기 본문

IT 견문록/추가 학습 정리

[WandB] Huggingface라이브러리와 사용하기

논곰 2022. 3. 23. 22:56
해당 포스팅은 Hugging Face Transformers에서 제공하는 Huggingface library에서 wandb를 사용하는 간단한 방법에 대해 다루고 있습니다. 아주 기초적인 사용법에 대해서 다루고 있기 때문에 위의 공식 Documents를 확인하시는 것이 가장 좋음을 미리 알려드립니다.

wandb

소개

 팀프로젝트나 개인 실험을 함에 있어서 wandb를 사용하면, 실험 관리나 공유가 쉽다. 이전에 팀과제를 수행할 때도 wandb를 사용했을 때 만족도가 높아서 이번 팀 과제를 수행할 때도 사용하고자 했다. 하지만 이번 과제의 경우 베이스라인 코드가 HuggingFace Transformer 라이브러리로 구현되어 있어서 어떻게 사용해야 될 지 몰라서 검색을 좀 했다. 

 문제를 해결하기는 했는데, 검색을 하면서 wandb에 대한 한글 포스팅이 많이 없다는 생각이 들었다. 아마 공식 Document가 잘 정리되어 있기 때문에 별도로 정리를 하신 분이 많이 없는 것 같다. 하지만 나처럼 Huggingface도 wandb도 익숙하지 않은 사람에게는 필요한 정보만 딱 뽑아서 볼 수 있는 포스팅이 있으면 좋겠다는 생각이 들어서 간단히 정리해보고자 한다.

wandb 기본 setting

1. wandb 라이브러리를 설치한다.

2. wandb 로그인을 한다. 이때 wandb key값은 wandb에서 프로젝트를 생성하거나 하면 쉽게 얻을 수 있다.

pip install wandb
wandb login

하단의 개인별 Key를 복사해서 login 시 입력해주면 된다.

 

사실 login까지 끝내면 다 끝냈다고 해도 된다. 기존 Pytorch로 작성된 코드에 wandb를 적용하고 싶다면 위의 Quickstart를 그대로 따라하기만 하면 된다. (log는 train epoch 안에, config는 모델 parameter 세팅 후 넣어주면 된다)

wandb-Huggingface

wandb를 Huggingface에서 사용하는 방법도 사실 크게 어렵지 않다. 보통 Huggingface라이브러리를 사용해서 Train을 진행하게 되면 TrainingArgumentes와 Trainer를 사용하게 될텐데 해당 함수 내에 몇 가지를 넣어주기만 하면 된다.

from transformers import TrainingArguments, Trainer

args = TrainingArguments(
    # other args and kwargs here
    report_to="wandb",  # enable logging to W&B
    run_name="bert-base-high-lr"  # name of the W&B run (optional)
)

trainer = Trainer(
    # other args and kwargs here
    args=args,  # your training args
)

trainer.train()  # start training and logging to W&B

 사실 이렇게만 해도 Transformer에서 wandb를 사용할 수 있다. 하지만 이렇게 했을 때 프로젝트나 실험이름을 설정하기 약간 어렵다. 따라서 이 경우 wandb.init을 사용해주면 된다. 다음과 같이 setting만 해주면 내가 원하는 'project'에 내가 설정한 'display_name'으로 올라가게 된다. wandb.init을 사용하면 이외에 다른 설정값들도 변경을 할 수 있다. wandb.init을 참고해보자.

import wandb
from transformers import TrainingArguments, Trainer

project = "test-project-name" # W&B Projects
display_name = "wandb-model-test" # Model_name displayed in W&B Projects
wandb.init(project=project, name=display_name)

args = TrainingArguments(
    # other args and kwargs here
    report_to="wandb"  # enable logging to W&B
)

trainer = Trainer(
    # other args and kwargs here
    args=args,  # your training args
)

trainer.train()  # start training and logging to W&B

 

Comments