4 분 소요

재현성(Reproducibility), 즉 동일한 방법론을 사용하여 실험을 복제하고 동일한 결과를 얻을 수 있는 능력은 모든 과학 분야에서 매우 중요합니다. 재현성은 인공 지능(AI) 및 머신 러닝(ML) 애플리케이션에서도 중요합니다.

완벽한 세상이라면 ML 시스템의 내부 작동이 완전히 투명할 것입니다. 하지만 숙련된 ML 실무자라면 누구나 알겠지만, ML 프로젝트가 재현 가능한지 여부가 항상 명확하지는 않습니다.


ML에서 재현성이란 무엇일까요? (What is reproducibility in ML?)

AI와 ML에서 재현성이란 특정 데이터 세트에 대해 알고리즘을 반복적으로 실행하여 특정 프로젝트에서 동일하거나 매우 유사한 결과를 얻을 수 있다는 것을 의미합니다. 이 프로세스에는 설계, 보고, 데이터 분석 및 해석이 포함됩니다.

재현성은 두 가지 이유로 ML 연구와 애플리케이션 모두에 중요합니다:

  • ML 연구(ML research): 연구 측면에서 보면, 과학적 진보는 독립적인 연구자가 연구 결과를 면밀히 조사하고 재현할 수 있는 능력에 달려 있기 때문에 매우 중요합니다. 필수 구성 요소가 문서화되어 있지 않거나 재현할 수 없다면 ML을 개선하거나 다른 영역에 적용할 수 없습니다.
  • ML 애플리케이션(ML applications): 비즈니스 애플리케이션 측면에서 재현성은 오류 발생 가능성이 적고 일반적으로 더 안정적이고 예측 가능한 시스템을 구축할 수 있게 해줍니다. 이는 의사 결정권자가 AI 시스템을 확장하고 더 많은 사용자가 그 혜택을 누릴 수 있도록 설득하는 데 중요합니다.

본질적으로 결과를 복제할 수 있다는 것은 프로젝트가 확장 가능하고 대규모 배포를 통해 프로덕션으로 이동할 준비가 되었다는 것을 의미하므로 매우 중요합니다. 재현성은 코드, 데이터, 모델 매개변수 및 환경과 같은 핵심 ML 모델 요소로 효과적으로 요약할 수 있습니다.

  • 코드(Code): 재현성을 확보하려면 실험 중에 코드와 알고리즘의 변경 사항을 추적하고 기록해야 합니다.
  • 데이터(Date): 새로운 데이터 세트, 데이터 배포 및 샘플 변경 사항을 추가하면 모델의 결과에 영향을 미칩니다. 따라서 데이터 세트 버전 관리와 변경 사항 추적을 수행해야 합니다.
  • 환경(Environment): 프로젝트를 재현할 수 있으려면 프로젝트가 생성된 환경을 캡처해야 합니다. 프레임워크 종속성, 버전, 사용된 하드웨어 등 모든 것이 기록되고 재현하기 쉬워야 합니다.
  • 모델 매개변수(Model parameters): 하이퍼파라미터 및 시드와 같은 매개변수는 학습 프로세스에 막대한 영향력을 행사하기 때문에 정확하게 재현해야 합니다.

재현성의 중요성에도 불구하고 AI 연구의 3분의 1 미만이 재현 가능하며, AI 연구자 중 약 5%만이 소스 코드를 공유합니다. 또한 연구 논문에서 테스트 데이터를 공유하는 비율은 3분의 1에도 미치지 못합니다. 이를 흔히 AI와 머신러닝의 ‘재현성 위기(reproducibility crisis)’ 라고 합니다.


머신 러닝의 재현성 문제 (Reproducibility challenges in machine learning)

재현성이 무엇인지 알았으니 이제 머신러닝 환경에서 가장 흔한 재현성 문제를 몇 가지 살펴봅시다.


기록의 부족 (A lack of records)

머신러닝에서 재현 가능한 실험의 가장 큰 문제는 기록의 부족입니다. ML 팀이 입력값과 새로운 결정을 기록하지 못하면 달성한 결과를 재현하기가 훨씬 더 어려워집니다.

실험 중에는 하이퍼파라미터 값이나 배치 크기와 같은 매개변수가 변경됩니다. 이러한 매개변수의 변경 사항을 제대로 기록하지 않으면 모델을 이해하고 복제하기가 어려워집니다.


데이터의 변화 (Changes in data)

원본 작업의 데이터가 변경된 경우 동일한 결과를 얻는 것은 거의 불가능합니다. 예를 들어, 특정 결과를 얻은 후 데이터 세트에 새로운 학습 데이터를 추가하면 동일한 결과를 얻는 것은 거의 불가능에 가깝습니다.

