AXIS VISUAL ATLAS

그림으로 이해하기

이곳은 번호를 따라가는 모듈이 아니라, 낯선 AI 용어의 관계를 질문과 그림으로 다시 찾는 참고서입니다.

하드웨어

GB와 GB/s

많이 담는 것과 빨리 읽는 것은 어떻게 다를까?

GB와 GiB는 얼마나 많이 담을 수 있는 양이고, GB/s는 1초에 얼마나 빨리 옮기는 속도입니다. GB/s의 GB는 10진 단위이고, GiB는 따로 부릅니다.

담는 양과 1초에 옮기는 속도 위 칸은 얼마나 많이 담을 수 있는지(GB 10진, GiB는 따로)를 상자로 보이고, 아래 칸은 1초에 얼마나 빨리 옮기는지(GB/s, 10진 GB)를 문 통과량으로 보입니다. 얼마나 많이 담는 상자 GB는 10진 GiB는 이진 용량 같은 상자가 아닙니다. GiB는 따로 부름 1초에 얼마나 빨리 1초 문 GB/s 10진 GB · 1초 이동량 담는 양과 1초에 옮기는 속도 위 칸은 얼마나 많이 담을 수 있는지(GB 10진, GiB는 따로)를 상자로 보이고, 아래 칸은 1초에 얼마나 빨리 옮기는지(GB/s, 10진 GB)를 문 통과량으로 보입니다. 얼마나 많이 담는 상자 GB는 10진 GiB는 이진 용량 같은 상자가 아닙니다. GiB는 따로 부름 1초에 얼마나 빨리 1초 문 GB/s 10진 GB · 1초 이동량
  1. 위 칸의 상자는 얼마나 많이 담을 수 있는지(GB 10진, GiB)를 뜻합니다.
  2. 아래 칸의 문은 1초에 얼마나 빨리 옮기는지(GB/s)를 뜻합니다.
  3. 담는 양과 초당 속도는 다른 축이므로, 자리가 넓어도 문이 좁으면 느립니다.

학습된 숫자(Weight)만 들어가면 끝일까?

모델 파일 외에는 무엇이 메모리를 쓸까?

실행 메모리는 학습된 숫자(Weight)만이 아니라 대화 캐시(KV Cache), 실행 프로그램(Runtime)의 작업 버퍼, 여유 공간까지 같은 예산을 나눕니다. 칸 길이는 개념도이며 실제 비율이 아닙니다.

실행 메모리 예산 막대 가로 예산 막대는 Weight, KV Cache, Runtime/작업 버퍼, 여유 공간을 이어서 보여 줍니다. 칸 길이는 개념도이며 실제 비율이 아닙니다. 실행 메모리 예산 가중치 Weight KV Cache 대화 기억 Runtime 작업 버퍼 여유 빈 자리 Weight만 넣으면 끝나지 않습니다. 네 칸이 한 예산을 나눕니다. 칸 길이는 개념도이며 실제 비율이 아닙니다. 실행 메모리 예산 막대 세로 자는 Weight, KV Cache, Runtime/작업 버퍼, 여유 공간을 위에서 아래로 보여 줍니다. 칸 길이는 개념도이며 실제 비율이 아닙니다. 실행 메모리 예산 가중치 Weight KV Cache 대화 기억 Runtime 작업 버퍼 여유 빈 자리 Weight만 넣으면 끝나지 않습니다. 칸 길이는 개념도이며 실제 비율이 아닙니다.
  1. 맨 앞 칸은 모델의 학습된 숫자인 가중치(Weight)입니다.
  2. 대화 캐시(KV Cache)와 실행 프로그램(Runtime)의 작업 버퍼는 지금 실행 중인 대화와 프로그램이 씁니다.
  3. 마지막 여유 공간까지 같은 예산입니다. 칸 길이는 개념도이며 실제 비율이 아닙니다.

분리형과 통합 메모리

CPU와 GPU는 데이터를 어떤 길로 주고받을까?

분리형은 CPU 작업 메모리(RAM)와 GPU 전용 메모리(VRAM)가 컴퓨터 안 데이터 고속도로(PCIe)로 오가고, 통합형은 CPU와 GPU가 물리적으로 같은 메모리 풀을 나눠 씁니다. 오프로드(오프로딩)는 넘치는 조각을 돌아가는 길이라 지연이 생깁니다.

