Daniel’s review #4: 머신러닝 시스템 설계
개발자 출신인 필자가 ML 연구자로 업계에서 입문했을 때, 가장 어려웠던 부분은 "데이터와 결과를 어떤 관점에서 바라보고 해석해야 하는가?"였습니다. 기반 지식은 공부하면 되는 쉬운 문제지만, 해석은 연구 방법과 노하우가 없으면 어떤 데이터를 가공해야 하고 어떻게 의미를 해석해야 할지 알 수가 없었습니다. 주변 연구원 동료들에게 도움을 청했을 때 제일 많이 들었던 말은 "하다 보면 알게 돼요"였습니다. 틀린 말은 아니었지만 수많은 시간의 시행착오를 필요로 했지요.
이런 분들에게 한 줄기 빛과 소금 같은 책이 머신러닝 시스템 설계입니다. 시간을 돌려서 환생트럭? 연구원을 시작하는 시점에 다시 돌아간다면 이 책을 권하고 싶습니다. 여기에 나온 논문만 봐도 연구에서 겪는 어려움의 해결법의 힌트를 얻을 수 있기 때문입니다. 예를 들면 분류 모델에서 데이터 불균형을 다루는 방법과 관련 논문을 소개하고 있지요.
머신러닝 시스템을 프로덕트 환경에서 운영할 때 데이터 처리와 관리가 (매우) 중요하지만, 머신러닝의 연구를 이해하고 특성을 파악해야 합니다. 머신러닝 시스템을 구현하고 운영하려면 연구의 발상, 실험, 논문만 쓰지 않았지 연구를 이해하고 특성을 전체적으로 파악해야 합니다. 특히, 딥러닝 기반 머신러닝 모델이라면 내부의 원리 따위 알 수 없는 블랙박스이므로 테스트를 아무리 하더라도 모델이 어떤 일을 할지 알 수가 없습니다. 경험 많은 연구자와 MLOps는 문제가 발생했을 때 해결할 휴리스틱 노하우만 가지고 있을 뿐이죠.
모델은 세상을 반영하지만, 세상을 단순화합니다. 이때 모델은 연구자가 (인지하든 인지하지 못하든) 가정하에 만듭니다. ML시스템을 프로덕션에서 운영하면 모델이 투사한 세상을 뛰어넘는 상황이 자주 발생합니다. 이런 상황을 학계와 업계에서 지금까지 어떻게 해결해 왔는지 이 책에서 다룹니다. 스포일러를 하자면 몇몇 접근법은 있지만 완벽한 답은 없습니다.
추천사에도 나와있지만 이 책은 CS329S: Machine Learning System Design 강의를 요약하고 최신 트렌드를 더한 책입니다.
추천 대상
머신 러닝으로 연구에 입문하는 분, MLOps 역할을 맡으신 분, ML 시스템 개발하려는 분들에게 추천합니다.
장점
이 책의 훌륭한 점은 ML 시스템 설계뿐 아니라 연구자가 숙지할 내용도 잘 소개하고 있다는 점입니다. 연구자로서의 기초를 탄탄하게 할 지식을 짧은 페이지 속에서 잘 소개하고 있습니다. 그리고 그간 업계에서 해온 노력(이라 쓰고 삽질이라 부르는 그것)을 잘 풀어서 설명하고 최근 접근법에 대해서도 다룹니다. 게다가 번역이 훌륭한 편이라 아주 잘 읽힙니다.
단점
단점이라 꼽긴 뭐 합니다만 제목이 시스템 설계이지만 시스템 설계적인 접근은 약합니다.
총평
어떤 분류의 연구들이 있고. 연구에 어떤 문제가 발생을 하며 이를 어떻게 해결하는지, 데이터, 피처, 모델을 어떻게 관리하는지의 전반적인 내용을 보여주는 책입니다.
필자가 머신 러닝 연구를 시작 처음 했을 때 봤더라면 정말 좋았을 내용입니다. 연구자로 처음 일했을 때 "핵심 줄기" 되는 논문을 알기가 어려워 고생을 좀 했었습니다. 그런데 이 책은 핵심 줄기 논문을 아낌없이 소개하고 있습니다. 다만, 이게 필자가 업계에서 종사해 봤기에 얼마나 가치를 아는 게 아닐까 하는 생각이 듭니다. 하지만 그동안 쌓아 온중 간 정산을 위해서 한 번쯤은 봐볼 만합니다.
마지막 한마디
개인적인 일이 생겨서 한동안 도서 서평 & 리뷰가 좀 늦어졌습니다. 열심히 쓰도록 하겠습니다. 🥲
인상 깊은 구절을 몇개 꼽아서 적어보았습니다.
모든 것은 변하며 데이터 분포는 시프트 합니다. P284
시간에 따라 모든게 변하는 것처럼 ML 모델도 이 영향을 피할 수 없는 것이죠. 데이터 분포의 시프트는 모델의 기대효과를 떨어뜨립니다.
기업이 클라우드를 활용하는 초기에는 스토리지와 컴퓨팅 레이어를 구축할 때보다 수익이 더 높은 경향이 있지만, 기업이 성장함에 따라 수익방어가 어려워집니다. P364
클라우드가 편하지만 어느 지점을 지나면 비용이 매우 비싼 것도 사실입니다. 많은 유니콘이 클라우드 비용 때문에 고생을 하고 있지요. (+스타트업 초기에 딥러닝을 하다가 망한 기업이 많았지요.) 글을 쓰는 시점(2023년)의 엔지니어링은 효율보다 수용과 확장에 초점을 맞추고 발전해 왔습니다. 무어의 법칙 이후로 이런 방식의 엔지니어링이 발전했습니다만, 무어의 법칙이 무용해진 지금도 이 접근법을 계속 이용 중입니다. 필자 개인적으로 클라우드 비용은 언젠가 터질 뇌관이 아닐까 생각이 듭니다.