또한 데이터 세트의 잘못된 데이터 변환(예: 정리)과 데이터 분포의 변화도 재현성을 저해할 수 있습니다.


ML 프레임워크의 변경 사항 (Changes to ML frame works)

ML 프레임워크와 라이브러리가 항상 업데이트되고 변경된다는 것은 잘 알려진 사실입니다. 지난주에 특정 결과를 생성하는 데 사용되었던 특정 라이브러리 버전이 필요할 때 더 이상 제공되지 않을 수 있으며, 이는 결과에 영향을 미칠 수 있습니다.

예를 들어, 이전 버전에서는 제공되지 않았던 NVIDIA의 에이펙스 라이브러리에서 PyTorch 1.7+는 기본적으로 혼합 정밀도를 지원합니다. 또한 파이토치에서 텐서플로와 같은 다른 프레임워크로 변경하면 결과가 달라질 수 있습니다.


실험 및 무작위 배정 (Experimentation and randomization)

머신 러닝은 실험적입니다. 작동하는 모델을 개발하는 데는 많은 반복이 필요합니다. 알고리즘, 데이터, 환경, 매개변수의 변경은 ML 개발 프로세스의 일부이며, 이로 인해 중요한 세부 사항을 놓칠 수 있는 어려움이 있습니다.

또한 ML은 무작위 초기화, 무작위 노이즈 도입, 무작위 증강과 같은 무작위화가 많이 발생하는 프로젝트에서 특히 그렇습니다. 이는 또한 재현성을 저해할 수 있습니다.


MLOps로 ML 모델의 재현성 개선하기 (Improve the reproducibility of your ML modles with MLOps)

ML 모델의 재현성을 개선하는 가장 좋은 방법은 MLOps 모범 사례와 도구를 활용하는 것입니다.

MLOps는 머신 러닝 엔지니어링의 핵심 기능으로, ML 모델을 프로덕션 환경에 배포한 후 모니터링 및 유지 관리하는 프로세스를 간소화하는 데 중점을 둡니다. 일반적으로 MLOps는 자동화 및 조직 내 통합 프레임워크를 통해 AI 및 ML 수명 주기를 간소화하는 것을 포함합니다.

재현성을 개선하는 데 도움이 되는 몇 가지 MLOps 도구는 다음과 같습니다:

  • 실험 추적(Experiment tracking): ML 모델 개발은 실무자가 다양한 모델 구성 요소를 실험하는 반복적인 프로세스입니다. 추적 도구는 이러한 실험에 대한 중요한 정보를 체계적이고 이해하기 쉬운 방식으로 파악하는 데 도움이 됩니다.
  • 데이터 계보(Data lineage): 데이터의 출처, 데이터에 어떤 일이 일어나는지, 데이터 수명 주기 동안 데이터가 어디로 이동하는지를 추적하는 데 도움이 됩니다.
  • 데이터 버전 관리(Data versioning): AI 시스템은 환경 변화를 반영하는 동적 데이터 세트로 학습하는 경우가 많습니다. 버전 관리 도구는 머신러닝 팀이 특정 시점에 생성되거나 변경된 데이터의 여러 버전을 저장하는 데 도움이 됩니다.
  • 모델 버전 관리(Model versioning): 마찬가지로, 데이터 버전 관리 도구는 모델 유형, 매개변수, 하이퍼파라미터가 서로 다른 여러 버전의 ML 모델을 추적하고 ML 팀이 이를 비교할 수 있도록 도와줍니다.
  • 피처 저장소(Feature stores): 피처는 ML 모델로 해결하려는 문제와 관련된 학습 데이터의 속성입니다. 피처 엔지니어링 후 피처 스토어는 나중에 재사용할 수 있도록 다양한 피처를 표준화하여 저장합니다.


MLOps로 더 나은 재현성 달성하기 (Achieve better reproducibility with MLOps)

재현성은 더 나은 데이터 과학과 ML 연구의 핵심이며, 프로젝트를 유연하고 대규모 생산에 적합하게 만드는 요소입니다. 그리고 재현성의 핵심은 강력한 MLOps입니다.

머신 러닝 팀이 개발부터 배포, 그리고 그 이후까지 ML 환경을 최적화하고 지속적으로 개선할 수 있도록 지원하는 포괄적인 시스템을 구현하는 것이기 때문에 MLOps는 오늘날 거의 모든 ML 시장 선도업체의 핵심에 자리 잡고 있는 중요한 프로세스입니다.

올바른 MLOps 플랫폼과 도구를 선택하려면 ML 팀이 조직의 미션과 장기적인 목표뿐만 아니라 현재 데이터 과학 환경과 MLOps가 제공할 수 있는 가치를 이해하는 것이 중요합니다.

댓글남기기