Skip to main content

감사와 규제 준수에 Weights & Biases가 도움이 되는 방법

W&B Artifacts로 팀의 모델을 감사 가능하게 만들기 이 문서는 AI 번역본입니다. 오역이 의심되면 댓글로 알려주세요.
Created on September 12|Last edited on September 12
Weights & Biases에 합류하기 전, 저는 호주의 주요 병원에서 사용되는 제품을 만드는 의료 회사에서 일했습니다. AI 분야의 의료 스타트업에서 일할 때 꼭 알아야 할 점이 하나 있는데, 바로 컴플라이언스와 감사에 정말 엄격하다는 것입니다!
우리의 사례에서는 X-ray나 CT 스캔에서 이상 소견을 탐지하는 일을 딥러닝 모델이 담당했습니다. 다시 말해: AI는 인간의 삶에 직접적인 영향을 미쳤습니다그래서 모델을 변경할 때는 규정이 상당히 엄격했습니다. 모든 변경 사항은 규제 기관의 승인을 받아야 했고, 모든 절차가 기록되어야 했습니다. 데이터 수집, 데이터 정제, 모델 학습, 모델 평가 등 모든 프로세스는 오류 없이 검증 가능해야 했습니다.

W&B를 도입하기 전

통합하기 전에 Weights & Biases그런데 상황은 정말 꽤 혼란스러웠습니다. 모든 모델 변경 사항을 기록하기 위해 대형 엑셀 시트를 유지해야 했습니다. 그 엑셀 시트는 대략 다음과 같은 형태였습니다:
표 1. 모델 변경 사항을 기록하는 엑셀 시트
그리고 회사가 세 가지 서로 다른 모델 (X선용 하나, CT 스캔용 하나, 마지막으로 MRI용 하나) 50곳이 넘는 서로 다른 고객의 다양한 문제를 해결하는 모델들이 있었으니, 이 엑셀 시트들이 얼마나 방대하고 혼란스러워졌을지 쉽게 짐작할 수 있을 것입니다!
그다음으로는, 호주 의료 규제 지침 상당히 엄격합니다. 제가 근무하던 의료 회사는 거의 매년 감사 대상이었습니다. 그래서 모든 프로세스를 교차 검증해야 했습니다. 여기에는 데이터 수집, 데이터 정제, 모델 학습, 모델 평가, 데이터 누수 등이 모두 포함되었습니다.
그때 감사관들에게 받았지만 당시에는 답하지 못했던 질문이 하나 있었습니다.
고객에게 공유하는 모델이 3개월 전에 당신이 학습한 그 모델과 동일하다는 것을 어떻게 증명할 수 있습니까? 만약 공유한 파일이 잘못된 파일이거나, 팀의 다른 누군가에 의해 덮어쓰여 버렸다면 어떻게 하시겠습니까?
예시를 통해 한 번 시각화해 보겠습니다.

그림 1. 간단한 실제 사용 사례
그냥 제가 …라고 해 봅시다 머신러닝 엔지니어 어느 의료 회사에서. 나는 모델을 학습한다 ResNet-34 이제 프로덕션 준비가 완료되어 고객 A, B, C 세 곳과 공유해야 합니다.
먼저 이 모델과 모든 프로세스를 표 1과 유사한 엑셀 시트에 기록으로 관리합니다. 이제 최종 버전을 고객들에게 공유해야 합니다.
이걸 보통 어떤 방식으로 하면 될까요?
  1. 모델을 Google Drive에 저장하고 세 고객에게 링크를 공유하면 될까요?
  2. AWS나 GCP 같은 프라이빗 클라우드에 모델을 저장하고, 고객이 직접 다운로드하도록 하면 될까요?
  3. 세 고객 각각에게 모델 사본을 개별적으로 공유하세요.
