메인 콘텐츠로 건너뛰기

시작하기

이미 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 estimators 훅

무엇을 로깅할지 더 세밀하게 제어하려면, wandb는 TensorFlow estimators용 훅도 제공합니다. 이 훅은 그래프의 모든 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 = 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는 실험, 탐색, 그리고 나중에 모델을 재현하는 데 강점이 있습니다. 메트릭뿐 아니라 하이퍼파라미터와 코드 버전도 캡처하고, 버전 관리 상태와 모델 checkpoint까지 저장할 수 있어 프로젝트를 재현 가능하게 만듭니다.
  2. 자동 정리: 협업자가 진행하던 프로젝트를 이어받든, 휴가 후 다시 프로젝트로 돌아오든, 오래된 프로젝트를 다시 꺼내 보든, W&B를 사용하면 지금까지 시도한 모든 모델을 쉽게 확인할 수 있습니다. 덕분에 실험을 다시 돌리느라 시간, GPU 리소스, 탄소를 낭비하지 않아도 됩니다.
  3. 빠르고 유연한 인테그레이션: 5분이면 프로젝트에 W&B를 추가할 수 있습니다. 무료 오픈소스 Python 패키지를 설치하고 코드에 몇 줄만 추가하면, 모델을 실행할 때마다 깔끔하게 로깅된 메트릭과 기록이 쌓입니다.
  4. 지속적인 중앙 집중식 대시보드: 로컬 머신, 공유 연구실 cluster, 또는 클라우드의 스팟 인스턴스 등 어디에서 모델을 트레이닝하든 결과는 모두 동일한 중앙 집중식 대시보드에 공유됩니다. 여러 머신에 있는 TensorBoard 파일을 복사하고 정리하는 데 시간을 쏟을 필요가 없습니다.
  5. 강력한 테이블: 서로 다른 모델의 결과를 검색, 필터링, 정렬, 그룹화할 수 있습니다. 수천 개의 model versions를 살펴보며 각 작업에 가장 성능이 좋은 모델을 쉽게 찾을 수 있습니다. TensorBoard는 대규모 프로젝트에 잘 맞도록 만들어진 도구가 아닙니다.
  6. 협업을 위한 도구: W&B를 사용해 복잡한 머신러닝 프로젝트를 체계적으로 정리하세요. W&B 링크는 쉽게 공유할 수 있고, 비공개 Teams를 사용해 모두가 공유 프로젝트로 결과를 보내게 할 수 있습니다. 또한 Reports를 통한 협업도 지원합니다. 대화형 시각화를 추가하고 markdown으로 작업 내용을 설명할 수 있습니다. 작업 로그를 남기거나, 관리자와 결과를 공유하거나, 연구실이나 팀에 결과를 발표할 때 유용합니다.
무료 계정으로 시작하세요

예제

인테그레이션이 어떻게 작동하는지 살펴볼 수 있도록 몇 가지 예제를 준비했습니다: