본문 바로가기

AI/ML

[10/1] 아이펠 리서치 15기 TIL | ML 학습 방법론, ML 아키텍처, MLOps

반응형

오늘 배운 내용

오늘은 교재 1,2장을 읽으며 크게 ML 학습 방법론, ML 아키텍처, MLOps 3가지를 배웠다.


1. ML 학습 방법론


ML 학습 방법론의 종류는?

1. 지도학습

  • 입력 데이터와 레이블의 관계를 학습한다.
  • 훈련 데이터: 입력 데이터 & 레이블
  • Regression, Classification

2. 비지도학습

  • 레이블을 훈련 데이터로 쓰지 않는다.
  • 군집화
    • K-means, DBSCAN
  • 이상치 탐지
    • 이상치 탐지(Outlier) - 횡단면 데이터
    • 이상 탐지(Anormaly) - 시계열 데이터
  • 차원 축소
    • PCA, T-SNE

3. 준지도학습

  • 레이블이 없는/있는 데이터 모두 활용해 학습한다.
  • 많은 데이터 중 레이블이 있는 데이터는 적을 때 사용한다.
  • 명확하게 레이블을 나눌 수 있는 시스템을 구축할 때 사용한다.
  • 평활도(Smoothness) 가정 - 특징이 비슷한 데이터는 같은 레이블을 가질 가능성이 높다.
  • 저밀도(Low-density) 가정 - 데이터의 확률 밀도가 높은 곳에는 결정 경계(Decision Boundary)가 생기지 않는다.
  • 다양체(Manifold) 가정 - 고차원 공간의 데이터를 잘 표현하는 저차원 공간이 존재한다.

4. 자기지도학습

  • 레이블 없이 학습 데이터 자체에서 신호를 만들어 학습하는 방법
    • 데이터가 스스로 레이블을 만들어주는 학습
  • Pre-training(사전학습)에 주로 사용한다.
  • 표현 학습(Representation Learning)에 강점을 가진다.

5. 강화학습

  • 행동주의
    • 모든 동물은 학습 능력을 갖고 있으며 어떤 행동을 수행했을 때 보상이 주어진다면 그 행동의 발생 빈도가 높아진다.
  • 구성 요소
    • 환경 - 학습을 진행하는 공간 또는 배경
    • 에이전트 - 환경과 상호작용하는 프로그램
    • 상태 - 환경에서 에이전트의 상황
    • 행동 - 주어진 환경의 상태에서 에이전트의 행동
    • 보상 - 현재 환경의 상태에서 에이전트가 어떤 행동을 했을 때 제공되는 것
    • 정책 - 에이전트가 보상을 최대화하기 위해 행동하는 알고리즘

언어모델을 학습하는 방법 두 가지

1. 지도학습

  • 일반적인 언어 지식을 학습하는 Pre-training(LM 학습)과 달리 Fine-tuning은 특정 문제에서의 성능을 최적화하는 과정이다.
  • Fine-tuning 단계에서는 입력 데이터와 레이블의 쌍이 필요한데, 이 때 지도학습을 활용한다.

2. 자기지도학습

  • Pre-training 단계에서는 모든 학습 신호가 데이터 자체에서 생성되므로 레이블이 필요 없다.
  • 대표 기법
    1. Masked Language Modeling (MLM)
      • 문장 중 일부 단어를 Mask 해서 모델이 맞히도록 학습한다.
      • ex) BERT
    2. Autoregressive Language Modeling (ARLM)
      • 앞 단어를 보고 다음 단어를 예측한다.
      • ex) GPT
  • 이런 방식으로 언어 이해, 언어 생성 능력을 모델에 미리 학습시키는 것이 Pre-training.

그렇다면 ChatGPT에 적용된 기법은?

1. Pre-training (자기지도학습)

  • GPT 계열 모델처럼 Autoregressive LM 사용한다.

2. Supervised Fine-tuning (지도학습)

  • 사람이 작성한 질문-답변 데이터로 학습한다.

