Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 3.51 KB

File metadata and controls

29 lines (21 loc) · 3.51 KB

Nobody knows pattern

Case

  • 머신러닝 시스템이 실제 운영 서비스에서 돌고 있지만 ML 엔지니어, 개발자, 운영자가 떠나 아무도 그 시스템이 무엇을 위해 작동하는지 모르는 경우.
  • 누구의 리뷰도 없이 코드, 모델 그리고 설정값을 변경할 수 있는 경우.

Situation

머신러닝 시스템뿐만 아니라 가동되고 있는 시스템이 어떻게 동작하는지 아무도 모르는 경우는 항상 공포스럽습니다. 그 시스템이 아무런 의존성도 없고 비지니스에 아무런 영향이 없다면 좋겠지만, "아무도 모른다"라는 조건은 정말 이 시스템이 독립적인지 보장할 수 없으며 최악의 경우에는 모든 서비스가 갑자기 중단될 수도 있다는 것을 의미합니다.
또 다른 이유로 같은 프로젝트에 항상 같은 멤버가 배정되지 않는다는 것입니다. 사적인 이유나 조직적인 이유로도 사람들이 프로젝트를 떠날 수도 있습니다. 하지만 비즈니스와 시스템은 이러한 개인적인 이유와는 별개로 운영되어야 합니다. 담당 엔지니어가 한 명 그만두었다고 동작하고 있는 시스템이 중단되어서는 안 됩니다. 발생할 수 있는 리스크들을 고려하여 비즈니스가 계속될 수 있도록 구성해야 하며, 머신러닝 시스템 관점에서 모델 로직, 데이터 세트, 버전, 코드, 환경 구성 등을 공유하고 문서화하는 것이 좋습니다. 소프트웨어는 소스 코드를 읽어 이해할 수 있지만, 머신러닝 모델과 학습 데이터 세트는 제대로 저장되고 관리되지 않으면 복원이 불가능할 수도 있습니다.
"nobody knows" pattern 은 구성원들의 부재를 통해서만 발생하는 것이 아닙니다. 온도계 장치 로그가 있는 IoT 시스템에서 머신러닝 모델을 사용하고 있다고 가정해 봅시다. 공장이나 여러분 방이 이러한 사용 예가 될 수 있겠죠. 온도는 섭씨와 화씨, 켈빈으로 측정할 수 있습니다. 미국은 보통 화씨, 한국과 일본은 섭씨, 그리고 과학계에서는 켈빈을 주로 사용하고 있습니다. 섭씨는 화씨로 변환하면 0도가 32도가 되고 100도는 212 화씨가 되는 등 숫자의 범위가 크게 바뀝니다. 만약 온도계의 단위를 섭씨에서 화씨 또는 켈빈으로 바꾸려면, 머신러닝 모델에서의 단위도 바꾸어야 예측이 정확하게 될 것입니다. 섭씨에서 화씨 변경은 값의 변화가 크기 때문에 변화를 쉽게 알아낼 수 있을 것입니다. 하지만 미터와 야드(1미터=1.09야드) 의 경우에는 차이가 크지 않기 때문에 사람이라도 이 변화를 알아채기 어려울 것입니다. 머신러닝을 물리적 기기나 센서에 사용되는 것은 이제 흔히 볼 수 있는 것으로, 기기 설정 변화가 머신 러닝에 제대로 반영되지 않는 것 역시 "nobody knows" pattern으로 볼 수 있습니다.

Diagram

diagram

Pros

  • 트러블슈팅 매니아들은 즐거워할 것입니다.

Cons

  • 머신러닝 시스템 운영의 어려움.
  • 예측 결과가 잘못될 수도 있습니다.

Work around

  • 개인에게 의존시키지 않습니다.
  • 입력 데이터의 단위도 포함합니다.

Related design pattern