Model-in-image pattern
Usecase
- 서비스 환경과 모델의 버전을 통합 관리하는 경우.
Architecture
클라우드 플랫폼이나 컨테이너를 이용한 서비스 운영은 이미 일반적이지만, 여전히 ML 모델을 서버 이미지로 관리하고 버전 관리하는 것은 중요한 고려 사항입니다. 서버나 컨테이너 이미지에 모델을 포함하여 관리하는 것도 하나의 방법입니다. model-in-image 패턴에서는 모델 파일을 서버 또는 컨테이너 이미지를 포함시켜 모델 학습과 이미지 빌드를 하나의 워크플로우로 만듭니다. 이 경우 이미지 버전과 모델 버전이 동일하기 때문에 각각의 버전 관리를 따로 하지 않아도 됩니다.
모델 학습이 끝난 다음 이를 포함한 이미지를 빌드합니다. 운영 플랫폼에서는 이 이미지를 pull하여 실행함으로써 서비스를 배포할 수 있습니다.
이 패턴의 난점은 이미지 사이즈가 증가하고 이미지 빌딩 시간이 길어지는 경향이 있다는 것입니다. 모델 학습이 완료된 후 이미지 빌드가 시작되기 때문에, 전 과정이 오류 없이 모두 통과되는 파이프라인 구축이 필요합니다. 또, 이미지 용량 증가로 이미지 다운로드가 길어지고 배포 시간도 길어질 수 있습니다.
Diagram
Pros
- 서버 버전과 모델을 고유한 버전으로 동일하게 운영할 수 있습니다.
Cons
- 모델 학습과 이미지 빌드의 전체적인 파이프라인을 만들어야 합니다.
- 이미지 빌드와 배포 시간이 길어질 수 있습니다.
Needs consideration
- 모델 학습부터 이미지 빌드까지의 파이프라인 정의
Sample
https://github.com/shibuiwilliam/ml-system-in-actions/tree/main/chapter3_release_patterns/model_in_image_pattern