MLOps 수준1 : ML 파이프라인 자동화

MLOps 수준 1

MLOps 수준 1 의 목표는 ML 파이프라인을 자동화 하여 모델을 지속적으로 학습시키는 것이다

 

수준 0 과 비교해서 많은 것이 생긴것 같다 천천히 살펴보자

 

1. 수준 0 에서 Manual experiment steps 였던 데이터 검증, 전처리, 학습, 평가 등의 항목이 Manual experiment steps에서 Orchestrated experiment로 변경되었다 해당 단계사이의 전환이 자동으로 이루어지므로 실험을 빠르게 반복하고 전체 파이프라인 프로덕션을 더 빠르게 이동할 수 있다.

 

2. Performance monitoring 항목이 생성되었다. 지속적인 모니터링을 통해 모델의 성능을 평가하고 트리거가 발생될 시 해당 트리거를 발생시킨 데이터를 저장하고 데이터를 분석하여 모델을 재학습 시키는 과정이 자동으로 진행되게 된다

 

3. 개발 , 실험 환경에서 사용되는 파이프라인이 프로덕션 환경에서 사용된다 

 

4. ML파이프라인 전체에서 구성요소를 재사용, 구성, 공유할 수 있다. - 구성요소를 컨테이너화 

 - 개발 및 프로덕션 환경간에 코드를 재현 가능하다

 - 파이프라인의 각 구성요소를 분리하여 구성요소들은 자체 런타임 환경 버전을 가질 수 있고 다양한 언어 및 라이브러리를 갖는다

 - 코드 실행 환경을 분리한다

5. CD : 새로운 데이터로 학습된 새 모델을 프로덕션으로 지속적으로 배포하는 단계가 자동화 된다

 

6. 파이프라인 배포 : 전체적인 파이프라인이 전부 배포된다 

 

 

MLOps 수준 1을 구성하기 위해서는 데이터와 모델의 검증이 필요하다 

trigger를 통해 자동으로 파이프라인을 실행하기 때문에 자동 학습을 위한 데이터 검증과 모델 검증 프로세스가 필요하다 

 - 데이터 검증 : 모델 학습 전에 모델이 재학습을 진행할 지 파이프라인의 실행을 중지할지 결정하는데 필요하다 이 결정은 파이프라인에서 다음을 식별하면 자동으로 수행된다 
 ㄱ. Data Schema Skews(데이터 스카마 편향) : 이러한 Bias는 입력 데이터의 이상으로 간주된다 데이터 처리 및 모델 학습을 포함한 파이프라인의 단계에 해당 데이터가 형식에 맞지 않는지 판단해야한다 . 입력이 되는 데이터가 형식에 맞지 않을 경우 작업자에게 이 사실을 알리고 조사하게 한다. 작업자는 해당 사실을 알아차리고 해당 데이터에 대한 분석을 진행하고 파이프라인을 수정하거나 업데이트한다

 

 ㄴ. Data Value skews(데이터 값 편향) : 이러한 skews는 데이터의 통계적 특성이 변한것이다 이러한 사항을 포착하여 모델을 업데이트 하여야한다. 

 

 - 모델 검증 : 트리거 발생으로 인한 모델의 재학습시 모델을 프로덕션으로 제공하기 전에 사용자가 모델을 평가하고 검증해야한다 

 ㄱ. 모델의 품질을 평가하기 위해 측정항목을 생성한다

 ㄴ. 현재 모델과 비교한다 - 더 성능이 좋은지 판단한다

 ㄷ. 모델의 성능이 다양한 범위에서 일관성이 있는지 확인한다 - True Nagative , True Positive , False Nagative, False Positive

 ㄹ. 인프라와의 호환성 및 일관성을 모함하여 모델 배포 테스트 - 트레픽 대응 A/B 테스트, 카나리아 배포

 

 

Feature Store

 

 Feature Store는 선택적 구성요소이다 학습및 서빙을 위한 특성을 정의, 저장, 접근을 표준화하는 저장소 