분리형 데이터 길(PCIe)과 통합 메모리 풀 왼쪽은 분리형에서 CPU 작업 메모리(RAM)와 GPU 전용 메모리(VRAM)가 컴퓨터 안 데이터 고속도로(PCIe)로 이어지고 오프로드(오프로딩)가 돌아가는 길로 지연을 만듭니다. 오른쪽은 통합형에서 CPU와 GPU가 같은 메모리 풀을 나눕니다. 분리형 CPU 작업 메모리(RAM) GPU 전용 메모리(VRAM) PCIe 두 메모리가 다른 상자입니다. 컴퓨터 안 데이터 고속도로(PCIe) 오프로드 우회 넘치는 조각이 PCIe를 돌아 지연 통합형 같은 메모리 풀 CPU와 GPU가 나눠 씀 CPU GPU 통합이어도 접근 길과 속도는 중요합니다. 오프로드 우회는 덜 쓰지만, 풀 자체는 공유됩니다. 분리형 데이터 길(PCIe)과 통합 메모리 풀 위는 분리형에서 CPU 작업 메모리(RAM)와 GPU 전용 메모리(VRAM)가 컴퓨터 안 데이터 고속도로(PCIe)로 이어지고 오프로드(오프로딩)가 돌아가는 길로 지연을 만듭니다. 아래는 통합형에서 CPU와 GPU가 같은 메모리 풀을 나눕니다. 분리형 CPU 작업 메모리 (RAM) GPU 전용 메모리 (VRAM) PCIe 두 메모리가 다른 상자입니다. 컴퓨터 안 데이터 고속도로(PCIe) 오프로드 우회 넘치는 조각이 PCIe를 돌아 지연 통합형 같은 메모리 풀 CPU와 GPU가 나눠 씀 CPU GPU 통합이어도 접근 길과 속도는 중요합니다. 오프로드 우회는 덜 쓰지만, 풀 자체는 공유됩니다.
  1. 분리형은 CPU 작업 메모리(RAM)와 GPU 전용 메모리(VRAM)가 컴퓨터 안 데이터 고속도로(PCIe)라는 복도로 오갑니다.
  2. 통합형은 같은 메모리 풀을 나눠 쓰지만, 접근 길과 속도는 그대로 중요합니다.
  3. 오프로드(오프로딩)는 넘치는 조각을 돌아가는 길이라 지연이 생깁니다.

메모리 병목과 연산 병목

연산기가 쉬는 이유는 데이터일까 계산일까?

데이터를 기다리는 줄과 계산하는 줄을 나누어 보면, 어느 쪽이 늦은지 작업마다 다릅니다. 모든 작업이 메모리 병목은 아닙니다.

데이터 대기와 계산의 두 시간선 위 줄은 데이터를 기다리는 동안의 데이터 이동과 쉼을, 아래 줄은 같은 시간에 계산이 바쁜 구간을 맞추어 보여 줍니다. 모든 작업이 메모리 병목은 아닙니다. 질문을 먼저 읽는 단계(Prefill)나 큰 묶음은 계산이 더 늦을 수 있습니다. 같은 시간축 시작 끝 데이터를 기다림 데이터 이동 쉼 데이터 이동 계산 쉼 계산이 바쁨 쉼 두 줄을 맞추어 봅니다. 모든 작업이 메모리 병목은 아닙니다. 질문을 먼저 읽는 단계(Prefill)나 큰 묶음은 계산이 더 늦을 수 있습니다. 데이터 대기와 계산의 두 시간선 위 줄은 데이터를 기다리는 동안의 데이터 이동과 쉼을, 아래 줄은 같은 시간에 계산이 바쁜 구간을 맞추어 보여 줍니다. 모든 작업이 메모리 병목은 아닙니다. 질문을 먼저 읽는 단계(Prefill)나 큰 묶음은 계산이 더 늦을 수 있습니다. 같은 시간축 데이터를 기다림 데이터 이동 쉼 데이터 이동 계산 쉼 계산이 바쁨 쉼 두 줄을 맞추어 봅니다. 모든 작업이 메모리 병목은 아닙니다. 질문을 먼저 읽는 단계(Prefill)나 큰 묶음은 계산이 더 늦을 수 있습니다.
  1. 위 줄은 데이터를 기다리는 동안 데이터가 이동하거나 연산기가 쉬는 모습입니다.
  2. 아래 줄은 같은 시간에 계산이 바쁜지 봅니다.
  3. 어느 줄이 긴지는 작업마다 다르며, 질문을 먼저 읽는 단계(Prefill)나 큰 묶음은 계산이 더 늦을 수 있습니다. 모든 작업이 메모리 병목은 아닙니다.

