CDSA | 홈페이지 블로그
Series 02 · 허깅페이스 모델 읽기

허깅페이스 모델 안쪽 들여다보기
학습 데이터, 튜닝, 파라미터, 파일들

SFT·RLHF·DPO·LoRA·QLoRA, 그리고 config.json·tokenizer·safetensors. 모델 카드 곳곳을 채우는 어려운 단어들을 일상 어휘로 한 번 옮겨 둡니다.

신성진  ·  한국데이터사이언티스트협회 2026. 5. 9

1편에서 라이선스, 모델명, instruct 여부, 한국어, 크기 다섯 가지로 후보 모델을 추렸다면, 이제 한 단계 더 들어갈 차례다. 모델 카드 본문과 Files and versions 탭에는 비개발자가 보면 막막한 단어가 잔뜩 등장한다. pretraining, SFT, RLHF, DPO, LoRA, QLoRA, hidden size, attention heads, safetensors. 하나하나 모두 알 필요는 없지만, 이름만 알아 두어도 모델 카드의 절반이 자연스럽게 읽힌다.

이 글은 그 단어들을 우리말 일상 어휘로 옮긴 두 번째 안내서다. 표나 정의 나열보다, 한 호흡으로 읽으며 "아, 이건 이런 뜻이구나"라고 기억에 남도록 풀어 두는 데 무게를 두었다.

01 / 사전학습 데이터모델은 무엇을 보고 자랐는가

모델 카드를 보면 거의 빠짐없이 pretraining data 또는 training data라는 항목이 등장한다. 우리말로는 사전학습 데이터다. 모델이 처음부터 언어 능력을 익히기 위해 사용한 대규모 데이터를 가리킨다. 사람으로 치자면 어릴 적에 본 책, 만난 사람, 들은 이야기 같은 것들이다. 이 단계에서 모델은 단어와 문장의 구조를 익히고, 역사·과학·사회·기술 같은 일반 지식을 흡수하고, 영어·한국어·중국어 같은 여러 언어의 패턴을 배우고, 보고서·기사·설명문 같은 문서 양식을 받아들인다.

자료는 보통 인터넷에 공개된 웹 문서, 위키피디아, 라이선스가 허용된 도서, 학술 논문, 깃허브 같은 공개 코드 저장소, 공개 뉴스, 그리고 질문과 답변 형식의 데이터가 섞인다. 모델 카드에는 이 사실이 다음과 같은 표현으로 등장한다. "trained on a mixture of public data"는 공개 데이터 여러 종류를 섞어 학습했다는 뜻이고, "web-scale dataset"은 인터넷 규모의 큰 데이터를 썼다는 의미다. "curated dataset"은 품질을 사람 손으로 거른 데이터를, "proprietary dataset"은 그 회사가 가지고 있는 비공개 데이터를 사용했다는 뜻이다. 최근에는 "synthetic data"라는 표현도 흔한데, 이는 사람이 만든 데이터가 아니라 AI가 생성한 데이터를 다시 학습 재료로 썼다는 의미다.

대부분의 큰 모델은 학습 데이터를 모두 공개하지는 않는다. 그래서 비개발자 입장에서는 "이 모델은 어디까지 보고 자랐는지를 회사가 얼마나 솔직히 적어 두었는가"를 보면 된다. 항목이 비어 있거나 한 줄만 적혀 있는 모델은 그만큼 검증하기도 어렵다는 뜻이다.

02 / 산업·언어 데이터"우리 업무에 어울리는 모델인가"

사전학습 데이터에는 일반 데이터 외에 도메인 데이터 또는 산업 데이터가 섞여 있을 수 있다. 행정 분야라면 공문, 민원, 정책자료, 법령, 회의록 같은 자료가 그 예다. 의료라면 진료 기록과 의학 논문, 금융이라면 공시자료와 재무제표, 법률이라면 판례와 계약서, 제조라면 설비 로그와 품질 데이터가 그렇다. 모든 모델이 이런 데이터를 본 것은 아니다. 일반 모델은 다양한 자료를 넓게 학습하고, 도메인 특화 모델은 특정 분야의 자료를 더 많이 학습하거나 그 위에 추가 튜닝을 한 모델이다.

