포스팅 개요
본 포스팅은 ML Workflow와 관련 자동화 tool인 Github Actions에 대해 정리하는 글입니다.
ML Workflow란?
- Github의 예시를 통하여 workflow에 대해 알아보겠습니다.
- Github: 오픈소스 프로젝트를 위한 플랫폼
- Github을 통해 만들어진 프로젝트는 공식적으로 프로젝트를 사용(user)하고 프로젝트에 기여(contributer)하는 것이 가능
- Github: 오픈소스 프로젝트를 위한 플랫폼
-
- 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가 발생하면 자동으로 배포가 되도록 설정해둠
- master로 merge가 발생하면 자동으로 배포가 되도록 설정해둠
- master branch는 product에 배포되는 브랜치임
- 흐름
- Github flow: Git branch를 효과적으로 분리하고 관리하는 branching 전략 중 하나
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
- 새 버전의 소프트웨어를 제공하기 위해 수행해야 할 일련의 단계
- cf. CI/CD Pipeline
- event 발생 시 자동으로 action 실행
- event: PR 생성, Contribution 추가, issue 생성, PR 병합 등
- action: 정렬, 제목 생성, 할당, 재생성
- 개발자들의 workflows를 자동화하기 위한 플랫폼
'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 |
댓글