저는 출판계에서 일하고, 전자책 제작(https://www.epubguide.net/)으로 밥벌이를 합니다.
고등학고, 대학교 모두 문과(철학 전공)를 나와 프로그래밍은 초등학교 때 배운 GW-Basic 뿐이고, 그나마 전부 기억에서 삭제되었지요. 그래도 만들어 보고 싶은 서비스가 있어 AI의 도움을 받아 LLM 파인튜닝에 도전을 해봤습니다.
제가 운영하는 온라인 도서관입니다. : http://jikji.duckdns.org/
이 도서관을 프로젝트 구텐베르트 한국어 버전으로 키우는 것이 목표에요. 구텐베르크에 있는 75,000권을 모두 한국어로 번역하겠다는 원대한(?) 꿈을 갖고 있어요.
AI가 등장하며, 불가능한 꿈은 아니겠다 싶어 AI에게 번역을 시켜보니, 정말 잘 합니다.
하지만 $20짜리 AI는 API라는 걸 쓸 수 없고, 웬만한 API는 최소 $200/월, 거기다 토큰 초과시 추가 비용이라는 벽이 있어 고민하던 차에 "파인튜닝"이란 걸 하면 번역 전문 AI를 만들 수 있겠다는 생각을 하게 됐습니다.
그런데 제 노트북에서는 말도 제대로 알아듣지 못하는 애들(4b 미만)만 겨우 가능하고, colab이란 걸 이용하면 9b 모델도 가능한데 무료 사용으로는 한번 실패하면 한달을 기다려야 합니다. 돈 주고 쓰려고 해도, 아무것도 모르는 초짜가 시행착오 몇번 하면 수십만원 날아가게 생겼더라구요. 한 번에 성공 할 수 있다면 수십만원쯤 쓰겠지만, 수십만원이 시행착오 비용이라고 하니...
그래서 AI의 도움을 받아 Nvidia DGX 스파크라는 모델을 찾고, 이 모델과 동일하지만 가장 저렴하게 살 수 있던 MSI 제품(제가 살 때는 460만)을 장만해 LLM 파인튜닝에 성공했습니다. 모델 한 번 돌리면 2박 3일은 기본인데, 시행착오를 여러번 해서 거의 한달 걸려 첫 모델을 뽑아냈습니다.
* 460이면 훨씬 빠른 유료 모델을 20년 가까이 쓸 수 있다는 T스러운 생각은 하지 말아주세요. 이 핑계로 그냥 지름신 강림을...
학습의 전과정은 AI(주로 gemini, 유료로 사용하는 모델이기 때문)와 한국어로 대화를 하며 이루어졌습니다. 학습을 위한 환경 설정 부터 파이썬 코드까지 gemini가 다 만들어줬고요.한국어로 대화를 하고, 복붙만 해도 LLM 파인튜닝이 가능하다는 게 신기합니다.
첫 번째 파인튜닝 결과물입니다.
Ollama에 gguf 파일을 등록하고(이런거 전부 AI가 알려줘요) 테스트용 문장을 넣어 봤습니다.
영미 문학을 문학적인 문체를 사용하고 세련되게 한국어로 번역을 하세요. 원문의 의미, 톤, 스타일, 미묘한 세부 사항을 충실하게 전달해야 합니다.
MRS. Rachel Lynde lived just where the Avonlea main road dipped down into a little hollow, fringed with alders and ladies’ eardrops and traversed by a brook that had its source away back in the woods of the old Cuthbert place; it was reputed to be an intricate, headlong brook in its earlier course through those woods, with dark secrets of pool and cascade; but by the time it reached Lynde’s Hollow it was a quiet, well-conducted little stream, for not even a brook could run past Mrs. Rachel Lynde’s door without due regard for decency and decorum; it probably was conscious that Mrs. Rachel was sitting at her window, keeping a sharp eye on everything that passed, from brooks and children up, and that if she noticed anything odd or out of place she would never rest until she had ferreted out the whys and wherefores thereof.
비교를 위해 원본 모델인 gemma3-27b와 튜닝 모델의 결과를 함께 올립니다.
| Gemma3-27b | Gemma3-27b-lit-trans(문학 번역용) |
| 레이첼 린디 부인은 애번리의 큰길이 한낮 골로 움푹 파고드는 지점에 살고 있었다. 골짜기 주변은 버드나무와 처녀치마가 울창하게 무성했고, 오래된 커버트 저택 숲에서 발원한 시냇물이 그 안을 흐르고 있었다. 전해지는 이야기에 따르면, 숲속을 달릴 적에는 험준하고 거침없이 흘러가는 시냇물이었으며, 깊은 웅덩이와 폭포 속에 비밀스러운 이야기가 숨겨져 있다고 했다. 하지만 린디 부인의 골짜기에 다다르자 침착하고 정중한 흐름으로 바뀌어 버렸다. 레이첼 린디 부인의 집 앞을 지나는 시냇물이라면 예의와 격식을 갖추지 않을 수 없는 법이었으니, 아마도 그녀가 창가에 앉아 골짜기를 지나다니는 모든 것을 꼼꼼히 살피고 있음을 본능적으로 알고 있었을 것이다. 시냇물뿐만 아니라 아이들까지도. 그리고 그녀의 예리한 눈에 조금이라도 이상한 구석이 보인다면, 그 속사정을 완전히 파악하기 전에는 결코 놓아주지 않을 것이라는 사실을. |
레이첼 린디 부인은 애번리에서 큰 도로가 작은 골짜기로 미끄러져 들어가는 지점에 살았다. 골짜기에는 버드나무가 자라고 귀걸이풀이 무성했다. 오래된 커버트 가문의 숲에서 솟아난 시냇물이 골짜기를 가로질렀다. 숲을 가로지르는 시냇물은 복잡하고 거침없이 흘러가며, 깊은 소와 폭포의 숨겨진 비밀을 품고 있다고 알려져 있었다. 그러나 린디 부인의 골짜기에 이르기까지는 조용하고 단정한 작은 시냇물이 되어 있었다. 냇물조차 레이첼 린디 부인의 집 앞을 지나갈 때는 예의와 품위를 지키지 않을 수 없었다. 부인이 창가에 앉아 시냇물과 아이들의 움직임을 예리하게 지켜보고 있다는 사실을 잘 알고 있었기 때문이다. 만약 그녀가 조금이라도 이상하거나 어색한 점을 발견한다면, 그 이유와 배경을 밝혀낼 때까지 마음을 놓지 않을 것이라는 사실을 본능적으로 알고 있었으리라. |
다른 분들 눈에는 번역 품질이 개선 된 것 처럼 보이시나요?
상용 모델과 비교하면 한참 멀었어요. 상용 모델은, 문학 전문 번역가와 비교해도 될 정도예요.
그래도 이정도 발전이면 가능성은 충분하겠다 싶습니다.
| Gemini |
| 레이첼 린드 부인은 에이번리의 큰길이 비탈을 타고 내려가, 오리나무와 귀고리꽃이 가장자리를 따라 흐드러지게 핀 작은 골짜기로 접어드는 바로 그 어귀에 살고 있었다. 그곳으로는 커스버트 가문의 오래된 영지 숲속 깊은 곳에서 발원한 시냇물이 가로질러 흘렀다. 이 시냇물은 상류의 숲을 통과할 무렵만 해도 깊은 웅덩이와 작은 폭포의 어두운 비밀을 간직한 채 제멋대로 휘몰아치며 흐른다고들 했다. 하지만 린드 부인네 골짜기에 다다를 즈음이면, 어느새 조용하고 행실 바른 얌전한 시냇물로 변모했다. 제아무리 시냇물이라 한들, 체면과 예의범절을 깍듯이 차리지 않고서는 감히 레이첼 린드 부인의 문 앞을 지나갈 수 없었던 까닭이다. 시냇물은 필경 알고 있었을 것이다. 레이첼 부인이 창가에 앉아 시냇물이건 아이들이건 제 앞을 지나가는 모든 것을 예리한 눈초리로 감시하고 있다는 사실을, 그리고 티끌 하나라도 이상하거나 어긋난 것을 발견하는 날에는 그 연유와 자초지종을 샅샅이 파헤치고 나서야 비로소 직성이 풀리리라는 사실을 말이다. |
파인튜닝을 어떤식으로 하셨는지 궁금하네요~
기존 웨이트 수정 <- 이건 아닐거 같고
RL로 특정 답변 방향 강화? <- 이것도 문학 번역 품질 올리는데는 아쉬울거 같고
LORA로 살짝 만져주기? <- 이게 가장 가능성 높아 보이긴 하네요
데이터셋은 어떻게 구하셨는지도 궁금하구요
썰 좀 더 풀어주세요~~
학습 데이터는 제가 아는 출판사에 세계문학 시리즈가 있어, 개인적인 친분으로 대표님께 파인튜닝에 사용하는 목적으로 25개 번역본을 얻었어요. 역시 gemini에게 물어서 구텐베르크에 있는 원문과 번역문의 문단을 자동 매칭하는 파이썬 프로그램을 만들고(대략 10만개 정도 확보),
매칭 한 데이터가 정확한지 검수하는 파이썬 앱을 만들어 거의 한달 걸려 LLM으로 검토해 (로컬 Ollama로 돌리다 보니 시간이 엄청 걸리네요) 정확히 매칭된 데이터만 추출.
데이터는 한 문장씩 매칭, 한 문단식 매칭 이렇게 2종류를 만들어 총 5만개 정도 데이터를 확보했습니다. 영어와 한국어 문단이 1:1 아닌 문장/문단이 많아요. 영어 2문장을 한국어 한문장으로 번역하거나, 그 반대거나, 문단 구조가 서로 달라 영어엔 있는데 한국어엔 없거나... 이런 걸 LLM으로 걸러냈지요.
그 후로는 Gemini에게 파인튜닝에 필요한 파이썬 코드 짜달라고 해서 실행, 수정, 실행, 수정을 반복했고요. arm cpu라 필요한 라이브러리 설치하는데 오류가 많이 나더라구요.
처음엔 gemma3-4b 하루 만에 튜닝을 끝냈는데(물론, 튜닝 성공 코드 짜는데 일주일 넘게 걸리고, 튜닝은 다시 하루) 품질이 형편 없어서 oss-20b로 다시 튜닝. 3일 걸려 성공했는데 품질이 마음에 안들어 gemma-3-27b로 다시. 이건 거의 4일 정도 돌린거 같아요.
대략 PC 구입에서 튜닝 성공까지 1달 반 정도 걸린 것 같아요. 물론, 본업 해야하고, 주말엔 쉬고, 틈 날 때 조금씩 한거라 더 오래 걸린 것도 있고.
지금은 gemini가 데이터가 깡패라는-진짜로 "데이터가 깡패"라고 말하네요- 말을 해서, oss-120b로 튜닝 도전 중입니다.
관심 있으시면 튜닝 모델 받아 사용해보세요. 27b 모델 성공한 gguf 파일이에요.
https://gofile.me/7umnU/qhBj6LJiG