쉽게 말하면, 추론 실행은 이미 학습을 마친 AI가 입력을 받아 결과를 내놓는 단계다. 이 단계에서 모델은 배우거나 내부 값을 바꾸지 않고, 학습으로 얻은 것을 그대로 써서 답을 만든다. 분류, 예측, 텍스트 생성 같은 작업이 모두 이 단계에 해당한다.
| 분류 | 머신러닝 모델의 실행 단계 |
|---|---|
| 정의 | 학습된 매개변수를 고정한 채 입력으로 출력을 만드는 과정2,3 |
| 학습과의 차이 | 학습은 매개변수를 갱신하고, 추론은 갱신하지 않는다 |
| 주요 지표 | 지연 시간, 처리량, 첫 토큰 시간4,5 |
| 핵심 메모리 상태 | KV 캐시6 |
1. 개요
머신러닝에서 추론 실행(inference)은 학습이 끝난 모델을 돌려 입력으로부터 출력을 만드는 것이다. 분류기는 클래스 점수를, 회귀 모델은 숫자 하나를, 생성 모델은 시퀀스를 돌려줄 수 있다. 핵심 경계는 이 호출에서 학습된 매개변수가 갱신되지 않고 그대로 쓰인다는 점이다. 입력이 새것이거나 전에 본 적 없는 것일 필요는 없으며, 추론 호출은 검증, 테스트, 실제 서비스, 대화형 응용 프로그램 어디에서든 일어날 수 있다.2,3
추론은 흔히 순전파로 설명되지만, 배포된 시스템은 보통 더 많은 일을 한다. 전처리를 똑같이 재현하고, 올바른 모델 버전을 실행하고, 출력을 해석하고, 응용 규칙을 적용하며, 장애를 감지할 관측 데이터(텔레메트리)를 남겨야 한다. 성능은 모델, 입력 형태, 수치 정밀도, 런타임, 하드웨어, 요청 패턴, 품질 요건에 따라 달라진다. 그래서 지연 시간이나 초당 토큰 수 같은 결과는 작업 조건과 측정 조건이 함께 적힐 때만 의미가 있다.4,5
2. 용어와 범위
추론(inference)이라는 말에는 확립된 뜻이 여러 가지 있다. 이 뜻들은 출력이나 결론을 도출한다는 생각으로 이어져 있지만, 서로 바꿔 쓸 수 있는 것은 아니다.
| 맥락 | 추론의 뜻 | 전형적인 결과 |
|---|---|---|
| 머신러닝 실행 | 고정된 학습 매개변수를 입력에 적용한다 | 점수, 레이블, 임베딩, 예측값, 행동 가치, 생성된 시퀀스 |
| 통계적 추론 | 표본 관찰로 모집단이나 과정에 대한 결론을 끌어낸다 | 추정치, 신뢰 구간, 가설 검정 결과 |
| 확률 모델의 추론 | 잠재 변수의 사후 분포 같은 양을 계산하거나 근사한다 | 사후 확률, 기댓값, 가장 가능성 높은 할당 |
| 기호 인공지능 | 명시적 사실과 규칙에서 결과를 끌어낸다 | 논리적 결론이나 증명 단계 |
통계적 추론은 표본과 더 넓은 모집단의 관계를 다룬다. 확률 모델에서 추론은 흔히 잠재 변수에 대한 사후 분포나 관련 기댓값을 계산하는 일을 뜻하며, 이 일 자체가 복잡한 알고리즘을 요구할 수 있다.7,8
이 문서는 학습된 머신러닝 모델을 실행하는 일과 그 실행을 뒷받침하는 시스템에 초점을 맞춘다.
매개변수를 theta라 하면 결정론적 모델의 핵심 계산은 다음과 같다.
y = f_theta(x)확률적 모델이나 디코딩 절차는 대신 x에 조건화된 분포에서 출력을 샘플링하거나 다른 방식으로 고른다. 따라서 매개변수가 고정되어 있어도 출력이 똑같이 나온다고 보장되지는 않는다. 무작위 샘플링, 비결정적 장치 커널, 동시 실행, 수치 정밀도, 전처리 차이가 모두 재현성에 영향을 줄 수 있다.9,10
3. 학습·평가·서빙과의 관계
추론은 모델 수명 주기의 한 단계다.
| 단계 | 학습된 매개변수 갱신 | 정답 레이블 필요 | 주된 목적 |
|---|---|---|---|
| 학습 | 예 | 대개 필요하지만 항상 필요한 것은 아니다 | 데이터로 매개변수 추정 |
| 검증 또는 평가 | 아니오(측정하는 순전파 실행 중) | 보통 필요 | 지정한 데이터셋과 지표로 행동 측정 |
| 추론 실행 | 아니오 | 아니오 | 공급된 입력으로 출력 생성 |
| 미세 조정 | 예 | 방법에 따라 다름 | 사전 학습된 모델을 맞춤화 |
| 서빙 | 요청 자체로는 갱신하지 않음 | 아니오 | 관리되는 소프트웨어 인터페이스로 추론 제공 |
평가는 보통 추론을 실행한 뒤 출력을 정답 레이블이나 다른 기준 판단과 비교한다. 반면 운영 중인 추론에는 대개 즉시 확인할 수 있는 정답이 없다. 이 차이는 중요하다. 온라인 서비스는 지연 시간과 오류율이 안정적으로 보여도 작업 품질은 떨어지고 있을 수 있다.
일부 프레임워크는 그래디언트 기록과 모델 동작을 따로 제어한다. PyTorch의 추론 모드(inference mode)는 자동 미분 작업을 끄고, 평가 모드(evaluation mode)는 드롭아웃(규제 기법의 하나)과 배치 정규화(정규화 기법의 하나)의 동작을 바꾼다. 두 설정은 독립적이어서, 그래디언트를 끈다고 모델이 평가 모드가 되지는 않는다. 세부 사항은 프레임워크마다 다르므로 배포 산출물은 실제 운영과 같은 경로로 시험해야 한다.11
4. 실행 파이프라인
완전한 추론 경로는 보통 다음 단계를 포함한다.
- 요청과 입력 검증: 데이터 형식, 형태, 범위, 인코딩, 필수 필드, 요청 한도를 확인한다. 잘못된 입력은 말없이 바꾸지 말고 분명히 실패하게 해야 한다.
- 전처리: 텍스트, 이미지, 오디오, 표, 센서 값을 모델이 기대하는 표현으로 바꾼다. 토큰화, 크기 조정, 정규화, 특징 구성, 패딩이 여기에 속한다.
- 모델 실행: 런타임이 매개변수를 적재하거나 재사용하고, 입력과 출력 버퍼를 연결하며, 하나 이상의 장치에서 연산자를 스케줄링한다. 신경망이라면 이 단계가 순전파 계산이다.
- 후처리와 판단 로직: 원시 텐서를 해석, 보정, 임계값 적용, 순위화, 필터링하거나 응용 객체로 바꾼다. 생성형 시스템은 정지 규칙과 출력 제약을 적용하기도 한다.
- 응답과 관측: 결과를 돌려주고, 시간, 오류, 모델 버전, 자원 사용량, 데이터 상태에 관한 적절히 제한된 기록을 남긴다.
따라서 모델 자체만으로는 재현 가능한 추론 시스템이 되지 않는다. 토크나이저 버전, 이미지 크기 조정 규칙, 범주 매핑, 임계값, 결측값 규칙은 매개변수 파일이 같아도 사용자가 보는 결과를 바꿀 수 있다. 릴리스에서는 이런 의존성을 모델과 함께 버전 관리하고, 조립된 파이프라인 전체를 검증해야 한다.
4.1. 모델 산출물과 컴파일
추론 산출물은 프레임워크 체크포인트, 내보낸 계산 그래프, 이식 가능한 교환 형식 모델, 또는 특정 하드웨어용으로 컴파일된 엔진일 수 있다. 내보내기와 컴파일 과정에서는 상수 접기, 연산자 융합, 레이아웃 변경, 정밀도 변환, 커널 선택이 일어날 수 있다. 이런 변환은 오버헤드를 줄이지만, 대표 입력과 경계 사례에서 승인된 모델과 비교 검증해야 하는 새 객체를 만든다.
NVIDIA TensorRT는 빌드 단계와 런타임 단계를 나눈다. 빌더는 네트워크를 최적화하고 대상 GPU용 커널을 고르며, 런타임은 만들어진 엔진을 실행한다. ONNX는 이식 가능한 모델 형식이고, ONNX Runtime은 그래프의 지원되는 부분을 하드웨어나 라이브러리별 실행 제공자(execution provider)에 맡긴다. 형식이 이식 가능하다고 해서 모든 연산자, 수치 결과, 성능이 제공자마다 같다는 뜻은 아니다.12,13
4.2. 상태 있는 실행과 없는 실행
많은 전통적 예측 호출은 모델 경계에서 상태가 없다. 출력은 공급된 입력과 고정된 매개변수에만 달려 있다. 그러나 주변 서비스는 캐시, 세션, 특징 이력, 요청 속도 제한, 라우팅 결정을 유지하므로 상태가 있을 수 있다. 순환 모델, 스트리밍 모델, 자기회귀 생성기는 한 호출이나 반복에서 다음으로 상태를 명시적으로 넘길 수도 있다.
상태가 있으면 정확성의 단위가 달라진다. 요청 하나만 따로 시험하면 상태 재사용, 시퀀스 경계, 취소, 캐시 축출, 동시 접근으로 생기는 오류가 드러나지 않을 수 있다. 메모리나 모델 상태를 재사용하는 시스템은 수치 정확성뿐 아니라 사용자와 요청 사이의 격리도 시험해야 한다.
5. 작업 형태와 배포 방식
같은 모델도 서로 다른 서비스 형태로 실행될 수 있다.
- 온라인 추론: 개별 요청이나 작은 묶음을 지연 시간 목표 아래에서 처리한다. 사용자는 요청 경로 전체를 겪으므로 대기열과 꼬리 지연이 중요하다.
- 오프라인 또는 배치 추론: 유한한 데이터셋을 처리하며, 전체 완료 시간과 처리량을 강조하는 경우가 많다. 결과를 즉시 돌려줄 필요가 없어 더 큰 배치를 쓸 수 있다.
- 스트리밍 추론: 계속 이어지는 시퀀스를 받아 처리하고 시간에 따른 상태를 유지할 수 있다. 종단 간 지연에는 윈도잉, 버퍼링, 순서 보장 처리 시간이 포함된다.
- 온디바이스 추론: 휴대폰, 자동차, 임베디드 시스템처럼 데이터 원천 가까이에서 실행한다. 네트워크 의존을 줄이지만 로컬 메모리, 지원 연산자, 전력, 발열 한계의 제약을 받는다.
- 중앙 서비스 추론: 데이터센터에서 실행하며 가속기를 묶어 쓰고, 규모를 자동으로 조정하고, 여러 모델 버전을 제공할 수 있다. 네트워크, 대기열, 격리, 용량 계획 문제가 함께 따른다.
이 형태들은 서로 배타적이지 않다. 한 응용 프로그램이 작은 엣지 AI 모델을 로컬에서 돌리면서 선택된 입력은 더 큰 서비스로 보내고, 나중에 감사나 분석을 위한 배치 작업을 돌릴 수 있다.
서빙 시스템은 기본 런타임이 보통 제공하지 않는 기능을 더한다. 모델 탐색과 적재, 버전 정책, 요청 프로토콜, 배칭, 상태 점검, 트래픽 라우팅, 지표 수집, 자원 관리가 그것이다. 예를 들어 TensorFlow Serving은 버전이 관리되는 모델 적재와 네트워크 API를 갖춘 운영용 모델 서빙 시스템이다. 이런 기능을 둘러싼 엔지니어링 관행은 흔히 MLOps의 일부로 다뤄진다.14
6. 성능 측정
추론 성능은 다차원이다. 평균 지연 시간이나 최고 연산 속도만 보고하면 실제 서비스를 좌우하는 제약이 가려질 수 있다.
| 측정 항목 | 답하는 질문 | 중요한 전제 |
|---|---|---|
| 종단 간 지연 시간 | 요청 하나가 끝나기까지 얼마나 걸리는가? | 필요하면 네트워크, 대기열, 전처리, 실행, 후처리, 응답 전송을 포함 |
| 모델 실행 지연 시간 | 런타임이 모델 실행에 얼마나 걸리는가? | 컴파일, 모델 적재, 데이터 전송을 제외했는지 밝힌다 |
| 꼬리 지연 시간 | 높은 백분위 요청은 얼마나 느린가? | p95나 p99 같은 백분위와 제공한 부하를 함께 적는다 |
| 처리량 | 단위 시간에 얼마나 많은 작업을 끝내는가? | 단위, 배치 크기, 동시성, 입력 형태, 품질 설정을 정의한다 |
| 대기열 시간 | 실행 전에 작업이 얼마나 기다리는가? | 도착 방식, 스케줄러, 포화 상태에 따라 달라진다 |
| 메모리 사용량 | 가중치, 활성화 값, 캐시에 얼마의 용량이 필요한가? | 최대치인지 안정 상태인지, 동시 요청 수를 밝힌다 |
| 품질 | 최적화된 시스템이 여전히 작업 요건을 충족하는가? | 작업에 맞는 지표와 같은 평가 데이터를 쓴다 |
| 에너지 또는 비용 | 결과 하나당 또는 전체 작업에서 자원을 얼마나 쓰는가? | 계산 범위, 하드웨어 활용률, 가격 가정을 밝힌다 |
처리량과 지연 시간은 서로 영향을 준다. 배치를 키우면 장치 활용률과 처리량이 좋아질 수 있지만, 요청은 배치가 찰 때까지 기다려야 하고 스케줄 단위의 실행 시간도 길어질 수 있다. 동적 배칭은 가까운 시점에 도착한 호환 요청을 묶는다. Triton Inference Server는 이 절충을 조절하는 대기 지연과 배치 크기 옵션을 문서화하고 있다. 최적 설정은 모델 크기만이 아니라 도착 패턴과 서비스 목표에 따라 정해진다.15
대화형 서비스에서는 평균 지연 시간만으로 충분하지 않다. 대기열과 긴 입력이 무거운 꼬리를 만들 수 있기 때문이다. 측정에는 워밍업, 안정 상태의 제공 부하, 요청 길이 분포, 동시성, 실패, 높은 백분위 지연 시간이 포함되어야 한다. 사용자에게 영향을 줄 수 있는 콜드 스타트, 모델 적재, 컴파일, 확장 지연은 따로 측정한다.
MLPerf Inference는 정의된 작업, 품질 목표, 규칙, 배포 시나리오로 시스템을 비교하도록 설계되었다. 원래 벤치마크는 단일 스트림, 다중 스트림, 서버, 오프라인 시나리오를 제시했고, 시나리오마다 다른 지표를 썼다. 현재 유지되는 벤치마크 스위트는 버전이 붙은 작업과 규칙을 계속 정의한다. 발표된 벤치마크 결과는 새로 측정하지 않고는 다른 모델, 정밀도, 입력 분포, 서비스 구성에 옮겨 적용할 수 없다.4,5
7. 자기회귀 언어 모델의 추론
자기회귀 대규모 언어 모델은 다음 토큰의 분포를 반복해서 예측하고, 토큰 하나를 고른 뒤 시퀀스에 덧붙이며, 정지 조건이 만족될 때까지 이를 계속한다. 디코더 전용 트랜스포머는 각 위치가 뒤쪽 위치를 보지 못하도록 막아 자기회귀적 의존성을 유지한다.16
토큰을 고르는 규칙도 추론 동작의 일부다. 그리디 디코딩은 매 단계에서 가장 확률이 높은 토큰을 고른다. 샘플링은 조정된 확률 분포에서 뽑는다. 빔 서치는 여러 후보 시퀀스를 남겨 두었다가 생성이 진행되면서 가지치기한다. 온도, top-k나 뉴클리어스 필터링, 빔 너비, 반복 억제, 정지 문자열, 난수 시드는 모델 매개변수가 고정되어 있어도 출력을 바꿀 수 있다.10
7.1. 프리필과 디코드
서빙 문헌은 요청 하나를 보통 두 단계로 나눈다.
- 프리필: 프롬프트 처리라고도 하며, 공급된 입력 토큰을 처리해 첫 토큰을 만들 상태를 생성한다.
- 디코드: 토큰 생성이라고도 하며, 이후 토큰을 만들기 위해 연속된 반복을 실행한다.
이 구분은 운영상 유용하다. 충분히 큰 프리필 작업은 보통 연산 집약적이고, 배치가 크지 않은 토큰 단위 디코드는 매개변수와 캐시 상태를 메모리로 옮기는 속도에 묶이는 경우가 많다. 다만 이는 경향일 뿐이다. 짧은 프롬프트, 큰 배치 크기, 전문가 혼합 라우팅, 캐시 배치, 양자화, 하드웨어 균형에 따라 병목은 달라진다. Splitwise는 이 대비를 측정하고, 두 단계를 서로 다른 기계 풀로 나누는 방식을 자기 작업 부하에서 평가했다.17
자주 쓰이는 지연 지표는 첫 토큰 시간(time to first token, TTFT)과 토큰당 출력 시간(time per output token, TPOT)이다. 토큰 사이 지연이나 전체 요청 지연이 함께 쓰이기도 한다. TTFT는 프리필 커널 시간과 같지 않다. 종단 간 서비스에서는 접수, 대기, 전처리, 프롬프트 전송, 프리필, 첫 디코드 단계, 응답 전송이 모두 포함될 수 있다. TPOT도 모델 계산뿐 아니라 스케줄링과 함께 실행되는 다른 작업에 따라 달라진다.
7.2. KV 캐시
자기회귀 디코딩 중에는 어텐션 층이 앞선 토큰에 대해 계산한 키와 값을 재사용할 수 있다. 매 단계마다 앞부분 전체를 다시 계산하지 않도록 저장해 두는 상태를 KV 캐시(key-value cache)라 한다. 캐시는 캐시된 토큰 수와 동시에 처리하는 시퀀스 수에 따라 커지며, 주요 메모리 제약이 될 수 있다.6
모든 디코더 층에서 표준 방식으로 키와 값을 캐시한다고 할 때, 토큰 하나당 저장량은 대략 다음과 같이 계산할 수 있다.
2 * number_of_layers * number_of_KV_heads * head_dimension * bytes_per_element계수 2는 키 하나와 값 하나를 뜻한다. 전체 저장량은 캐시된 토큰 수와 활성 시퀀스 수에 비례한다. 다만 이 식은 용량을 보장하지 않는다. 그룹 또는 멀티 쿼리 어텐션은 KV 헤드 수를, 캐시 양자화는 원소당 바이트 수를 바꾸며, 정렬, 블록 할당, 메타데이터, 복제, 오프로드 정책도 실제 저장량을 늘리거나 줄인다.
요청마다 최대 길이만큼 연속된 캐시를 미리 잡아 두면, 실제 시퀀스 길이가 제각각일 때 메모리가 낭비된다. PagedAttention은 요청의 캐시를 물리적으로 연속하지 않아도 되는 블록으로 나눈다. 그러면 생성이 진행되는 만큼 할당할 수 있고, 공통 상태를 가진 시퀀스끼리 공유할 수도 있다. 관련 vLLM 논문은 특정 모델과 작업 부하에서 이 방식을 평가했다. 보고된 속도 향상은 그 실험의 결과이지, 모든 서버에 적용되는 일반 배수가 아니다.6
7.3. 스케줄링과 단계 분리
전통적인 요청 단위 배칭에서는 짧은 생성이 더 긴 생성 뒤에 묶여 기다리기도 한다. Orca는 토큰 반복 사이마다 스케줄러가 활성 배치를 다시 검토하고, 완료된 요청을 더 일찍 돌려줄 수 있는 반복 단위 스케줄링을 도입했다. 최신 시스템은 이와 관련된 동작을 흔히 연속 배칭(continuous batching) 또는 실행 중 배칭(in-flight batching)이라 부른다. 활용률과 응답성을 높일 수 있지만, 공정성, 선점 비용, 메모리 압박, 꼬리 지연은 여전히 스케줄링 정책에 따라 정해진다.18
프리필과 디코드를 장치나 작업자 사이에서 나눌 수도 있다. 단계별로 자원을 따로 마련하고 간섭을 줄일 수 있지만, 그 대가로 KV 캐시를 포함한 요청 상태를 단계 사이로 옮겨야 한다. 전송은 대역폭을 쓰고 지연을 더하므로, 스케줄링과 활용률 이득이 그 비용을 넘는 구성에서만 분리가 이롭다.17
8. 최적화 기법
추론 최적화는 재현 가능한 기준선에서 시작해야 한다. 고정된 모델 아티팩트, 전처리, 데이터셋이나 요청 기록, 품질 지표, 하드웨어, 소프트웨어 버전, 워밍업 정책, 부하를 먼저 정한다. 그다음 각 변경을 시스템 목표와 출력 품질 양쪽에서 측정한다. 서로 다른 계층의 기법은 상호작용할 수 있어서 각 기법의 이득이 대체로 곱셈으로 합쳐지지는 않는다.
8.1. 모델 변환
| 기법 | 핵심 아이디어 | 잠재적 이득 | 필요한 주의 |
|---|---|---|---|
| 양자화 | 가중치, 활성화 값, 캐시를 낮은 정밀도 값으로 표현한다 | 저장 공간과 대역폭 절감, 지원되는 산술 연산 가속 | 작업 품질과 연산자 지원을 검증한다. 실제 시간 이득은 적합한 커널과 하드웨어가 있어야 한다 |
| 가지치기(pruning) | 선택된 가중치, 연결, 채널 등 구조를 제거한다 | 모델 축소와 계산량 감소 | 비정형 희소성은 밀집 커널을 빠르게 하지 못할 수 있다. 재학습이나 미세 조정이 필요할 수 있다 |
| 지식 증류 | 더 큰 교사 모델이나 앙상블의 유용한 행동을 학생 모델이 재현하도록 학습한다 | 배포하기 쉬운 더 작은 모델 | 학생 모델은 별도로 학습된 모델이라 모든 행동을 보존하지 못할 수 있다 |
Jacob 등은 연구에서 다룬 모델과 모바일 프로세서에서 양자화된 가중치와 활성화 값으로 정수 전용 추론이 가능함을 보였다. 이 결과는 양자화가 실용적인 기법이라는 근거이지만, 임의의 하드웨어에서 고정된 속도 향상을 보장하지는 않는다. 마찬가지로 Han 등은 특정 합성곱 네트워크를 가지치기한 뒤 재학습해 측정된 정확도를 유지했다. 가지치기로 얻는 실제 지연 시간 이득은 런타임이 생긴 구조를 활용할 수 있는지에 달려 있다. 증류는 학습 중에 교사의 출력에서 학생으로 정보를 옮기는 것이지, 추가 학습 없이 실행 시점에 켜는 압축 스위치가 아니다.19,20,21
8.2. 그래프, 커널, 메모리 최적화
컴파일러와 런타임은 상수를 접고, 중복 연산을 없애고, 호환되는 연산자를 융합하고, 레이아웃을 고르고, 버퍼를 재사용하고, 알려진 형태에 맞는 커널을 고를 수 있다. 얻는 이득은 그래프 구조와 대상 하드웨어에 따라 달라진다. 동적 형태는 컴파일러의 최적화 기회를 줄이거나 여러 특수화된 실행 계획을 요구할 수 있다.
데이터 이동은 산술 연산보다 더 많은 시간과 에너지를 쓸 수 있다. 특히 피연산자가 메모리 계층을 반복해서 오갈 때 그렇다. 그래서 효율적인 딥러닝 처리를 다룬 서베이는 연산 횟수와 함께 데이터 흐름과 메모리 계층을 분석한다. FlashAttention은 이 원리를 바탕으로 설계된 정확한 어텐션 알고리즘이다. GPU의 고대역폭 메모리와 온칩 메모리 사이의 읽기와 쓰기를 줄이도록 계산을 타일 단위로 나눈다. 논문의 종단 간 결과는 시험한 모델, 시퀀스 길이, 하드웨어에 대한 것이다. 일반적 교훈은 부동소수점 연산 수를 줄이는 것만이 지연 시간을 낮추는 길은 아니라는 점이다.22,23
버퍼 재사용과 미리 할당한 메모리 풀은 할당 오버헤드를 줄일 수 있지만, 요청 격리를 지키고 동시에 살아 있는 최대 상태를 고려해야 한다. 여러 구성 요소가 같은 메모리 표현을 받아들이면 복사를 피해 지연을 줄일 수 있다. 다만 소유권과 수명 규칙이 복잡해지므로 취소와 동시성 상황에서의 정확성을 시험해야 한다.
8.3. 배칭, 캐싱, 라우팅
배칭은 고정 비용을 나눠 부담하고, 요청들 사이에서 적재된 매개변수를 재사용하게 한다. 정적 배칭은 오프라인 작업에 자연스럽고, 동적 또는 연속 배칭은 온라인 서비스의 도착 패턴에 맞춘다. 배치가 커지면 활성화 값과 캐시 메모리를 더 쓰며, 장치가 이론상 최대 처리량에 이르기 전에 지연 시간 목표를 어길 수 있다.
결과 캐싱은 모델, 전처리, 후처리, 권한, 관련 외부 상태가 모두 캐시 키에 포함될 때만 모델 실행을 건너뛸 수 있다. 출력이 의도적으로 무작위이거나, 개인화되었거나, 시간에 의존하거나, 접근 제어가 걸려 있거나, 숨은 상태의 영향을 받으면 안전하지 않다. 언어 모델의 접두사 캐싱은 최종 답이 아니라 계산된 프롬프트 상태를 재사용한다. 그 가치는 접두사가 얼마나 반복되는지와 캐시된 상태를 보관하고 격리하는 비용에 달려 있다.
다중 모델 시스템은 요청을 더 큰 모델로 올리기 전에 작거나 특화된 모델로 먼저 보낼 수 있다. 이렇게 하면 평균 작업량을 줄일 수 있지만, 라우터가 품질과 안전 동작의 일부가 된다. 라우터의 오류, 임계값, 대체 실행 비율, 분포 변화는 따로 평가해야 한다.
8.4. 추측 디코딩과 병렬 디코딩
추측 디코딩은 더 빠른 근사 모델이 토큰 여러 개를 제안하고, 대상 모델이 이를 병렬로 검증하는 방식이다. Leviathan 등의 알고리즘은 제안이 수락될 때 대상 모델의 직렬 단계를 줄이면서도 대상 모델의 출력 분포를 보존한다. 이 보장은 명시된 수락과 보정 절차에 속한다. 그 절차 없이 초안 토큰을 그냥 받아들이는 구현은 이 보장을 물려받지 못한다. 속도는 초안 비용, 수락률, 검증 효율, 배치 조건, 대상 모델의 병목에 따라 달라진다.24
텐서 병렬화, 파이프라인 병렬화, 전문가 병렬화는 모델을 장치에 맞추거나 여러 장치에 계산을 나눌 수 있게 한다. 그러나 집합 통신, 동기화, 장애 범위를 더한다. 장치를 늘린다고 지연 시간이 자동으로 줄지는 않으며, 특히 배치가 작거나 상호연결이 느리면 그렇다. 반대로 모델 전체를 복제하면 독립적인 서빙 용량은 늘지만 한 요청의 모델 계산이 빨라지지는 않는다.
9. 하드웨어와 시스템 설계
추론은 범용 CPU, GPU 컴퓨팅 플랫폼, 또는 도메인 특화 AI 가속기에서 실행될 수 있다. 어느 장치 종류가 항상 최선인 것은 아니다. 선택은 작업의 요구 조건에서 시작한다.
- 용량: 매개변수, 활성화 값, 작업 공간, 요청 상태가 로컬 또는 분산 메모리에 들어가야 한다.
- 대역폭: 가중치, 활성화 값, 캐시를 지속적으로 옮기는 일이 연산 장치가 가득 차 있지 않아도 실행을 제한할 수 있다.
- 연산 지원: 연산자 구성과 수치 정밀도가 효율적이고 검증된 커널에 대응해야 한다.
- 지연 특성: 커널 실행 오버헤드, 대기열, 배치 요건, 동기화가 작거나 대화형인 작업에 영향을 준다.
- 상호연결: 여러 장치에 걸친 실행은 장치 간, 호스트와 장치 간 통신에 달려 있다.
- 전력과 발열 한계: 특히 엣지 장치에서는 지속 성능이 짧은 벤치마크의 순간 성능과 다를 수 있다.
- 소프트웨어 호환성: 내보내기 도구, 컴파일러, 런타임, 드라이버, 관측 도구, 지원 연산자가 하드웨어를 올바로 쓸 수 있는지를 정한다.
Jouppi 등은 1세대 텐서 처리 장치(TPU)를 행렬 곱셈 장치와 온칩 버퍼를 중심으로 한 도메인 특화 추론 ASIC으로 설명했다. 이 연구는 추론 전용 하드웨어 설계의 역사적 근거이지만, 비교 대상이 2015년 무렵의 시스템이므로 현재 제품의 순위로 쓰면 안 된다.25
장치 실행이 가장 빨라도 토큰화, 데이터 복사, 대기열, 네트워크, 후처리가 시간을 지배하면 서비스는 느릴 수 있다. 그래서 프로파일링은 종단 간에서 시작해 시간을 스택의 계층별로 나눠야 한다. 루프라인형 분석은 연산 처리량 한계와 메모리 대역폭 한계를 구분하는 데 도움이 되지만, 병목을 확인하려면 측정된 연산자 추적과 메모리 사용량이 필요하다.
10. 소프트웨어 스택
추론 소프트웨어는 계층으로 이뤄지며, 한 제품이 둘 이상의 계층에 걸치기도 한다.
| 계층 | 역할 | 예시 |
|---|---|---|
| 학습 프레임워크 실행 | 승인된 모델을 프레임워크 연산자로 직접 실행 | TensorFlow, PyTorch |
| 교환 형식과 이식 가능한 런타임 | 그래프를 표현하고 사용 가능한 실행 제공자를 통해 실행 | ONNX, ONNX Runtime |
| 그래프 컴파일러와 장치 런타임 | 대상에 맞게 연산자, 정밀도, 레이아웃, 커널을 특화 | TensorRT |
| 모델 서버 | 버전을 적재하고, 요청을 받고, 배칭과 라우팅을 하며, 서비스 상태를 보고 | TensorFlow Serving, NVIDIA Triton Inference Server |
| 특화된 생성 엔진 | 자기회귀 스케줄링, 캐시, 분산 실행을 관리 | vLLM |
TensorRT의 엔진 빌드는 대상 장치에 종속되고, ONNX Runtime은 그래프를 실행 제공자 사이에 나눌 수 있으며, TensorFlow Serving은 관리되는 네트워크 서빙에 초점을 둔다. Triton의 배칭 기능은 지원되는 모델 백엔드 위에서 동작한다. 이 구성 요소들은 추론 배포에 나타날 수 있다는 이유만으로 서로 바꿔 쓸 수 있는 것이 아니다.12,13,14,15
운영 스택은 모델 체크섬, 전후처리 버전, 런타임과 드라이버 버전, 정밀도 모드, 빌드 옵션, 하드웨어 대상을 기록해야 한다. 배포 후 모델이나 컴파일된 아티팩트가 검증에 실패했을 때의 롤백 동작도 미리 정의해야 한다.
11. 검증과 모니터링
배포 전 검증은 전체 작업 정확도만으로는 부족하다. 다음 항목을 포함해야 한다.
- 배포된 아티팩트를 대표 예시, 경계 예시, 형식이 잘못된 예시, 영향이 큰 예시에서 승인된 기준 구현과 비교한다.
- 전처리와 후처리를 독립적으로 시험한다. 로케일, 인코딩, 결측값, 형태 변화, 범주 매핑을 포함한다.
- 내보내기, 정밀도 변환, 연산 융합, 하드웨어 전용 커널이 가져오는 수치 차이를 측정한다.
- 예상되는 도착 패턴과 입력 크기 분포로 부하 테스트를 하고, 꼬리 지연, 대기열 증가, 메모리 최대치, 타임아웃, 회복을 살핀다.
- 취소, 재시도, 모델 재적재, 프로세스 재시작, 장치 오류, 대체 경로를 실행해 본다.
- 접근 제어, 데이터 보존, 로그 가림, 요청별 상태 격리를 검증한다.
확률적 분류기에서 신뢰도와 정확도는 서로 다른 속성이다. 적절한 예측 집합에서 제시된 신뢰도가 관찰된 정답 빈도와 대응할 때 모델이 보정되었다고 한다. 최신 신경망 분류기는 보정이 어긋날 수 있으므로, 보정은 정확도로부터 짐작하지 말고 관련 데이터에서 측정해야 한다. 보정은 양자화, 모델 업데이트, 입력 분포 변화 뒤에도 달라질 수 있다.26
운영 입력은 기대 스키마와 분포에 비추어 점검해야 한다. Google의 데이터 검증 연구는 머신러닝 파이프라인에서 이상과 학습-서빙 편차를 탐지하는 방법을 설명한다. 이런 점검은 누락된 필드나 분포 변화를 드러낼 수 있지만, 분포 경보가 곧 작업 성능 저하를 증명하지는 않는다. 반대로 주변 특징 통계가 안정적이라고 해서 입력과 결과의 관계가 변하지 않았다고 증명되지도 않는다.27
배포 후 모니터링은 다음 신호를 결합해야 한다.
- 운영 신호: 요청률, 오류, 대기열 시간, 종단 간 및 단계별 지연 시간, 포화도, 메모리, 재시작, 대체 실행 비율
- 입출력 신호: 스키마 위반, 결측, 길이, 드리프트 지표, 예측 분포, 신뢰도, 거부 또는 회피 비율, 정책 규칙 발동
- 품질 신호: 지연된 레이블, 표본 인간 검토, 통제된 평가, 사용자 영향 지표, 적절한 경우 하위 집단 분석
- 버전 신호: 비교 가능한 모든 측정에 대해 모델, 데이터, 특징, 런타임, 설정, 하드웨어 식별자
NIST AI 800-4는 배포 후 모니터링의 난제를 기능, 운영 동작, 보안, 인적 요인, 준수, 더 넓은 영향으로 묶는다. 또한 방법과 용어가 아직 활발히 연구되는 영역이며 해결된 체크리스트가 아니라는 점을 강조한다. 이전의 시스템 연구도 머신러닝 시스템의 기술 부채를 데이터 의존성, 피드백 루프, 변화하는 외부 조건, 모니터링 공백에서 찾았다.28,29
모니터링만으로 모델이 고쳐지지는 않는다. 경보에는 담당자, 조사 맥락, 롤백, 트래픽 축소, 대체 실행, 임계값 재검토, 재학습 같은 정의된 대응이 필요하다. 자동 개입은 배포된 시스템의 동작을 바꾸므로 범위를 제한하고 시험해야 한다.
12. 흔한 해석 오류
- 추론을 운영 서빙과 같다고 보는 것. 추론은 모델 실행이고, 서빙은 그것을 둘러싼 요청, 버전, 스케줄링, 관측 시스템을 포함한다.
- 모든 입력을 본 적 없는 것으로 가정하는 것. 모델은 학습, 검증, 반복, 캐시된 입력, 합성 입력, 실제 새 입력 모두에 대해 추론할 수 있다.
- 추론이 결정론적이라고 가정하는 것. 샘플링과 일부 커널은 매개변수가 고정되어 있어도 다른 출력을 낼 수 있다.
- 매개변수 수를 지연 시간의 예측 지표로 보는 것. 연산자 구조, 형태, 정밀도, 메모리 이동, 배치 크기, 런타임, 하드웨어도 중요하다.
- 품질 조건 없이 처리량을 비교하는 것. 다른 모델, 정밀도, 디코딩 규칙, 정확도 목표로 얻은 더 빠른 결과는 같은 조건의 비교가 아니다.
- 커널 시간만 보고하는 것. 사용자가 겪는 지연은 대기열, 전송, 전처리, 후처리에 지배될 수 있다.
- 최적화에 보편적 배수가 있다고 가정하는 것. 발표된 속도 향상은 특정 기준선과 실험 조건에서 나온 것이다.
- 배포 후 품질 점검을 건너뛰는 것. 서비스는 계속 작동하면서도 데이터나 작업 성능은 변할 수 있다.
출처 29개
- AI Wiki: Inference (2026-07-29 수정본) aiwiki.ai · CC BY 4.0 · 확인 2026-10-13
- Clipper: A Low-Latency Online Prediction Serving System usenix.org · 확인 2026-10-13
- Deep Feedforward Networks deeplearningbook.org · 확인 2026-10-13
- MLPerf Inference Benchmark arxiv.org · 확인 2026-10-13
- MLPerf Inference Benchmark Suite docs.mlcommons.org · 확인 2026-10-13
- Efficient Memory Management for Large Language Model Serving with PagedAttention doi.org · 확인 2026-10-13
- Populations and Sampling itl.nist.gov · 확인 2026-10-13
- Approximate Inference deeplearningbook.org · 확인 2026-10-13
- Reproducibility docs.pytorch.org · 확인 2026-10-13
- Generation strategies huggingface.co · 확인 2026-10-13
- Autograd mechanics docs.pytorch.org · 확인 2026-10-13
- How TensorRT Works docs.nvidia.com · 확인 2026-10-13
- Execution Providers onnxruntime.ai · 확인 2026-10-13
- Serving Models tensorflow.org · 확인 2026-10-13
- Batchers docs.nvidia.com · 확인 2026-10-13
- Attention Is All You Need proceedings.neurips.cc · 확인 2026-10-13
- Splitwise: Efficient Generative LLM Inference Using Phase Splitting arxiv.org · 확인 2026-10-13
- Orca: A Distributed Serving System for Transformer-Based Generative Models usenix.org · 확인 2026-10-13
- Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference openaccess.thecvf.com · 확인 2026-10-13
- Learning both Weights and Connections for Efficient Neural Networks arxiv.org · 확인 2026-10-13
- Distilling the Knowledge in a Neural Network arxiv.org · 확인 2026-10-13
- Efficient Processing of Deep Neural Networks: A Tutorial and Survey doi.org · 확인 2026-10-13
- FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness arxiv.org · 확인 2026-10-13
- Fast Inference from Transformers via Speculative Decoding proceedings.mlr.press · 확인 2026-10-13
- In-Datacenter Performance Analysis of a Tensor Processing Unit doi.org · 확인 2026-10-13
- On Calibration of Modern Neural Networks proceedings.mlr.press · 확인 2026-10-13
- Data Validation for Machine Learning research.google · 확인 2026-10-13
- Challenges to the Monitoring of Deployed AI Systems: Center for AI Standards and Innovation doi.org · 확인 2026-10-13
- Hidden Technical Debt in Machine Learning Systems proceedings.neurips.cc · 확인 2026-10-13