본문 바로가기
Engineering/MLOps

[MLOps] 08 ML Workflow - Github Actions

by iamzieun 2023. 2. 9.

포스팅 개요

본 포스팅은 ML Workflow와 관련 자동화 tool인 Github Actions에 대해 정리하는 글입니다.

 

ML Workflow란?

  • Github의 예시를 통하여 workflow에 대해 알아보겠습니다. 
    • Github: 오픈소스 프로젝트를 위한 플랫폼
      • Github을 통해 만들어진 프로젝트는 공식적으로 프로젝트를 사용(user)하고 프로젝트에 기여(contributer)하는 것이 가능

    • Github flow: Git branch를 효과적으로 분리하고 관리하는 branching 전략 중 하나 
      • 흐름
        • create branch → commit change → pull request → get feedback → tests changes → merge branch (새로 생성된 branch를 master branch에 병합)
      • 사용법
        • master branch는 product에 배포되는 브랜치임
          • 항상 최신, stable 상태
          • 언제든 배포가 가능해야 하므로 엄격한 role이 적용됨
          • 따라서 다른 branch를 master branch에 merge 하기 전에 충분한 test를 거쳐야 함
        • master branch에 merge할 목적으로 만드는 새로운 branch의 이름을 명확하게 작성
          • git flow처럼 branch가 feature branch, develop branch로 세분화되어있지 않기에, 새로운 기능을 추가하거나 버그를 해결하기 위한 branch의 이름은 해당 branch의 역할을 담은 명확한 이름을 부여
          • 같은 이유로 commit message도 명확하게 작성
        • remote branch로 수시로 push
          • 자신이 하고 있는 작업을 원격지 branch로 push함으로써 다른 사람들이 확인할 수 있게 함
          • 작업 중인 하드웨어에 문제가 발생하여 작업하던 부분이 없어지더라도, 원격지로부터 소스를 받아 작업을 이어갈 수 있게 함
        • 피드백이나 도움이 필요할 때, merge 준비가 완료되었을 때에는 pull request를 생성
          • 코드 리뷰를 도와주는 시스템인 pull request를 통하여, 작성한 코드를 공유하고 리뷰 받음
          • merge 준비가 완료된 경우 master branch로의 반영을 요구
        • 기능에 대한 리뷰와 논의가 끝난 후 master로 merge
          • master branch로 merge되면 곧바로 product로 반영이 되므로, 충분한 논의 이후 반영할 것
        • master로 merge되고 push된 후 즉시 배포
          • master로 merge가 발생하면 자동으로 배포가 되도록 설정해둠

Github Actions

위에서 언급한 일련의 작업들이 지속적으로 반복되는 것이 workflow입니다. 따라서 효율적인 개발을 위해서는 이 과정을 최대한 자동화할 필요가 있습니다. 그렇다면 이러한 문제를 해결해줄 자동화 tool은 무엇이 있으며, 어떠한 요건을 만족해야 할까요?

  • workflow 자동화 tool의 요건 
    • 별도의 통합 과정 없이 같은 도구로만 !
    • 파이프라인 설치는 쉽게 !
    • 개발자 중심의 도구: 어플리케이션 개발 이후부터 배포까지의 단계에 너무 많은 에너지를 쏟지 않아도 되게끔
  • Github Actions
    • 개발자들의 workflows를 자동화하기 위한 플랫폼
      • 단순히 CI/CD tool 아님 !
      • github actions는 workflow 전체를 자동화하기 위한 플랫폼이고, CI/CD는 workflow의 일부 구성 요소
        • cf. CI/CD Pipeline
          • 새 버전의 소프트웨어를 제공하기 위해 수행해야 할 일련의 단계
            • 특히 통합 및 테스트 단계와 제공 및 배포 단계에서 모니터링 및 자동화를 도입하여 애플리케이션 개발 프로세스를 개선
            • CI/CD Pipeline의 구성 요소
              • Build: 어플리케이션을 컴파일하는 단계
              • Test: 코드를 테스트하는 단계
              • Deploy: 코드를 production에 배포하는 단계
              • Operate
    • event 발생 시 자동으로 action 실행
      • event: PR 생성, Contribution 추가, issue 생성, PR 병합 등
      • action: 정렬, 제목 생성, 할당, 재생성

 

'Engineering > MLOps' 카테고리의 다른 글

[MLOps] 09 Jenkins  (0) 2023.02.20
[MLOps] 07 Kubeflow  (0) 2023.02.08
[MLOps] 06 Model Monitoring - Prometheus  (0) 2023.02.08
[MLOps] 05 Model Serving  (0) 2023.01.21
[MLOps] 04 Model Management & MLflow  (0) 2023.01.20

댓글