Feature store는 Feature에 대해 높은 처리량과 일괄 처리 및 짧은 지연시간, 실시간 제공을 위한 API를 제공해야 하며 학습 및 서빙 workloads를 지원해야한다 

 ㄱ. 동일하거나 유사한 feature set을 다시 만들지 않고 feature set을 검색하고 재사용하게 된다

 ㄴ. feature 및 관련 메타데이터를 유지하여 정의가 다른 유사한 특성 사용을 방지한다

 ㄷ. 최신의 Feature value를 제공한다

 ㄹ. Feature store을 지속적 학습, 실험, 서빙을 위한 데이터 소스로 사용하여 training serving skews(학습과 서빙의 성능 차이)를 방지한다 

 

메타데이터 관리

 

ML파이프라인의 각 실행에 대한 정보는 전부 기록되며 오류와 이상을 디버깅하는데 도움이 된다. 

다음과 같은 메타데이터가 기록된다

 ㄱ. 실행된 파이프라인 및 구성요소 버전

 ㄴ. 시작 및 종료 날짜, 시간, 파이프라인 각 단계를 완료하는데 걸린 시간

 ㄷ. 파이프라인 실행자

 ㄹ. 파이프라인에 전달된 파라미터 인수

 ㅁ. 준비된 데이터 저장 위치, 검증 이상, 계산된 통계, 카테고리형 특성에서 추출된 어휘와 같은 파이프라인의 각 단계에서 생성된 artifacts에 대한 포인터 - 이러한 출력을 추적하면 이미 완료된 단계를 다시 실행하지 않고도 파이프라인이 실패한 단계로 가장 최근의 단계에서 파이프라인을 다시 실행시킬 수 있다

ㅂ. 이전에 학습된 모델에 대한 포인터 - 이전 모델 버전으로 롤백해야 하는 경우 또는 모델 검증 단계에서 파이프라인에 새 테스트 데이터가 제공될 때 이전 모델에 대한 평가항목을 생성해야 하는 경우)

ㅅ. 학습 및 테스트 세트에 대한 모델 평가단계에서 새로운 모델 평가 측정항목 - 새로운 모델과 이전 모델의 성능을 비교하기위해 필요

 

ML pipeline trigger 

 

파이프라인을 자동으로 재학습 시킬 수 있게 한다 

 ㄱ. 수동실행

 ㄴ. 정기적 실행 - 매일, 매주, 매월 - 재학습 빈도는 패턴 변경빈도 , 재학습 비용에 따라 달라진다

 ㄷ. 새 학습 데이터의 가용성 기준 - 

 ㄹ. 모델 성능 저하 시

 ㅁ. 데이터 분포의 중요한 변화시 (concept drift) - 모델이 오래됬다고 판단되어 재학습이 필요할 때

 

부족한 점 

 

1. 파이프라인의 새로운 구현이 자주 배포되지 않고 몇개의 파이프라인만 관리한다고 가정된다. - 파이프라인과 구성요소를 수동으로 테스트한다 

2. 새로운 파이프라인을 수동으로 배포한다 

3. 새로운 ML 아이디어를 시도해야하고 ML 구성요소를 빠르게 배포해야 하는 경우 배포를 자동화 하기위한 CI/CD가 필요하다

 

https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning

 

MLOps: 머신러닝의 지속적 배포 및 자동화 파이프라인  |  Google Cloud

이 문서에서는 머신러닝(ML) 시스템을 위한 지속적 통합(CI), 지속적 배포(CD), 지속적 학습(CT)을 구현하고 자동화하는 기술을 설명합니다. 데이터 과학 및 ML은 복잡한 실제 문제를 해결하고, 업계

cloud.google.com

 

MLOps 수준 0 : 수동 프로세스 

MLOps 수준 0

1. 학습용 데이터를 추출하고 분석한다

2. 데이터 전처리

3. 모델 학습

4. 모델 평가 및 검증

5. 모델 저장소에 등록

6. 모델 서빙

7. 서비스 진행

 

문제점

1. 해당 과정이 전부 수동, 스크립트 기반으로 동작하게 된다 

모든 단계는 수동으로 실행하고 한 단계에서 다른 단계로 전부 일일이 작업자가 타이핑 또는 빌드로 진행하게 된다. 작업자가 개인의 툴에서 실행해보고 됬다 싶으면 다음 단계로 넘어간다 

 

2. ML을 하는 데이터 사이언티스트와 엔지니어링 팀이 분리되어있다 데이터 사이언티스트가 모델을 학습시키고 엔지니어링 팀에 넘긴다 - 넘길때는 모델의 가중치만 있는 파일 또는 레이어가 담긴 파일을 회사 저장소에 저장하는 방식이다

 