모델 동작

토큰(Token)과 파라미터(Parameter)

매번 바뀌는 데이터와 고정된 학습값은 무엇일까?

토큰은 한 글자와 같지는 않은 입력·출력 조각이고, 파라미터는 학습으로 남은 숫자입니다.

바뀌는 토큰 카드와 고정된 학습된 숫자 왼쪽은 입력과 출력이 바뀔 때 내용이 달라지는 토큰 카드이고, 오른쪽은 학습된 숫자가 고정된 파라미터 칸입니다. 매번 바뀌는 토큰 안녕 입력 카드 네 출력 카드 입력·출력이 바뀌면 토큰도 바뀝니다. 고정된 학습값 학습된 숫자 W W W W 파라미터는 학습된 숫자입니다. 바뀌는 토큰 카드와 고정된 학습된 숫자 위는 입력과 출력이 바뀔 때 내용이 달라지는 토큰 카드이고, 아래는 학습된 숫자가 고정된 파라미터 칸입니다. 매번 바뀌는 토큰 안녕 입력 카드 네 출력 카드 입력·출력이 바뀌면 토큰도 바뀝니다. 고정된 학습값 학습된 숫자 W W W W 파라미터는 학습된 숫자입니다.
  1. 위·왼쪽 카드는 입력이나 출력이 바뀔 때마다 다른 토큰입니다.
  2. 아래·오른쪽 칸의 숫자는 학습된 파라미터라서 이번 입력마다 바뀌지 않습니다.
  3. 토큰은 지금 오가는 데이터이고, 파라미터는 모델 안에 남은 학습된 숫자입니다.

학습(Training)과 추론(Inference)

어느 과정에서 모델의 숫자가 바뀔까?

학습은 학습된 숫자(Weight)를 고치는 과정이고, 추론은 그 학습된 숫자(Weight)를 읽기만 하는 과정입니다. Checkpoint는 Weight와 설정·학습 상태를 담는 저장 상자입니다.

학습과 추론, Weight를 담은 Checkpoint 위 흐름은 학습이 학습된 숫자를 고치고, 오른쪽 Checkpoint 상자 안에 Weight가 들어 있습니다. 아래 흐름은 추론이 그 Weight를 읽기만 합니다. 설정·학습 상태도 담을 수 있습니다. 학습 데이터 숫자를 고침 학습은 학습된 숫자를 고칩니다. Checkpoint Weight 설정·학습 상태도 담을 수 있습니다. Weight의 다른 이름이 아닙니다. 추론 Weight를 읽음 답 추론은 학습된 숫자를 읽기만 합니다. 학습과 추론, Weight를 담은 Checkpoint 위 흐름은 학습이 학습된 숫자를 고치고, 가운데 Checkpoint 상자 안에 Weight가 들어 있습니다. 아래 흐름은 추론이 그 Weight를 읽기만 합니다. 설정·학습 상태도 담을 수 있습니다. 학습 데이터 숫자를 고침 학습은 학습된 숫자를 고칩니다. Checkpoint Weight 설정·학습 상태도 담을 수 있습니다. Weight의 다른 이름이 아닙니다. 추론 Weight를 읽음 답 추론은 학습된 숫자를 읽기만 합니다.
  1. 위 흐름의 학습은 학습된 숫자(Weight)를 고칩니다.
  2. Checkpoint 상자 안에는 Weight가 들어 있고, 설정·학습 상태도 담을 수 있습니다. Weight의 다른 이름이 아닙니다.
  3. 아래 흐름의 추론은 그 학습된 숫자(Weight)를 읽기만 하고 고치지 않습니다.

질문 읽기(Prefill), 첫 글자 대기(TTFT), 이어 쓰기(Decode)

질문을 읽는 시간과 답을 이어 쓰는 속도는 왜 다를까?