행정 업무에 쓰려면 모델이 공문, 보도자료, 회의록, 민원 답변, 정책 보고서, 법령, 지침, 사업계획서, 예산 설명자료 같은 텍스트의 어투와 형식을 본 적이 있어야 한다. 본 적이 있다면 결재가 가능한 문장을 만들어 낼 가능성이 높고, 본 적이 없다면 "어색하게 정중한" 어투에 그칠 때가 많다.

여기에 더해 1편에서 짚은 한국어 데이터 포함 여부가 다시 중요해진다. 영어로 본 보고서 양식과 한국어로 본 보고서 양식은 모델 입장에서는 서로 다른 패턴이기 때문이다. Languages 항목에 ko가 있는지, KoBEST·KLUE 같은 한국어 평가 점수가 적혀 있는지, 그리고 카드 본문에 한국 공공·산업 데이터를 학습했다는 직접적인 언급이 있는지를 함께 본다.

03 / 튜닝 1Instruction Tuning과 SFT

사전학습이 끝난 모델은 글의 구조와 단어 사이의 관계는 잘 알지만, 사람이 부탁하는 방식의 문장을 명령으로 알아채는 데에는 약하다. 그래서 그 위에 추가 학습을 한다. 이를 튜닝(tuning)이라고 부른다. 모델 카드 본문에 가장 자주 등장하는 튜닝 단어 네 가지가 있다. Instruction Tuning, SFT, RLHF, DPO다.

먼저 Instruction Tuning은 사용자의 지시문을 잘 따르도록 학습시키는 방식이다. "다음 문서를 요약해줘", "이 내용을 표로 정리해줘", "민원 답변문 형식으로 작성해줘", "다음 코드의 오류를 찾아줘" 같은 요청을 이해하고 그에 맞게 답하는 능력을 추가로 익힌다. instruct, it, chat이 이름에 붙은 모델은 모두 이 단계를 거친 모델이다. 행정·문서·요약·질의응답에는 base 모델보다 instruct 모델이 훨씬 잘 맞는 이유가 여기에 있다.

SFTSupervised Fine-Tuning의 약자다. 우리말로 옮기면 지도 미세조정이다. 의미는 단순하다. 좋은 질문과 좋은 답변의 예시를 많이 보여 주면서 모델을 추가 학습시키는 방식이다. "이 문서를 요약해줘"라는 입력에 "핵심 내용은 다음과 같습니다…"라는 모범 답안을, "민원 답변문을 작성해줘"라는 입력에 "안녕하십니까. 귀하의 민원에 대해 답변드립니다…" 같은 모범 답안을 짝지어 보여 주는 식이다. 모델에게 "이런 질문이 오면 이런 식으로 답하라"를 가르치는 가장 기본적인 방식이다. Instruction Tuning은 사실 SFT를 통해 이뤄지는 경우가 많아, 두 단어가 거의 같은 맥락에서 쓰일 때도 있다.

04 / 튜닝 2RLHF와 DPO

RLHFReinforcement Learning from Human Feedback의 약자로, 우리말로는 사람의 피드백 기반 강화학습이다. 이름은 거창하지만 과정은 직관적이다. 모델이 같은 질문에 여러 답변을 만들고, 사람이 그 가운데 더 좋은 답변을 골라 준다. 모델은 사람이 선호한 답변 쪽을 더 자주 만들도록 추가 학습된다. 이 과정을 거치면 답변이 자연스러워지고, 지시를 더 잘 따르고, 위험하거나 부적절한 표현이 줄어든다. ChatGPT가 처음 등장했을 때 사람들이 "왜 이렇게 말이 잘 통하지?"라고 느꼈던 이유의 상당 부분이 이 RLHF에 있다.

DPODirect Preference Optimization의 약자다. 사람의 선호를 반영한다는 점은 RLHF와 같지만, 학습 구조가 더 단순하다. 좋은 답변과 나쁜 답변을 짝으로 묶어 주고, 모델이 좋은 답변 쪽을 더 선호하도록 직접 학습시키는 방식이다. 같은 민원 질문에 대해 정중하고 정확한 답변을 좋은 예로, 너무 캐주얼하거나 정확하지 않은 답변을 나쁜 예로 묶어 보여 주는 식이다. RLHF보다 학습 비용이 작고 결과도 비슷해, 최근 공개되는 오픈소스 모델은 SFT 다음 단계로 DPO를 쓰는 경우가 점점 늘고 있다.