민감한 데이터와 모델의 경우, 이 세 가지 방법 모두 적합하지 않습니다. 그 이유는 무엇일까요?
세 가지 방법 모두 수동 단계가 포함되어 있어 오류가 발생할 가능성이 있습니다. 만약 제가 Google Drive나 프라이빗 클라우드에 잘못된 모델을 업로드한다면 어떻게 될까요? 업로드하려던 모델 아티팩트의 이름이 checkpoint-100.pth.tar 대신 제가 업로드한 것은 checkpoint-10.pth.tar?
무엇이든 가능합니다! 특히 강도 높은 감사를 거치고 규정과 컴플라이언스 절차를 따라야 한다면 더욱 그렇습니다. 이런 경우에는 방법이 반드시 오류에 견고해야 합니다.

W&B 통합 이후

Weights & Biases Artifacts 구원의 열쇠! 이제 학습 과정에 Weights & Biases를 통합하여 런과 메트릭을 기록하고, 성능 점수와 함께 최적 모델을 저장할 수 있습니다!
잠깐만요, 그런데 이게 어떻게 도움이 되죠?

그림 2. 모델 아티팩트를 공유하는 중앙 허브로 W&B 사용
클라이언트에게 모델을 직접 공유하는 대신, 중간 단계로 모델 아티팩트를 저장하여 Weights & Biases!


W&B Artifacts란 무엇인가요?

저희의 문서:
W&B Artifacts는 데이터셋과 모델을 손쉽게 버전 관리할 수 있도록 설계되었습니다. 파일을 W&B에 저장하든, 이미 보유한 버킷을 W&B가 추적하길 원하든 상관없이 사용할 수 있습니다. 한 번 데이터셋이나 모델 파일을 추적하도록 설정하면, W&B가 모든 수정 사항을 자동으로 기록하여 파일 변경 이력을 완전하고 감사 가능한 형태로 유지합니다. 이렇게 하면 데이터셋을 발전시키고 모델을 학습하는 재미있고 중요한 일에 집중할 수 있고, W&B가 번거로운 세부 추적 작업을 대신 처리합니다.
좋습니다! Weights & Biases가 버전 관리와 저장을 알아서 처리해 줄 수 있군요. 그런데 어떤 이점이 있나요?
Weights & Biases를 사용하면 각 클라이언트가 올바른 모델 버전을 받도록 보장할 수 있습니다. 사람 개입이 없으므로 위험이 최소화됩니다. 또한 정기적인 감사를 받고 엄격한 컴플라이언스 지침을 따라야 하는 기업의 경우, W&B만 공유해도 run_id 이렇게 하면 Weights & Biases에서 설정, 모델, 데이터 아티팩트를 포함한 모든 항목에 접근할 수 있어 충분합니다.
💡
아주 간단한 4줄의 코드만으로 W&B Artifacts를 로그할 수 있습니다:
wandb.init()
artifact = wandb.Artifact(<enter_filename>, type='model')
artifact.add_file(<file_path>)
wandb.run.log_artifact(artifact)

왜 Weights & Biases를 사용해야 할까요?

  1. 프로세스는 자동화되어 있습니다코드 몇 줄만으로 W&B를 사용해 모든 모델과 데이터셋을 올바르게 버전 관리하고 저장할 수 있습니다.
  2. 오류 발생 가능성 최소화: 사람이 개입하지 않으므로, 각 클라이언트는 학습 중에 자동으로 저장된 것과 동일한 모델 사본을 받는다는 점을 확실히 보장할 수 있습니다.
  3. 모든 것이 재현 가능하고 추적 가능합니다: 파이프라인에 Weights & Biases를 통합하면 모든 실험을 재현할 수 있습니다. 따라서 회사가 감사를 받게 되더라도, 여러분이 해야 할 일은 다음과 같습니다 실험 ID를 공유하세요당시 사용된 학습 스크립트의 로그, 프로덕션에 배포된 모델 버전, 모델의 성능 점수 등 모든 정보가 포함됩니다! 이것을 확인하세요 대시보드 예를 들어
  4. 모든 것이 한곳에 있습니다: Weights & Biases와 통합하면 로그, 소스 코드 파일, 메트릭 로그, 모델 버전, 데이터셋 버전이 모�� 한곳에 모입니다! 몇 달, 몇 년이 지나도 전체를 한눈에 파악하기가 정말 쉬워집니다. 더 이상 Excel 스프레드시트나 노트북 등을 유지할 필요가 없습니다.
  5. 사설 클라우드에 호스팅하세요: 데이터가 민감하다면, Weights & Biases 또한 로컬에서 모든 작업을 실행하고, 모델과 데이터 아티팩트를 AWS/GCP 또는 기타 클라우드 제공업체의 개인 버킷에 저장하는 옵션도 제공합니다. 참조하세요 여기 자세한 내용은 다음을 참조하세요.
  6. 추적 모든 것: Weights & Biases는 W&B 시스템 외부에 저장된 파일도 추적할 수 있습니다! 이를 다음과 같이 부릅니다 참조 아티팩트. Reference artifacts는 민감한 데이터를 다룰 때 특히 유용하며, 직접 관리하는 개인 S3 버킷, GCS 버킷, HTTP 파일 서버, 또는 NFS 공유에 저장할 수 있습니다! 코드와 스크린샷이 포함된 GCP에서의 Reference 파일 추적 예시는 다음 가이드를 참고하세요 Reference Artifacts 가이드.