3. 이렇게 하다보면 학습할 떄의 성능보다 서빙할때의 성능이 떨어지는 모델이 생길 가능성이 있다

 

4. 지속적이지 않은 모델 업데이트 - 1년에 한두번 할 까 말까 한 정도의 재학습이 진행되어 모델의 성능이 떨어지는건 생각지 않는다

 

5. CI 없음 - 구현 변경사항이 거의 없으므로 CI란게 없다 코드테스트가 관리되지 않고 개인의 툴에 저장되어 있기 때문에 각각의 작업자의 개인 PC에 코드들이 저장되어있다

 

6. CD 없음 - 모델의 버전이 자주 변경되지 않으니 CD는 고려되지 않는다

 

7. MLOps 수준 0는 전체 ML 시스템을 배포하는게 아닌 학습된 모델을 배포하는것이다

 

8. 모니터링 없음 - 모델의 성능이 저하됐는지 모른다 모델 동작 드리프트를 감지하는데 필요한 trigger를 설정하지 않았다

 

 

내가 지금까지 했던 프로세스가 MLOps 수준 0 에 해당했다 

개인 작업PC에서 모델을 학습시키고 Github같은 협업툴을 사용하지 않고 혼자 작업했다 

물론 혼자 작업하면 편한점은 있다 편하다 

하지만 나중에 후회했다 지속적으로 코드를 정리하지 않다보니 전에 좋았던 하이퍼파라미터가 무엇이였는지 어디에 저장해놓았는지 까먹을 때가 있었고 실수로 파일을 지워버리면 복구하기까지 시간이 오래걸렸다 

또한 실제로 모델을 학습시켜서 서비스를 하려했지만 학습 PC와 서비스 PC의 사양이나 구성요소등이 달라 구축환경을 맞추기도 힘들었다

특히 학습 데이터를 관리를 잘 하지 못해 학습을 시키고 보니 더 성능이 떨어졌던 기억이 있다.

또한 학습 데이터셋을 버전관리를 하지 않아 모델간의 성능 비교 효과가 떨어졌다

 

https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning

 

MLOps: 머신러닝의 지속적 배포 및 자동화 파이프라인  |  Google Cloud

이 문서에서는 머신러닝(ML) 시스템을 위한 지속적 통합(CI), 지속적 배포(CD), 지속적 학습(CT)을 구현하고 자동화하는 기술을 설명합니다. 데이터 과학 및 ML은 복잡한 실제 문제를 해결하고, 업계

cloud.google.com

 

머신러닝 프로젝트를 지속적으로 통합(CI), 지속적 배포(CD), 지속적 학습(CT)를 구현하고 자동화하는 기술을 설명한다.

 

 - DevOps와 MLOps의 비교

DevOps란 대규모 소프트웨어 시스템을 개발하고 운영하는데 사용된다. 효율적인 DevOps는 개발 주기 단축, 배포 속도 증가, 안정적인 출시 등의 이점을 제공한다. 이러한 이유는 지속적 통합(CI : Continuous Integration)와 지속적 배포(CD : Continuous Deployment) 의 효과이다

 

MLOps는 DevOps와 비슷하지만 다른점은 이와같다

1. 머신러닝은 주로 수학자와 데이터 사이언티스트, 연구원으로 구성되어 있기 때문에 프로덕션 수준의 서비스 빌드가 가능한 인력이 없을 수 있다.

2. ML은 기본적으로 실험에 기반한 기술이다. 많은 사람들이 하이퍼파라미터의 변경에 어떤 수학적 함수를 따르는지 모른다. 그렇기에 실험을 통해 좋은 하이퍼파라미터를 찾게되는데 이런 과정에서 모델의 성능이 좋았던 것과 안좋았던것 을 잘 정리하고 모델 코드를 잘 분류하여 코드 재사용성을 극대화하고 재현성을 유지해야한다

3. 머신러닝은 다른 소프트웨어보다 더 복잡하다. 단위테스트, 데이터 검증(Data Validation), 학습 모델 평가, 모델 검증(Model Validation)이 필요하다

4. 머신러닝 모델은 지속적으로 업데이트가 되어야한다. 계속하여 서비스되고있는 모델의 성능을 검증하고 평가하고 평가점수가 낮아졌다면 모델의 학습을 다시 진행시켜야 완벽한 서비스가 진행된다. 이를 위해 지속적인 배포를 위한 자동화가 필요하다

