[{"data":1,"prerenderedAt":760},["ShallowReactive",2],{"post-document:\u002Fsllm\u002F2026\u002F08\u002F28\u002Fcore-technologies\u002F":3},{"id":4,"title":5,"body":6,"categories":745,"date":747,"description":748,"extension":749,"image":750,"key_concepts":750,"last_modified_at":750,"legacyPath":751,"meta":752,"navigation":754,"part":750,"path":755,"published":754,"robots":750,"seo":756,"series":750,"stem":757,"strengths":750,"summary":750,"tags":758,"tradeoffs":750,"__hash__":759},"posts\u002Fposts\u002FsLLM\u002FPost1.md","sLLM 핵심 기술과 전체 구조",{"type":7,"value":8,"toc":727},"minimark",[9,13,20,24,27,95,98,109,113,116,119,122,141,144,149,152,158,161,170,174,182,185,189,192,196,199,207,210,214,217,220,234,237,241,244,247,253,256,270,273,277,280,283,289,358,362,370,373,377,380,383,389,392,396,404,408,411,414,425,428,433,436,440,443,446,449,463,466,469,472,492,496,598,601,615,618,632,635,643,646,657,661,667,670,674,677,688,691,695,698,706,709,712,715,718,724],[10,11,12],"h1",{"id":12},"결론",[14,15,16],"blockquote",{},[17,18,19],"p",{},"sLLM은 단순히 작은 언어 모델이 아니라, 도메인에 맞게 학습된 모델, 필요한 근거를 적절하게 제공하는 맥락 파이프라인, 제한된 자원에서 빠르게 실행되는 추론 시스템을 함께 설계한 AI",[10,21,23],{"id":22},"_1-전체-개념-지도","1. 전체 개념 지도",[17,25,26],{},"교재는 sLLM의 성능을 세 축으로 나눈다.",[28,29,30,49],"table",{},[31,32,33],"thead",{},[34,35,36,40,43,46],"tr",{},[37,38,39],"th",{},"축",[37,41,42],{},"핵심 질문",[37,44,45],{},"대표 기술",[37,47,48],{},"바뀌는 대상",[50,51,52,67,81],"tbody",{},[34,53,54,58,61,64],{},[55,56,57],"td",{},"모델 성능 향상",[55,59,60],{},"모델 자체의 정확성을 어떻게 높이는가?",[55,62,63],{},"Fine-Tuning, PEFT, LoRA, QLoRA, DoRA",[55,65,66],{},"모델 파라미터 또는 어댑터",[34,68,69,72,75,78],{},[55,70,71],{},"Context & Reasoning",[55,73,74],{},"현재 질문에 필요한 맥락을 어떻게 제공할 것인가?",[55,76,77],{},"RAG, Prompt Compression, Long-Context, Self-refine",[55,79,80],{},"런타임 입력과 추론 과정",[34,82,83,86,89,92],{},[55,84,85],{},"Inference Optimization",[55,87,88],{},"같은 모델을 어떻게 더 빠르고 싸게 실행할 것인가?",[55,90,91],{},"Quantization, KV Cache, MoE, Speculative Decoding",[55,93,94],{},"실행 정밀도, 메모리, 연산 구조",[17,96,97],{},"세 축은 경쟁 관계가 아니라 결합 관계이다.",[99,100,106],"pre",{"className":101,"code":103,"language":104,"meta":105},[102],"language-text","사용자 질문\n  -> 임베딩\n  -> 벡터 DB에서 근거 검색, RAG\n  -> 검색 문서에서 핵심만 추림, Context Compression\n  -> 도메인에 맞게 학습된 모델이 답변, LoRA \u002F QLoRA\n  -> 적은 메모리와 빠른 속도로 실행, Quantization \u002F KV Cache\n  -> API 응답\n","text","",[107,108,103],"code",{"__ignoreMap":105},[10,110,112],{"id":111},"_2-핵심-용어-정의","2. 핵심 용어 정의",[17,114,115],{},"sLLM은 Small Large Language Model의 약칭으로, 비교적 작은 파라미터 규모의 언어 모델을 뜻함",[17,117,118],{},"다만 강의에서는 Domain-specific Vertical AI로 정의하는 듯하다.",[17,120,121],{},"그래서 아래와 같은 부분에 특화된 것으로 볼 수 있다.",[123,124,125,129,132,135,138],"ol",{},[126,127,128],"li",{},"사내 또는 특정 산업의 전문 지식 반영",[126,130,131],{},"낮은 추론 비용과 낮은 지연 시간",[126,133,134],{},"내부망 또는 온디바이스 실행",[126,136,137],{},"데이터 프라이버시 보장",[126,139,140],{},"조직의 응답 형식과 안전 정책 반영",[17,142,143],{},"따라서 기본 모델에 Fine-Tuning, RAG, 최적화가 결합되어 sLLM이 된다.",[145,146,148],"h2",{"id":147},"llm-serving-pipeline","LLM Serving Pipeline",[17,150,151],{},"사용자 요청이 모델 응답으로 바뀌는 전체 처리 흐름",[99,153,156],{"className":154,"code":155,"language":104,"meta":105},[102],"요청 수신\n  -> 전처리\n  -> 모델 추론\n  -> 후처리\n  -> 응답 반환\n",[107,157,155],{"__ignoreMap":105},[17,159,160],{},"모델 응답 방식에 따라 파이프라인을 구분할 수 있음",[162,163,164,167],"ul",{},[126,165,166],{},"외부 파이프라인: GPT나 Claude 같은 외부 서비스를 호출",[126,168,169],{},"내부 파이프라인: 사내 인프라의 sLLM과 내부 문서, DB를 직접 연결",[145,171,173],{"id":172},"mlm과-clm","MLM과 CLM",[162,175,176,179],{},[126,177,178],{},"MLM, Masked Language Model: 문장 일부를 가리고 앞뒤 문맥을 사용해 빈칸을 예측, BERT가 대표적",[126,180,181],{},"CLM, Causal Language Model: 지금까지 나온 토큰을 바탕으로 다음 토큰을 순차 생성, GPT, Llama, Qwen이 대표적",[17,183,184],{},"생성형 Fine-Tuning이 CLM 중심인 이유는 지시 -> 응답 학습 구조가 다음 토큰 예측과 자연스럽게 연결되기 때문이다.",[145,186,188],{"id":187},"fine-tuning","Fine-Tuning",[17,190,191],{},"사전학습된 모델을 별도의 데이터로 추가 학습해 특정 업무, 도메인, 응답 방식에 적응시키는 과정",[145,193,195],{"id":194},"sft-supervised-fine-tuning","SFT, Supervised Fine-Tuning",[17,197,198],{},"질문과 모범 답변을 사용해 지도학습하는 Fine-Tuning.\n교재에서는 두 가지 데이터 구성을 다룬다.",[162,200,201,204],{},[126,202,203],{},"Instruction SFT: 사람이 작성하거나 검수한 질문-답변 세트를 학습",[126,205,206],{},"Context-based QA SFT: 원천 문서를 섹션으로 나누고, 문서에 근거한 질문과 답변을 만들어 학습",[17,208,209],{},"전자는 응답 스타일과 지시 수행에 강하고, 후자는 문서 근거형 답변과 환각 감소에 초점을 둔다.",[145,211,213],{"id":212},"peft","PEFT",[17,215,216],{},"Parameter-Efficient Fine-Tuning의 약자, 전체 파라미터를 다시 학습하지 않고 소수의 추가 파라미터만 학습하는 방법",[17,218,219],{},"장점은 다음과 같음",[162,221,222,225,228,231],{},[126,223,224],{},"학습 메모리 절감",[126,226,227],{},"학습 시간 단축",[126,229,230],{},"작은 어댑터만 별도로 저장 가능",[126,232,233],{},"하나의 Base 모델에 여러 업무용 어댑터 연결 가능",[17,235,236],{},"PEFT는 특정 알고리즘 하나가 아니라 LoRA, Adapter, Prefix Tuning, Prompt Tuning 등을 포함하는 상위 개념",[145,238,240],{"id":239},"lora","LoRA",[17,242,243],{},"Low-Rank Adaptation",[17,245,246],{},"기존 모델 가중치는 고정하고, Attention 투영층 등에 작은 저랭크 행렬을 추가하여 그 행렬만 학습",[99,248,251],{"className":249,"code":250,"language":104,"meta":105},[102],"기존 가중치 W는 고정\n  +\n작은 변화량 ΔW = A × B만 학습\n",[107,252,250],{"__ignoreMap":105},[17,254,255],{},"주요 설정값:",[162,257,258,261,264,267],{},[126,259,260],{},"r: 저랭크 행렬의 크기, 높을수록 표현력과 학습량 증가",[126,262,263],{},"lora_alpha: LoRA 변화량의 영향력 조정",[126,265,266],{},"lora_dropout: 과적합을 줄이기 위한 dropout",[126,268,269],{},"target_modules: LoRA를 적용할 모델 내부 계층",[17,271,272],{},"도메인 용어, 응답 형식, 판단 패턴을 학습시키고 싶지만 전체 모델을 다시 학습하기 어려울 때 적합.",[145,274,276],{"id":275},"qlora","QLoRA",[17,278,279],{},"Quantized LoRA",[17,281,282],{},"Base 모델을 주로 4비트로 양자화해 메모리에 올리고, 그 위에 LoRA 어댑터를 학습하는 방식",[99,284,287],{"className":285,"code":286,"language":104,"meta":105},[102],"4비트로 압축된 Base 모델, 고정\n  +\nLoRA Adapter, 학습\n",[107,288,286],{"__ignoreMap":105},[28,290,291,302],{},[31,292,293],{},[34,294,295,298,300],{},[37,296,297],{},"구분",[37,299,240],{},[37,301,276],{},[50,303,304,315,325,336,347],{},[34,305,306,309,312],{},[55,307,308],{},"Base 모델 로딩",[55,310,311],{},"FP16, BF16 등이 일반적",[55,313,314],{},"4비트가 일반적",[34,316,317,320,323],{},[55,318,319],{},"학습 대상",[55,321,322],{},"LoRA 어댑터",[55,324,322],{},[34,326,327,330,333],{},[55,328,329],{},"메모리 사용",[55,331,332],{},"낮음",[55,334,335],{},"더 낮음",[34,337,338,341,344],{},[55,339,340],{},"적합 환경",[55,342,343],{},"일반적인 제한 GPU 환경",[55,345,346],{},"GPU 메모리가 매우 부족한 환경",[34,348,349,352,355],{},[55,350,351],{},"주의점",[55,353,354],{},"설정이 비교적 단순",[55,356,357],{},"양자화 라이브러리와 CUDA 환경 의존 가능",[145,359,361],{"id":360},"prompt-tuning과-prefix-tuning","Prompt Tuning과 Prefix Tuning",[162,363,364,367],{},[126,365,366],{},"Prompt Tuning: 입력 앞에 학습 가능한 가상 토큰 임베딩을 붙임",[126,368,369],{},"Prefix Tuning: Transformer 각 계층에 학습 가능한 prefix 상태 제공",[17,371,372],{},"학습 파라미터 수가 극히 작아 온디바이스와 초경량 적응에 유리하지만, 복잡한 도메인 지식이나 강한 행동 변화에는 LoRA보다 표현력이 제한",[145,374,376],{"id":375},"rag","RAG",[17,378,379],{},"Retrieval-Augmented Generation의 약자",[17,381,382],{},"질문과 관련된 문서를 검색한 뒤, 검색 결과를 모델 입력에 넣어 답변을 생성",[99,384,387],{"className":385,"code":386,"language":104,"meta":105},[102],"문서 수집\n  -> 청크 분할\n  -> 임베딩 생성\n  -> 벡터 DB 저장\n\n사용자 질문\n  -> 질문 임베딩\n  -> 유사 청크 검색\n  -> 검색 결과를 프롬프트에 삽입\n  -> 답변 생성\n",[107,388,386],{"__ignoreMap":105},[17,390,391],{},"모델 파라미터를 바꾸는 기술이 아니라, 실행 시 외부 지식을 찾아 제공하는 기술",[145,393,395],{"id":394},"embedding과-vector-db","Embedding과 Vector DB",[162,397,398,401],{},[126,399,400],{},"Embedding: 문장이나 문서의 의미를 나타내는 숫자 벡터로 변환",[126,402,403],{},"Vector DB: 임베딩을 저장하고 질문과 의미적으로 가까운 문서를 검색",[145,405,407],{"id":406},"context-compression","Context Compression",[17,409,410],{},"검색되거나 입력된 긴 문서에서 질문에 필요한 핵심 정보만 남기는 기술\nRAG가 \"관련 문서를 찾는 것\"이라면, Context Compression은 \"찾은 문서를 짧고 유용하게 정리하는 것\"",[17,412,413],{},"장점:",[162,415,416,419,422],{},[126,417,418],{},"입력 토큰 감소",[126,420,421],{},"추론 비용과 지연 시간 감소",[126,423,424],{},"불필요한 정보로 인한 모델 혼란 감소",[17,426,427],{},"위험:",[162,429,430],{},[126,431,432],{},"압축 과정에서 예외 조건, 숫자, 부정 표현 같은 핵심 정보 유실 가능",[17,434,435],{},"따라서 원문 대비 보존율과 답변 정확도를 별도로 검증해야 함.",[145,437,439],{"id":438},"long-context와-yarn","Long-Context와 YaRN",[17,441,442],{},"Long-Context는 긴 문서를 검색이나 압축 없이 모델 입력에 직접 제공하는 방식",[17,444,445],{},"YaRN은 RoPE 위치 임베딩을 조정해 모델이 기존보다 긴 컨텍스트를 처리하도록 확장하는 방법",[17,447,448],{},"다만 컨텍스트 한도가 늘었다고 해서 다음이 자동으로 보장되는 것은 아니다.",[162,450,451,454,457,460],{},[126,452,453],{},"문서 전체를 정확히 기억함",[126,455,456],{},"중요 정보를 제대로 선택함",[126,458,459],{},"추론 품질이 그대로 유지됨",[126,461,462],{},"메모리 사용량과 지연 시간이 작음",[17,464,465],{},"따라서 Long-Context는 RAG를 무조건 대체하는 기술이 아니라 별도의 선택지",[145,467,85],{"id":468},"inference-optimization",[17,470,471],{},"학습된 모델의 의미적 능력보다 실행 성능을 개선하는 기술",[162,473,474,477,480,483,486,489],{},[126,475,476],{},"Quantization: 숫자 정밀도를 낮춰 메모리와 연산량 절감",[126,478,479],{},"KV Cache: 이전 토큰의 Attention Key\u002FValue를 재사용",[126,481,482],{},"PagedAttention: KV Cache를 페이지 단위로 관리해 메모리 단편화 감소",[126,484,485],{},"MQA\u002FGQA: 여러 Query가 Key\u002FValue를 공유해 KV Cache 축소",[126,487,488],{},"Speculative Decoding: 작은 모델이 후보 토큰을 만들고 큰 모델이 한 번에 검증",[126,490,491],{},"MoE: 입력마다 일부 Expert만 활성화하여 선택적으로 연산",[10,493,495],{"id":494},"_3-rag와-fine-tuning의-차이","3. RAG와 Fine-Tuning의 차이",[28,497,498,509],{},[31,499,500],{},[34,501,502,505,507],{},[37,503,504],{},"기준",[37,506,376],{},[37,508,188],{},[50,510,511,521,532,543,554,565,576,587],{},[34,512,513,516,519],{},[55,514,515],{},"지식 위치",[55,517,518],{},"외부 문서, 벡터 DB",[55,520,66],{},[34,522,523,526,529],{},[55,524,525],{},"적용 시점",[55,527,528],{},"질문을 처리할 때 검색",[55,530,531],{},"사전에 학습",[34,533,534,537,540],{},[55,535,536],{},"최신 정보 반영",[55,538,539],{},"문서만 교체하면 됨",[55,541,542],{},"재학습 필요",[34,544,545,548,551],{},[55,546,547],{},"주요 목적",[55,549,550],{},"사실 검색, 근거 제시, 최신성",[55,552,553],{},"이해 방식, 전문 용어, 행동, 응답 품질",[34,555,556,559,562],{},[55,557,558],{},"출처 제시",[55,560,561],{},"비교적 쉬움",[55,563,564],{},"파라미터 지식의 출처 추적이 어려움",[34,566,567,570,573],{},[55,568,569],{},"주요 위험",[55,571,572],{},"검색 실패, 잘못된 청크",[55,574,575],{},"과적합, 기존 능력 저하, 잘못된 지식 내재화",[34,577,578,581,584],{},[55,579,580],{},"모델 변경",[55,582,583],{},"없음",[55,585,586],{},"있음, PEFT는 어댑터만 변경",[34,588,589,592,595],{},[55,590,591],{},"적합한 정보",[55,593,594],{},"자주 바뀌는 규정과 문서",[55,596,597],{},"비교적 안정적인 업무 규칙과 응답 방식",[17,599,600],{},"RAG를 선택해야 하는 경우",[162,602,603,606,609,612],{},[126,604,605],{},"규정과 상품 정보가 자주 바뀜",[126,607,608],{},"답변에 출처와 근거가 필요한 경우",[126,610,611],{},"대량의 문서를 모두 학습시키기 어려운 경우",[126,613,614],{},"사용자별 접근 권한에 따라 검색 문서를 달리해야 하는 경우",[17,616,617],{},"Fine-Tuning을 선택해야 하는 경우",[162,619,620,623,626,629],{},[126,621,622],{},"전문 용어를 반복적으로 잘못 이해함",[126,624,625],{},"원하는 답변 구조와 말투를 안정적으로 지키지 못함",[126,627,628],{},"검색 문서가 있어도 판단 방식이 부족함",[126,630,631],{},"특정 지시를 일관되게 수행하게 만들고 싶음",[17,633,634],{},"일반적으로는 한 가지 방법만 사용하지 않고, Fine-Tuning과 RAG를 결합한다.",[162,636,637,640],{},[126,638,639],{},"Fine-Tuning: 안정적인 도메인 용어, 판단 규칙, 답변 형식 학습",[126,641,642],{},"RAG: 최신 규정, 개별 문서, 변경 가능한 사실 제공",[17,644,645],{},"예를 들어 인사 챗봇이라면,",[162,647,648,651,654],{},[126,649,650],{},"\"답변은 결론, 적용 규정, 주의사항 순서로 작성한다.\"라는 방식은 Fine-Tuning",[126,652,653],{},"\"올해 연차 규정은 며칠인가?\"의 실제 규정 내용은 RAG",[126,655,656],{},"검색된 규정 중 질문에 필요한 부분만 남기는 것은 Context Compression",[10,658,660],{"id":659},"_4-peft-lora-qlora의-관계","4. PEFT, LoRA, QLoRA의 관계",[99,662,665],{"className":663,"code":664,"language":104,"meta":105},[102],"Fine-Tuning\n├── Full Fine-Tuning\n└── PEFT\n    ├── LoRA\n    ├── QLoRA, 양자화된 Base 모델 + LoRA\n    ├── Adapter\n    ├── Prefix Tuning\n    └── Prompt Tuning\n",[107,666,664],{"__ignoreMap":105},[17,668,669],{},"PEFT는 큰 분류, LoRA는 그 안의 대표 기법, QLoRA는 LoRA의 학습 메모리를 더 줄이는 구성",[145,671,673],{"id":672},"rag-context-compression-long-context의-관계","RAG, Context Compression, Long-Context의 관계",[17,675,676],{},"세 기술 모두 입력 맥락을 다루지만 전략이 다름",[162,678,679,682,685],{},[126,680,681],{},"RAG: 전체 문서 중 관련 부분을 검색",[126,683,684],{},"Context Compression: 선택된 내용을 더 짧게 정리",[126,686,687],{},"Long-Context: 긴 내용을 가능한 한 그대로 입력",[17,689,690],{},"실무에서는 RAG -> 압축 -> 생성이 비용과 정확성의 균형이 좋다. 문서가 작거나 전체 구조 자체가 중요하다면 Long-Context가 대안",[145,692,694],{"id":693},"qlora와-quantization의-관계","QLoRA와 Quantization의 관계",[17,696,697],{},"둘 다 저비트 표현을 사용하지만 목적이 다르다.",[162,699,700,703],{},[126,701,702],{},"QLoRA: Fine-Tuning 과정의 GPU 메모리 절약",[126,704,705],{},"추론 Quantization: 배포 과정의 메모리, 비용, 지연 시간 절약",[17,707,708],{},"따라서 QLoRA는 모델 성능 향상 축에, 일반적인 추론 양자화는 Inference Optimization 축에 놓인다.",[10,710,12],{"id":711},"결론-1",[17,713,714],{},"좋은 모델을 선택하는 것만으로는 충분하지 않다.",[17,716,717],{},"플로우를 안정적으로 구축할 필요가 있다.",[99,719,722],{"className":720,"code":721,"language":104,"meta":105},[102],"좋은 학습 데이터\n  -> 적합한 PEFT 방식\n  -> 정확한 검색\n  -> 손실 없는 맥락 압축\n  -> 안정적인 생성\n  -> 빠른 추론\n  -> 서비스 모니터링\n",[107,723,721],{"__ignoreMap":105},[17,725,726],{},"바뀌는 사실은 RAG에 둔다.\n안정적인 행동과 표현 방식은 Fine-Tuning한다.\n긴 근거는 질문 중심으로 압축한다.\n제한된 자원에서는 LoRA 또는 QLoRA를 사용한다.\n배포 단계에서 Quantization과 KV Cache를 최적화한다.\n정확도, 근거성, 환각, 지연시간, 비용을 각각 측정한다.\n작은 Happy Path로 검증한 뒤 RAG와 Fine-Tuning의 비중을 조절한다.",{"title":105,"searchDepth":728,"depth":728,"links":729},2,[730,731,732,733,734,735,736,737,738,739,740,741,742,743,744],{"id":147,"depth":728,"text":148},{"id":172,"depth":728,"text":173},{"id":187,"depth":728,"text":188},{"id":194,"depth":728,"text":195},{"id":212,"depth":728,"text":213},{"id":239,"depth":728,"text":240},{"id":275,"depth":728,"text":276},{"id":360,"depth":728,"text":361},{"id":375,"depth":728,"text":376},{"id":394,"depth":728,"text":395},{"id":406,"depth":728,"text":407},{"id":438,"depth":728,"text":439},{"id":468,"depth":728,"text":85},{"id":672,"depth":728,"text":673},{"id":693,"depth":728,"text":694},[746],"sLLM","2026-08-28 17:45:21 +0900","도메인 특화 sLLM을 구성하는 Fine-Tuning, RAG, Context 설계와 추론 최적화 기술을 정리한다.","md",null,"\u002Fsllm\u002F2026\u002F08\u002F28\u002Fcore-technologies\u002F",{"layout":753},"post",true,"\u002Fposts\u002Fsllm\u002Fpost1",{"title":5,"description":748},"posts\u002FsLLM\u002FPost1",[746,188,376,85],"EdcLY8oumTMb2Ntyrnfz2tKGSXUlkPCeQl-2xdW-eAY",1788744790191]