Gemma 4를 고전 한국어 번역기로 만들기
요약
Gemma 4 E2B 모델을 활용하여 고전 한국어를 현대 한국어로 번역하는 미세 조정(Fine-tuning) 튜토리얼입니다. LoRA 기법과 Google Colab 환경을 사용하여 효율적으로 모델을 학습시키는 과정을 다룹니다.
핵심 포인트
- Gemma 4 E2B 모델을 활용한 고전 한국어 번역기 구현
- LoRA(Low-Rank Adaptation)를 이용한 효율적인 미세 조정
- Hugging Face의 transformers, trl, peft 라이브러리 활용
- 홍길동전 데이터를 활용한 대화형 데이터셋 구성
오래된 책에는 독특하고 아름다운 무언가가 있습니다. 풍화된 종이의 냄새, 페이지의 질감, 그리고 세대를 거쳐 살아남은 이야기들 말이죠. 하지만 만약 여러분이 조선 시대 소설인 _홍길동전 (HongGildongJeon)_과 같은 고전 한국어 문학 작품을 펼쳐보려 했다면, 시간이 언어에 자신만의 흔적을 남긴다는 사실을 곧 깨닫게 될 것입니다.
띄어쓰기의 부재와 아래아 (Arae-a, ㆍ) 또는 여린히읗 (Yeorin-hieut, ㆆ)과 같은 사어(obsolete letters) 사이에서, 이를 읽는 것은 소설을 훑어보는 것이라기보다 아름답고 고대적인 퍼즐을 푸는 것처럼 느껴집니다. 원어민들에게조차 언어적 격차는 매우 큽니다.
그래서 저는 과거와 현재를 잇는 디지털 가교인 이 튜토리얼을 만들기로 결심했습니다. **Gemma 4 E2B (IT)**를 사용하여, 고전 한국어를 매끄러운 현대 한국어로 바꿔주는 겸손한 번역기를 만드는 데 착수했습니다.
학습 레시피
관리가 용이하도록, 저는 Google Colab을 사용하여 단일 NVIDIA T4 GPU (16GB)에서 이를 실행했습니다.
1. 주방 설정하기 (Setting Up the Kitchen)
먼저, 우리가 즐겨 사용하는 오픈 소스 도구들을 가져옵니다: Hugging Face의 transformers, 학습 루프를 위한 trl, 그리고 거대한 서버 클러스터 없이도 LoRA (Low-Rank Adaptation)를 사용하여 모델을 미세 조정(fine-tune)할 수 있게 해주는 peft입니다.
2. 재료 모으기 (Gathering the Ingredients)
데이터를 위해, 저는 _홍길동전_의 퍼블릭 도메인 버전과 직지프로가 작성한 아름다운 현대어 번역 (Creative Commons 라이선스 적용)을 쌍으로 사용했습니다.
Gemma가 자연스럽게 느끼도록, 저는 데이터를 대화 형식으로 구성하고 명확한 system 프롬프트로 모델을 안내했습니다:
[
{"role": "system", "content": "고전 한국어를 현대 한국어로 번역하세요."},
{"role": "user", "content": "됴션국셰둉ᄃᆡ왕즉위십오연의홍희문밧긔ᄒᆞᆫᄌᆡ상이잇스되"},
...
(번역 참고: 이 줄은 세종대왕 즉위 15년 홍회문 밖에서 살고 있는 한 대신을 소개합니다!)
'이전' 모습 (The "Before" Picture)
Gemma에게 특정 학습을 시키기 전에, 저는 간단한 기준선 테스트를 실행했습니다. 기본 모델은 똑똑하지만, 고어 문법은 매우 특정한 영역입니다. 튜닝 없이 Gemma는 최선을 다했지만, 길고 지나치게 문자 그대로의 설명을 내놓았습니다:
- 원문 고전 텍스트: ᄇᆡᆨ씨듯고ᄂᆡ심의탄복왈그근본을ᄀᆞᆷ초지아니ᄒᆞ니장부로다ᄒᆞ고ᄌᆡ삼위로ᄒᆞ더라
- 인간 번역: 백 씨 듣고 내심에 탄복 왈, "그 근본을 감추지 아니하니 장부로다!" 하고, 재삼 위로하더라.
- Gemma의 초기 추측: _"색깔처럼, 마음의 찬사가 말했다, '근본은 깊이 느낄 수 없다...''"
- 초기 유사도 점수: 4.85% 💔
(번역 참고: 이 줄은 실제로 - 이를 듣고 백 씨는 깊은 감명을 받아 "그의 진정한 본성을 숨기지 않았으니, 참된 사람이다!"라고 말하며 그를 거듭 위로했다는 의미입니다.)
기본 모델은 명확하게 시간 속에 길을 잃었습니다. 지도(map)가 필요했습니다.
세심한 배움으로 Gemma 가르치기 (Teaching Gemma with Care)
모델을 효율적으로 학습시키기 위해, 저는 LoRA를 사용한 Parameter-Efficient Fine-Tuning (PEFT) 설정을 사용했습니다.
from peft import LoraConfig
peft_config = LoraConfig(
...
비밀 병기: collate_fn
챗 모델을 특정 도구처럼 작동하도록 미세 조정할 때, 프롬프트를 다시 작성하는 법을 배우느라 에너지를 낭비하게 하고 싶지 않습니다. 사용자 정의 데이터 콜레이터(custom data collator)를 사용하여, 저는 system 및 user 입력을 마스킹하고 (레이블을 -100으로 설정하여), Gemma의 손실 계산이 올바른 현대 어시스턴트 응답 생성에 엄격하게 집중하도록 강제했습니다.
하이퍼파라미터를 5 에포크(epochs) 동안 학습률(learning rate) 2e-5로 부드럽게 설정한 후, 저는 트레인(train)을 시작했습니다.
따뜻한 '이후'의 빛 (The Warm "After" Glow)
조금의 인내심을 가지고 트레이너(trainer)가 마법을 부리도록 내버려 두자, 결과는 믿기지 않을 정도로 보람찼습니다. 글자 단위 유사도 점수(character-by-character similarity score)가 무려 **79.93%**라는 놀라운 수치까지 치솟았습니다!
이제 텍스트를 어떻게 처리하는지 확인해 보세요:
- 원문 고전 텍스트 (Original Classical Text): ᄇᆡᆨ씨듯고ᄂᆡ심의탄복왈그근본을ᄀᆞᆷ초지아니ᄒᆞ니장부로다ᄒᆞ고ᄌᆡ삼위로ᄒᆞ더라
- 인간 번역 (Human Translation): 백씨 듣고 내심에 탄복 왈, "그 근본을 감추지 아니하니 장부로다!" 하고, 재삼 위로하더라.
- Gemma 미세 조정 번역 (Gemma's Fine-Tuned Translation): 백씨듯 고내심에 탄복 왈, "그 근본을 감초지 아니하니 장부로다." 하고 제삼 위로 하더라.
- 새로운 유사도 점수 (New Similarity Score): 85.71% ✨
마치며 (Closing Thoughts)
기술은 종종 우리를 미래를 향해 끊임없이 밀어붙이지만, 제가 가장 좋아하는 기술 프로젝트는 우리가 과거를 더 명확하게 바라볼 수 있게 해주는 프로젝트들입니다. Gemma 4와 같은 경량 모델(lightweight model)을 미세 조정(fine-tuning)하는 데 약간의 시간을 투자함으로써, 우리는 문화적 역사를 보존하는 도구를 만들 수 있으며, 고대의 지혜와 고전 이야기를 노트북을 가진 누구라도 접근할 수 있게 만들 수 있습니다.
다음에 너무 멀게만 느껴지는 역사의 한 조각을 발견한다면, 작은 데이터셋(dataset)과 미세 조정 세션만으로도 그것을 빛의 세계로 불러올 수 있다는 사실을 기억하세요.
자신만의 도메인을 위해 미세 조정을 수행할 때의 구조화된 워크플로(workflow)는 다음과 같습니다:
- 명확한 목표 정의
- 고품질 데이터셋 및 평가 계획 준비
- 모델이 학습하고 있는지 확인
- 지표(metrics) 및 인간의 판단을 통한 평가
- 배포 및 반복(iterate)
👉 Gemma Cookbook에서 이 튜토리얼 확인하기
👉 저희를 지원하기 위해 리포지토리(repository)에 Star 누르기
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기