서버에 코드를 보내는 것과
반복적으로 진행할 Test를 어떻게 실행하는 방법은?
Dev Branch에 Merge되면 => Local에서 Git Pull & Test실행 후 코드배포(FTP로 파일 전송)
Continuous Integration,지속적통합
ContinuousDeploy/Delivery,지속적배포
모델 버저닝은 머신러닝(ML) 또는 AI 모델을 개발하고 개선해 나가는 과정에서 각 시점의 모델을 관리하는 방법
모델이미지에 저장하는것 보다S3,오브젝트저장소(S3,CloudStorage)에 저장하는것을 권장
Github에서 출시한 기능으로,소프트웨어 Workflow 자동화를 도와주는 도구
다양한 workflow templates
Action Marketplace:https://github.com/marketplace?type=actions
Awesome GithubAction:https://github.com/sdras/awesome-actions
1) 코드작업
2) 코드작업후,Github Action으로 무엇을 할 것인지 생각
3) 사용할 Workflow 정의
4) Workflow정의후 정상 작동하는지 확인
.github/workflows
폴더에 저장Runner에서 실행되는 Steps의 조합
여러 Job이 있는 경우 병렬로실행하며,순차적으로 실행할 수 도 있음
Githu Repository새로 생성
Add file-Create new file
hello-world.py
를 생성한후,Commit
Github Repository에서 Action클릭
Python application검색 후 Setup this workflow클릭
템플릿으로 파일이 생성 Test with pytest만 수정!
커밋한 후,노란색동그라미 클릭!
GithubAction이실행중!Details클릭
초록색으로 바뀌면Success를 의미
재실행하는기능
정의한Step
클릭시 로그를 확인 할 수 있음
on
: Event,언제Workflow가실행될것인가?
jobs
: jobs정의,build는job의이름!
runs-on
: ubuntu환경에서실행
uses
: 사용할GithubAction
name
: Step의이름
uses없는경우
: run에작성된쉘커맨드실행
FROM python:3.9
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY src /code/app
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
Docker Image Registry란?
로컬에서 Docker Image Build(-t를통해 model_deploy:test로 설정)
docker tag “기존이미지:태그” “새이미지이름:태그”
docker push “Artifact Registry/프로젝트/Repository/이미지이름:버전”
웹 콘솔에서 확인하면 Repository에 올라간 것을 확인할 수 있음
Github Action을 통해서 특정 조건에 Docker Image Build,Push자동화
ex)
main에 머지되면 DockerImage 새로 만들고,Registry에 Push
위작업을 하기위해 GoogleCloud Service Account설정
SHA(hash)
값을 태그값으로 설정해서 매 커밋마다 이름이 겹치지 않도록인스턴스를 띄울 때 DockerImage 기반으로 생성하면,이후 나온 Image를 기반으로 Container 업데이트가 가능
ComputeEngine는 이미지로 만들어진 인스턴스를 빠르게 업데이트 할 수 있는 기능을 CLI로 제공 gcloud compute instance supdate-container<서버이름>—container-image<컨테이너이미지>
CI(ContinuousIntegration)을진행한후, GCE VMInstance에 변경사항 전파
needs필드를 통해 ci작업이 정상완료되어야 실행
업데이트 할인스턴스,존(영역)정보를 사용해 해당 인스턴스 업데이트
Github Action(Actions)에서 확인하면 ci가 완료된 후 cd가 실행
MLops
https://ml-ops.org/content/mlops-principles#automation