첫 글자까지 기다리는 시간(TTFT)은 요청을 보낸 순간부터 요청 줄·스케줄과 질문 읽기(Prefill)를 지나 첫 글자가 도착할 때까지입니다.

요청부터 첫 글자까지의 TTFT 구간 요청 후 요청 줄·스케줄과 질문을 먼저 읽는 단계(Prefill)를 지나 첫 글자 도착까지가 요청부터 첫 글자까지 걸리는 시간(TTFT)입니다. 그 뒤에는 답을 이어 쓰는 단계(Decode)가 반복됩니다. 같은 시간선 요청 요청 줄·스케줄 질문을 먼저 읽는 단계(Prefill) 첫 글자 도착 요청부터 첫 글자까지 요청부터 첫 글자까지 걸리는 시간(TTFT) 답을 이어 쓰는 단계(Decode) 긴 질문은 요청 후 읽기 구간을 늘릴 수 있습니다. 요청부터 첫 글자까지의 TTFT 구간 요청 후 요청 줄·스케줄과 질문을 먼저 읽는 단계(Prefill)를 지나 첫 글자 도착까지가 요청부터 첫 글자까지 걸리는 시간(TTFT)입니다. 그 뒤에는 답을 이어 쓰는 단계(Decode)가 반복됩니다. 같은 시간선 요청 요청부터 첫 글자까지 요청 줄·스케줄 질문을 먼저 읽는 단계(Prefill) 첫 글자 도착 요청부터 첫 글자까지 걸리는 시간(TTFT) 답을 이어 쓰는 단계(Decode) 첫 글자 뒤에는 답을 이어 씁니다.
  1. 요청이 들어오면 먼저 요청 줄·스케줄을 지나갑니다.
  2. 질문을 먼저 읽는 단계(Prefill)까지 포함해, 요청부터 첫 글자 도착까지가 TTFT입니다.
  3. 첫 글자 뒤에는 답을 이어 쓰는 단계(Decode)가 반복됩니다.

찾는 단서(Q), 표지(K), 가져올 내용(V)

무엇을 참고할지와 무엇을 가져올지는 어떻게 나뉠까?

어텐션은 찾는 단서(Q)로 과거 토큰의 표지(K)를 고르고, 그에 맞는 가져올 내용(V)을 꺼내는 방식입니다.

찾는 단서, 표지, 가져올 내용 왼쪽 찾는 단서(Q)가 가운데 과거 토큰의 표지(K)를 고르고, 오른쪽 가져올 내용(V)을 꺼냅니다. 찾는 단서(Q) 지금 무엇을 볼지 과거 토큰의 표지(K) 어디를 볼지 고름 가져올 내용(V) 꺼내는 값 찾는 단서, 표지, 가져올 내용 위에서 아래로 찾는 단서(Q), 과거 토큰의 표지(K), 가져올 내용(V) 순서로 이어집니다. 찾는 단서(Q) 지금 무엇을 볼지 과거 토큰의 표지(K) 어디를 볼지 고름 가져올 내용(V) 꺼내는 값
  1. 찾는 단서(Q)는 지금 무엇을 볼지 정합니다.
  2. 과거 토큰의 표지(K)와 비교해 어디를 볼지 고릅니다.
  3. 가져올 내용(V)이 실제로 꺼내는 값입니다.

대화 캐시(KV Cache)의 재사용과 증가

재계산을 줄이는 대신 무엇이 늘어날까?

한 생성 안에서는 대화 캐시(KV Cache)에 이미 만든 표지와 내용을 재사용해 반복 계산을 줄이지만, 그 저장 칸이 늘어 메모리를 더 씁니다. 요청 사이 재사용은 같은 접두사와 Runtime 지원이 있을 때만 됩니다.

