모델을 서비스한다는 것 — API · 서빙 · 추론
Article
지금까지 5부는 모델이 어떻게 배우고(1~3부), 어떻게 답을 잇고(4부), 모르는 문서를 어떻게 붙이는지(5부)를 다뤘다. 그런데 그 모델이 채팅창이나 앱 안에서 실제로 우리와 대화하기까지는 한 단계가 더 있다. 학습을 마친 모델을, 누군가 언제든 불러 쓸 수 있는 서비스로 만드는 일이다.
6부가 여기서 시작된다. 모델 자체가 아니라, 모델을 둘러싼 인프라로 방향을 튼다.
학습은 한 번, 추론은 매번
11강에서 본 경사하강은 모델이 답을 맞히도록 가중치를 조금씩 고치는 과정이었다. 이 과정을 **학습(training)**이라 부른다. 반면 지금 이 순간 ChatGPT 창에 질문을 던져 답을 받는 것은 학습이 아니다. **추론(inference)**이다.
학습 (training)
가중치를 고치는 과정
- 수백만~수십억 개의 데이터를 몇 주씩 돌려 가중치를 조금씩 고친다
- GPU 수백~수천 대가 며칠~몇 달 동안 붙는다
- 한 모델을 두고 보통 한 번(또는 드물게) 일어난다
- 결과물은 숫자 뭉치 — 학습이 끝난 가중치 파일이다
추론 (inference)
가중치는 그대로 두고 답만 계산한다
- 이미 다 학습된 가중치를 놓고, 입력에 대한 출력만 계산한다
- 질문 하나마다, 초 단위로 일어난다
- 전 세계에서 하루에도 몇억 번씩 반복된다
- 가중치는 이 과정에서 전혀 바뀌지 않는다
모델을 한 번 학습시키는 것과, 그 모델을 계속 불러 쓰게 만드는 것은 완전히 다른 일이다. 학습은 비싸고 드물다. 추론은 상대적으로 싸지만 끊임없이, 대량으로 일어난다. 이 편의 6부와 7부에서 마주치는 용어 대부분은 후자 — 이미 만들어진 모델을 어떻게 서비스로 운영하느냐 — 쪽에 몰려 있다.
질문 하나가 답이 되어 돌아오기까지
앱에서 채팅창에 메시지를 치면 벌어지는 일을 그림으로 본다.
- 앱이 질문을 API 로 보낸다채팅창의 "전송" 버튼이 사실 이 요청을 쏘는 방아쇠다
- 서빙 서버가 요청을 받는다가중치를 이미 GPU 메모리에 올려둔 채 대기 중인 프로그램
- 모델이 추론을 실행한다12강에서 본 그 과정 — 다음 토큰을 하나씩 확률로 고른다
- 생성된 토큰을 다시 글자로 바꾼다토큰 하나가 완성될 때마다 순서대로 돌려보낸다 (스트리밍)
- 앱이 답을 화면에 그린다채팅창에 글자가 한 자씩 나타나는 그 연출이 이 과정이다
여기서 "서버"는 우리가 흔히 쓰는 웹 서버와 크게 다르지 않다. 다만 GPU 위에 무거운 가중치 파일을 이미 올려둔 채 요청을 기다린다는 점이 다르다. 모델을 매번 새로 불러오면 너무 느리기 때문에, 서빙 서버는 대개 가중치를 메모리에 켜둔 채로 대기한다.
서빙을 둘러싼 용어들
| 용어 | 뜻 |
|---|---|
| API | "이런 형식으로 요청을 보내면 이런 형식으로 답을 준다"는 약속. 채팅 앱은 대개 이 약속을 통해 모델을 부른다 |
| 엔드포인트 (endpoint) | 요청을 받는 구체적인 주소. 모델마다, 기능마다 주소가 나뉘어 있는 경우가 많다 |
| 지연시간 (latency) | 요청을 보내고 첫 답이 오기까지 걸리는 시간. 짧을수록 체감이 빠르다 |
| 처리량 (throughput) | 동시에 몇 명의 요청을 감당할 수 있는가. 사용자가 몰릴 때 중요해진다 |
| 스트리밍 (streaming) | 답 전체를 한 번에 주지 않고, 토큰이 만들어지는 대로 조금씩 흘려보낸다 |
실제 API 호출이 어떤 모양인지 형태만 본다. 실행해서 결과를 확인하는 실습은 이 편의 범위 밖이다.
POST /v1/chat
{
"model": "some-model",
"messages": [{ "role": "user", "content": "환불 정책이 뭔가요?" }]
}
요청 안의 messages 가 바로 15강에서 본 컨텍스트 윈도우를 채우는 재료다. 서버는 이 재료를 가중치 위에 흘려 추론을 돌리고, 만들어진 토큰을 다시 응답으로 돌려준다.
정리하면
학습과 추론은 다른 일이다. 학습은 가중치를 고치는, 비싸고 드문 과정이고, 추론은 그 가중치를 그대로 둔 채 답만 계산하는, 매 순간 반복되는 과정이다. 서빙은 이 추론을 API 로 누구나 불러 쓸 수 있게 만드는 인프라 전체를 가리킨다.
- 01
학습은 가중치를 고친다, 추론은 고치지 않는다
11강의 경사하강이 학습, 지금 강의의 API 호출이 추론이다.
- 02
서빙은 추론을 서비스로 만드는 인프라다
가중치를 GPU 메모리에 올려두고, 요청이 올 때마다 추론을 돌려 답을 돌려준다.
- 03
대화가 이어져 보이는 건 컨텍스트 윈도우 덕분이다
15강에서 본 그 창 — 이전 대화를 매번 다시 넣어 보내는 것이지, 모델이 고쳐지는 게 아니다.
- 04
지연시간과 처리량이 서빙의 핵심 지표다
얼마나 빨리 답하는가, 동시에 몇 명을 감당하는가. 23강에서 비용과 함께 다시 나온다.
지금까지는 모델이 이미 다 학습을 마쳤다고 가정하고 이야기했다. 그런데 애초에 그 모델은 무엇을 먹고 배웠나. 다음 강의에서는 서빙 반대편 — 모델이 학습되기 전, 데이터가 어디서 와서 어떻게 흘러가는지를 되짚는다.