Try in Colab
WandbLogger를 통해 PyTorch Lightning 라이브러리에 직접 통합됩니다.
Lightning 과 통합
- PyTorch Logger
- Fabric Logger
wandb.log() 사용:
WandbLogger는 Trainer의 global_step을 사용하여 W&B에 로깅합니다. 코드에서 wandb.log를 직접 추가로 호출하는 경우 wandb.log()에서 step 인수를 사용하지 마십시오.대신 다른 메트릭과 마찬가지로 Trainer의 global_step을 로깅합니다.
가입 및 API 키 생성
API 키는 사용자의 머신을 W&B에 인증합니다. 사용자 프로필에서 API 키를 생성할 수 있습니다.보다 간소화된 접근 방식을 위해 https://wandb.ai/authorize로 직접 이동하여 API 키를 생성할 수 있습니다. 표시된 API 키를 복사하여 비밀번호 관리자와 같은 안전한 위치에 저장하십시오.
- 오른쪽 상단에서 사용자 프로필 아이콘을 클릭합니다.
- 사용자 설정을 선택한 다음 API 키 섹션으로 스크롤합니다.
- Reveal을 클릭합니다. 표시된 API 키를 복사합니다. API 키를 숨기려면 페이지를 새로 고칩니다.
wandb 라이브러리 설치 및 로그인
wandb 라이브러리를 로컬에 설치하고 로그인하려면:
- Command Line
- Python
- Python notebook
-
API 키로
WANDB_API_KEY환경 변수를 설정합니다. -
wandb라이브러리를 설치하고 로그인합니다.
PyTorch Lightning의 WandbLogger 사용
PyTorch Lightning에는 메트릭 및 모델 weights, 미디어 등을 로깅하는 여러 WandbLogger 클래스가 있습니다.
Lightning과 통합하려면 WandbLogger를 인스턴스화하고 Lightning의 Trainer 또는 Fabric에 전달합니다.
- PyTorch Logger
- Fabric Logger
일반적인 로거 인수
다음은 WandbLogger에서 가장 많이 사용되는 파라미터 중 일부입니다. 모든 로거 인수에 대한 자세한 내용은 PyTorch Lightning 설명서를 검토하십시오.| 파라미터 | 설명 |
|---|---|
project | 로깅할 wandb Project를 정의합니다. |
name | wandb run에 이름을 지정합니다. |
log_model | log_model="all"인 경우 모든 모델을 로깅하고 log_model=True인 경우 트레이닝 종료 시 로깅합니다. |
save_dir | 데이터가 저장되는 경로입니다. |
하이퍼파라미터 로깅
- PyTorch Logger
- Fabric Logger
추가 구성 파라미터 로깅
그레이디언트, 파라미터 히스토그램 및 모델 토폴로지 로깅
모델 오브젝트를wandblogger.watch()에 전달하여 트레이닝하는 동안 모델의 그레이디언트와 파라미터를 모니터링할 수 있습니다. PyTorch Lightning WandbLogger 설명서를 참조하십시오.
메트릭 로깅
- PyTorch Logger
- Fabric Logger
training_step 또는 validation_step methods와 같이 LightningModule 내에서 self.log('my_metric_name', metric_vale)을 호출하여 WandbLogger를 사용할 때 메트릭을 W&B에 로깅할 수 있습니다.아래 코드 조각은 메트릭과 LightningModule 하이퍼파라미터를 로깅하도록 LightningModule을 정의하는 방법을 보여줍니다. 이 예제에서는 torchmetrics 라이브러리를 사용하여 메트릭을 계산합니다.메트릭의 최소/최대값 로깅
wandb의define_metric 함수를 사용하여 W&B 요약 메트릭에 해당 메트릭의 최소, 최대, 평균 또는 최적값을 표시할지 여부를 정의할 수 있습니다. define_metric _이(가) 사용되지 않으면 로깅된 마지막 값이 요약 메트릭에 나타납니다. define_metric 참조 문서(여기)와 가이드(여기)를 참조하십시오.
W&B가 W&B 요약 메트릭에서 최대 검증 정확도를 추적하도록 지시하려면 트레이닝 시작 시 wandb.define_metric을 한 번만 호출하십시오.
- PyTorch Logger
- Fabric Logger
모델 체크포인트
모델 체크포인트를 W&B Artifacts로 저장하려면 LightningModelCheckpoint 콜백을 사용하고 WandbLogger에서 log_model 인수를 설정합니다.
- PyTorch Logger
- Fabric Logger
- Via Logger
- Via wandb
- PyTorch Logger
- Fabric Logger
이미지, 텍스트 등 로깅
WandbLogger에는 미디어를 로깅하기 위한 log_image, log_text 및 log_table 메소드가 있습니다.
wandb.log 또는 trainer.logger.experiment.log를 직접 호출하여 오디오, 분자, 포인트 클라우드, 3D 오브젝트 등과 같은 다른 미디어 유형을 로깅할 수도 있습니다.
- Log Images
- Log Text
- Log Tables
Lightning 및 W&B로 여러 GPU 사용
PyTorch Lightning은 DDP 인터페이스를 통해 Multi-GPU를 지원합니다. 그러나 PyTorch Lightning의 디자인에서는 GPU를 인스턴스화하는 방법에 주의해야 합니다. Lightning은 트레이닝 루프의 각 GPU(또는 순위)가 동일한 초기 조건으로 정확히 동일한 방식으로 인스턴스화되어야 한다고 가정합니다. 그러나 순위 0 프로세스만wandb.run 오브젝트에 엑세스할 수 있으며 0이 아닌 순위 프로세스의 경우 wandb.run = None입니다. 이로 인해 0이 아닌 프로세스가 실패할 수 있습니다. 이러한 상황은 순위 0 프로세스가 이미 충돌한 0이 아닌 순위 프로세스가 조인될 때까지 대기하기 때문에 교착 상태에 놓일 수 있습니다.
이러한 이유로 트레이닝 코드를 설정하는 방법에 주의하십시오. 설정하는 데 권장되는 방법은 코드가 wandb.run 오브젝트와 독립적이도록 하는 것입니다.
예제
Colab 여기에서 비디오 튜토리얼을 따라갈 수 있습니다.자주 묻는 질문
W&B는 Lightning과 어떻게 통합됩니까?
코어 통합은 프레임워크에 구애받지 않는 방식으로 대부분의 로깅 코드를 작성할 수 있도록 해주는 Lightningloggers API를 기반으로 합니다. Logger는 Lightning Trainer에 전달되고 해당 API의 풍부한 훅 및 콜백 시스템을 기반으로 트리거됩니다. 이를 통해 연구 코드는 엔지니어링 및 로깅 코드와 잘 분리됩니다.
추가 코드 없이 통합 로깅은 무엇입니까?
모델 체크포인트를 W&B에 저장하여 볼 수 있거나 향후 run에서 사용하기 위해 다운로드할 수 있습니다. 또한 GPU 사용량 및 네트워크 I/O와 같은 시스템 메트릭, 하드웨어 및 OS 정보와 같은 환경 정보, 코드 상태 (git 커밋 및 차이 패치, 노트북 콘텐츠 및 세션 기록 포함) 및 표준 출력에 인쇄된 모든 항목을 캡처합니다.트레이닝 설정에서 wandb.run을 사용해야 하는 경우는 어떻게 해야 합니까?
엑세스해야 하는 변수의 범위를 직접 확장해야 합니다. 즉, 모든 프로세스에서 초기 조건이 동일한지 확인하십시오.
os.environ["WANDB_DIR"]을 사용하여 모델 체크포인트 디렉토리를 설정할 수 있습니다. 이렇게 하면 0이 아닌 모든 순위 프로세스가 wandb.run.dir에 엑세스할 수 있습니다.