향후 실험을 체계화하는 간단한 프레임워크

이 섹션에서는 AWS에 모델 아티팩트를 저장하는 방법과 규제 준수를 위해 Weights & Biases를 사용해 모델과 데이터셋을 버전 관리하는 간단한 예시를 살펴보겠습니다.
(아래의 모든 코드는 이 Google Colab.)
이 노트북은 학습 실행을 시작하며, 모델 체크포인트를 자동으로 기록하도록 설정되어 있어야 합니다. W&B Artifacts 기본적으로 프로젝트 이름은 다음과 같이 설정됩니다:Artifacts". 이 값을 업데이트하려면 다음을 수정하세요 PROJECT Config dict의 키-값
그러니까 이제부터는 우리가 항상 통제할 수 있습니다. 이 학습 프로세스는 다음과 같습니다:
그림 3. W&B가 실험 재현을 매우 쉽게 만드는 방법
W&B 통합이 포함된 최소 학습 예제에서는 다음과 같은 일이 진행됩니다:
  • W&B는 모든 소스 파일의 사본을 저장합니다 실행이 기록된 시점의 코드 상태입니다. 재현성을 높이기 위한 스냅샷으로 생각하시면 됩니다. GitHub 커밋과 비슷하지만, 개인적으로는 더 편리합니다. 6개월 뒤에 모델 설정과 소스 코드에 대해 질문을 받더라도, Weights & Biases만 참고하면 됩니다. run_id 모든 것에 접근할 수 있도록.
그림 4. 소스 코드 파일
  • 모두 매 에포크가 끝날 때마다 모델 가중치가 Weights & Biases에 저장됩니다개인적으로 W&B의 가장 훌륭한 기능 중 하나라고 생각합니다. 실행과 함께 모델 가중치를 저장할 수 있으므로, 언제든지 소스 코드뿐 아니라 모델 가중치에도 접근할 수 있습니다. 감사와 컴플라이언스 측면에서도 완벽합니다!