모델 카드에서 "trained with SFT and DPO" 같은 문장을 보면, 그 모델은 모범 답안으로 한 번 다듬은 뒤 좋은 답·나쁜 답 비교로 한 번 더 다듬은 모델이라는 뜻이다. 이 단계까지 거친 모델은 곧바로 업무에 투입해도 비교적 안전한 출발점이 된다.

05 / 가벼운 추가 학습LoRA와 QLoRA

모델을 우리 조직에 맞게 추가 학습하고 싶다는 이야기가 나오면 빠지지 않고 등장하는 단어가 LoRAQLoRA다. LoRA는 Low-Rank Adaptation의 약자로, 모델 전체를 다시 학습하지 않고 작은 추가 학습 파일만 붙여서 모델의 행동을 바꾸는 방식이다. 모델 본체는 그대로 두고 옆에 작은 부속 부품을 하나 더 다는 그림에 가깝다. 전체를 다시 학습하는 방식에 비해 비용이 훨씬 작고, 학습한 결과 파일도 본체 모델보다 훨씬 작다. 우리 조직의 보도자료 문체, 우리 부서의 민원 답변 양식, 우리 사업의 회의록 형식 같은 좁은 목적의 학습에 잘 맞는다.

QLoRAQuantized LoRA의 약자로, LoRA보다 메모리를 더 적게 쓰도록 만든 방식이다. 모델을 더 작은 숫자 형식으로 줄여 메모리 사용량을 낮춘 다음, 그 상태에서 LoRA 학습을 진행한다. 같은 GPU로 더 큰 모델을 다룰 수 있게 해 주기 때문에, 개인 노트북이나 무료 클라우드 환경(예: Colab)에서 추가 학습을 시도할 때 가장 많이 쓰는 방법이다.

LoRA·QLoRA가 중요한 이유는 단순하다. 모델 전체를 다시 학습하려면 수천만 원에서 수억 원의 비용이 들지만, LoRA·QLoRA로 우리 조직 데이터를 가르치는 데에는 잘 짜면 수십만 원, 심지어 0원에 가까운 비용으로도 가능하기 때문이다. "우리 조직 데이터로 작은 모델을 한번 추가 학습해 보자"는 시도가 현실적인 선택지가 된 배경에는 이 두 가지 방식이 있다.

06 / 파라미터 구조크기, 컨텍스트, 그리고 내부 부품들

모델 카드의 오른쪽이나 본문 하단에는 모델 내부 구조에 관한 숫자들이 적혀 있다. 비개발자가 깊이 알 필요는 없지만, 단어의 뜻만 알아 두면 좋다. parameters는 모델 안에 저장된 학습된 숫자값의 총량이다. 1B는 10억, 7B는 70억, 70B는 700억 개의 숫자값이라는 뜻이다. 일반적으로 숫자가 많으면 더 복잡한 패턴을 다룰 수 있지만, 무조건 큰 모델이 좋은 것은 아니다. 작은 모델을 우리 데이터에 맞춰 가볍게 다듬으면 큰 모델보다 더 잘 답할 때가 자주 있다.

context length(컨텍스트 길이)는 모델이 한 번에 읽고 처리할 수 있는 입력의 길이다. 4k, 8k, 32k, 128k라는 표기를 보게 되는데, 단위는 토큰이다. 토큰은 모델이 텍스트를 잘게 나누어 처리하는 단위이고, 한국어는 글자·단어·조사가 여러 토큰으로 쪼개진다. 컨텍스트 길이가 길수록 긴 보고서를 한 번에 넣어 요약하거나, 회의록 전체를 한 번에 분석하거나, 검색된 여러 문단을 한꺼번에 모델에게 보여 주는 작업에 유리하다. 행정 문서 업무에는 최소 8k, 가능하다면 32k 이상이 편하다.

