대왕곰돌님의 댓글을 보고, 파인튜닝에 사용한 도구를 공유합니다. https://www.clien.net/service/board/cm_ai/19154598
저처럼 뻘짓하며 처음부터 공부해도 좋지만, 다른 사람의 작업을 참고해 시간 절약을 하면 좋잖아요.
제가 문학 번역 전문 모델을 만들기 위해서 수집한 것은 문학 번역 데이터입니다.
구텐베르크에서 영어 원본 epub을 다운받고, 국문 번역 epub을 준비했어요.
출판사에서 인디자인 파일로 제공받고, 제 지식으로 인디자인을 epub으로 변환해 영문 epub과 국문 epub 파일을 마련했습니다. 출판사 데이터는 당연히 출판사(대표님)의 사용 허락을 받았어요.
이 두 파일의 파일명을 en_booktitle.epub, kr_booktitle.epub으로 만들어 data 폴더에 넣은 후 데이터셋을 뽑는 파이썬 프로그램입니다. 사용법은 간단해요. data 폴더에 원본 파일 넣고, python을 실행시키면 됩니다. 물론 필요한 라이브러리 설치 등의 작업이 있는데, AI한테 물어보면 잘 알려줄 거예요. UI도 없어요.
http://jikji.duckdns.org:8085/cloud/epub2dataset.zip
이 데이터셋은 완벽하게 일치하지 않아요. 비슷한 것을 묶어주기 때문에 80% ~ 90% 정도만 일치해도 매칭이 됩니다. 번역처럼 정밀도가 높게 파인튜닝을 하려면 정확한 데이터가 필요하기 때문에 추출한 데이터셋 중 정확히 일치하는 데이터만 다시 걸러내야 합니다. 이 앱 만드는데 시간이 정말 오래 걸렸어요.
http://jikji.duckdns.org:8085/cloud/jsonl_editor_v09.zip
Ollama 로컬 모델을 이용해 영어 문장과 한국어 문장이 정확히 일치하는지 확인 할 수 있습니다. 일치하지 않는 데이터는 이유도 알 수 있어요. 참고 번역을 보면 대략정인 영어 문장을 파악 할 수 있어요. 영어에 없는 문장이 한국어에 있는지(환상), 한국어에 없는 문장이 영어에 있는지(누락), 그냥 일치하지 않는지 등을 AI가 알려주고, 참고번역과 한국어 번역을 비교해 직접 판단을 할 수도 있습니다. 일치하지 않는 문장을 수정 해 일치하도록 만들고 싶어 수정 기능을 넣었지만, 데이터 양이 워낙 방대하다 보니 수정은 안하게 되네요.

저처럼 LLM 파인튜닝을 하기 위해 데이터셋을 만들고, 데이터셋의 정확도를 검증하는 분들이라면 이 두 코드를 원하는 형태로 개선해 사용 할 수 있을 거예요.