그림 5. W&B 모델 아티팩트
  • 위에서 볼 수 있듯이, 모든 아티팩트는 각 실행과 연결됩니다이 경우, 실행 이름은 `charmed-haze-1이제 실행을 클릭하기만 하면 모든 메트릭, 소스 코드 파일, 아티팩트에 다시 접근할 수 있었습니다.
그림 6. W&B 단순 대시보드
예시에서 볼 수 있듯이, Weights & Biases 사용자가 실험을 재현하고, 모델 설정과 가중치를 기록하며, 소스 코드 파일과 단일 Weights & Biases를 저장하도록 정말 쉽게 만들어 줍니다 run_id 모든 것을 한곳에서 한 번에 접근하는 중앙 허브로 사용할 수 있습니다!
이제는 표 1 같은 엑셀 시트가 더 이상 필요 없습니다. 모든 정보가 W&B의 메타데이터로 이미 저장되기 때문입니다. 메트릭 정보, 성능 점수, 모델 가중치, 데이터셋 버전, 학습 수행 일시, 학습을 트리거한 사용자, 그리고 모든 소스 코드 파일까지 모두 갖추고 있습니다.
따라서 감사인이 “6개월 전에 학습된 모델의 학습 과정은 어땠습니까?”라고 묻는다면, 다음 덕분에 변경 로그를 제시할 수 있습니다. Weights & Biases 그에 담긴 모든 관련 정보가 있도록!

그렇다면 모델 아티팩트를 고객과 공유하는 방법은 어떨까요?

위에서 말한 모든 내용만으로는 Figure 1에서 본 문제를 아직 해결하지 못합니다. 이제 W&B에 저장된 모델 아티팩트를 고객과 어떻게 공유할까요?
그림 7. 사람 개입 없이 루프 내에서 고객과 모델 아티팩트를 공유하기
해당 프로세스는 위의 그림 7에서 설명했습니다. 우리는 모델 아티팩트를 추출하고, 이를 프로그램 방식으로 비공개 AWS/GCP 버킷에 저장합니다. 그런 다음 이 버킷에 대한 접근 권한을 고객에게 부여하여, 그곳에서 모델 가중치를 다운로드하도록 할 수 있습니다.
W&B에서 모델 가중치를 프로그램 방식으로 다운로드해 AWS에 업로드하는 스크립트를 제공했습니다. 여기.

이 스크립트가 작동하려면 다음을 확인하세요:
  1. AWS에 활성 계정이 있습니다
  2. AWSCLI 설치 및 구성이 완료되었습니다. 완료되지 않았다면 아래 지침을 따라 진행하세요. 여기.
이 함수는 다음을 수행합니다 S3에 아티팩트 업로드하기 에서 Google Colab 다음을 수행합니다:
그림 8. 프로그램으로 모델 아티팩트를 AWS에 업로드하기
W&B에서 모델 아티팩트 다운로드하기: 먼저 프로젝트와 아티팩트 이름을 제공합니다 Config이를 바탕으로 Weights & Biases에서 아티팩트 정보를 가져오며, 여기에는 아티팩트의 다이제스트. 아티팩트의 다이제스트는 해당 내용물의 체크섬입니다. 어떤 아티팩트가 다른 파일과 동일한 다이제스트를 가진다면, 두 파일은 동일하다는 뜻입니다.
  1. AWS에서 파일 존재 여부 확인하기: 다음으로 AWS에 동일한 이름의 파일이 있는지 확인합니다. 존재하면 S3의 메타데이터에 저장된 해당 파일의 다이제스트 정보를 가져옵니다. 이 다이제스트를 아티팩트의 다이제스트 값과 비교하고, 서로 다르면 W&B 아티팩트를 S3에 업로드합니다. 같다면 아무 작업도 수행하지 않습니다.
  2. 다이제스트와 함께 모델 아티팩트를 S3에 업로드하기: AWS에 파일이 없거나 새 버전이 있는 경우에도 파일을 S3에 업로드하고 다이제스트를 메타데이터로 추가합니다.
그림 9. W&B Artifact를 S3에 업लोड할 때 메타데이터 추가
코드로 모든 작업을 자동화하여 사람의 개입을 완전히 배제했습니다. 그 결과 이 프로세스는 오류에 강하고, 컴플라이언스와 감사에도 최적화되었습니다.

결론

이 보고서에서는 W&B를 도입하기 전과 후의 경험을 공유했습니다 Weights & Biases 이전 회사에서
보시다시피, …와 연동하면 Weights & Biases 프로세스를 훨씬 매끄럽고 오류에 강하게 만들어 줍니다! 또한 사람의 개입 없이 Weights & Biases에서 바로 모델 아티팩트를 고객과 직접 공유하는 방법의 예시도 살펴봤습니다.

마지막으로, 이 부분에서도 코드를 공유했습니다 저장소 여러분 각자의 회사에서도 동일한 프로세스를 적용하실 수 있을 것입니다. 궁금한 점이 있으시면 언제든지 다음 주소로 연락해 주세요: aman@wandb.com.

이 글은 AI 번역본입니다. 오역이 의심되는 부분이 있으면 댓글로 알려 주세요. 원문 보고서는 여기에서 확인하실 수 있습니다: 원문 보고서 보기