그 외에 자주 보이는 단어가 셋 더 있다. num_hidden_layers는 모델 내부의 처리 단계 수, num_attention_heads는 문장 안의 여러 관계를 동시에 살피는 부품의 수, hidden_size는 모델이 토큰 하나를 내부에서 표현할 때 쓰는 숫자 벡터의 크기다. 이 세 숫자는 모델이 클수록 함께 커진다. 비개발자 입장에서 깊이 들여다볼 필요는 없지만, 모델 카드에 등장하는 이 단어들이 "내부 부품의 수와 크기를 가리키는구나" 정도만 기억해 두면 충분하다.

07 / 파일 구성Files and versions 탭에 무엇이 있는가

모델 페이지 상단에는 Model card 옆에 Files and versions라는 탭이 있다. 누르면 모델을 실제로 돌리는 데 필요한 파일들이 줄지어 나타난다. 비개발자가 알아 두면 좋은 파일은 네 가지다.

첫째, config.json은 모델의 구조 설정 파일이다. 모델 종류, 레이어 수, hidden size, attention head 수, 토큰 사전 크기, 컨텍스트 길이 같은 정보가 이 안에 정리되어 있다. 6번 절에서 본 숫자들의 출처가 바로 이 파일이다. 사람이 직접 읽기보다는 모델을 불러오는 프로그램이 자동으로 참고한다.

둘째, tokenizer.json·tokenizer_config.json·special_tokens_map.json토크나이저(tokenizer) 관련 파일들이다. 토크나이저는 사용자가 입력한 문장을 모델이 처리할 수 있는 토큰 단위로 잘게 자르는 도구다. 같은 한국어 문장도 토크나이저에 따라 잘게 쪼개지는 방식이 다르고, 그래서 모델과 토크나이저는 항상 한 쌍으로 따라 다닌다. Llama 모델인데 다른 모델용 토크나이저를 쓰면 글자가 깨지거나 성능이 크게 떨어진다.

셋째, model.safetensors 또는 model-00001-of-00004.safetensors처럼 여러 개로 나뉜 파일이 모델의 실제 학습값(가중치)이 들어 있는 파일이다. 모델이 7B, 13B로 커질수록 한 파일에 다 담기지 않아 여러 조각으로 나뉘고, 그 조각들의 목록을 model.safetensors.index.json이 안내해 준다. safetensors라는 형식은 예전의 .bin보다 안전하고 빠르게 불러올 수 있도록 설계된 표준이다.

넷째, generation_config.json은 모델이 답변을 생성할 때의 기본 설정을 담은 파일이다. 답변의 최대 길이, 답변의 다양성 정도(temperature), 후보 단어를 고르는 범위(top_p), 같은 표현을 반복할 때 누르는 강도(repetition_penalty) 같은 값이 들어 있다. 행정 문서나 보고서처럼 정확성과 일관성이 중요한 작업에서는 temperature를 너무 높게 쓰지 않는 편이 좋다. 반대로 카피라이팅이나 아이디어 도출에는 살짝 높여 쓰는 것이 어울린다.

config.json은 설계도, tokenizer는 입구의 번역기, safetensors는 모델의 본체, generation_config는 출구의 손잡이. 네 종류만 기억해 두면 파일 목록이 더 이상 낯설지 않다.

08 / 마무리모델 카드를 끝까지 읽는 힘

여기까지가 두 번째 편이다. 학습 데이터가 무엇을 의미하는지, SFT와 RLHF와 DPO는 어떻게 다른지, LoRA와 QLoRA는 어떤 상황에 등장하는지, 파라미터·컨텍스트 길이가 우리 업무에 어떤 영향을 주는지, 그리고 Files and versions 탭에 보이는 네 종류의 파일이 무슨 일을 하는지를 같은 호흡으로 풀어 두었다. 한 번에 모두 외울 필요는 없다. 모델 카드를 다시 펼쳤을 때 이 단어들이 "어디서 들어 본 적이 있는 단어"로 다가오는 것만으로도 절반은 성공이다.

다음 편에서는 그렇게 고른 모델을 실제로 어디에 쓰는가를 다룬다. 행정 문서 작성, 민원 답변, 회의록과 보고서 요약, 그리고 우리 조직 내부 문서를 근거로 답하게 만드는 RAG(검색 기반 생성)까지 — 비개발자가 가장 먼저 시도해 볼 만한 다섯 가지 활용을 같은 산문 호흡으로 정리한다.

#허깅페이스 #SFT #RLHF #DPO #LoRA #QLoRA #비개발자를위한AI