고급 추론 및 서빙¶
모델을 실행하는 것은 좋은 서빙의 출발점일 뿐입니다. 실제 서비스에서는 시간을 어디에 쓰는지, 어떤 계산을 안전하게 생략하거나 병렬화할 수 있는지, 어떤 품질 기준을 지켜야 하는지, 작업이 생성·검색·재순위화 중 무엇인지부터 물어야 합니다. 이 장은 이러한 원리를 설명한 뒤 mlxcel의 실제 동작과 연결합니다.
읽기 안내¶
| 페이지 | 중심 질문 | 현재 mlxcel 지원 상태 |
|---|---|---|
| 투기적 디코딩 | 요청한 디코딩 규칙을 바꾸지 않으면서 대상 모델이 여러 다음 토큰 후보를 한 번에 검증하려면 어떻게 해야 하는가? | 프롬프트 조회는 초안 모델 없이 오프라인과 서버에서 동작하고, 대상 모델과 토크나이저가 같은 더 작은 전체 모델 초안 모델은 --draft-model을 받는 모든 표면에서 배치 네이티브 엔진으로 실행되고, MTP와 DFlash는 전용 경로를 사용합니다. 온도 0에서 블록 검증의 출력은 일반 디코딩과 같다고 보장하지 않습니다(#2778). |
| MTP와 DFlash | 학습된 다중 토큰 초안 모델과 디퓨전 초안 모델은 어떻게 다르며 대상 모델과 초안 체크포인트는 어떻게 짝지어지는가? | 외부 Gemma 4 보조 모델, Qwen 3.5 MTP, GLM-4.7-Flash MTP 초안 모델과 Qwen 3.5 DFlash, LFM2 DSpark, Muse Glimmer 보조 모델, Laguna DFlash 초안 모델이 명시된 범위 안에서 구현되어 있습니다. |
| 블록 디퓨전 | 한 번에 토큰 하나를 붙이는 대신 블록의 여러 위치를 반복해서 확정하면 무엇이 달라지는가? | DiffusionGemma와 LLaDA-2 MoE에 전용 생성 경로와 직렬 서버 작업자가 있습니다. |
| 런타임 모델 변환 | 체크포인트를 다시 쓰지 않고 로드할 때 가중치를 재현 가능하게 변환하려면 어떻게 해야 하는가? | 지원되는 공통 로더 경로에서 YAML로 정의한 배율 조정, 덧셈, 가지치기, 교체, 보간 연산을 사용할 수 있습니다. |
| 임베딩과 재순위화 | 검색 시스템은 어떻게 후보를 저렴하게 찾고 더 정확하게 다시 점수화하는가? | 오프라인 명령, 전용 작업자, 밀집·다중 벡터 임베딩, 멀티모달 입력, 교차 인코더·생성형 재순위화가 구현되어 있습니다. |
하나의 지연 시간 예산, 서로 다른 최적화¶
대화형 서비스에서는 최소한 다음 네 가지를 분리해서 측정해야 합니다.
- 모델 로드 시간: 프로세스가 작업을 받기 전까지의 시간
- 첫 토큰 시간(TTFT): 큐 대기, 프롬프트 전처리, 프리필(prefill)을 합친 시간
- 토큰 간 지연(ITL): 프리필 이후 화면에 보이는 토큰 사이의 시간
- 종단 간 지연과 처리량: 요청 하나의 완료 시간과 전체 요청에서 완료한 유효 작업량
이 장의 기술들은 서로 다른 항을 줄입니다. 프롬프트 캐시와 분할 프리필은 반복되거나 다른 요청을 방해하는 프리필 작업을 줄입니다. 연속 배칭은 총처리량을 높이고 텐서 병렬화는 모델 하나를 여러 장치에 분산합니다. 투기적 디코딩은 주로 여러 승인 토큰에 대상 모델의 검증 비용을 나누어 토큰 간 지연을 낮춥니다. 블록 디퓨전은 디코딩 과정 자체를 바꾸고 한 차례의 반복에서 여러 위치를 고칠 수 있습니다. 임베딩과 재순위화 모델은 응답을 생성하는 대신 검색과 관련도 점수화를 별도의 서빙 단계로 나눕니다.
한 지표를 개선한 최적화가 다른 지표를 악화시킬 수 있습니다. 별도의 초안 모델은 메모리를 차지하고, 큰 투기 블록은 앞부분에서 거부되면 계산을 낭비하며, 교차 인코더는 관련도를 높이는 대신 두 번째 추론 단계를 추가하고, 큰 서버 배치는 처리량을 높이는 대신 큐 지연을 키울 수 있습니다. 기법을 고르기 전에 서비스 목표부터 정하십시오.
실전 선택 가이드¶
| 워크로드 또는 제약 | 먼저 시도할 방법 | 이유 |
|---|---|---|
| 응답이 프롬프트를 옮겨 적는 대화형 자기회귀 요청 하나(수정, 재작성, 서식 변환) | 프롬프트 조회 | 초안 체크포인트나 추가 모델 메모리가 필요 없고 대상 모델의 검증이 최종 권한을 가집니다. |
| 같은 계열이며 토크나이저가 같은 더 작은 모델이 있는 큰 대상 모델 | 전체 모델 초안 모델(--draft-model) | 대상 모델별 학습이 필요 없지만 초안 모델의 비용이 이득보다 클 수 있으므로 실제 조합을 먼저 측정하십시오. |
| 전용 보조 모델이 있는 Gemma 4 대상 모델 | MTP | 보조 모델이 대상 모델에 맞게 학습되었고 대상 모델의 문맥 인터페이스를 공유합니다. |
| 공개된 전용 초안 모델이 있는 지원 Qwen 3.5 계열 텍스트 대상 모델 | MTP 또는 DFlash | 둘 다 블록을 제안할 수 있으므로 실제 체크포인트와 하드웨어에서 승인율, 초안 비용, 정확성 관문 작동 여부를 비교해야 합니다. |
| GLM-4.7-Flash, LFM2/LFM2.5, Muse Glimmer, Laguna 대상 모델 | 해당 계열의 MTP 또는 DFlash 초안 모델 | 각 계열은 공개된 자기 초안 모델만 받습니다. MTP와 DFlash의 지원표를 참조하십시오. |
| DiffusionGemma 또는 LLaDA-2 체크포인트 | 고유 블록 디퓨전 | 일반 투기적 디코딩을 덧붙일 자기회귀 대상 모델이 아니라 본래 디퓨전 모델입니다. |
| 재현 가능한 제거 실험, 태스크 벡터 합성, 임시 가중치 편집 | 런타임 모델 변환 | 로드 중 선언적 변환을 적용하고 디스크의 체크포인트는 바꾸지 않습니다. |
| 대규모 문서 집합의 의미 검색 | 임베딩 검색 | 문서 벡터를 미리 계산하고 근사 검색을 수행할 수 있습니다. |
| 검색된 짧은 후보 목록의 순서 개선 | 검색 후 재순위화 | 질의-문서 결합 점수기가 후보 문서에만 더 많은 계산을 씁니다. |
| 높은 동시성의 자기회귀 서빙 | 연속 배칭부터 적용한 뒤 투기적 디코딩 측정 | 배치 크기 1에서 얻은 투기적 가속이 큐와 큰 배치 형태에서도 자동으로 유지되지는 않습니다. |
최적화 계약¶
가속을 켜기 전에 다음 네 가지를 적어 두십시오.
- 정확성 기준: 탐욕 디코딩 출력의 바이트 단위 동일성, 대상 모델의 샘플링 분포 보존, 통계적으로 비슷한 품질, 또는 과제 수준의 품질 중 무엇이 필요한가?
- 측정 단위: 첫 토큰 시간, p50/p95 토큰 간 지연, 요청 지연, 검증당 승인 토큰, 초당 토큰 수, 초당 질의 수, 재현율·nDCG 같은 검색 품질 중 무엇인가?
- 자원 상한: 상주 메모리, 메모리 대역폭, GPU 점유율, 전력, 허용 가능한 모델 시작 시간은 얼마인가?
- 대체 동작: 지원하지 않는 조합이 시작 실패, 요청별 사용 거부, 기본 경로로의 투명한 복귀 중 무엇을 해야 하는가?
이렇게 하면 내부 커널 하나가 빨라졌다는 이유만으로 전체 요청도 빨라졌다고 보고하는 실수를 피할 수 있습니다. 실제 요청에는 초안 모델 동기화, 검증, 되돌리기, 큐 대기, 두 번째 재순위화 단계가 포함됩니다.
성능 측정 체크리스트¶
- 정상 상태를 측정하기 전에 Metal 커널과 모델 캐시를 예열합니다.
- 대상 체크포인트, 양자화, 프롬프트 집합, 출력 예산, 샘플러, 시드, 페널티를 고정합니다.
- 가속 경로를 켜기 전에 대상 모델만 사용한 결과를 기록합니다.
- 쉬운 완성 예제 하나가 아니라 실제 프롬프트 유형을 측정합니다. 승인율과 디퓨전 수렴 속도는 내용에 따라 달라집니다.
- 속도와 함께 상주 메모리와 최대 메모리를 보고합니다.
- 투기적 디코딩에서는 제안 폭, 승인율, 평균 승인 접두 시퀀스, 사용 거부·기본 경로 전환 횟수, 정확성 관문 작동 여부를 기록합니다.
- 블록 디퓨전에서는 캔버스 또는 블록 길이, 노이즈 제거 단계 수, 조기 종료 동작, 내부 마스크 위치 수가 아니라 실제 출력 토큰 수를 기록합니다.
- 검색에서는 시스템 지연과 과제 품질을 함께 평가합니다. 벡터 검색이 정답 문서를 놓치면 그 문서를 보지 못한 재순위화 모델이 복구할 수 없습니다.
구현 경계¶
이 장은 다음 세 종류의 문장을 의도적으로 구분합니다.
- 일반적인 추론 개념
- 상류 모델 또는 연구 프로젝트가 공개한 기능
- 문서화한 mlxcel 소스 트리가 실제로 제공하는 경로
이 셋은 서로 바꿔 쓸 수 없습니다. 예를 들어 Qwen 생태계 체크포인트에는 MTP 가중치가 들어갈 수 있지만 문서화한 가속 경로는 지원되는 외부 qwen3_5_mtp 초안 모델을 사용하고 체크포인트 내부의 mtp.layers.* 헤드는 실행하지 않습니다. 생성 모델도 내부 임베딩 텐서를 사용하지만 공개 검색 벡터 기능은 명시적인 모델 감지, 풀링, 정규화, API 계약을 갖춘 별도 구현입니다. 각 페이지에서 이러한 구현 경계를 명시합니다.