SageMaker에 모델 배포를 시도했던 고찰

4riend·2024년 4월 30일
1

CodeMind 프로젝트

목록 보기
16/20
post-thumbnail

NLP 팀에서 학습한 모델을 좋은 퍼포먼스로 실행시키기 위해 SageMaker로 배포했다.
아니 배포 시도를 했다. 결과는 실패지만 배포하기 위해 노력했던 과정을 고찰한다 🔥


SageMaker?

그 전에 SageMaker가 무엇인지 간략하게 살펴보자.

SageMaker는 AWS에서 제공하는 클라우드 기계학습 플랫폼이다.
특히 SageMaker는 기계학습(ML) 모델을 클라우드에 개발, 학습, 배포할 수 있도록 만들어준다.

우리는 여기서 배포를 위해 사용하려 했던 것이다.


배포 시도

1. Deploy a model from the Hub

가장 처음 시도했던 방법이자 가장 성공에 가까운 시도라 생각하는 방법이다.
Hugging Face hub에 있는 모델을 SageMaker에 배포하는 방법으로 레퍼런스를 따라 그대로 진행했다.

하지만 문제가 발생한다 🤔

우리 모델의 기반이 되는 모델은 gemma다.

gemma는 Transformers 라이브러리를 사용하는데 요구하는 최소 버전이 v4.38.2 다.

그런데... SageMaker가 호환하는 Transformers 버전이 v4.26.0 이 마지노선인 것이다.

혹시 모르니 SageMaker에서 제공하는 마지노선의 라이브러리 버전으로 배포 시도했다.
결과는...?

AWS SageMaker에 모델이 배포된다! 하지만 request를 보내면 error가 발생했다 😥

이렇게 버전 문제가 발생하니 난 절대 안된다 생각했다.
그러나 방법을 찾게 되는데...🤷‍♂️

2. Gemma는 Sagemaker JumpStart에서 이용 가능하다?

불과 한 달 전에 이런글이 포스팅되었다.
gemma 모델을 SageMaker에서 사용 가능하다는 것이다.

이걸 보고 우린 희망을 가졌다.
이거 gemma 모델 배포할 수 있는 것 같은데??

물론 결국 실패했다 😂

시도 당시 deploy에 대한 방법 보단 gemma 모델을 이용한 fine tuning에 대한 방법이라 판단하여 원치하는 방향이라 생각했다.
특히 나의 경우는 머신 러닝에 대한 개념과 SageMaker에 대한 이해도 같은 것들이 부족해서 실패했다고도 본다.

그래서 사실 이 방법이 성공으로 향하는 근접한 방법이라 현재 생각한다.
물론 gemma 모델을 만들고 fine tuning까지 새로 진행해야 되지 않나 싶다.

3. SageMaker SDK

이 영상을 참고해서 SDK를 통한 구현 방법도 시도했으나,,,
이미지를 만드는 과정에서 버전에 대한 요구가 있어 1번에서 얘기했던 이유와 같이 실패했다.


결국

Hugging Face 모델을 이용한 API 서버를 만들었다.
기존에 구현했던 아키텍처와 차이가 있다면
원래 Streamlit 서버 자체에서 모델을 포함하여 운영했다면
이후 Streamlit 서버와 HF model API 서버로 분리하여 front와 back 환경을 분리시켰다 👍


참고 문헌

profile
날씨의 아이, 진격의 거인, 로스트 아크, Java Spring

0개의 댓글