Skip to main content
이 페이지에서는 대규모 데이터셋으로 W&B Weave 평가를 실행할 때, 오래 걸리는 정리 시간을 줄이기 위해 함께 사용할 수 있는 두 가지 방법을 설명합니다. 평가 코드 실행이 끝난 뒤 프로그램이 종료되기 전까지 지연이 길게 발생하는 경우를 겪는 사용자를 위한 내용입니다. 다음 섹션에서는 대기 중인 백그라운드 작업을 모두 처리하는 방법과 클라이언트 병렬성을 높이는 방법을 설명합니다.

대기 중인 백그라운드 작업 플러시

플러시를 수행하면 대기 중인 백그라운드 작업이 코드 실행이 끝난 뒤 완료되기를 기다리는 대신, 메인 스레드와 병렬로 완료되도록 강제할 수 있습니다. 대용량 데이터셋으로 평가를 실행하면, 데이터셋이 백그라운드 스레드에서 업로드되는 동안 프로그램 실행이 완료되기까지 오랜 지연이 발생할 수 있습니다. 이는 메인 스레드 실행이 백그라운드 정리 작업이 완료되기 전에 끝나기 때문에 발생합니다. client.flush()를 호출하면 모든 백그라운드 작업이 메인 스레드에서 처리되도록 강제하여, 메인 스레드 실행 중 병렬 처리가 이루어지도록 합니다. 이는 사용자 코드가 서버로의 데이터 업로드보다 먼저 완료되는 경우 성능 향상에 도움이 될 수 있습니다. 다음 예시에서는 평가 후 대기 중인 백그라운드 작업을 플러시합니다.
client = weave.init("fast-upload")

# ... 평가 설정
result = evaluation.Evaluate(dataset_id="my_dataset_id")

client.flush()

클라이언트 병렬성 늘리기

클라이언트 병렬성을 높이면 Weave가 데이터셋 업로드와 같은 백그라운드 작업에 사용할 수 있는 스레드가 더 많아지며, flushing과 함께 정리 시간도 더욱 줄일 수 있습니다. Weave는 환경에 따라 클라이언트 병렬성을 자동으로 결정하지만, 다음 환경 변수를 사용해 수동으로 설정할 수도 있습니다:
  • WEAVE_CLIENT_PARALLELISM: 병렬 처리에 사용할 수 있는 스레드 수입니다. 이 값을 늘리면 데이터셋 업로드와 같은 백그라운드 작업의 성능이 향상될 수 있습니다.
또한 weave.init()settings 인수를 사용해 프로그래밍 방식으로 설정할 수도 있습니다:
client = weave.init("fast-upload", settings={"client_parallelism": 100})

성능 평가