2.1 비즈니스와 머신러닝의 목적
- 비즈니스 조직 내에서 ML 프로젝트가 성공하려면 ML 시스템 성과를 전체적인 비즈니스 성과와 연결해야 한다.
- 많은 회사에서 비즈니스 지표를 ML 지표에 연결하기 위해 자체 지표를 만든다.
- ex. 넷플릭스는 추천 시스템의 성능을 채택률(take-rate), 즉 영상 재생 횟수를 사용자가 본 추첨 썸네일 개수로 나눈 값으로 측정한다. & 넷플릭스는 또한 추천 시스템의 채택률을 다른 비즈니스 지표, 예컨대 총 스트리밍 시간이나 구독 최소율의 맥락에서도 고려한다.
- 비즈니스 관점으로 ML 솔루션을 평가할 때는 기대 수익을 현실적으로 생각해야 한다.
2.2 머신러닝 시스템 요구 사항
- ML 시스템이 갖춰야 하는 요구사항을 고려하지 않고는 시스템을 성공적으로 개발했다고 말할 수 없다. 구체적인 요구사항은 유스 케이스마다 다르지만 대부분의 시스템은 신뢰성, 확장성, 유지보수성, 적응성 등 네 가지 특성을 갖춰야 한다.
- 신뢰성
- 시스템은 다양한 문제 상황, 예컨대 하드웨어나 소프트웨어 결함 혹은 사람에 의한 오류가 발생해도 목표 성능을 만족하면서 기능을 수행해야 한다.
- 전통적인 소프트웨어 시스템은 종종 시스템 충돌, 런타임 오류 또는 404와 같은 경고를 표시하지만 ML 시스템은 조용히 실패하곤 한다. 최종 사용자는 장애가 발생했다는 사실조차 모른 채 시스템이 계속 작동한다고 생각하고 사용할 때도 있다.
- 확장성
- 시스템 복잡도가 증가하든, 트래픽 양이 증가하든, ML 모델 개수가 증가하든 상관없이 규모 증가를 처리할 합리적인 방법이 필요하다.
- 확장성을 이야기할 때 사람들은 대부분 자원 스케일링 resource scaling을 생각한다. 자원 스케일링에는 업 스케일링과 다운 스케일링이 있다. 업 스케일링은 규모가 증가할 때 사용하는 자원 확장expanding이고 다운 스케일링은 자원이 필요하지 않을 때 사용하는 자원 축소reducing이다.
- 오토 스케일링은 많은 클라우드 서비스에 없어서는 안 되는 기능으로, 사용량에 따라 머신 개수를 자동으로 확장하거나 축소한다. 이 기능은 구현하기가 가다롭다.
- 한편 규모 증가를 처리하는 일에는 자원 확장뿐 아니라 아티팩트(ML 개발 과정에서 생성되는 다양한 유형의 부산물)관리도 포함된다.
- 유지보수성
- ML 시스템이는 다양한 직군이 얽혀있기 때문에 워크로드를 구조화하고 인프라를 설정하는 일이 중요하다. 어느 한 그룹이 나머지 그룹에게 특정 도구를 사용하도록 강요하는 대신 각자가 편한 도구를 사용해서 작업할 수 있도록 한다. 코드는 문서화하고 코드, 데이터, 아티팩트를 버전을 관리해야 한다. 모델은 원작자 없이도 다른 작업자가 자신만의 작업을 통해 개발할 수 있게끔 충분한 맥락을 제공하면서 충분히 재현 가능해야 한다. 문제가 발생하면 여러 작업자가 협력해 문제를 파악하고 서로 비난 하는 일 없이 해결할 수 있어야 한다.
- 적응성
- 시스템은 변화하는 데이터 분포와 비즈니스 요구 사항에 적응할 수 있어야 한다. 그러려면 성능 향상에 영향을 주는 요소를 찾아낼 수 있어야 하며 서비스 중단 없이 업데이트가 가능해야 한다.
2.3 반복 프로세스
- 1단계: 프로젝트 범위 산정
- 프로젝트의 시작은 범위를 산정하고 목표, 목적과 제약 사항을 설정하는 일이다. 이해관계자를 파악해 참여시키고 사용할 자원을 추정하고 할당한다.
- 2단계: 데이터 엔지니어링
- 오늘날 ML 모델은 대부분 데이터를 학습하므로 ML 모델 개발은 데이터 엔지니어링에서 시작한다.
- 3단계: ML 모델 개발
- 초기 훈련 데이터셋으로 피처를 추출하고 해당 피처를 활용해 초기 모델을 개발한다. ML 관련 지식이 가장 많이 필요한 단계이자 ML 교육 과정에서 가장 많이 다루는 단계이다.
- 4단계: 배포
- 개발한 모델에 사용자가 접근할 수 있도록 한다. 시스템은 결코 완성되지 않는다. 하지만 어느 시점에는 시스템을 외부에 내보여야 한다.
- 5단계: 모니터링과 연속 학습
- 모델을 프로덕션 환경에 배포한 뒤에는 지속적으로 성능 저하를 모니터링하고 변화하는 환경과 요구 사항에 적응하도록 유지 관리해야 한다.