한 생성 안 재사용과 늘어난 메모리 왼쪽은 매번 다시 계산하는 모습이고, 오른쪽은 한 생성 안에서 앞 계산을 재사용해 반복 일이 줄고 저장 칸이 늘어난 모습입니다. 요청 사이 재사용은 같은 접두사와 Runtime 지원이 있을 때만 됩니다. 재계산이 많음 다시 계산 다시 계산 다시 계산 다시 계산 재사용 + 메모리 증가 새 계산 KV KV KV 한 생성 안에서 앞 계산을 재사용합니다. 반복 계산이 줄어듭니다. 대신 메모리가 늘어납니다. 요청 사이 재사용은 같은 접두사와 Runtime 지원이 있을 때만 됩니다. 한 생성 안 재사용과 늘어난 메모리 위는 매번 다시 계산하는 모습이고, 아래는 한 생성 안에서 앞 계산을 재사용해 반복 일이 줄고 저장 칸이 늘어난 모습입니다. 요청 사이 재사용은 같은 접두사와 Runtime 지원이 있을 때만 됩니다. 재계산이 많음 다시 계산 다시 계산 다시 계산 다시 계산 재사용 + 메모리 증가 새 계산 KV KV KV 한 생성 안에서 앞 계산을 재사용합니다. 반복 계산이 줄어듭니다. 대신 메모리가 늘어납니다. 요청 사이 재사용은 같은 접두사와 Runtime 지원이 있을 때만 됩니다.
  1. 위·왼쪽은 매번 다시 계산하는 모습입니다.
  2. 아래·오른쪽은 한 생성 안에서 앞 계산을 재사용해 반복 일이 줄고, 저장 칸(메모리)이 늘어난 모습입니다.
  3. 요청 사이 재사용은 같은 접두사와 Runtime 지원이 있을 때만 됩니다.

양자화

정밀도에 따른 27B Weight 용량(가상 계산)

숫자 개수는 같은데 왜 크기가 달라질까?

가상의 정확한 27,000,000,000개 학습된 숫자(Weight)가 모두 같은 비트 폭이라고 가정하면, 숫자 하나에 쓰는 비트가 적을수록 Weight 용량은 작아집니다.

27B 모델의 정밀도별 Weight 용량 비교 가상의 정확한 27,000,000,000개 Weight가 모두 같은 비트 폭이라고 가정하고, 공식 27,000,000,000 × bits ÷ 8로 계산하면 FP32 108GB, BF16 54GB, FP8 27GB, 단순 Q4 약 13.5GB입니다. Weight만 포함하며 양자화 scale/metadata, KV Cache, Runtime, 작업 버퍼, 여유 공간은 제외합니다. Q4_K_M 같은 실제 포맷은 예를 들어 4.8 bpw처럼 달라질 수 있습니다. Q4는 약값이며 정확한 파일 크기나 필요 VRAM이 아닙니다. 모든 줄의 파라미터 수 27B = 숫자 270억 개 개수는 바뀌지 않음 숫자 하나의 폭 원시 Weight 용량 FP32 32 bit 108 GB BF16 16 bit 54 GB 절반 FP8 8 bit 27 GB ¼ Q4 단순 4 bit 13.5 GB FP32의 약 ⅛ 계산값 · 10진 GB 27,000,000,000 × bits ÷ 8 Weight만 포함 양자화 scale/metadata, KV Cache, Runtime, 작업 버퍼, 여유 공간 제외 Q4는 약 13.5 GB입니다. 정확한 파일 크기나 필요 VRAM이 아닙니다. 27B 모델의 정밀도별 Weight 용량 비교 가상의 정확한 27,000,000,000개 Weight가 모두 같은 비트 폭이라고 가정하고, 공식 27,000,000,000 × bits ÷ 8로 계산하면 FP32 108GB, BF16 54GB, FP8 27GB, 단순 Q4 약 13.5GB입니다. Weight만 포함하며 양자화 scale/metadata, KV Cache, Runtime, 작업 버퍼, 여유 공간은 제외합니다. Q4_K_M 같은 실제 포맷은 예를 들어 4.8 bpw처럼 달라질 수 있습니다. Q4는 약값이며 정확한 파일 크기나 필요 VRAM이 아닙니다. 모든 경우에 같은 것 27B = 숫자 270억 개 FP32 32 bit 108 GB BF16 16 bit · 절반 54 GB FP8 8 bit · ¼ 27 GB Q4 단순 4 bit · 약 ⅛ 13.5 GB 계산값 · 10진 GB 27,000,000,000 × bits ÷ 8 Weight만 포함 양자화 scale/metadata, KV Cache, Runtime, 작업 버퍼, 여유 공간 제외 Q4는 약 13.5 GB입니다. 정확한 파일 크기나 필요 VRAM이 아닙니다.
  1. 가상의 정확한 27,000,000,000개(27B) Weight가 모두 같은 비트 폭이라고 놓고 계산합니다.
  2. 공식은 27,000,000,000 × bits ÷ 8이며, 계산값·10진 GB·Weight만 포함합니다.
  3. 양자화 scale/metadata, KV Cache, Runtime, 작업 버퍼, 여유 공간은 빠집니다. 단순 Q4 계산은 약 13.5 GB이고, Q4_K_M은 예를 들어 4.8 bpw처럼 달라질 수 있습니다.

