가중치에 넣을 것과 넣지 말 것

파인튜닝, RAG, 시스템 프롬프트의 몫

품앗이가 한 에너지 협동조합의 상담 AI를 키우며 파인튜닝과 평가를 되풀이한 기록을 다른 조직이 다시 쓸 수 있게 옮긴 글입니다. 공개된 한국어 모델인 EXAONE 위에서 실험했습니다. 묶음 전체는 조직 AI 만들기에서 볼 수 있습니다.

요지

모델의 가중치에 새길 것은 안 변하는 행동입니다. 말투, 태도, 거절하는 방식, 답변 형식이 그렇습니다. 숫자, 날짜, 법령, 시세처럼 변하는 사실은 RAG와 시스템 프롬프트가 맡습니다. 우리 기록에서 이 경계를 넘은 학습은 사실을 넣지 못하고 지어내는 모델을 만들었고, 기본 모델이 좋아졌을 때는 오히려 성능을 깎았습니다. 그리고 「모델이 못한다」고 보이는 문제의 상당수는 학습이 아니라 시스템 프롬프트에서 풀렸습니다.

1. 파인튜닝은 행동, 사실은 RAG

작업 기록에 따르면, 학습 데이터 578건을 숫자가 얼마나 빽빽한지로 나눠 본 일이 있습니다. 62%가 사실형, 곧 수치가 셋 이상 든 답이었습니다. 한 건에 「25명에서 2명으로」, 「-4.17억」 같은 변하는 숫자가 22개 들어 있기도 했습니다. 변하는 숫자를 가중치에 새기면 네 가지가 한꺼번에 생깁니다. 과학습이 되고, 옛 숫자를 자신 있게 우기고, 나중에 지우기 어렵고, RAG에 같은 내용이 또 있어 이중으로 관리하게 됩니다.

가중치에 넣는 것RAG와 온톨로지에 두는 것
안 변하는 것변하는 것
페르소나, 말투, 태도숫자, 날짜, 매출
거절하는 방식, 모르는 것을 모른다고 하는 방식법령, 시세, 농가 수
답변 형식갱신하면 바로 반영되어야 하는 모든 값

조직의 정체성을 설명하는 답은 새겨도 되지만, 그 안에 든 변하는 숫자만은 걷어 내고, 답 전체를 버리지는 않습니다. AI를 키우며 쌓는 데이터도 처음부터 길을 갈라서, 사실형은 RAG 자료로 보내고 행동형만 학습 데이터로 모읍니다.

가치를 맞추는 첫 번째 지렛대는 학습이 아니라 답할 때마다 읽히는 헌법 프롬프트이고, 파인튜닝은 보험입니다. 이 이야기는 AI 가치관 편향에 대처하는 연대지능 전략에 있습니다.

2. 소량 파인튜닝은 사실을 넣지 못하고 지어낸다

기록에 따르면 기본 모델이 틀린 12문항의 주제만 골라 298건으로 LoRA 학습을 한 일이 있습니다. 3에폭은 덜 배웠고, 6에폭에서는 같은 말을 반복하고 법률 번호를 지어냈습니다. 12에폭에서는 겨냥한 분야 점수가 크게 올랐지만 그 대가가 컸습니다. 모델이 존재하지 않는 법률 폐지일과 법률 번호를 말하고, 실제로 천 명 남짓인 조합원을 「100만 명 돌파」라고 하고, 없는 인물을 지어냈습니다.

기록이 짚은 원인은 데이터의 형식이었습니다. 「~에 대해 알려줘」에 긴 요약으로 답하는 데이터는 표와 「관련 법령 근거」 칸이 달린 형식을 가르쳤고, 모델은 그 칸을 채울 그럴듯한 숫자를 만들어 냈습니다. 거짓 전제에 넘어가지 않는지 보는 문항의 점수는 95점에서 85점으로 떨어졌습니다. 키워드로 채점하는 평가기에서 이겼더라도 실제 서비스에 올릴 수 없는 모델이었습니다.

  • 수치, 날짜, 인명, 조직 구조 같은 개별 사실은 학습으로 넣지 않습니다.
  • 학습한 모델을 검증할 때는 점수보다 먼저 지어내기 시험을 통과시킵니다. 거짓 전제에 동조하는지, 모르는 사실을 지어내는지를 묻는 문항들입니다. 채점기는 지어낸 내용을 다 잡지 못합니다.
  • 기본 모델만 놓고 잰 평가와 실제 서비스 품질은 다른 지표입니다. 실패한 문항 대부분은 서비스에서는 헌법 프롬프트, 실시간 법령 조회, RAG가 이미 덮고 있었습니다.

3. 기본 모델이 데이터를 이기면 파인튜닝은 뒷걸음이다

작업 기록에 따르면, 새 세대 기본 모델에 옛 학습 데이터 3,268건으로 LoRA 학습을 한 일이 있습니다. 같은 114문항으로 비교하니 학습한 모델이 81.6%, 기본 모델이 89.5%였습니다. 옛 데이터는 옛 모델의 약점을 메우려고 만든 것이었는데, 새 모델에는 그 약점이 없었습니다. 그래서 학습이 강한 행동을 옛날 답변 방식으로 덮어 버렸고, 주민조직 분야는 66.7점이 떨어졌습니다. 반면 정체성 분야는 20점, 기본 개념 분야는 8점 올랐습니다.

  • 기본 모델을 바꾸면 옛 학습 데이터를 다시 쓰기 전에, 새 기본 모델이 그 분야에서 이미 몇 점인지부터 잽니다. 기본 모델이 데이터보다 낫다면 그 분야는 학습에서 뺍니다.
  • 「같은 채점기와 같은 조건으로 비교해서 이길 때만 바꾼다」는 관문을 두었기 때문에 실제 서비스는 한 번도 오염되지 않았습니다.

평가 문항이 기본 모델의 일반 지식을 물으면 학습 효과를 가려내지 못합니다. 협동조합, 몬드라곤, 폴라니, ICA 원칙에 관한 문항을 보강했는데, 협동조합 자료로 학습하기 전 모델과 학습한 뒤 모델이 모두 92.9%로 같았습니다. 기본 모델이 이미 아는 것이었기 때문입니다. 평가 문항은 기본 모델이 모르는 우리 고유 데이터, 예를 들어 출자금, 수수료율, 내부 규정, 우리 위키에만 있는 사실로 짭니다. 문항을 보탤 때는 기본 모델의 정답률을 함께 재서 기본 모델이 못 맞히는 문항만 씁니다. 같은 기록에서 분야 데이터를 보탠 결과는 순수한 증가가 아니었습니다. 오른 분야와 내린 분야가 함께 나왔습니다.

4. 「모델이 못한다」고 하기 전에 시스템 프롬프트부터 본다

기록에 남은 한 상담 AI는 파이썬, 역사, 요리 질문을 「제 영역 밖」이라며 거절했습니다. 층을 나눠 보니 코드에는 거절하는 로직이 한 줄도 없었고, 모델도 멀쩡했습니다. 원인은 「○○ 질문에 답합니다」라고 적힌 시스템 프롬프트였습니다. 이것을 「검증된 자료를 먼저 쓰고, 없으면 자기 지식으로 답하고, 확인할 경로를 안내한다」는 3단으로 고치자 모든 질문에 답했고, 원래 분야의 답도 나빠지지 않았습니다. 앞서 한 LoRA 학습이 거절을 굳히지도 않았습니다. 재학습 없이 프롬프트만으로 풀렸습니다.

기록에는 부작용도 남아 있습니다. 자기 지식으로 한 답을 「검증된 공식 문서를 참고해」라고 포장하는 미세한 환각이 나왔습니다. 출처를 어떻게 구분해 말할지를 프롬프트에 분명히 적습니다.

