쿠버네티스로 구현하는 머신러닝 [오픈소스 기반 머신러닝 플랫폼 구축과 활용]
- 원서명Machine Learning on Kubernetes: A practical handbook for building and using a complete open source machine learning platform on Kubernetes (ISBN 9781803241807)
- 지은이파이살 마수드(Faisal Masood), 로스 브리골리(Ross Brigoli)
- 옮긴이최준
- ISBN : 9791161758183
- 35,000원
- 2024년 01월 30일 펴냄
- 페이퍼백 | 424쪽 | 188*235mm
- 시리즈 : 클라우드 컴퓨팅
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/ml-kubernetes
요약
머신러닝은 더 이상 일부 전문가들의 영역이 아니며, 머신러닝의 구현과 운영 모두 여러 분야에서 축적된 경험을 바탕으로 생산적으로 발전해왔다. 이 과정에서 MLOps(Machine Learning Operations)는 기존의 소프트웨어와 시스템의 통합 운영 기술을 도입하고, 머신러닝을 위한 표준 프로세스를 적용해서 최적화해왔다. 쿠버네티스를 포함한 오픈소스 도구들을 통해 이 변화를 탐험해보자.
이 책에서 다루는 내용
◆ 머신러닝 프로젝트의 여러 단계별 이해
◆ 쿠버네티스 기반의 머신러닝 플랫폼 제작을 위한 오픈소스 소프트웨어 사용
◆ 머신러닝 플랫폼을 사용한 전체 머신러닝 프로젝트 구현
◆ 기업의 머신러닝을 위한 향상된 협업 과정
◆ 데이터 엔지니어, 머신러닝 엔지니어 또는 데이터 과학자 역할에 맞는 플랫폼 사용 방법
◆ 실제 업무 문제의 해결을 위한 머신러닝 적용 방법
이 책의 대상 독자
데이터 과학자, 데이터 엔지니어, IT 플랫폼 운영자, 인공지능 제품 서비스 책임자와 오픈소스 구성 요소로 머신러닝 플랫폼 제작을 원하는 데이터 설계 책임자를 위한 책이다. 파이썬(Python)과 쿠버네티스에 대한 이해와 데이터 사이언스 및 공학에 대한 기본 개념을 갖고 있다면 이 책이 다루는 주제를 파악하는 데 큰 도움이 될 것이다.
이 책의 구성
1장에서는 머신러닝 도입의 도전 과제를 다룬다. 기업이 머신러닝을 도입하면서 만나게 될 문제점과 머신러닝의 도입 취지를 계획대로 달성하지 못하는 이유를 논의한다. 또한 기업이 이러한 문제를 만나게 되는 몇 가지 이유를 살펴본다.
2장에서는 MLOps가 무엇인지 이해한다. 1장에서 다룬 머신러닝 도입의 문제점들에 이어서 머신러닝 도입에 어려움들을 어떻게 극복할 수 있는지 논의한다. 이 장에서는 MLOps란 무엇인지 정의하고, 기업이 MLOps 도입 취지를 달성할 수 있도록 돕는다. 또한 기업이 머신러닝 프로젝트를 통해 MLOps를 어떻게 도입하는지 청사진을 제시한다.
3장에서는 쿠버네티스를 살펴본다. 이 책에서 왜 쿠버네티스를 MLOps의 플랫폼으로 선택했는지 설명한다. 또한 쿠버네티스의 핵심 개념을 정의하고 코드를 테스트하기 위한 환경을 만들 수 있도록 도와준다. 세상이 빠르게 변하는 만큼 빠른 변화에 대한 대응도 클라우드와 클라우드 기반 솔루션의 일부다. 쿠버네티스 기반의 플랫폼을 통해 독자의 솔루션이 어디서나 동작하게 만드는 유연함을 어떻게 갖추는지 알아본다.
4장은 머신러닝 플랫폼의 구조를 다룬다. 머신러닝 플랫폼이 어떤 모습을 갖고 있는지 먼 발치에서 살펴볼 것이다. 4장은 기술의 이론적인 관점에서 MLOps 플랫폼 구성 요소를 정의한다. MLOps플랫폼의 핵심 구성 요소를 기초를 튼튼하게 익힐 것이다.
5장에서는 데이터 엔지니어링에 대해 살펴본다. 머신러닝 프로젝트에서 중요하지만 가끔 놓치기 쉬운 부분이다. 상당수의 머신러닝 입문서가 CSV 파일과 같이 자신만의 모델을 만들기 위한 깔끔한 데이터셋으로 시작하지만 현실은 다르다. 데이터는 다양한 모양과 크기를 갖고 있으며, 데이터 규모에 맞게 수집, 처리, 준비가 가능한 잘 정리된 전략이 중요하다. 이 장에서는 성공적인 머신러닝 프로젝트의 데이터 엔지니어링 역할을 정의한다. 데이터 엔지니어링의 기초가 되는 OSS 도구들을 논의할 것이다. 그리고 이러한 도구들을 쿠버네티스 플랫폼에 설치하는 방법을 다룬다.
6장에서는 머신러닝 엔지니어링에 대해 알아본다. 이제 머신러닝 개발 과정에서 모델을 제작하고 배포하는 작업으로 논의를 이어간다. 6장에서는 같은 플랫폼에서 데이터 과학자들이 더 효율적으로 데이터 엔지니어링 팀과 동료들이 협업할 수 있게 돕는 셀프서비스 솔루션을 논의한다. 또한 모델 개발을 위한 OSS 도구들을 다룬다. 그리고 이러한 도구들을 어떻게 쿠버네티스 플랫폼에 설치하는지 설명한다.
7장에서는 머신러닝 프로젝트 중에서 배포 단계를 다룬다. 직접 만들어 본 모델은 만든 사람이 제공한 데이터를 이미 알고 있다. 하지만 현실에서는 데이터가 변화한다. 이 장에서는 모델의 성능을 모니터하기 위한 도구와 기술을 논의한다. 성능 데이터를 사용해 새로운 데이터셋에 대한 재학습이 필요한지 또는 주어진 문제에 대한 새로운 모델이 필요한 시점인지 판단할 것이다.
8장에서는 플랫폼을 활용한 머신러닝 프로젝트 완성하는 방법에 대해 이야기한다. 전형적인 머신러닝 프로젝트에서 각각의 플랫폼 구성 요소를 프로젝트 단계별로 어떻게 활용하는지 정의한다. 이러한 프로젝트의 산출물과 요구 사항도 이 장에서 정의하고, MLOps가 어떻게 프로젝트를 용이하게 만드는지 주로 살펴본다.
9장에서는 스파크(Spark) 클러스터로 데이터를 어떻게 수집하고 처리하는지 보여줄 것이다. 또한 플랫폼이 어떻게 어느 저장소에서도 원시 데이터를 읽을 수 있도록 데이터 엔지니어를 돕는지 보여준다. 핵심은 스파크 클러스터가 필요시 어떻게 생성되며, 작업이 어떻게 공유된 환경에서 구분되는지 설명하는 것이다.
10장에서는 주피터허브(JupyterHub) 서버를 활용해서 어떻게 모델을 플랫폼을 기반으로 제작, 학습, 조정하는지 보여준다. 또한 이러한 플랫폼이 데이터 과학자가 스스로 동작하는 모델을 구현하는 과정을 어떻게 지원하는지 보여준다. 모델을 시험하고, 등록하는 구성 요소인 MLflow도 10장에서 소개한다. 잘 동작하는 모델이 있을 때, 이 모델을 어떻게 다른 팀에서 활용할 수 있게 만들까? 10장에서 셀돈 코어(Seldon Core) 구성 요소로 모델을 REST API 형태로 접근해 개발자가 아니어도 사용할 수 있게 만드는 방법을 보여줄 것이다. 또한 배포한 API에 대해서 쿠버네티스의 기능을 활용해 자동으로 용량을 확장하는 방법을 알아본다.
11장에서는 쿠버네티스 기반의 머신러닝에 대해 독자가 더 깊이 알아야 할 핵심적인 개념을 소개한다. 11장에서 머신러닝 플랫폼과 머신러닝의 안정화, 쿠버네티스 운영에 대한 실제 사례들을 다룬다.
목차
목차
- 1부. 머신러닝 도입의 문제점과 MLOps의 이해(정의와 근거)
- 1장. 머신러닝의 도전 과제
- 머신러닝 이해하기
- 머신러닝 가치의 실현
- 올바른 접근법 선택
- 데이터의 중요성
- 머신러닝 도입의 도전 과제
- 큰 그림에만 집착하기
- 사일로 살펴보기
- 빠른 실패 문화
- 머신러닝 플랫폼 개요
- 요약
- 더 알아보기
- 2장. MLOps 이해하기
- 머신러닝과 기존 프로그래밍의 비교
- DevOps의 장점 알아보기
- MLOps 이해하기
- 머신러닝
- DevOps
- 머신러닝 프로젝트 라이프사이클
- 빠른 피드백 루프
- 프로젝트 라이프사이클에서의 협업
- 머신러닝 프로젝트에서의 OSS 역할
- 쿠버네티스에서 머신러닝 프로젝트 운영
- 요약
- 더 알아보기
- 3장. 쿠버네티스 탐험
- 기술 요구 사항
- 쿠버네티스 주요 구성 요소 살펴보기
- 제어 영역
- 작업자 노드
- 앱의 실행을 위한 쿠버네티스 객체
- 쿠버네티스로 클라우드 사용자되기
- 오퍼레이터 이해하기
- 로컬 쿠버네티스 환경 설정하기
- kubectl 설치
- minikube 설치
- OLM 설치
- 구글 클라우드 플랫폼의 가상머신 준비하기
- 요약
- 2부. MLOps 플랫폼의 작업 영역과 쿠버네티스로 만드는 방법
- 4장. 머신러닝 플랫폼의 구조
- 기술 요구 사항
- 셀프서비스 플랫폼 정의
- 데이터 엔지니어링 구성 요소 알아보기
- 데이터 엔지니어 워크플로
- 모델 개발 구성 요소 알아보기
- 데이터 과학자의 워크플로 이해하기
- 보안, 모니터링과 자동화
- ODH 소개
- 쿠버네티스에 ODH 오퍼레이터 설치
- 쿠버네티스 클러스터에 인그레스 제어기 활성화
- 쿠버네티스에 Keycloak 설치
- 요약
- 더 알아보기
- 5장. 데이터 엔지니어링
- 기술 요구 사항
- 인증을 위한 Keycloak 설정
- ODH 구성 요소에 대한 Keycloak 설정 가져오기
- Keycloak 사용자 생성
- ODH 구성 요소 설정
- ODH 설치
- 주피터허브의 이해와 활용
- 주피터허브 설치 확인하기
- 첫 번째 주피터 노트북 실행
- 아파치 스파크의 기초 이해
- 아파치 스파크 작업 실행 이해하기
- ODH로 아파치 스파크 클러스터를 필요할 때 제공하는 방법
- 스파크 클러스터 생성
- 주피터허브로 스파크 클러스터를 생성하는 방법
- 주피터 노트북에서 스파크 앱을 만들어서 실행하기
- 요약
- 6장. 머신러닝 엔지니어링
- 기술 요구 사항
- 머신러닝 엔지니어링 이해
- 사용자 노트북 이미지 사용
- 사용자 노트북 컨테이너 이미지 만들기
- MLflow 소개
- MLflow 구성 요소 이해
- MLflow 설치 확인하기
- 시험 추적 시스템용 MLflow
- 시험 실행에 사용자 데이터 추가
- 모델 레지스트리 시스템으로서 MLflow
- 요약
- 7장. 모델 배포와 자동화
- 기술 요구 사항
- 셀돈 코어를 사용한 모델 추론의 이해
- 파이썬을 사용한 모델 래핑
- 모델을 컨테이너로 만들기
- 셀돈 코어 컨트롤러로 모델 배포하기
- 셀돈 코어를 사용한 모델의 패키징, 실행, 모니터링
- 아파치 Airflow 소개
- DAG 이해
- Airflow 기능 탐험
- Airflow 구성 요소 이해
- Airflow 설치 확인하기
- Airflow DAG 리포지터리 설정
- Airflow 런타임 이미지 설정
- Airflow에서 머신러닝 모델 배포의 자동화
- 파이프라인 편집기로 파이프라인 생성하기
- 요약
- 3부. MLOps와 새로운 플랫폼을 사용한 전체 프로젝트 빌드
- 8장. 우리의 플랫폼을 사용한 전체 머신러닝 프로젝트 만들기
- 머신러닝 플랫폼의 전체 그림 보기
- 사업적 과제의 이해
- 데이터 수집, 처리, 정제
- 데이터 소스, 경로, 형식의 이해
- 데이터 처리와 정제의 이해
- 예비 데이터 분석 수행
- 데이터 샘플 이해
- 피처 엔지니어링의 이해
- 데이터 증강
- 머신러닝 모델의 빌드와 평가
- 데이터 평가 기준
- 모델 빌드
- 모델 배포
- 재현 가능성
- 요약
- 9장. 데이터 파이프라인 만들기
- 기술 요구 사항
- 개발을 위한 스파크 클러스터 자동 제공
- 스파크 데이터 파이프라인 작성
- 실행 환경 준비
- 데이터 이해하기
- 파이프라인 설계와 제작
- 데이터 파이프라인을 모니터하는 스파크 화면 사용
- Airflow를 사용한 데이터 파이프라인 제작과 실행
- 데이터 파이프라인 DAG 이해
- DAG 제작과 실행
- 요약
- 10장. 모델의 제작, 배포와 모니터링
- 기술 요구 사항
- 주피터허브를 사용한 데이터 시각화와 탐색
- 주피터허브로 모델을 만들고 조정하기
- 모델 시험 추적과 MLflow를 사용한 버전 관리
- 모델 시험 추적
- 모델 버전 관리
- 모델을 서비스로 배포
- 모델 호출하기
- 모델 모니터하기
- 모니터링 구성 요소의 이해
- 그라파나와 대시보드 설정
- 요약
- 11장. 쿠버네티스 기반의 머신러닝
- 머신러닝 플랫폼 사례 검토
- AutoML 검토하기
- 상업적 플랫폼
- ODH
- 머신러닝 운영 최적화
- 업무 기대치 설정
- 지저분한 실제 데이터 처리
- 부정확한 결과 처리
- CD 관리
- 보안 관리
- 규정 준수
- 거버넌스 적용
- 쿠버네티스 실행
- 벤더 의존성 방지
- 다른 쿠버네티스 플랫폼 검토
- 로드맵
- 요약
- 머신러닝 플랫폼 사례 검토
도서 오류 신고
정오표
정오표
[ p.90: 9단계 ]
9. 다음은 nimikube 설치 과정의
->
9. 다음은 minikube 설치 과정의
[ p.120: 1행 ]
1. minikube를 사용해 카프카 클러스터가 실행 중인지 확인한다.
->
1. minikube를 사용해 쿠버네티스 클러스터가 실행 중인지 확인한다.