5. 사용자의 데이터는 계속하여 진화된다. 이로인해 모델이 학습하지 못한 데이터가 입력으로 들어올 가능성이 크다. 이러한 문제는 모델의 성능 저하로 이어지기 때문에 데이터의 통계를 관찰하고 모델의 성능을 지속적으로 모니터링 하여 trigger를 발생시켜 문제를 인식하여야 한다.

 

  DevOps MLOps
CI(Continuous Integration) 코드와 구성요소 테스트 및 검증 DevOps + 데이터, 데이터 스키마, 모델
테스트 및 검증
CD(Continuous Deployment) 단일 소프트웨어 서비스 배포 DevOps + 모델 서비스 자동 배포
CT(Continuous Training) X 모델 자동 재학습

 

https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning

 

MLOps: 머신러닝의 지속적 배포 및 자동화 파이프라인  |  Google Cloud

이 문서에서는 머신러닝(ML) 시스템을 위한 지속적 통합(CI), 지속적 배포(CD), 지속적 학습(CT)을 구현하고 자동화하는 기술을 설명합니다. 데이터 과학 및 ML은 복잡한 실제 문제를 해결하고, 업계

cloud.google.com

 

내가 개발을 하면서 가장 매력적으로 느꼇던 일은 자동화이다.

항상 일을 빨리 끝내고 놀고싶은 마음이 나를 자동화로 이끌었다. 

개발에서 모든 반복작업은 자동화를 해야 마음이 편하다. 

 

머신러닝 프로젝트에서 당연한 이야기지만 학습을 진행할 일은 매우 자주 있다. 

그런데 ML을 시작한지 얼마 안된 상황에서는 모든 머신러닝 절차를 수동으로 진행하게 된다. 

이제 어느정도 머신러닝 프로세스의 과정을 이해하였으니 자동화를 시작하려 한다

 

머신러닝에 대해 자동화 파이프 라인을 계획중에 구글 GCP에 나와있는 MLOps : Continuous delivery and automation pipilines in machine learning을 보고 정리를 하게 되었다.

 

 

https://cloud.google.com/architecture/mlops-continuous-delivery-and-automation-pipelines-in-machine-learning

 

MLOps: 머신러닝의 지속적 배포 및 자동화 파이프라인  |  Google Cloud

이 문서에서는 머신러닝(ML) 시스템을 위한 지속적 통합(CI), 지속적 배포(CD), 지속적 학습(CT)을 구현하고 자동화하는 기술을 설명합니다. 데이터 과학 및 ML은 복잡한 실제 문제를 해결하고, 업계

cloud.google.com

해당 글에 나와있는 내용을 바탕으로 정리를 시작한다

S3 Bucket은 AWS에서 지원하는 스토리지 서비스이다. 손쉽게 파일을 업로드 하고 다운로드 받을 수 있다

 

검색창에 S3를 입력한다 

S3에 들어가서 버킷생성을 누른다 

버킷이름을 입력하고 다음을 클릭

옵션 구성에서는 별다른 설정을 하지 않고 넘어간다 

 

외부에서 접근하기 위해 권한 설정에서 퍼블릭엑세스차단을 해제한다.

버킷이 생생된 후 버킷을 선택해 파일 업로드를 클릭한다 파일을 선택하고 퍼블릭 권한 관리에서 

이 객체에 퍼블릭 엑세스 권한을 부여함 을 선택한다

스토리지 클래스도 스탠다드 기본값을 선택한다

업로드를 누른다 

버킷의 속성에서 정적 웹 사이트 호스팅 을 선택하면 해당 버킷을 브라우져를 통해 접속이 가능하다 

 

 

'infra > AWS' 카테고리의 다른 글

AWS 교육 (2 - RDS 생성)  (0) 2020.08.20
AWS 교육 (1 - 인스턴스 생성)  (0) 2020.08.11

AWS 에서는 가상화 데이터베이스인 RDS를 지원한다 

이번 글에서는 Mysql을 사용하는 RDS를 생성해 보겠다

 

RDS는 DB인스턴스에 따라 가격이 부과되니 만들 때 잘 보고 설정해야 요금폭탄 명세서를 안받는다.

DB인서턴스당 비용은 DB엔진 - 요금에서 볼 수 있다. 

