메인 콘텐츠로 건너뛰기
Colab에서 실행해 보기

시작하기

이미 TensorBoard를 사용 중이라면 wandb와 쉽게 통합할 수 있습니다.
import tensorflow as tf
import wandb

사용자 정의 메트릭 로깅

추가로 TensorBoard에 로깅되지 않는 사용자 정의 메트릭을 기록해야 하는 경우, 코드에서 run.log()를 호출하면 됩니다: run.log({"custom": 0.8}) TensorBoard를 동기화할 때는 run.log()의 step 인자가 사용되지 않습니다. 다른 step 값을 설정하려면, 아래와 같이 step 메트릭과 함께 메트릭을 로깅할 수 있습니다:
with wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True) as run:
    run.log({"custom": 0.8, "global_step":global_step}, step=global_step)

TensorFlow Estimator 훅

무엇을 로그로 남길지 더 세밀하게 제어하려면, wandb는 TensorFlow Estimator를 위한 훅도 제공합니다. 이 훅은 그래프에서 생성되는 모든 tf.summary 값을 로그로 기록합니다.
import tensorflow as tf
import wandb

run = wandb.init(config=tf.FLAGS)

estimator.train(hooks=[wandb.tensorflow.WandbHook(steps_per_log=1000)])
run.finish()

수동으로 로그 기록하기

TensorFlow에서 메트릭을 기록하는 가장 간단한 방법은 TensorFlow 로거를 사용해 tf.summary를 기록하는 것입니다.
import wandb
run = wandb.init(config=tf.flags.FLAGS, sync_tensorboard=True)
with tf.Session() as sess:
    # ...
    wandb.tensorflow.log(tf.summary.merge_all())
TensorFlow 2에서는 사용자 정의 루프로 모델을 학습하는 권장 방법이 tf.GradientTape를 사용하는 것입니다. 자세한 내용은 TensorFlow 사용자 정의 학습 자습서를 참고하세요. 사용자 정의 TensorFlow 학습 루프에서 wandb를 사용해 메트릭을 기록하려면 다음 코드 예제를 참고하세요:
    with tf.GradientTape() as tape:
        # 확률 가져오기
        predictions = model(features)
        # 손실 계산
        loss = loss_func(labels, predictions)

    # 메트릭 로깅
    run.log("loss": loss.numpy())
    # 그래디언트 가져오기
    gradients = tape.gradient(loss, model.trainable_variables)
    # 가중치 업데이트
    optimizer.apply_gradients(zip(gradients, model.trainable_variables))
TensorFlow 2에서 학습 루프를 커스터마이즈하는 전체 예제를 참고하실 수 있습니다.

W&B는 TensorBoard와 어떻게 다른가요?

공동 창업자들이 W&B를 만들기 시작했을 때, OpenAI에서 TensorBoard 때문에 답답함을 느끼던 사용자들을 위한 도구를 만들고자 했습니다. 아래는 우리가 특히 개선에 집중한 몇 가지입니다:
  1. 모델 재현: W&B는 실험, 탐색, 그리고 나중에 모델을 다시 재현하는 데 적합합니다. 단순히 지표만 캡처하는 것이 아니라 하이퍼파라미터와 코드 버전까지 함께 기록하고, 버전 관리 상태와 모델 체크포인트도 저장하여 프로젝트를 재현 가능하게 만듭니다.
  2. 자동 정리: 협업자의 프로젝트를 이어받거나, 휴가 후 복귀했거나, 오래된 프로젝트를 다시 열어볼 때도 W&B를 사용하면 지금까지 시도된 모든 모델을 한눈에 확인할 수 있습니다. 그 결과 누구도 시간, GPU 자원, 탄소를 낭비하며 실험을 다시 실행하지 않게 됩니다.
  3. 빠르고 유연한 통합: 5분 만에 프로젝트에 W&B를 추가하세요. 무료 오픈 소스 Python 패키지를 설치하고 코드에 몇 줄만 추가하면, 모델을 실행할 때마다 잘 정리된 메트릭과 기록을 자동으로 남길 수 있습니다.
  4. 지속적이고 중앙화된 대시보드: 로컬 머신이든, 공용 랩 클러스터든, 클라우드의 스팟 인스턴스든 어디에서 모델을 학습하든 결과는 동일한 중앙 대시보드에 모입니다. 여러 머신에서 생성된 TensorBoard 파일을 복사하고 정리하는 데 시간을 들일 필요가 없습니다.
  5. 강력한 테이블: 서로 다른 모델의 결과를 검색, 필터링, 정렬, 그룹화할 수 있습니다. 수천 개의 모델 버전을 손쉽게 살펴보고, 다양한 작업별로 가장 성능이 좋은 모델을 찾을 수 있습니다. TensorBoard는 대규모 프로젝트에서 효율적으로 동작하도록 설계되지 않았습니다.
  6. 협업을 위한 도구: W&B를 사용해 복잡한 머신 러닝 프로젝트를 체계적으로 관리하세요. W&B 링크를 공유하는 것은 매우 간단하며, 비공개 팀을 사용해 모두가 결과를 공유 프로젝트로 전송하도록 할 수 있습니다. 또한 리포트를 통한 협업도 지원합니다. 인터랙티브 시각화를 추가하고, 마크다운으로 작업 내용을 설명할 수 있습니다. 이는 작업 로그를 남기고, 지도교수와 결과를 공유하거나, 랩이나 팀에 결과를 발표하는 데 매우 유용한 방법입니다.
무료 계정으로 시작하세요

예시

통합이 어떻게 동작하는지 확인할 수 있도록 몇 가지 예제를 준비했습니다: