K-Policy-LLM은 한국 정치, 정책, 법률 문서를 이해하고 구조화하기 위한 도메인 특화 언어모델 구축 프로젝트입니다. 공개 사전학습 모델을 단순 미세조정하는 방식이 아니라, 토크나이저, 사전학습 데이터팩, 사후학습 데이터팩, 평가 체계를 직접 구성해 from-scratch 계열 실험으로 진행했습니다.
이 저장소는 전체 원시 데이터와 내부 실행 산출물을 그대로 올리는 공간이 아니라, 공개 가능한 모델 설명, 학습 요약, 평가 결과, 사용 예시, 재현 가능한 범위의 코드와 문서를 정리하기 위한 공개용 저장소입니다.
현재 이 저장소에는 make_llm 산출물을 기준으로 공개용 설명 문서, 최종 보고서, 평가표, 그림, 개선 사례, 주요 설정, 참고 스크립트를 정리했습니다. 대용량 모델 파일과 추가 서빙 자료는 공개 범위를 확인한 뒤 별도로 보완합니다.
| 항목 | 상태 |
|---|---|
| 프로젝트 개요 | 포함 |
| 모델 구조 요약 | 정리 완료 |
| 사전학습 기록 | 정리 완료 |
| 사후학습 기록 | 정리 완료 |
| v0.0.9 이전 버전 이력 | 정리 완료 |
| 공개 벤치마크 결과 | 정리 완료 |
| 내부 생성형 평가 결과 | 정리 완료 |
| 최종 보고서 | 포함 |
| 평가 그림 | 포함 |
| 개선 사례 | 포함 |
| 주요 설정 파일 | 포함 |
| 참고 스크립트 | 포함 |
| 토크나이저와 export metadata | 포함 |
| 비모델 재현 스냅샷 | 포함 |
| 모델 가중치 | 별도 배포 예정 |
| 추론 코드와 예시 | 기본 구조와 llama.cpp 참고 코드 포함 |
| 데이터 설명서 | 초안 포함 |
| 모델 카드 | 초안 포함 |
K-Policy-LLM/
├── README.md
├── reports/ # 최종 보고서와 전체 실험 기록
├── docs/ # 모델, 데이터, 학습, 평가 설명
├── manifests/ # 재현용 작은 manifest와 보존 우선순위
├── reproducibility/ # make_llm 비모델 재현 스냅샷
├── results/ # 공개 가능한 평가 요약 CSV
├── assets/figures/ # 보고서·README용 그림
├── examples/ # 사후학습 개선 사례
├── configs/ # 주요 모델·학습·평가 설정
├── scripts/ # 데이터, 학습, 평가, 추론 참고 스크립트
└── checkpoints/ # tokenizer, config, export metadata
주요 문서는 다음에서 확인할 수 있습니다.
| 문서 | 내용 |
|---|---|
| 최종 보고서 | 보완 논문 스타일 최종 보고서 |
| 전체 실험 기록 | 사전학습, 사후학습, 평가, 한계, 표현 기준 정리 |
| v0.0.9 이전 개발 이력 | v0.0.1-v0.0.8 진행 로그, 실패 분석, v0.0.9 설계로 이어진 교훈 |
| 모델 카드 초안 | 모델 목적, 사용 범위, 한계 |
| 데이터 설명서 | 데이터 구성 원칙과 원천 유형 |
| 마이그레이션 재현 준비 | 데이터 재다운로드 목록, 전처리·패키징 절차, 최종 계보 보존 우선순위 |
| 데이터 재수집 seed | 원본 데이터 provider, dataset id/name, 파일명 seed, 재패키징 seed/rule |
| 시행착오 로그북 | 실패·우회·재시작·repair·보고서 정정 기록과 전체 log/note 색인 |
| make_llm 비모델 재현 스냅샷 | 모델 가중치와 원자료를 제외한 코드, 설정, 노트, manifest, 로그, 계보 증거 |
| 학습 요약 | 사전학습과 사후학습 흐름 |
| 평가 요약 | 공개 지표와 내부 생성형 평가 결과 |
| 공개 지표 해석 참고 | 공개 모델 점수와 직접 비교하기 어려운 이유 |
| 803문항 자동채점 결과 | 내부 생성형 평가의 전체 재평가 결과 |
| 자동채점 기준과 검산 | 자체 평가 채점식과 사례 검산 설명 |
K-Policy-LLM의 목표는 정치·정책·법률 문서를 단순히 이어 쓰는 것이 아니라, 사용자가 검토해야 할 정보를 구조화해 설명하는 것입니다.
주요 목표 작업은 다음과 같습니다.
| 목표 작업 | 설명 |
|---|---|
| 회의록 구조화 | 국회·지방의회 회의록에서 안건, 쟁점, 발언, 결정 사항을 분리 |
| 법률안·검토보고서 해설 | 법률안의 목적, 개정 내용, 검토 쟁점, 한계를 설명 |
| 정책·공약 비교 | 정책 방향, 재정 부담, 대상 집단, 집행 가능성을 구분 |
| 근거 기반 질의응답 | 제공 자료 안에서 확인 가능한 내용과 자료 밖 내용을 구분 |
| 표·수치 자료 해석 | 예산, 투표율, 의석수, 증감 폭과 단위를 설명 |
| 짧은 사실 질의 | 기준일이 필요한 현재 사실과 기본 정치·법률 개념을 간결하게 답변 |
최종 보고서 기준 모델은 약 1.221B 파라미터 규모의 dense decoder-only causal language model입니다.
| 구분 | 설정 |
|---|---|
| 모델 유형 | Llama 계열 decoder-only causal LM |
| 파라미터 규모 | 약 1.221B |
| 레이어 수 | 28 |
| 은닉 차원 | 2,048 |
| FFN 차원 | 4,096 |
| 어텐션 | 16 heads, 8 KV heads, GQA |
| 위치 인코딩 | RoPE |
| 문맥 길이 | 4,096 tokens |
| 토크나이저 | SentencePiece BPE, 80K vocabulary |
| 학습 정밀도 | bf16 |
전체 학습은 사전학습과 사후학습으로 나누어 진행했습니다.
사전학습 데이터 구성
|
80K 한국어 중심 토크나이저 학습
|
1.221B decoder-only LM 사전학습
|
15B 토큰학습량 지점 선택
|
추가 사전학습(CPT)
|
지도학습(SFT)
|
선호학습(DPO)
사전학습 데이터팩은 한국어 일반 말뭉치와 정치·정책·법률 관련 자료를 함께 사용했습니다. 최종 사전학습 데이터팩은 약 31.21B 토큰 규모이며, 실제 보고서 기준 베이스 모델은 중간 체크포인트 평가 결과를 바탕으로 토큰학습량 15B 지점으로 선택했습니다.
| 항목 | 수치 |
|---|---|
| 최종 사전학습 데이터팩 | 31.21B tokens |
| 한국어 토큰 비율 | 93.67% |
| 영어 토큰 비율 | 6.33% |
| 최종 기준 베이스 | 15B 토큰학습량 |
15B를 기준 베이스로 선택한 이유는 16B까지 추가 학습했을 때 일부 일반 지표는 소폭 개선되었지만, 한국어 확장 지표와 전체 확장 지표가 15B보다 낮아졌기 때문입니다. 따라서 16B를 실패로 폐기한 것이 아니라, 평가 결과상 사후학습으로 전환하는 편이 더 적절하다고 판단했습니다.
| 토큰학습량 | 한국어 확장 가중 평균 |
|---|---|
| 1.5B | 26.00 |
| 6B | 28.06 |
| 9.5B | 28.06 |
| 13.5B | 28.06 |
| 15B | 28.59 |
| 16B | 27.52 |
사후학습은 추가 사전학습(CPT), 지도학습(SFT), 선호학습(DPO) 순서로 진행했습니다.
| 단계 | 목적 | 해석 |
|---|---|---|
| CPT | 법령·정책 문체와 도메인 용어 추가 노출 | 지시응답 개선보다는 도메인 문체 보강 |
| SFT | 답변 형식, 단답, 문서 구조화, 법률 8000 안 해설 학습 | 질문에 맞는 답변 형식과 직접성이 개선됨 |
| DPO | 선호 답변과 비선호 답변 대비 학습 | 반복, 질문 복사, 근거 없는 단정 억제에 기여 |
SFT와 DPO는 공개 객관식 벤치마크 점수를 크게 끌어올리기보다는, 실제 목표 작업에서 나타난 실패 유형을 줄이는 데 초점을 두었습니다. 예를 들어 장황한 무관 답변을 간결한 단답으로 바꾸거나, 정책 설명에서 자료 유형과 확인 기준을 분리하는 식의 개선이 관찰되었습니다.
평가는 두 축으로 수행했습니다.
-
공개 한국어 객관식 벤치마크
KMMLU, CLIcK, KoBEST 등 공개 지표를 같은 평가 프로토콜로 실행해 사전학습 및 사후학습 단계별 변화를 확인했습니다. -
내부 생성형 자동채점 평가
프로젝트 목표 작업에 맞춘 803개 생성형 진단 문항을 구성하고, 네 단계 모델에 대해 모두 생성·채점했습니다.
공개 벤치마크는 zero-shot next-token 방식으로 선택지 문자의 로그확률을 비교해 채점했습니다. 이 방식은 공개 모델 기술보고서에서 흔히 사용하는 5-shot accuracy 또는 F1 평가와 다를 수 있으므로, 아래 점수는 공개 모델과의 직접 순위 비교가 아니라 같은 프로토콜 안에서 우리 모델의 단계별 변화를 보기 위한 진단 지표로 해석해야 합니다.
| 지표 | 사전학습 베이스라인 | CPT | SFT | DPO |
|---|---|---|---|---|
| KMMLU | 28.70 | 28.34 | 27.91 | 27.99 |
| KMMLU-hard | 24.24 | 24.54 | 24.56 | 24.68 |
| KMMLU-Pro | 20.02 | 20.41 | 18.92 | 18.85 |
| CLIcK | 24.61 | 24.61 | 26.02 | 26.02 |
| KoBALT-700 | 9.14 | 8.43 | 9.57 | 9.29 |
| HAERAE | 20.47 | 20.80 | 20.52 | 20.60 |
| KoBEST-BoolQ | 48.01 | 48.29 | 49.72 | 50.00 |
| KoBEST-COPA | 51.80 | 52.40 | 50.00 | 50.50 |
| KoBEST-HellaSwag | 23.40 | 22.60 | 24.80 | 24.60 |
| KoBEST-SentiNeg | 52.39 | 51.64 | 50.38 | 51.13 |
| KoBEST-WiC | 49.13 | 49.21 | 51.59 | 51.75 |
공개 벤치마크의 절대 점수는 공개 한국어 특화 LLM과 비교해 낮은 수준입니다. 특히 4지선다형에서 25% 근처, 2지선다형에서 50% 근처인 결과는 무작위 기준선에 가깝게 해석해야 합니다. 따라서 이 프로젝트는 공개 벤치마크 경쟁 성능을 주장하기보다, 도메인 특화 모델 구축 과정과 단계별 개선 방향을 분석하는 연구 성격이 강합니다.
내부 평가는 본 프로젝트의 목표 작업에 맞추어 직접 구성한 803개 생성형 진단 문항으로 수행했습니다. 채점은 사람이 점수를 매기는 방식이 아니라, 문항별 요구 구획, 필수어, 금지어, 수치 정답, 단위 조건을 대조하는 규칙 기반 자동채점 방식입니다.
| 단계 | 문항 수 | 평균 점수 |
|---|---|---|
| 사전학습 베이스라인 | 803 | 35.6 |
| CPT | 803 | 35.5 |
| SFT | 803 | 36.1 |
| DPO | 803 | 36.5 |
항목별로는 법률안·검토보고서 해설, 근거 부족·문서 한계 진단, 기본 정치 사실·단답에서 일부 개선이 나타났습니다. 반면 표 수치 해석과 정책·공약 비교는 여전히 낮은 점수를 보여 후속 데이터 보강과 별도 수치 추론 학습이 필요합니다.
사후학습의 목적은 단순 점수 상승이 아니라, 실제 질문에서 반복, 무관 답변, 근거 없는 단정, 장황한 답변을 줄이는 것이었습니다.
관찰된 개선 방향은 다음과 같습니다.
| 유형 | 사전학습 단계의 문제 | 사후학습 후 관찰된 변화 |
|---|---|---|
| 단답 질의 | 질문과 무관한 장문 생성 | SFT 이후 짧고 직접적인 답변 생성 |
| 현재 사실 질의 | 기준일 없는 일반론 또는 무관 답변 | 기준일을 포함한 직접 답변 생성 |
| 계산 교정 | 반복 문장과 근거 없는 답변 | 계산식, 차이, 단위를 포함한 답변 생성 |
| 정당 설명 | 특정 지역·시점 발언으로 이탈 | 중립적 개요와 기준일 확인 필요성 제시 |
| 정책 설명 | 근거 없는 적용 범위 단정 | DPO 이후 기준과 자료 한계를 함께 제시 |
| 자료 연결 설명 | 공약, 법률안, 예산, 회의록의 역할 혼재 | 자료 유형별 기능과 확인 기준을 분리 |
현재 모델은 공개 한국어 특화 LLM과 비교할 수 있는 범용 성능을 확보했다고 보기 어렵습니다. 특히 공개 객관식 벤치마크의 절대 점수는 낮고, 내부 자동채점 평가에서도 표 수치 해석과 정책·공약 비교 항목의 성능이 충분하지 않습니다.
또한 내부 생성형 평가는 프로젝트 목표에 맞춘 진단셋이므로, 범용 모델 성능을 대표하는 공식 순위표처럼 해석해서는 안 됩니다. 개선 사례도 자동채점 후보 중 단계별 출력을 대조해 선별한 사례이며, 별도의 사람 평가 점수로 산출한 결과는 아닙니다.
| 그림 | 내용 |
|---|---|
| 사전학습 손실 곡선 | 15B 토큰학습량 기준 사전학습 손실 |
| 15B 선택 지표 | 사전학습 토큰학습량별 공개 지표 흐름 |
| 사후학습 공개지표 11개 | 사전학습 베이스라인, CPT, SFT, DPO 비교 |
| 803문항 자체평가 | 내부 생성형 자동채점 결과 |
| 사전학습 실패 질의 개선 | SFT와 DPO의 개선 사례 흐름 |
| 파일 | 내용 |
|---|---|
| 한국어 공개지표 11개 CSV | 사후학습 단계별 공개 지표 |
| 803문항 전체 평균 CSV | 내부 생성형 평가 전체 평균 |
| 803문항 항목별 CSV | 내부 생성형 평가 항목별 결과 |
| 사전학습 체크포인트별 CSV | 15B 기준 베이스 선택 근거 |
대용량 모델 가중치와 GGUF 변환본은 이 저장소에 직접 포함하지 않았습니다. 현재 checkpoints/에는 tokenizer, config, generation config, export metadata를 포함했습니다. 가중치 공개 범위와 GitHub LFS 사용 여부를 정한 뒤 별도로 배포합니다.
이 모델은 연구용 도메인 특화 언어모델입니다. 출력은 법률 자문, 선거 조언, 정책 판단의 최종 근거로 사용해서는 안 되며, 실제 판단에는 반드시 원문 자료와 공식 출처 확인이 필요합니다.
정치·정책 사안에 대해서는 특정 정당, 후보, 입장을 지지하도록 설득하기보다 판단 기준을 중립적으로 제시하는 것을 목표로 합니다.
라이선스는 공개할 모델 파일, 코드, 문서, 데이터 파생물의 범위를 확정한 뒤 명시할 예정입니다. 원천 데이터의 라이선스와 배포 가능 범위를 우선 확인합니다.