DB를 생성해 보자 검색에 RDS를 검색하여 클릭한다 MySQL을 클릭한다 

저렴한 프리티어를 이용하겠다 DB 이름을 정하고 루트계정 아이디와 비밀번호를 설정한다

프리티어를 선택할 시 기본적으로 인스턴스와 디스크용량이 정해져있다

스토리지는 HDD는 없고 SSD와 프로비저닝된 IOSP(SSD), 마그네틱이 있다 여기서는 기본값인 범용 SSD를 사용한다

 

 

다른 인스턴스에는 이렇게 여러가지 인스턴스가 있고 제각각 CPU, RAM, EBS등이 다르다 성능에따라 가격또한 상승한다

프리티어가 아닌 다른 인스턴스를 선택하고 다중AZ 대기 인스턴스 체크를 하였더니 인스턴스가 2개 만들어져서 2배의 가격이 측정된다 

프리티어를 사용하자 

데이터베이스르 생성한다

데이터베이스에 접속하기 위해서는 보안그룹에서 자신의 아이피로 3306포트를 오픈하고 엔드포인트 주소를 호스트로 하고 데이터베이스 생성할 때 적었던 루트계정 아이디와 비밀번호를 적으면 연결이 된다

 

 

 

'infra > AWS' 카테고리의 다른 글

AWS 교육 (3 - S3 Bucket)  (0) 2020.08.20
AWS 교육 (1 - 인스턴스 생성)  (0) 2020.08.11

AWS 교육이 시작되었다 

AWS는 Free Tier 로 1년 200$ 까지 무료로 이용이 가능 하다

교육은 강사님의 계정에 8개의 IAM 계정을 생성하여 접속하였다

 

가장 먼저 AWS 에서 AWS 콘솔에 접속하면 대시보드가 나온다. 

대시보드에서 AWS의 VM인 EC2 인스턴스를 만들기를 누른다 

이번 교육에서는 Linux를 이용하였다. 기본적인 패키지가 포함되어 있는 AMI(Amazon machine image)를 선택하였다

 

 

이 계정은 프리티어 이기 때문에 저렴한 t2.micro 를 선택하였다

 

 

인스턴스 세부 정보 구성에서는 별다른 설정을 하지 않고 넘어간다 

스토리지는 가장 작은 8GiB를 선택하고 범용 SSD를 사용한다

생성될 인스턴스를 구별하기 위하여 태그를 추가한다 Name 이라는 키로 쓰고싶은 값을 넣었다

보안 그룹은 나중에 SSH로 인스턴스에 Shell 접속을 하기위해 필요하다 22번 포트를 내 IP로 열어준다

생성된 인스턴스

인스턴스 선택시 아래에 나오는 상세정보

 

인스턴스의 보안그룹 확인

 

 

'infra > AWS' 카테고리의 다른 글

AWS 교육 (3 - S3 Bucket)  (0) 2020.08.20
AWS 교육 (2 - RDS 생성)  (0) 2020.08.20

현재 가진 지식으로 취업을 하기에는 너무 경쟁률이나 받을 수 있는 취급이 낮다고 생각이 들어 친구의 소개로

SK인포섹과 고용노동부가 진행하는 4차 산업혁명 선도인력 양성사업을 신청하게 되었다

 

과거에도 서울에서 교육을 들으며 서울살이를 시작하려 했기에 망설임 없이 바로 올라갔다.

 

2020년 7월 2일

오티를 참석하여 교육과정과 SK인포섹에 대한 설명을 들었다 

우수 수료자는 SK인포섹에 신입사원으로 뽑는다는 말이 써있긴 했지만 우수 수료자는 한 두명 일줄 알았지만

운영진이 대부분 취업이 된다고 말했다

딱히 입사하기 위해 지원했다기 보다는 교육을 듣는것이 목적이였는데 말을 듣고 혹해서 블라인드등 여러 취업 사이트에 인포섹을 검색해 보았지만 대부분 관제부분에 대한 평가글이여서 개발쪽은 알기 어려웠다. 

 

2020년 07월 3일

 

클라우드 A/I 과정이 시작 되었다.

 

교육 과정으로는 파이썬 클라우드 AI  순서가 있다

 

나에게 부족한 infra에 대한 지식과 python을 이용한 AI 구현에 대하여 배울 수 있을것이다

 

+ Recent posts