양자화 근사 오차

적은 비트로 저장하면 어떤 오차가 생길까?

양자화는 많은 숫자 값을 적은 단계에 가장 가깝게 맞추므로 작은 차이가 생길 수 있습니다.

원래 값과 가까운 단계 사이 근사 오차 위·아래 눈금 줄에서 빨간 점은 원래 값, 어두운 점은 가까운 단계입니다. 둘 사이 간격은 근사 오차이며 틀린 답이 아닙니다. 적은 단계에 가장 가깝게 맞춥니다 보기 1 근사 오차 원래 값 7.3 가까운 단계 8 보기 2 1.4 2 같은 종류의 간격 · 틀린 답이 아닙니다 원래 값과 가까운 단계 사이 근사 오차 위·아래 눈금 줄에서 빨간 점은 원래 값, 어두운 점은 가까운 단계입니다. 둘 사이 간격은 근사 오차이며 틀린 답이 아닙니다. 적은 단계에 가장 가깝게 맞춥니다 보기 1 근사 오차 원래 값 7.3 가까운 단계 8 보기 2 1.4 2 같은 종류의 간격입니다. 틀린 답이 아닙니다. 가까운 단계에 맞춘 차이입니다.
  1. 점은 원래 값, 눈금 위의 점은 저장할 수 있는 가까운 단계입니다.
  2. 둘 사이 간격이 근사 오차입니다. 틀린 답이 아닙니다.
  3. 단계가 적을수록 저장은 가벼워지지만, 내 작업의 대표 실제 사용 Q&A 세트로 품질을 확인합니다.

짧고 긴 참고 범위(Context)의 메모리

같은 모델인데 긴 대화는 왜 메모리를 더 쓸까?

학습된 숫자(Weight)는 같아도, 긴 참고 범위(Context)는 더 많은 토큰의 대화 캐시(KV Cache)를 만들어 메모리 예산을 늘립니다.

짧고 긴 대화의 가상 메모리 예산 가상 예시 두 줄에서 Weight 칸 길이는 같고, 긴 대화 줄의 KV/Context 칸이 더 깁니다. 가상 예시 짧은 대화 Weight KV 긴 대화 Weight KV/Context Weight는 같습니다 긴 대화의 KV/Context가 더 큽니다 짧고 긴 대화의 가상 메모리 예산 가상 예시 두 줄에서 Weight 칸 길이는 같고, 긴 대화 줄의 KV/Context 칸이 더 깁니다. 가상 예시 짧은 대화 Weight KV 긴 대화 Weight KV/Context Weight는 같습니다 긴 대화의 KV/Context가 더 큽니다 같은 모델의 Weight는 고정이고, 긴 대화일수록 캐시 칸이 늘어납니다.
  1. 두 줄은 가상 예시입니다. 학습된 숫자(Weight) 칸 길이는 같습니다.
  2. 긴 대화 줄의 대화 캐시(KV)/참고 범위(Context) 칸이 더 깁니다.
  3. 같은 모델이라도 참고 범위가 길어지면 캐시 메모리가 늘어납니다.

서빙

파일·계산·서비스: Format, Runtime, Serving

파일, 계산기, 서비스는 각각 무슨 일을 할까?

저장 파일 규칙(Format), 계산하는 프로그램(Runtime), 요청 줄·스케줄·API(Serving)는 서로 다른 역할입니다. 한 제품이 역할을 겸할 수 있습니다.

