워크스페이스가 갑자기 느려졌다면, 최근 run에서 새로운 metric 키가 대량으로 생성되었는지 확인하세요. 이런 경우에는 run이 한두 개만 표시되는 plot이 많이 나타나는 경우가 많습니다. 의도치 않게 이런 일이 발생했다면, metric 이름 집합을 더 적고 안정적으로 구성해 해당 run을 삭제한 뒤 다시 생성하는 것을 고려해 보세요.
단일 로깅 값의 크기는 1 MB 미만으로 유지하고, 단일 wandb.Run.log() 호출의 총 크기는 25 MB 미만으로 유지하세요.이 권장 사항은 wandb.Image 및 wandb.Audio와 같은 wandb.Media 유형에는 적용되지 않습니다. 이러한 유형은 별도로 처리됩니다.
import jsonimport wandbwith wandb.init(project="wide-values") as run: # 권장하지 않음 run.log({"wide_key": list(range(10000000))}) # 권장하지 않음 with open("large_file.json", "r") as f: large_data = json.load(f) run.log(large_data)
큰 값은 해당 값을 포함한 메트릭뿐 아니라 전체 run의 플롯 로딩 속도도 늦출 수 있습니다.
W&B는 이러한 권장 사항을 초과해 로깅된 데이터도 계속 저장하지만, 페이지가 더 느리게 로드될 수 있습니다.
수집하는 데이터의 가치에 맞는 로깅 빈도를 선택하세요. 너무 자주 로깅하면 SDK 오버헤드가 증가하고 앱이 느려질 수 있으며, 특히 메트릭 카디널리티가 높거나 페이로드가 큰 경우 그 영향이 더 커집니다.시작할 때는 다음 가이드라인을 기준으로 로깅하세요.
로그 빈도: 분당 wandb.Run.log() Call 1,000회 미만
처리량: 분당 로깅된 값 100,000개 미만
비디오 처리량: 분당 40 MB 미만
가능하면 관련 메트릭을 같은 step에 묶어 로깅하세요. 예를 들어, 다음 코드 스니펫은 세 개의 메트릭을 동일한 step에 로깅하므로 각각 따로 로깅하는 것보다 더 효율적입니다.
import wandbwith wandb.init(project="metric-frequency") as run: # 권장: 관련 스칼라 메트릭을 함께 묶어서 기록 run.log( { "loss": 0.12, "accuracy": 0.98, "lr": 1e-4, }, commit=True, )
규모가 큰 프로젝트의 경우 최적의 성능을 위해 프로젝트 내 Runs 수를 10,000개 미만으로 유지하세요.팀에서 정기적으로 Runs의 일부만 사용하는 경우, 오래되었거나 사용 빈도가 낮은 Runs를 별도의 아카이브 프로젝트로 옮기는 것을 고려하세요. Runs 관리를 참조하세요.
워크스페이스에 섹션이 수백 개 있으면 성능이 저하될 수 있습니다.메트릭마다 섹션을 하나씩 만드는 대신, 메트릭을 상위 수준으로 그룹화해 섹션을 만드세요. 섹션이 너무 많다면, 관련 메트릭이 더 적은 수의 섹션으로 그룹화되도록 접미사 대신 접두사를 기준으로 섹션을 만드는 것을 고려하세요.
run당 수천 개의 메트릭을 로깅하는 경우, 시각화할 메트릭을 선택할 수 있도록 수동 워크스페이스를 사용하세요.더 집중된 플롯 집합을 사용하면 워크스페이스가 더 빠르게 로드됩니다. 플롯되지 않은 메트릭도 평소와 같이 계속 수집되고 저장됩니다.워크스페이스를 수동 모드로 재설정하려면, 워크스페이스의 작업 () 메뉴를 클릭한 다음 워크스페이스 재설정을 클릭합니다. 워크스페이스를 재설정해도 run에 저장된 메트릭에는 영향을 주지 않습니다. 워크스페이스 패널 관리를 참조하세요.
Report는 커뮤니케이션과 프레젠테이션용으로 설계되었습니다. 워크스페이스는 많은 Runs와 메트릭 전반에 걸쳐 밀도 높은 대화형 분석을 수행하도록 설계되었습니다.많은 수의 Runs를 비교하거나 여러 plot을 함께 봐야 할 때는 워크스페이스를 사용하세요. 선별한 결과를 제시하려는 경우에는 Report를 사용하세요.
wandb.Run.log()는 트레이닝 데이터를 W&B로 전송합니다. 온라인에서 직접 전송하거나 나중에 오프라인 동기화를 통해 전송할 수 있습니다.메트릭 로깅에 대한 요청 속도 제한은 프로젝트 수준에서 적용되며, 일정 시간 동안의 요청 속도와 총 요청 크기를 모두 기준으로 합니다. 유료 플랜은 무료 플랜보다 한도가 더 높습니다.요청 속도 제한을 초과하면 W&B SDK가 자동으로 백오프를 적용해 요청을 재시도합니다. 경우에 따라 요청 속도 제한 기간이 재설정될 때까지 run.finish()가 지연될 수 있습니다.요청 속도 제한에 걸릴 가능성을 줄이려면 다음을 수행하세요.
최신 W&B SDK 버전을 사용하세요.
로깅 빈도를 줄이세요.
관련 메트릭을 묶어 log 호출 횟수를 줄이세요.
적절한 경우 오프라인 로깅을 사용하고 나중에 동기화하세요.
import randomimport wandbwith wandb.init(project="basic-intro") as run: for epoch in range(10): accuracy = 1 - 2 ** -epoch - random.random() / (epoch + 1) loss = 2 ** -epoch + random.random() / (epoch + 1) if epoch % 5 == 0: run.log({"acc": accuracy, "loss": loss})
수동으로 동기화하려면 wandb sync <run-file-path> 명령을 사용하세요. wandb sync를 참조하세요.
W&B App과 public API는 GraphQL 요청을 사용해 데이터를 쿼리하고 수정합니다.SaaS Cloud의 경우:
인증되지 않은 요청에는 IP 주소별로 요청 속도 제한이 적용됩니다
인증된 요청에는 사용자별로 요청 속도 제한이 적용됩니다
프로젝트 경로를 지정하는 일부 SDK 요청에는 데이터베이스 쿼리 시간을 기준으로 프로젝트별 제한이 추가로 적용될 수도 있습니다
Teams 및 Enterprise 플랜은 Free 플랜보다 한도가 더 높습니다.public API 요청을 대량으로 보내는 경우, 가능하면 요청 사이에 최소 1초 이상 기다리세요. HTTP 429 Rate limit exceeded를 받거나 RateLimit-Remaining=0이 표시되면, 다시 시도하기 전에 RateLimit-Reset에 지정된 초 수만큼 기다리세요.
W&B는 성능 문제를 गंभीर하게 다루며, 지연 관련 보고는 모두 조사합니다. 조사를 더 빠르게 진행할 수 있도록, 로딩 속도가 느릴 때는 주요 메트릭과 성능 이벤트를 캡처하는 W&B의 내장 성능 로거를 실행해 주세요. 로딩이 느린 페이지의 URL에 &PERF_LOGGING 매개변수를 추가한 다음, 콘솔 출력을 account team 또는 지원팀과 공유하세요.