3. Reinforcement Learning with Human Feedback (RLHF, 강화학습)

  • 인간 피드백을 기반으로 모델 출력을 평가하고, 보상(reward)을 통해 학습한다.
  • 답변이 지루하거나 부적절할 수 있다는 것이 기존의 단순 지도학습 기반 모델.
  • 적은 수의 레이블인 인간 평가 데이터보상 모델로 학습시켜 대규모 생성 결과의 평가가 가능해졌다.
  • 모델 출력 → 보상 모델 점수 → 정책(Policy)을 강화학습 방식으로 업데이트 했다.

요약하자면,

대규모 자기지도학습으로 언어 능력 습득 → 지도학습으로 자연스러운 답변 학습 → RLHF로 답변의 품질을 높임.


2. 머신러닝 아키텍처


데이터 준비

  • 데이터를 수집하고, 수집된 Raw data를 학습에 적합하게 준비하는 단계이며, ML 파이프라인에 있어서 가장 중요한 단계라고 할 수 있다.
  • 데이터 수집, 정제, 레이블링, 분석 및 시각화 단계로 나뉜다.
  1. 데이터 수집
    • 머신러닝 시스템에 필요한 데이터를 모으는 프로세스
    • 아래의 사항을 고려한 후 최대한 많은 데이터를 확보해 데이터 레이크(Data Lake)를 구축한다.
      • 데이터의 사용 가능성
      • 개인 정보 포함 여부
      • 데이터 수집 비용
  2. 데이터 정제
    • 데이터의 품질을 위해 오류를 수정하고, 누락된 데이터를 채우고, 불필요한 데이터는 삭제한다.
    • 일관성과 무결성을 유지한 채 정제한 후, 데이터베이스나 데이터 웨어하우스(Data Warehouse)를 구축해 관리한다.
  3. 데이터 레이블링
    • 정제된 원시 데이터를 식별하고 데이터 가공 도구를 활용해 하나 이상의 정보를 태깅(tagging)하는 과정
  4. 분석 및 시각화
    • 탐색적 데이터 분석(EDA)를 통해 데이터의 특성 및 분포를 확인하고 시각화를 진행한다.
    • 이 과정에서 이상치 식별, 상관관계 및 편향 분석, 가설 수립 및 변경, 데이터 패턴 등을 확인할 수 있다.

모델링

  • 다양한 알고리즘 기법들을 적용해 특정 유형의 패턴을 인식하도록 학습된 시스템을 구축하는 것을 의미한다.
  • 피처 엔지니어링, 모델 설계, 모델 학습 단계로 나뉜다.
  1. 피처 엔지니어링
    • 머신러닝 모델 학습에 포함될 변수나 특징을 추출하고 변환하는 작업이다.
    • 대표적인 방법:
      • Feature Selection - 학습에 활용할 데이터만 선별하는 과정
      • Feature Sampling - 선별된 데이터의 분포를 균등 분포로 추출하거나 계층적 샘플링 등으로 추출하는 방법
      • Feature Transformation - 샘플링된 데이터를 숫자형 데이터로 변환하는 과정
      • Feature Extraction - 피처를 더 작은 차원으로 축소하면서 원래 데이터의 속성을 유지하도록 변환하는 과정
      • Feature Construction - 기존 피처를 활용해 새로운 피처를 생성하는 과정
  2. 모델 설계
    • 현재 구축하려는 시스템에 적합한 알고리즘이나 모델을 설계하고 구현하는 단계
    • 피처 엔지니어링을 통해 생성된 데이터 중 어떠한 필드를 input과 output으로 활용할지 선택하며 어떤 인공 신경망의 구조를 시스템에 활용할지 정한다.
    • 손실 함수와 하이퍼파라미터 등을 정의하고 모델 학습을 진행한다.
  3. 모델 학습
    • 최적의 모델을 선정하고 학습을 통해 최적화된 파라미터를 찾아내는 과정
    • 예측값이 피처 엔지니어링에서 생성된 출력값(output)과 동일하거나 유사한 값이 될 수 있도록 파라미터를 업데이트한다.