시스템 프롬프트에 오늘 날짜가 없으면 모델은 자기 학습 시점을 「현재」로 말합니다. 기록에 따르면 한 시행령의 시행일을 정확히 인용하고도 「현재는 시행 전이므로」라고 결론을 낸 답이 있었는데, 실제로는 시행된 지 열흘이 지난 날이었습니다. RAG를 아무리 잘 붙여도 「지났는가」는 오늘을 알아야 판단할 수 있습니다. 「오늘은 YYYY-MM-DD다, 현재와 시행 여부와 마감 경과는 이 날짜를 기준으로 판단하라」는 한 절을 넣자, 모델은 경과 일수까지 스스로 계산했습니다. 법령, 지원사업 마감, 계약 만료를 다루는 프롬프트는 모두 같은 처방이 필요합니다.

시스템 프롬프트 파일을 고쳤는데 반영되지 않을 때가 있습니다. 코드가 요청마다 파일을 읽으면 다음 답부터 바뀌지만, 프로그램이 시작할 때 한 번 읽어 상수로 들고 있으면 서비스를 다시 시작해야 바뀝니다. 서비스가 시작된 시각이 파일을 고친 시각보다 앞서면 옛 내용을 물고 있는 것입니다. RAG 자료도 시작할 때 한 번 읽는 구조라면 문서를 보태도 재시작 전에는 보이지 않습니다. 문서 수가 늘었는지 숫자로 확인합니다.

가치나 깨달음 같은 것은 규칙 문장으로 새겨지지 않는다는 것도 기록에 남아 있습니다. 진술하는 순간 교리로 굳기 때문입니다. 시스템이 할 수 있는 것은 그 자리를 비워 두는 것, 그리고 반박할 수 있는 길을 열어 두는 것입니다.

5. GPU 메모리는 계산부터 한다

지원사업 신청서 초안에 「32B 모델을 80GB GPU 한 장으로 풀 파인튜닝」이라고 적었다가 고친 일이 있습니다. 전문가가 심사하면 바로 감점될 내용이고, 기록에 남은 즉석 계산은 이렇습니다.

  • 추론 메모리는 FP16 기준으로 파라미터 수 × 2바이트라서, 32B면 약 64GB입니다.
  • 풀 파인튜닝은 옵티마이저 상태까지 올라가 파라미터 수 × 16바이트쯤 들고, 32B면 500GB가 넘습니다.
  • LoRA는 모델 메모리에 여유분을 조금 더한 정도라서, 32B면 약 70GB입니다.

자원이 맞지 않으면 학습 방식을 고치고, 자원을 부풀려 적지 않습니다.

전문가 혼합 모델, 곧 MoE 모델의 「활성 파라미터」는 연산량이지 메모리가 아닙니다. 전문가 전부가 메모리에 올라가 있어야 합니다. 「활성 37B라서 GPU 한 장」이라고 쓰면 틀립니다. 공개된 750B MoE 한국어 모델의 공식 실행 구성은 고급 GPU 16장이었습니다.

일곱 줄로 줄이면

  1. 가중치에는 안 변하는 행동을, RAG에는 변하는 사실을 넣는다.
  2. 학습 데이터 속 변하는 숫자는 답을 버리지 말고 숫자만 걷어 낸다.
  3. 학습한 모델은 점수보다 먼저 지어내기 시험을 통과시킨다.
  4. 기본 모델을 바꾸면 옛 데이터를 쓰기 전에 기본 모델 점수부터 잰다.
  5. 평가 문항은 기본 모델이 모르는 우리 데이터로 짠다.
  6. 「모델이 못한다」 전에 시스템 프롬프트와 오늘 날짜를 본다.
  7. GPU 규모는 파라미터 × 바이트로 먼저 계산한다.

관련 노드


작성: 품앗이 · 2026-10-22 · 에너지 협동조합 상담 AI의 학습·평가 기록 기준