소개
얼마 전까지만 해도 AI & 머신러닝은 소프트웨어 개발이나 언어와는 다른 별도의 분야로 인식되고 있었으나 최근 들어서 머신러닝도 UI나 데이터베이스처럼 마치 소프트웨어 개발의 하나의 요소처럼 여겨지고 있는 것 같습니다.
이런 상황에서 개발자들은 머신러닝 모델을 안정적으로 운영할 수 있는 능력도 요구되고 있습니다.
훌륭하게 결과를 산출하는 머신러닝 모델을 개발했어도 실제로 사용자들이 이 모델을 안정적으로 사용하게 하기 위해서는 훨씬 더 다양하고 복잡한 문제들이 개발자들을 기다리고 있습니다.
더욱이 이 모델을 운영하는 시스템이 분산 환경이라면 고려해야 할 문제는 더욱더 많아집니다.
학습 데이터의 방대함, 모델의 복잡성, 실시간 트래픽 처리 등 분산 환경에서 머신러닝 시스템을 구축하는 일은 기존의 단일 서버 중심 개발과는 차원이 다른 도전이 될 것입니다.
이 책은 단순히 모델을 학습시키는 기술적 방법론에 그치지 않고, 대규모 데이터 셋과 모델을 분산 처리하고 운영하는 시스템 디자인 패턴을 체계적으로 소개합니다.
이를 통해 머신러닝 엔지니어, 데이터 사이언티스트, 소프트웨어 개발자가 시스템 전반을 설계하고 운영할 수 있는 역량을 갖출 수 있도록 돕습니다.
특징
책을 읽으면서 느꼈던 특징은 필요하고 핵심적인 내용만 다루고 있습니다.
군더더기 없이 깔끔한 설명과 실용적인 패턴들의 설명에 집중한다는 것입니다.
특히, 소개하는 패턴들의 장단점을 실제 사례를 통해서 명확하게 설명해 줍니다.
구성
총 3개의 Part로 구성되어 있으며 각 파트는 분산 머신러닝 시스템의 정의와 분산 머신러닝 시스템에서 적용 가능한 다양한 패턴들 그리고 실제 분산 머신러닝 시스템 실습을 통해서 배운 패턴들을 확인하는 순서로 이루어져 있습니다.
Part 1에서는 분산 머신러닝 시스템의 필요성과 개념, 데이터의 분산 처리, 모델 학습의 확장성과 같은 필수적인 기초 지식과 분산 머신러닝 시스템의 배경지식을 다룹니다.
Part 2는 분산 시스템의 다양한 설계 패턴에 대해서 상황별로 적용이 필요한 시점과 함께 핵심 내용을 다룹니다.
분산 환경에서 대규모 Dataset으로 학습을 하기 위해서 필요한 배치처리 패턴, 샤딩 패턴 그리고 캐싱 패턴 등을 다룹니다.
이 패턴들은 모두 대규모 Dataset을 작은 단위로 나누어서 학습을 하는 패턴들이며 각각의 장단점을 설명합니다.
학습할 Dataset이 준비가 되었으니, 다음으로 이 Dataset으로 분산 환경에서 모델을 학습하는 패턴들에 대해서 다룹니다.
파라미터 서버 패턴, 집합 통신 패턴, 탄력성 및 내결합성 패턴 등과 같은 패턴들은 여러 개의 Worker를 이용해서 빠르게 학습하는 방법들에 대한 패턴들입니다.
학습이 완료된 모델들을 실제로 사용자들에게 서빙을 하기 위해서 필요한 패턴들에 대해서도 다룹니다.
레플리카 서버 패턴, 서비스 샤딩 패턴, 이벤트 기반 처리 패턴들은 대규모 사용자들의 요청에 대해서 적절히 트래픽을 분산하여 서빙하는 방법들에 대해서 논의합니다.
다음으로는 이 전체 Workflow를 유연하고 안정적으로 흘러가도록 관리해 주는 패턴들에 대해서 알아봅니다.
팬인 팬아웃 패턴, 동기 및 비동기 패턴, 스템 메모이제이션 패턴들은 워크플로 전체를 최적화하는 데 도움을 주는 패턴들입니다.
마지막으로, 워크플로 상에서 문제 상황에 대처하는 패턴들과 공유 자원을 효과적으로 할당하는 데 도움이 되는 스케쥴링 패턴, 메타데이터 패턴들을 소개합니다.
마지막 Part 3에서는 Part 2에서 배운 다양한 패턴들을 실제로 이미지 분류 프로젝트를 기반으로 앞서 배운 패턴을 적용하고, 현실에서 발생할 수 있는 문제들을 개선해 나가는 과정이 실습을 통해 체화됩니다.
패턴을 실제 코드로 구현하며 실무에 바로 적용할 수 있는 기술력을 갖출 수 있습니다.
대상 독자
이 책은 머신러닝 모델의 개발 경험이 있고, 분산 환경에서 이를 운영하고자 하는 데이터 사이언티스트, 소프트웨어 엔지니어를 대상으로 합니다.
특히 Bash, Python, Docker와 같은 기술에 익숙한 독자라면 더욱 쉽게 내용을 이해하고 실습할 수 있을 것입니다.
마무리
분산 환경에서의 소프트웨어 개발, 특히 머신러닝 모델의 운영에 관한 책들이 많이 없는 상황에서 실제 현장에서의 경험이 녹아있는 가이드가 발간되었다는 것이 정말 반가운 일입니다.
단순히 모델 개발만 하던 개발자들에게 서비스 운영 전체를 통찰할 수 있는 안목을 기르는 것에도 큰 도움이 될 것 같아서 이런 내용들이 필요한 분들에게 추천해 드리고 싶습니다.