모델 평가

  • 머신러닝 아키텍처에 있어서 가장 중요한 단계
  • 모델 평가를 통해 모델의 성능을 점검한다.
  • 유의미한 성능이 나올 때까지 데이터 준비부터 모델링까지 반복 수행한다.
  1. 모델 검증
    • 모델의 성능을 파악하고 서비스 목적에 부합한지 판단하는 단계
    • 온라인 환경에서는 A/B test,
    • 오프라인 환경에서는 피처 엔지니어링 과정에서 나눈 test 데이터로 평가한다.
  2. 성능 개선
    • 데이터 중심 개선
      • 데이터의 수나 피처의 수를 늘려서 학습 데이터를 개선한다.
    • 모델 중심 개선
      • 인공 신경망의 구조를 변경하거나 파라미터를 확장해 모델의 성능을 끌어올리는 과정
      • 하이퍼파라미터 최적화

모델 배포

  • 머신러닝 시스템을 상용화하거나 서비스화하는 단계로 모델 서빙(Model Serving) 과정을 의미한다.
  • 모델 서빙이란 머신러닝 모델의 예측값을 사용자에게 제공하는 것을 의미한다.

예측값을 제공하는 방법:

  1. 배치(Batch) 인퍼런스
    • 내부 서비스망에 배포하는 방법
    • 입력 데이터를 배치로 묶어 한 번에 추론하는 방법을 의미한다.
    • 배치 특성상 대규모 요청사항을 수월하게 처리할 수 있다.
    • 일정 주기마다 처리된 결과는 보통 데이터베이스에 적재해 사용자에게 제공한다.
    • 사용자에게 직접 제공되지는 않는다.
      • 그래서 시스템이나 인프라 구조가 덜 복잡하다.
      • 다음 주기가 도래하기 전까지 신규 데이터를 처리할 수 없기 때문에 실시간으로 예측값이 제공되지 않는다.
  2. 온라인 인퍼런스
    • AWS, Azure 등과 같은 클라우드 환경을 배포하는 방법
    • 클라우드 환경이나 내부 서버 망에서 RESTful API 기반으로 요청이 올 때마다 즉시 예측값을 제공한다. → 실시간 인퍼런스라고도 불린다.
    • 일정 시간 이하의 응답 시간을 보장해야 하며, Provisioning까지 신경 써야 한다.
    • 유저에게 직접 제공되기 때문에 모니터링과 서비스 장애에 즉각 대응해야 한다.
  3. 에지(Edge) 인퍼런스
    • 로봇, 컴퓨터, 핸드폰에 배포하는 방법
    • 내부 환경이 아닌 하드웨어에 배포돼 추론하는 방법이다.
    • 인프라를 크게 요구하진 않지만 디바이스의 종류나 버전에 따라 다르므로 복잡한 버전 관리 방법이 요구된다.
    • 디바이스마다 예측값이 다를 수 있어서 모델을 객관적으로 평가하기 어렵다.

3. MLOps

MLOps란?

  • 머신러닝의 지속적 배포 및 자동화 파이프라인
  • 머신러닝 아키텍처의 전반적인 통합을 의미한다.
  • 주요 목적:
    1. 지속적 통합(Continuous Integration, CI): ML 모델의 코드 변경 사항을 빌드하고 테스트하는 프로세스를 자동화한다.
    2. 지속적 서비스 제공(Continuous Delivery, CD): 모델의 변경 사항을 프로덕션 환경에 배포하는 프로세스를 자동화한다.
    3. 지속적 학습(Continuous Training, CT): 새로운 데이터로 학습하여 만들어낸 새로운 ML 모델을 배포하는 프로세스를 자동화한다.
    4. 프로그래밍형 인프라(Infrastructure as Code, IaC): ML 모델의 인프라 구성을 코드로 관리해 자동으로 구축, 관리, 프로비저닝한다.
    5. 지속적인 모니터링(Continuous Monitoring): 프로덕션 환경에서 발생할 수 있는 문제와 배포된 ML 모델의 성능을 모니터링한다.
    6. 데이터 관리(Data management): ML 모델을 학습하는 데 사용되는 데이터를 관리하고 테스트 데이터세트에 대한 모델의 성능을 검증한다.
  • 장점:
    • ML 모델 개발 속도를 빠르게 할 수 있다.
    • 프로세스를 간소화해 서비스 또는 기능 배포에 걸리는 시간을 단축한다.
    • ML 모델 확장에 있어서도 유동적으로 대응할 수 있다.

