단계 1: 토큰화
모델이 무언가를 보기 전에, 프롬프트는 토큰으로 분할됩니다. 토큰은 텍스트의 작은 조각으로, 대략 몇 글자 또는 단어 조각 하나에 해당합니다. 토큰화는 결정론적이며 거의 순간적으로 완료되며, 모델의 어휘 사전에 대한 조회 작업일 뿐입니다. 모델은 원시 텍스트를 보지 않고 토큰 ID 시퀀스만 봅니다.단계 2: 프리필 (연산 병목)
프리필은 모델이 단일 단어를 작성하기 전에 보낸 모든 토큰을 한 번에 읽는 과정입니다. 이 단계는 연산 병목입니다. GPU가 전체 프롬프트에 대해 무거운 행렬 계산을 동시에 수행하므로, 사용 가능한 처리 능력에 따라 확장됩니다. 프리필에는 알아두어야 할 두 가지 효과가 있습니다.- 응답이 느리게 시작될 때 기다리는 것이 바로 이 단계입니다. 프롬프트 전송과 첫 토큰 표시 사이의 지연 시간은 첫 토큰 도달 시간 (TTFT) — 이것을 지칭하며, 이는 거의 전적으로 프리필 시간입니다.
- 모델은 이후 각 토큰마다 프롬프트를 다시 처리하지 않도록 하는 실행 기록인 KV 캐시를 구축합니다. 메모리에서 해당 캐시가 차지하는 비용에 대해서는 KV 캐시 및 컨텍스트를 참조하십시오.
단계 3: 디코딩 (메모리 대역폭 병목)
프리필이 완료되면 모델은 디코딩을 시작합니다. 즉, 응답을 한 토큰씩 생성합니다. 각 새 토큰은 시퀀스에 추가되고, 다음 토큰은 지금까지의 모든 내용을 기반으로 예측됩니다. 디코딩은 프리필과 매우 다른 동작을 합니다. 각 단계에서 모델은 메모리에서 가중치(또는 mixture-of-experts 모델의 경우 활성 전문가만)와 전체 KV 캐시를 읽어야 합니다. 이동해야 하는 데이터 양에 비해 토큰당 새로 발생하는 연산량이 매우 적기 때문에, 디코딩은 메모리 대역폭 병목입니다. 즉, 사용 가능한 원시 연산량이 아닌 메모리에서 연산 장치로 데이터가 이동하는 속도에 의해 제한됩니다. 이것이 초당 토큰 수가 측정하는 내용이며, 다음과 같은 이유입니다.- 연산 능력은 적지만 메모리가 더 빠른 GPU가, 메모리가 느린 “더 빠른” 칩보다 디코딩 성능이 더 높을 수 있습니다.
- 컨텍스트가 길수록 디코딩이 느려집니다. 각 단계마다 더 많은 KV 캐시를 읽어야 할 뿐만 아니라, 더 많은 메모리를 차지하기 때문입니다(자세한 내용은 KV 캐시 및 컨텍스트 참조).
단계 4: 토큰 스트리밍 반환
모델이 각 토큰을 생성하면, 즉시 텍스트로 디코딩되어 클라이언트에 스트리밍됩니다. 이것이 응답이 한 번에 모두 나타나는 대신 단어 단위로 표시되는 이유입니다. Tokios를 사용하는 경우, 이 스트림은 로컬 백엔드에서 커넥터 및 게이트웨이를 거쳐 요청을 보낸 앱 또는 에이전트로 돌아갑니다. 이 여정에 대해서는 Tokios의 요청 라우팅 방식을 참조하십시오.메모리에 무엇이 저장되는가
위의 모든 작업은 VRAM(또는 통합 메모리)에 있는 세 가지 항목에 대해 발생합니다.
가중치는 최소 요구 사항입니다. 가중치가 완전히 로드되지 않으면(또는 일부가 오프로드되지 않으면) 모델을 실행할 수 없습니다. 자세한 내용은 메모리 및 오프로딩을 참조하십시오. KV 캐시는 대화 또는 문서가 길어짐에 따라 증가하는 부분으로, “짧은 프롬프트에서는 작동했지만 긴 프롬프트에서는 메모리가 부족했다”는 현상이 흔한 실패 모드인 이유입니다.
이 페이지는 메커니즘을 다룹니다. 주어진 모델과 컨텍스트가 실제로 필요한 기가바이트 수와 같은 크기 계산에 대해서는 메모리 및 오프로딩과 GPU 모델 적합 가이드를 참조하십시오.
더 깊이 알아보기
KV 캐시 및 컨텍스트
컨텍스트가 길어질수록 메모리 비용이 증가하고 디코딩이 느려지는 이유입니다.
메모리 및 오프로딩
크기 계산 공식과 모델이 완전히 적합하지 않을 때 발생하는 현상입니다.
양자화
가중치 정밀도를 줄이는 것이 메모리와 속도에 미치는 영향입니다.
모델 카드 읽기
모델을 실행하기 전에 아키텍처와 컨텍스트 길이를 찾을 수 있는 위치입니다.
작동 방식을 이해한 후
위의 모든 작업은localhost에서 실행되는 모델에 대해 사용자의 기기에서 발생합니다. 이를 편안하게 이해했다면, 다음 질문은 자신의 기기가 아닌 다른 곳에서 이를 어떻게 도달할 수 있는지입니다.
로컬 모델에 안정적인 엔드포인트 제공
Tokios는 모델을 선택, 호스팅 또는 파인튜닝하지 않습니다. 로컬에서 실행되면, Tokios는 이를 어디서나 호출할 수 있는 안정적이고 인증된 엔드포인트로 변환합니다.