이미 소장하고 있다면 판매해 보세요.
|
옮긴이 머리말 viii
베타리더 후기 x 시작하며 xii 이 책에 대하여 xv CHAPTER 1 과제, 팀, 시스템 1 1.1 소프트웨어 기술을 활용해 비즈니스 과제를 해결하려면 3 1.2 과제를 머신러닝으로 해결할 시나리오를 결정한다 7 1.3 팀 크기와 스킬에 맞는 개발과 운용을 고려한다 11 1.4 머신러닝 시스템의 아키텍처를 설계한다 14 1.5 새로운 머신러닝 시스템 디자인 패턴 16 __1.5.1 평가 대시보드 패턴 16 / 1.5.2 잘못된 추론 지원 패턴 22 1.6 팀 구성 패턴 27 __1.6.1 개척자 패턴 28 / 1.6.2 스몰 팀 패턴 31 / 1.6.3 믹스트 팀 패턴 35 1.7 정리 40 CHAPTER 2 수요 예측 시스템 만들기 41 2.1 수요 예측의 목적 43 2.2 머신러닝 팀과 소프트웨어 개발 팀 구성의 예 45 __2.2.1 사내 최초 머신러닝 프로젝트 팀인 경우 46 __2.2.2 실적이 있는 머신러닝 팀의 경우 47 / 2.2.3 매트릭스형 팀의 경우 48 2.3 머신러닝으로 수요를 예측한다 49 __2.3.1 과제 설정 49 / 2.3.2 데이터 52 / 2.3.3 개발 환경 구성 57 __2.3.4 데이터 전처리 59 / 2.3.5 학습 74 / 2.3.6 추론 활용과 평가 84 2.4 수요 예측 시스템과 업무 워크플로 99 __2.4.1 프로젝트 초기 팀, 시스템, 워크플로 (2021년 1월~2021년 6월) 99 __2.4.2 프로젝트 전개 시기의 팀, 시스템, 워크플로 (2021년 7월 이후) 103 2.5 정리 122 CHAPTER 3 동물 이미지 애플리케이션의 위반 감지 시스템 만들기 123 3.1 동물 이미지 애플리케이션 개요 125 __3.1.1 AIAnimals 126 / 3.1.2 동물 이미지 애플리케이션과 시스템 129 __3.1.3 AIAnimals를 기동한다 133 __3.1.4 동물 이미지 애플리케이션에 위반 감지가 필요해졌다 153 3.2 위반 감지의 목적 153 __3.2.1 머신러닝을 사용해 감지할 위반을 결정한다 156 3.3 위반 감지에 필요한 데이터를 정의한다 157 3.4 위반 감지 시스템과 워크플로 설계 163 3.5 위반 감지 모델을 개발한다 168 __3.5.1 데이터를 결정한다 169 / 3.5.2 모델을 만든다 170 / 3.5.3 작업 실행 189 3.6 위반 감지 시스템을 실용화한다 198 __3.6.1 비동기 추론 패턴으로 만드는 위반 감지 시스템 203 __3.6.2 위반 감지를 모니터링한다 225 3.7 정리 239 CHAPTER 4 동물 이미지 애플리케이션 검색에 머신러닝 활용하기 241 4.1 동물 이미지 애플리케이션 검색 243 __4.1.1 필터링과 배열 245 4.2 머신러닝으로 검색을 개선한다 248 4.3 유사어 사전 작성 249 __4.3.1 접근 로그와 빈번하게 검색되는 단어 251 __4.3.2 단어 벡터를 사용한 유사어 사전 작성 255 __4.3.3 유사어 사전을 검색에 활용한다 259 4.4 순위 학습을 활용한 검색 결과 정렬 266 __4.4.1 데이터를 만든다 269 / 4.4.2 순위 학습 모델을 학습한다 285 __4.4.3 순위 학습을 사용해 검색 결과를 정렬한다 294 __4.4.4 순위 학습의 워크플로 298 __4.5 A/B 테스트를 구축한다 306 __4.5.1 2가지 모델의 학습 313 4.6 이미지를 사용한 검색 317 __4.6.1 MobileNet v3를 사용한 특징량 추출과 ScaNN을 사용한 인덱스 작성 321 __4.6.2 MobileNet v3와 ScaNN 추론기 326 __4.6.3 유사 이미지 검색의 자동 업데이트 330 4.7 사용자들이 사용하는 머신러닝을 위하여 334 마치며 336 찾아보기 340 |
澁井 雄介
김모세의 다른 상품
|
머신러닝을 사용하지 않고도 객관식 설문 형식의 챗봇을 제공하고, 사용자가 설문의 답을 선택하면서 해결책에 도달하도록 하는 워크플로만 갖춰도 이 과제는 간단하게 해결할 수 있습니다. 설문 형식을 사용하는 편이 머신러닝을 사용하는 것보다 기술적으로 간단하며, 동시에 사용자 경험 측면에서 뛰어난 경우도 있을 것입니다. 개발 공정 측면에서도 객관식 설문 형식의 챗봇을 사용하면, 질문과 선택지를 제공하고 분기 처리를 위한 if-else 구문을 조합하는 것만으로 구현할 수 있습니다.
--- p.8 예를 들어 수요 예측과 같은 회귀 문제에서는 매장에서 식료품의 수요 예측 모델이 수요보다 큰 쪽으로 벗어나면 공급 과다가 되어 재고가 창고를 점유하게 됩니다. 벗어난 양에 따라 창고에 상품을 넣을 수 없는 상황도 발생할 것입니다. 소비 기한까지 팔리지 않는 경우에는 재고를 처분해야 할 수도 있습니다. 반대로 작은 쪽으로 벗어나면 기회 손실로 이어집니다. 기회 손실이 계속되면 고객으로부터 ‘상품 판매가 좋지 않은 매장’이라는 평판이 붙어 고객이 줄어들 리스크가 있습니다(그림 1.9). 이런 경우에는 수요 예측의 추론이 완전한 정답을 찾지는 못하더라도, 다소 큰 쪽으로 벗어나는 것이 기회 손실을 피할 수 있고, 리스크도 작을 것입니다. --- p.23 전처리에는 사이킷런(scikit-learn)의 ColumnTransformer를 사용합니다. ColumnTransformer는 컬럼에 맞춰 전처리를 개별적으로 사이킷런의 파이프라인(Pipeline)으로 정의하고 이를 모은 클래스입니다. ColumnTransformer를 사용하면 다른 매장, 지역, 상품명, 상품 가격, 판매 연, 판매 월, 판매 주, 과거 판매 실적 데이터의 전처리를 하나의 파이프라인 처리로 모을 수 있습니다. 개별적으로 기술하는 것이 간단하다고 생각할지도 모르지만, ColumnTransformer로 모음으로써 뒤에서 전처리를 사용할 때 하나의 함수만 호출하면 전처리를 완결할 수 있게 됩니다. 전처리 파이프라인 구현은 앞에서 설명한 DataPreprocessPipeline 클래스의 함수로 정의합니다(예제 2.5). --- p.75 워크플로 자동화에서 중요한 것이 워크플로 엔진 선정과 도입입니다. 워크플로 엔진이란 배치/작업 등의 실행을 관리하는 인프라스트럭처이며 일반적으로 데이터 파이프라인이나 머신러닝 파이프라인은 워크플로 엔진 위에서 구축됩니다. 워크플로 엔진에는 OSS로는 에어플로(AirFlow)나 아르고(Argo), Prefect, Luigi가 있습니다. 클라우드에서 실현된 워크플로우 엔진에는 구글 클라우드 컴포저(Google Cloud Composer), AWS Step Functions, 애저 파이프라인(Azure Pipeline) 등이 있습니다. 머신러닝 파이프라인에 특화한 인프라스트럭처에는 KubeFLow 파이프라인이나 구글 버텍스(Google Vertex) AI 파이프라인, gokart가 있습니다. 소프트웨어나 서비스에 따라 실행 방법은 다르지만, 모두 워크플로로서 하나 이상의 잡을 연결해서 실행하는 기능을 갖고 있습니다. --- p.110~111 위반 감지는 동물 이미지의 등록과는 비동기로 실행합니다. 즉 동물 이미지가 animals 테이블에 등록된 후, 임의의 시점에 위반 감지가 실행됩니다. 위반 감지가 실시되는 것은 animals 테이블에 등록된 직후일 수 있고, 몇 분이 지난 후일 수도 있습니다. 비동기 처리이므로, 위반 감지 실행은 animals 테이블로의 데이터 등록 후이기만 하면 제한은 없습니다. 또한 위반 감지가 실패해도 animals 테이블의 데이터에는 아무런 영향이 없습니다. (…) 큐에는 RabbitMQ로 기동한 메시징 큐 서비스를 사용합니다. RabbitMQ는 AMQP(Advanced Message Queuing Protocol)를 사용한 메시징 미들웨어입니다. RabbitMQ는 서비스로서 가동하고, 메시지 등록과 전송을 담당합니다. 백엔드 API가 Producer(메시지를 보내는 측)로서 위반 감지 대상 이미지 ID를 RabbitMQ에 등록하고, 위반 감지 시스템이 Consumer(메시지를 받는 측)로서 이미지 ID를 받아 위반 감지를 실시합니다. --- p.203 이제 순위 학습 모델을 2종류 만들었습니다. A/B 테스트를 통한 비교를 같은 기준으로 하기 위해, 새롭게 만든 LGBMRegressor 모델도 LGBMRanker 모델과 마찬가지로 자동으로 학습하고 릴리스합니다. 여러 모델을 운용할 때의 각 모델의 학습 타이밍은 비교 기준이나 모델의 특성에 따라 결정해야 합니다. 여기에서는 두 모델 모두 같은 데이터를 사용해서 학습, 추론을 실행하므로 같은 시점에 학습하고 릴리스하는 것으로 합니다. 양쪽 모두 정기적으로 업데이트되는 특징량 스토어에 의존하는 모델이므로, 학습은 반드시 특징량 스토어 업데이트 후 실시합니다. --- p.313 |
|
비즈니스 사례와 디자인 패턴으로 마스터하는 머신러닝 실용화의 워크플로
머신러닝 모델이나 라이브러리 각론을 다룬 책은 많지만, 머신러닝을 실제로 프로덕션 시스템에 적용하는 일은 또 다른 문제다. 저자의 비유를 따르면 그런 책들은 “생선 손질 방법이나 전자레인지 사용 방법에 관해서는 설명하지만, 요리를 만드는 방법은 설명하지 않는 요리책”이다. 하지만 “요리를 만들려는 사람에게 필요한 책은 실제로 요리를 만드는 책”이다. 저자는 이러한 문제의식 아래 머신러닝 ‘실용화’를 다루는 이 책을 썼다. 머신러닝 실용화는 당면 비즈니스 과제가 머신러닝을 사용해서만 해결할 수 있는 과제인지 여부를 판단하는 것부터 시작된다. 머신러닝 도입 결정 후에는, 팀 크기와 역량을 고려해 저자 고유의 디자인 패턴에 따라 머신러닝 아키텍처를 설계하고 팀을 구성하는 노하우를 알려준다. 여기까지가 1장의 내용으로, 현실적인 비즈니스 상황을 가정하고 패턴별 유스케이스를 알려준다는 점이 돋보인다. 2장에서는 식료품 판매점의 수요 예측 시스템을 만들어보며 실습을 시작한다. 개발 팀의 구성 예시를 들고, 과제 설정, 시스템 개발, 워크플로 설계까지 전 과정을 자세히 설명한다. 모델 관련 구현에는 Hydra, MLflow, 사이킷런, LightGBM 등을 사용하고, 비즈니스 의사결정을 위한 BI 도구로는 Streamlit과 Plotly를 활용한다. 구축한 시스템과 워크플로는 MLOps 관점에서 변화하는 상황에 맞춰 개선할 수 있어야 하므로, 쿠버네티스에 배포하고 아르고 워크플로를 사용해 자동화하는 방법까지 살펴본다. 3장에서는 사용자가 동물 이미지를 공유하는 웹 서비스에 위반 감지 시스템을 추가하는 과정을 다룬다. 실습 편의를 위해 저자가 작성해둔 안드로이드용 앱이 제공되며, 특히 FastAPI, PostgreSQL, Redis, RabbitMQ, 일래스틱서치 등으로 구성된 백엔드의 구조를 자세히 설명한다. 이후 2장과 마찬가지로 위반 이미지 감지라는 과제 설정부터 시작해 시스템과 워크플로를 설계하고 구현해나간다. MobileNet v3 및 텐서플로를 사용해 위반을 판단하고 텐서플로 서빙과 MLflow Tracking Server으로 DB에 저장한다. 이 시스템을 프로덕션에 적용하기 위해 추론을 비동기로 실행되게 하고, 모니터링을 위해 Streamlit으로 웹 페이지를 만드는 방법도 간단히 다룬다. 4장에서는 3장의 서비스의 검색 기능을 개선하기 위해 검색 시스템에 머신러닝을 도입하는 과정을 실습한다. 순위 학습과 형태소 분석(일본어)을 설명하고 구현하며, 프로덕션 적용을 위해 CronWorkflow로 특징량 생성 작업을 자동화한다. 끝으로 텍스트뿐 아니라 이미지로도 검색할 수 있도록 ScaNN 인덱스 작성을 구현해 유사 이미지 검색 기능을 앱에 추가하고, 인덱스 업데이트 역시 자동화한다. 각각의 컴포넌트를 조합해 전체적인 파이프라인이 제대로 돌아가게 만드는 법에 초점을 맞춘 책으로서, 이론이나 개별적인 디테일에 매몰되지 않고 큰 그림을 보여준다는 점이 책의 가장 큰 미덕이다. 팀 구성, 백엔드, 인프라스트럭처, BI 도구 등 실제 서비스가 돌아가는 데 중요함에도 간과되어온 요소들까지 살펴본다는 점에서 더욱 의미 있는 실무적인 머신러닝 지침서라고 할 수 있다. 주요 내용 - 머신러닝 비즈니스 과제를 선정하는 방법, 과제를 해결하기 위한 워크플로와 시스템 구축 방법, 머신러닝을 활용하는 팀 구성 노하우 - 가공의 AI 상점에서 식료품 수요 예측을 위한 머신러닝의 활용 및 개발 워크플로 - 가공의 동물 이미지 공유 애플리케이션에서 사용자의 위반 행동을 감지하고 제지하기 위한 워크플로, 머신러닝 시스템/평가 시스템의 구현 방법 - 검색 시스템에 머신러닝을 활용해 검색 경험을 개선/발전시키는 방법 |