파일에서 계산기, 서비스까지 위는 저장 파일 규칙(Format), 가운데는 계산하는 프로그램(Runtime), 아래는 요청 줄·스케줄·API(Serving)입니다. 한 제품이 역할을 겸할 수 있습니다. 파일 저장 파일 규칙(Format) 계산기 계산하는 프로그램(Runtime) 서비스 요청 줄·스케줄·API(Serving) 한 제품이 역할을 겸할 수 있습니다. 파일에서 계산기, 서비스까지 위는 저장 파일 규칙(Format), 가운데는 계산하는 프로그램(Runtime), 아래는 요청 줄·스케줄·API(Serving)입니다. 한 제품이 역할을 겸할 수 있습니다. 파일 저장 파일 규칙(Format) 계산기 계산하는 프로그램(Runtime) 서비스 요청 줄·스케줄·API (Serving) 한 제품이 역할을 겸할 수 있습니다. 역할은 달라도 한 제품이 겸할 수 있습니다.
  1. 위 칸은 저장 파일 규칙(Format)입니다.
  2. 가운데는 계산하는 프로그램(Runtime), 아래는 요청 줄·스케줄·API(Serving)입니다.
  3. 한 제품이 이 역할을 겸할 수 있습니다.

개인 지연(Latency)과 서버 처리량(Throughput)

서버 전체가 빨라져도 나는 왜 느릴 수 있을까?

한 요청이 걸리는 시간(Latency)과 서버가 일정 시간에 처리한 전체 양(Throughput)은 다릅니다. 배칭은 여러 요청을 묶어 서버 전체 처리량을 높일 수 있지만 개인 대기 시간은 보장되지 않습니다.

한 요청의 시간과 서버의 처리량 위 줄은 한 요청이 걸리는 시간(Latency)이고, 아래 굵은 줄은 서버가 일정 시간에 처리한 전체 양(Throughput)입니다. 배칭은 여러 요청을 묶어 서버 전체 처리량을 높일 수 있지만 개인 대기 시간은 보장되지 않습니다. 한 사람의 줄 한 요청이 걸리는 시간(Latency) 나 다른 요청 다른 요청 서버 전체의 줄 서버가 일정 시간에 처리한 전체 양(Throughput) 배칭은 여러 요청을 묶어 서버 전체 처리량을 높일 수 있습니다. 개인 대기 시간은 보장되지 않습니다. 한 요청의 시간과 서버의 처리량 위 줄은 한 요청이 걸리는 시간(Latency)이고, 아래 굵은 줄은 서버가 일정 시간에 처리한 전체 양(Throughput)입니다. 배칭은 여러 요청을 묶어 서버 전체 처리량을 높일 수 있지만 개인 대기 시간은 보장되지 않습니다. 한 사람의 줄 한 요청이 걸리는 시간(Latency) 나 다른 요청 다른 요청 서버 전체의 줄 서버가 일정 시간에 처리한 전체 양(Throughput) 배칭은 여러 요청을 묶어 서버 전체 처리량을 높일 수 있습니다. 개인 대기 시간은 보장되지 않습니다. 서버가 바빠져도 내 줄이 짧아지진 않을 수 있습니다.
  1. 위 줄은 한 요청이 걸리는 시간(Latency)입니다.
  2. 아래 줄은 서버가 일정 시간에 처리한 전체 양(Throughput)입니다.
  3. 배칭은 여러 요청을 한꺼번에 묶어 서버 전체 처리량을 높일 수 있지만, 개인 대기 시간은 보장되지 않습니다.

RAG·파인튜닝

대화·검색 보강(RAG)·작은 추가 가중치(LoRA)가 바꾸는 것

답변마다 참고자료를 붙이는 것과 추가 가중치를 배우는 것은 어떻게 다를까?

검색 보강(RAG)은 기본 학습 숫자(가중치, W)를 고정하고 답변마다 이번 답에 넣는 참고 범위(Context)를 바꿉니다. 작은 추가 가중치(LoRA)는 기본 학습 숫자를 고정한 채 추가 가중치 묶음(어댑터)을 학습합니다.