MLOps Level

MLOps Lv.0: 수동 프로세스

  • 수동, 스크립트 기반, 양방향 프로세스
    • 데이터 분석, 데이터 준비, 모델 학습, 모델 검증을 포함한 모든 단계가 수동이다.
  • ML과 작업 간 연결 해제
    • 이 프로세스는 모델을 만드는 데이터 과학자와 모델을 예측 서비스로 제공하는 엔지니어를 분리한다.
    • 학습-서빙 편향 발생 가능

 

MLOps Lv.1: ML 파이프라인 자동화

  • ML 파이프라인을 자동화하여 모델을 지속적으로 학습시키는 것
  • 모델 예측 서비스를 지속적으로 제공할 수 있다.
  • 빠른 실험
    • 단계 간 전환은 자동으로 이루어지므로 실험을 빠르게 반복하고, 전체 파이프라인을 프로덕션으로 더 빠르게 이동할 수 있다.
  • 프로덕션 단계에서 모델의 CT
    • 새로운 데이터를 사용하여 모델이 프로덕션 단계에서 자동으로 학습한다.
  • 모델의 지속적 배포
    • 새 데이터로 학습된 새 모델에 예측 서비스를 지속적으로 배포한다.
  • 파이프라인 배포
    • 학습된 모델을 예측 서비스로 제공하기 위해 자동으로 반복 실행되는 전체 학습 파이프라인을 배포한다.

 

MLOps Lv.2: CI/CD 파이프라인 자동화

  1. 개발 및 실험
    • 새 ML 알고리즘과 실험 단계가 조정되는 새 모델링을 반복적으로 시도한다.
    • 이 단계의 출력은 ML 파이프라인 단계의 소스 코드이며, 소스 코드는 소스 저장소로 푸시된다.
  2. 파이프라인 지속적 통합
    • 소스 코드를 빌드하고 다양한 테스트를 실행한다.
    • 이 단계의 출력은 이후 단계에서 배포될 파이프라인 구성요소(패키지, 실행 파일, 아티팩트)
  3. 파이프라인 지속적 배포
    • CI 단계에서 생성된 아티팩트를 대상 환경에 배포한다.
    • 이 단계의 출력은 모델의 새 구현이 포함되는, 배포된 파이프라인
  4. 자동화된 트리거
    • 파이프라인은 일정 또는 트리거에 대한 응답에 따라 프로덕션 단계에서 자동으로 실행된다.
    • 이 단계의 출력은 모델 레지스트리로 푸시되는 학습된 모델
  5. 모델 지속적 배포
    • 학습된 모델을 예측의 예측 서비스로 제공한다.
    • 이 단계의 출력은 배포된 모델 예측 서비스
  6. 모니터링
    • 실시간 데이터를 기반으로 모델 성능의 통계를 수집한다.
    • 이 단계의 출력은 파이프라인을 실행하거나 새 실험 주기를 실행하는 트리거


느낀 점, 어려웠던 점

지도학습, 비지도학습만 알고 있다가 준지도학습, 자기지도학습, 강화학습을 처음 접해봤는데, 강화학습의 매커니즘이 특히 흥미로웠다. 술래잡기에 강화학습을 적용한 사례도 봤는데 에이전트들이 보상을 통해 스스로 학습해서 게임을 이기는 법을 터득하는 게 재밌어 보였다.

MLOps도 개념만 대략 알고 있었는데 이번에 확실히 알게 되었다.

반응형