최신글

다운로드한 AI 모델을 실행하려면 무엇이 필요할까?(서빙)

반응형

이전 글에서 살펴본 것처럼, AI 모델 저장소에서 내려받은 가중치와 설정 파일들은 실행 바이너리가 아닙니다. 그렇다면 이 파일을 어떻게 실행할 수 있을까요?
- 이전 글: AI 모델 파일의 구조

 

모델을 실행하는 코드조각

AI 모델을 실행하려면 모델 구조 실행하는 코드가 필요합니다. 이 코드는 AI모델을 만드는 사람이 구현하여 공유합니다. 아래 그림에서 MistralForCausalLMAI 모델은 config.json의 값과 vLLM의 모델 구현이 연결되는 과정을 보여줍니다. 보통 config.json의 architectures필드에 클래스 이름을 명시합니다.

 

모델을 실행하는 코드는 config.json의 설계도를 보고 AI모델 조립 및 설정을 하고, 컴퓨터 메모리에 모델을 로드합니다.

 

추론 엔진이 계산을 효율적으로 처리한다

학습을 마친 모델에 새로운 입력을 넣어 예측 결과를 얻는 과정을 추론(inference) 이라고 합니다. 생성형 언어 모델에서는 입력 토큰으로 다음 토큰을 예측하고, 이 과정을 반복해 응답을 만드는 일이 추론입니다.

 

추론 엔진은 이 계산을 CPU나 GPU에서 효율적으로 실행하는 런타임입니다. 모델 가중치를 메모리에 올리고 요청을 묶어 처리하며, 어텐션(attention) 계층에서 계산한 key와 value 텐서를 저장하는 KV cache를 관리합니다. 어텐션, key, value는 LLM AI모델에서 사용하는 구조입니다. 지금은 추론 엔진이 AI모델의 추론과정을 효율적으로 도와준다는 것만 이해하면 됩니다.

 

추론엔진에서 많이 알려진 vLLM은 PagedAttention으로 KV cache를 블록 단위로 관리합니다. 연속 배치 처리(continuous batching)는 먼저 끝난 요청의 자리에 새 요청을 넣어 GPU가 쉬는 시간을 줄입니다. vLLM, llama.cpp, SGLang이 대표적인 추론 엔진입니다. 지원하는 모델 형식과 하드웨어, 메모리 관리 방식은 도구마다 다릅니다.

 

API 서버가 외부 요청을 받는다

모델을 메모리에 올렸다고 외부 애플리케이션이 바로 호출할 수 있는 것은 아닙니다. API 서버가 HTTP 요청을 받아 추론 엔진에 전달하고, 생성된 토큰을 응답으로 반환해야 합니다.

vLLM의 vllm serve, llama.cpp의 llama-server, SGLang의 서버는 추론 엔진과 API 서버를 한 제품에 묶어 제공합니다.

 

모델을 운영 가능한 상태로 만드는 것이 서빙이다

지금까지 내용을 정리하면 AI모델을 실행한다는 것은, AI모델을 메모리에 로드하고 추론 효율을 높이며 외부에서 호출가능하게 만드는 과정입니다. 이 과정을 AI모델 서빙이라고 합니다. AI모델 서빙과정에서는 추론엔진의 많은 도움을 받습니다. AI모델 서빙 이외에 실제 운영 환경에서는 동시 요청 처리, 오류 대응, 모니터링도 함께 다뤄야합니다.

 

참고 자료

반응형