참고 범위 변경과 추가 가중치 묶음 학습 대화와 검색 참고자료(RAG·도구 결과)는 기본 학습 숫자(가중치, W)를 고정하고 이번 답에 넣는 참고 범위(Context)를 바꿉니다. 작은 추가 가중치(LoRA)는 기본 학습 숫자를 고정하고 추가 가중치 묶음(어댑터)을 학습합니다. 기본 학습 숫자(가중치, W) 이번 답에 넣는 참고 범위(Context) 대화: 기본 W 고정, 입력 Context 변경 기본 학습 숫자(가중치, W) 이번 답에 넣는 참고 범위(Context) 검색 참고자료(RAG·도구): 기본 W 고정, 입력 Context 변경 기본 학습 숫자(가중치, W) 추가 가중치 묶음(어댑터) 작은 추가 가중치(LoRA): 기본 W 고정, 어댑터 학습 참고 범위 변경과 추가 가중치 묶음 학습 대화와 검색 참고자료(RAG·도구 결과)는 기본 학습 숫자(가중치, W)를 고정하고 이번 답에 넣는 참고 범위(Context)를 바꿉니다. 작은 추가 가중치(LoRA)는 기본 학습 숫자를 고정하고 추가 가중치 묶음(어댑터)을 학습합니다. 대화 기본 학습 숫자(가중치, W) 이번 답에 넣는 참고 범위(Context) 대화: 기본 W 고정, 입력 Context 변경 검색 참고자료(RAG) 기본 학습 숫자(가중치, W) 이번 답에 넣는 참고 범위(Context) 검색 참고자료(RAG·도구): 기본 W 고정, 입력 Context 변경 작은 추가 가중치(LoRA) 기본 학습 숫자(가중치, W) 추가 가중치 묶음(어댑터) 작은 추가 가중치(LoRA): 기본 W 고정, 어댑터 학습
  1. 대화와 답변마다 붙는 검색 참고자료(RAG·도구 결과)는 기본 학습 숫자(가중치, W)를 고정한 채 이번 답에 넣는 참고 범위(Context)만 바꿉니다.
  2. 작은 추가 가중치(LoRA)는 기본 학습 숫자를 고정한 채 추가 가중치 묶음(어댑터)을 학습합니다.

평가

공정한 비교의 한 변수 원칙

하나를 비교하려면 무엇을 같게 둬야 할까?

공정한 비교는 대표 실제 사용 Q&A 세트, 모델·리비전, 입력·출력 길이, 장비, 실행 프로그램(Runtime), 참고 범위(Context), 한 번에 묶는 요청 수(Batch)/동시 요청, 가속 설정, 측정 프로그램(하네스)·버전을 같게 두고 양자화만 바꿉니다.

고정 조건이 둘러싼 양자화 비교 대표 실제 사용 Q&A 세트, 모델·리비전, 입력·출력 길이, 장비, 실행 프로그램(Runtime), 참고 범위(Context), 한 번에 묶는 요청 수(Batch)/동시 요청, 가속 설정, 측정 프로그램(하네스)·버전을 같게 둔 틀 안에서 양자화만 바꿉니다. 대표 실제 사용 Q&A 세트 같게 모델·리비전 같게 입력·출력 길이 같게 장비 같게 실행 프로그램(Runtime) 같게 양자화만 변경 참고 범위(Context) 같게 한 번에 묶는 요청 수(Batch) /동시 요청 같게 가속 설정 같게 측정 프로그램(하네스)·버전 같게 나머지는 같게 두고 알고 싶은 변수만 바꿉니다. 고정 조건이 둘러싼 양자화 비교 대표 실제 사용 Q&A 세트, 모델·리비전, 입력·출력 길이, 장비, 실행 프로그램(Runtime), 참고 범위(Context), 한 번에 묶는 요청 수(Batch)/동시 요청, 가속 설정, 측정 프로그램(하네스)·버전을 같게 둔 틀 안에서 양자화만 바꿉니다. 대표 실제 사용 Q&A 세트 같게 모델·리비전 같게 입력·출력 길이 같게 장비 같게 양자화만 변경 참고 범위 (Context) 같게 실행 프로그램 (Runtime) 같게 한 번에 묶는 요청 수(Batch)/ 동시 요청 같게 가속 설정 같게 측정 프로그램 (하네스)·버전 같게 나머지는 같게 두고 알고 싶은 변수만 바꿉니다.
  1. 대표 실제 사용 Q&A 세트와 실행 조건을 같게 둡니다.
  2. 모델·리비전, 입력·출력 길이, 장비, 실행 프로그램(Runtime), 참고 범위(Context), 한 번에 묶는 요청 수(Batch)/동시 요청, 가속 설정, 측정 프로그램(하네스)·버전도 고정합니다.
  3. 그다음 비교하려는 양자화만 바꿉니다.