페이지 목차
이 페이지에서 검색
로컬 LLM
이 페이지에 묻기
로컬 LLM · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.
생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.
LOCAL · LLM
로컬 LLM
생성 수정
로컬 모델 실행과 GPU·메모리 이해부터 서빙·RAG·도구 호출·업무형 앱 구현까지 차례로 살펴봅니다.
42개 문서 · 길잡이·부록 · 42 / 42
용어 사전 — 로컬 LLM 과정
40개 차시에 나온 용어를 한곳에 모았습니다. "처음" 열의 차시로 가면 그 개념이 왜 필요한지부터 나옵니다.
이 사전을 쓰는 법
- "상위 범주" 열을 먼저 보세요. 그 단어가 지표인지 엔진인지 메모리 영역인지가 갈리면 절반은 이해한 것입니다.
- 비슷해 보이는 둘이 헷갈리면 맨 뒤 부록 1. 헷갈리는 짝 모음 으로 가세요.
용어 사전 본문
이 교재의 기본 개념 (LLM이 아닌 일반 개념)
LLM 용어는 아니지만 이 노트 곳곳에서 쓰는 개념입니다.
| 용어 | 영문 | 상위 범주 | 정의 | 처음 | 다시 |
|---|---|---|---|---|---|
| 판별 축 | — | 사고 도구 | 두 개념을 0과 1로 가르는 하나의 질문. 이 교재는 여덟 개의 큰 축을 씀 | README 5장 | 전체 |
| 유와 종차 | Genus · Differentia | 정의 방법 | 상위 범주(유) + 형제와 구별되는 차이(종차)로 정의하는 법 | README 2장 | 전체 |
| 트레이드오프 | Trade-off | 의사결정 개념 | 하나를 얻으면 다른 하나를 잃는 맞바꿈. 품질 · 속도 · 메모리 | README 7장 | 10, 16 |
| 온프레미스 | On-Premises | 인프라 운영 방식 | 우리 건물 안의 장비에서 직접 운영. 인터넷 유무와 무관 | 1 | — |
| SLM | Small Language Model | 언어 모델 | 파라미터가 작아 GPU 한 장짜리 서버에서도 돌릴 수 있는 언어 모델. 성능이 낮다는 뜻이 아님 | 1 | 12, 16 |
| 가상환경 | Virtual Environment | 격리 장치 | 프로젝트마다 Python 패키지 묶음을 따로 두는 장치 | 3 | 18 |
| 무상태 ↔ 상태 | Stateless ↔ Stateful | 성질 (축 ⑦) | 이전 일을 기억하지 않는가 ↔ 기억하는가 | 8 | 21, 27 |
| 멱등성 | Idempotency | 연산의 성질 | 같은 요청을 여러 번 해도 서버의 최종 상태 가 한 번 한 것과 같은 성질. 응답이 매번 같을 필요는 없음 | 25 | 30, 38 |
| 포트 (아키텍처) | Port | 설계 요소 (축 ②) | 바깥과 주고받는 방식을 정한 약속(인터페이스) | 20 | 25, 32 |
| 어댑터 | Adapter | 설계 요소 (축 ②) | 포트라는 약속을 특정 기술로 구현한 부품 | 20 | 25, 32 |
| 헥사고날 아키텍처 | Hexagonal Architecture | 소프트웨어 구조 | 안쪽 업무 로직은 포트(약속)에만 의존하고, 바깥 기술은 어댑터로 갈아 끼우는 구조 | 20 | 25, 32 |
| 동기 ↔ 비동기 | Sync ↔ Async | 실행 방식 (축 ⑥) | 기다리는가 ↔ 기다리는 동안 다른 일을 하는가. 비동기는 한 건을 빠르게 하지 않고 처리량 을 늘림 | 7 | 22, 26 |
| 가드레일 | Guardrail | 통제 장치 | 넘으면 안 되는 선을 규칙 · 검증으로 미리 그어 두는 것 | 1 | 29, 30 |
| HITL | Human-in-the-Loop | 통제 장치 | 되돌릴 수 없는 작업 앞에 사람의 확인 단계를 두는 것 | 30 | 38 |
| RAG | Retrieval-Augmented Generation | 응용 기법 | 질문과 관련된 문서를 찾아 프롬프트에 함께 넣어 주는 기법. 이 과정 범위 밖 | README 1.2 | 40 |
| 파인튜닝 | Fine-Tuning | 학습 방법 | 내 데이터로 모델의 가중치를 추가 학습시키는 것. 양자화와 다른 축 | README 1.2 | 10, 40 |
ㄱ ~ ㅅ
| 용어 | 영문 | 상위 범주 | 정의 | 처음 | 다시 |
|---|---|---|---|---|---|
| 가중치 | Weights | 모델 구성요소 | 학습으로 정해진 모델 안의 숫자들. 모델 파일의 대부분 | 2 | 9, 10 |
| 계산 병목 | Compute-bound | 성능 병목 유형 | 연산량 때문에 느린 상태. Prefill이 해당 | 2 | 15 |
| 공개 가중치 모델 | Open-Weights Model | 언어 모델 | 가중치 파일을 내려받아 내 장비에서 실행할 수 있는 모델. 흔히 "오픈소스 LLM"이라 부름 | 1 | 4 |
| 구조화 출력 | Structured Output | 출력 제어 기법 | LLM 출력을 JSON 등 정해진 형식으로 강제하는 것 | 29 | 31, 36 |
| 대화 이력 | Conversation History | 애플리케이션 상태 | 앞선 messages 목록. LLM API가 무상태라 앱이 보관하고 매번 다시 보냄 | 8 | 27, 37 |
| 디코드 | Decode | 추론 단계 | 토큰을 하나씩 순차 생성하는 단계. 메모리 대역폭이 병목. 체감상 TPS | 2 | 14, 15 |
| 메모리 대역폭 | Memory Bandwidth | 하드웨어 성능 | GPU가 메모리를 초당 읽는 양. Decode 속도의 상한을 정함 | 3 | 15, 16 |
| 메모리 병목 | Memory-bound | 성능 병목 유형 | 메모리를 읽느라 느린 상태. Decode가 해당 | 2 | 15 |
| 모델 서버 | Model Server | 서빙 구성요소 | GPU 위에서 모델을 상시 실행하고 API로 노출하는 프로세스 | 17 | 19, 35 |
| 무상태 (LLM API의) | Stateless | 통신 성질 | LLM 서버는 이전 대화를 기억하지 않음. 기억은 앱의 몫 | 8 | 27 |
| 배치 | Batch | 추론 실행 방식 | 여러 요청을 GPU 한 번에 같이 계산하는 것 | 13 | 21 |
| 서빙 | Serving | 운영 방식 | 모델을 여러 클라이언트에게 지속적으로 제공하는 것. 한 번의 추론과 다른 층 | 17 | 19~24 |
| 선점 | Preemption | 스케줄링 동작 | KV 캐시가 모자랄 때 일부 요청을 잠시 뒤로 미루는 것 | 21 | 23 |
| 스트리밍 | Streaming | 응답 전달 방식 | 생성되는 토큰을 조각조각 바로 보내는 것. 빨라지는 것이 아니라 먼저 보여 주는 것 | 7 | 26, 37 |
| 시스템 프롬프트 | System Prompt | 프롬프트 구성요소 | 역할·규칙·출력 형식을 정하는 맨 앞 메시지 | 6 | 28, 36 |
ㅇ ~ ㅎ
| 용어 | 영문 | 상위 범주 | 정의 | 처음 | 다시 |
|---|---|---|---|---|---|
| 양자화 | Quantization | 모델 압축 기법 | 가중치를 더 적은 비트로 근사해 메모리를 줄이는 것. 정밀도와의 거래 | 10 | 11, 12, 15 |
| 연속 배칭 | Continuous Batching | 스케줄링 기법 | 생성 한 스텝마다 끝난 요청은 빼고 새 요청을 넣는 배칭. 처리량을 늘림 | 21 | 22, 24 |
| 오프로드 | Offload | 메모리 배치 | VRAM에 다 안 들어가는 층을 CPU · RAM으로 내리는 것. 크게 느려짐 | 12 | 4 |
| 임베딩 | Embedding | 변환층 | 토큰 번호를 거리에 뜻이 있는 벡터로 바꾸는 것 | 2 | — |
| 정밀도 | Precision | 수치 표현 | 숫자 하나를 몇 비트로 표현하는가 (FP32 · FP16 · BF16 · INT8 · INT4) | 9 | 10, 11 |
| 처리량 | Throughput | 성능 지표 | 서버 전체가 단위 시간에 만든 토큰(또는 요청) 수 | 14 | 22, 39 |
| 채팅 템플릿 | Chat Template | 입력 형식 | Instruct 모델이 학습한 대화 형식. 모델마다 다름 | 4 | 6 |
| 추론 | Inference | 모델 사용 단계 | 학습이 끝난 모델을 실행해 출력을 얻는 것. Reasoning과 다른 단어 | 2 | 17 |
| 추론 파라미터 | Inference / Sampling Parameter | 실행 설정 | Temperature, Top-P처럼 사람이 실행 전에 정하는 값 | 6 | 13, 28 |
| 컨텍스트 길이 | Context Length | 모델 제약 | 입력과 출력을 합친 토큰 수의 상한. 지원 최대치와 설정값이 다름 | 2 | 13, 19, 27 |
| 토크나이저 | Tokenizer | 전처리기 | 글을 모델 고유 어휘 번호로 자르는 것. 모델마다 다름 | 2 | 4 |
| 토큰 | Token | 텍스트 단위 | LLM이 글을 다루는 조각. JWT 토큰과 같은 철자, 다른 범주 | 2 | 전체 |
| 파라미터 (모델) | Parameter | 모델 구성요소 | 모델 안의 학습된 숫자. "8B" = 80억 개 | 2 | 9 |
| 페이지드 어텐션 | PagedAttention | 메모리 관리 기법 | KV 캐시를 고정 크기 블록으로 나눠 필요할 때만 할당하는 vLLM의 방식 | 21 | 23 |
| 평가셋 | Evaluation Set | 품질 검증 데이터 | 실제 입력과 기대 결과를 모은 묶음. 모델 · 프롬프트 · 양자화 선택의 기준 | 6 | 28, 31, 33 |
| 폐쇄망 | Air-gapped Network | 네트워크 구성 | 외부 인터넷과 차단된 네트워크. 온프레미스와 독립된 축 | 1 | 4 |
| 프리필 | Prefill | 추론 단계 | 입력 전체를 한 번에 병렬로 읽어 KV 캐시를 채우는 단계. 체감상 TTFT | 2 | 14, 21 |
| 프리픽스 캐싱 | Prefix Caching | 캐시 기법 | 같은 앞부분(시스템 프롬프트 등)의 KV를 요청끼리 재사용 | 21 | 23 |
| 프롬프트 인젝션 | Prompt Injection | 보안 위협 | 입력 속 문장이 시스템 지시를 덮어쓰려는 공격 | 28 | 31 |
A ~ Z
| 용어 | 영문 | 상위 범주 | 정의 | 처음 | 다시 |
|---|---|---|---|---|---|
| AWQ / GPTQ | — | 사전 양자화 방식 | 미리 양자화해 배포하는 가중치 형식. vLLM에서 주로 사용 | 10 | 23, 34 |
| BF16 | bfloat16 | 정밀도 | FP16과 같은 2바이트지만 표현 범위가 넓은 형식 | 9 | 11 |
| bitsandbytes | — | 양자화 라이브러리 | Transformers에서 모델을 불러오며 즉석으로 8bit · 4bit 양자화 | 11 | 15 |
| CUDA | — | GPU 계산 플랫폼 | NVIDIA GPU에서 계산을 돌리는 플랫폼 | 3 | 18 |
| finish_reason | — | 응답 필드 | 생성이 끝난 이유. length면 최대 길이에서 잘린 것 | 20 | 25 |
| GGUF | — | 모델 파일 형식 | 가중치 + 메타데이터 + 토크나이저를 한 파일에 담는 llama.cpp 계열 형식 | 12 | 5, 24 |
| GPU Utilization | — | 성능 지표 | GPU가 일하는 시간 비율 | 3 | 14 |
| GQA | Grouped-Query Attention | 어텐션 구조 | KV 헤드 수를 줄여 KV 캐시를 줄이는 구조 | 9 | — |
| Hugging Face | — | 모델 유통 플랫폼 | 모델 · 데이터셋을 공유하는 원격 저장소 | 4 | 18 |
| Instruct 모델 | Instruct / Chat Model | 언어 모델 | 지시 수행 · 대화용으로 추가 학습된 모델. Base 모델과 구별 | 4 | 6 |
| KV 캐시 | KV Cache | 메모리 영역 | 앞 토큰들의 Key · Value 계산 결과를 저장해 재계산을 피하는 것 | 2 | 9, 13, 21 |
| Latency | — | 성능 지표 | 요청부터 응답 완료까지의 시간 (한 건 기준) | 14 | 22, 39 |
| llama.cpp | — | 추론 엔진 | GGUF 모델을 CPU · GPU에서 가볍게 실행하는 엔진 | 12 | 24 |
| Modelfile | — | Ollama 설정 파일 | 기반 모델 · 시스템 프롬프트 · 파라미터를 고정해 새 모델 이름으로 만드는 파일 (컨테이너의 Dockerfile과 같은 종류) | 5 | 6, 12 |
| NDJSON | Newline-Delimited JSON | 데이터 형식 | 줄마다 JSON 하나. Ollama 기본 스트리밍 형식 | 7 | 26 |
| Ollama | — | 서빙 프레임워크 | 명령 한 줄로 모델을 받고 실행하는 로컬 실행 도구 | 5 | 6~8, 24 |
| OpenAI 호환 API | OpenAI-compatible API | API 계약 (포트) | /v1/chat/completions 형식을 따르는 API. 엔진을 갈아 끼우게 해 줌 | 20 | 25, 32 |
| PTQ / QAT | Post-Training / Quantization-Aware Training | 양자화 시점 | 학습 후에 양자화 / 학습 중에 양자화를 고려 | 10 | — |
| SLO | Service Level Objective | 운영 목표 | "동시 10명에서 TTFT p95 < 1초" 같은 측정 가능한 목표 | 22 | 33, 39 |
| SSE | Server-Sent Events | 전송 방식 | HTTP 위에서 서버가 클라이언트로 이벤트를 연속 전송하는 방식 | 26 | 37 |
| Temperature | — | 추론 파라미터 | 확률 분포를 날카롭게(0) 또는 평평하게(높게) 만드는 값 | 6 | 13, 28 |
| Tool Calling | Function Calling | 모델 기능 | 모델이 도구 호출을 요청 하고 앱이 실행하는 구조 | 30 | 38 |
| Top-P | Nucleus Sampling | 추론 파라미터 | 누적 확률 P 안의 후보에서만 고르는 방식 | 6 | 13 |
| TPOT | Time Per Output Token | 성능 지표 | 토큰 하나를 만드는 평균 시간 | 14 | 22 |
| TPS | Tokens Per Second | 성능 지표 | 초당 생성 토큰 수. 한 요청 기준으로 쓸 때와 서버 전체로 쓸 때를 구별 | 7 | 14, 22 |
| TTFT | Time To First Token | 성능 지표 | 요청부터 첫 토큰까지의 시간. 체감 반응 속도 | 14 | 22, 26, 39 |
| VRAM | Video RAM | 하드웨어 | GPU 메모리. 올릴 수 있는 모델 크기의 상한 | 3 | 9, 16 |
| vLLM | — | 서빙 프레임워크 | PagedAttention과 연속 배칭으로 동시 처리량에 특화된 서빙 엔진 | 18 | 19~24, 35 |
부록 1. 헷갈리는 짝 모음
| 짝 | 갈리는 축 | 한 줄 |
|---|---|---|
| 추론(Inference) ↔ 추론(Reasoning) | 실행 ↔ 능력 | 이 과정의 추론은 실행 입니다 |
| LLM 토큰 ↔ JWT 토큰 | 범주가 다름 | 글 조각 ↔ 인증 증표 |
| 모델 파라미터 ↔ 추론 파라미터 | 누가 값을 정하는가 | 학습이 정함 ↔ 사람이 정함 |
| 공개 가중치 ↔ 오픈소스 | 무엇이 공개되나 | 가중치만 ↔ 소스 전체 |
| 온프레미스 ↔ 폐쇄망 | 독립된 두 축 | 건물 안인가 ↔ 인터넷이 끊겼나 |
| 모델 파일 크기 ↔ VRAM 사용량 | ① 디스크 ↔ 메모리 | VRAM은 + KV 캐시 + 오버헤드 |
| Prefill ↔ Decode | 순차 ↔ 병렬, 계산 ↔ 메모리 병목 | 첫 글자까지 ↔ 흘러나오는 속도 |
| TTFT ↔ TPS | 둘 다 한 건의 시간 | 시작이 늦은가 ↔ 진행이 느린가 |
| Latency ↔ Throughput | 한 건의 시간 ↔ 전체 처리량 | 연속 배칭은 처리량 을 늘림 |
| Inference ↔ Serving | 한 번 ↔ 여럿에게 지속 | 혼자 돌리는 스크립트 → 누구나 요청하는 서버로의 전환 |
| Ollama ↔ vLLM | ⑤ 하나 ↔ 여럿 | 간편한 1인 실행 ↔ 다수 동시 서빙 |
| OpenAI 호환 API ↔ Ollama · vLLM | ② 추상 ↔ 구상 | 포트 ↔ 어댑터 |
| safetensors ↔ GGUF | 담는 범위 | 가중치만 ↔ 가중치 + 메타데이터 한 파일 |
| bitsandbytes ↔ AWQ · GPTQ | 양자화 시점 | 불러오며 즉석 ↔ 미리 해서 배포 |
| NDJSON ↔ SSE | 스트리밍 형식 | Ollama 기본 ↔ OpenAI 호환 · 웹 표준 |
| 스트리밍 ↔ 빨라짐 | ⑥ 동기 ↔ 비동기 | 먼저 보여 줄 뿐, 총 시간은 같음 |
| JSON 모드 ↔ JSON 스키마 강제 | 강제 범위 | 형식만 ↔ 필드 · 값까지 |
| 스키마 검증 ↔ 평가셋 | ⑧ 구문론 ↔ 의미론 | 형식이 맞나 ↔ 내용이 맞나 |
| 도구 정의 ↔ 도구 실행 | ③ 속성 ↔ 기능 | 모델은 요청만 , 실행은 앱이 |
| 조회 도구 ↔ 취소 도구 | 멱등 ↔ 비멱등 | 취소는 사람 확인 + 멱등성 키 |
| KV 캐시 ↔ 웹 캐시 | 무엇을 저장하나 | 계산 중간값 ↔ 응답 |
LangTailor