최근에 회사에서 특정 도메인용 LLM 파인튜닝을 진행 중인데, 토큰 길이 제한으로 계속 막히네요. 혹시 비슷한 문제 겪으신 분들 경험담 있으시면 공유 부탁드립니다.
상황을 설명하자면 기본 모델 기준으로 max_length가 4096인데, 실제 데이터셋에는 8000토큰 이상 되는 긴 문서들이 많거든요. 무작정 자르기만 하면 문맥이 깨지는 건 물론이고, 모델이 뒷부분 내용을 제대로 학습 못하는 거 같아요. 처음엔 sliding window 방식으로 오버래핑을 줬는데 학습 시간이 장난 아니더라고요.
지금 고려 중인 방법들이 몇 가지 있는데, 첫 번째는 그냥 모델을 7B에서 13B 버전으로 올리는 거예요. 보통 파라미터 수가 늘면 max_token도 커지잖아요. 그런데 이건 비용 문제가 생기고, 학습 시간도 기하급수적으로 늘어날 것 같고요.
두 번째는 처음부터 context window를 확장해서 학습하는 거거든요. RoPE나 YaRN 같은 기법을 써서 위치 인코딩을 조정하는 방식인데, 여기저기서 정보는 봤지만 실제로 해보신 분이 드물어서요. 효과가 있는지, 있다면 어느 정도 성능 저하가 있는지 궁금합니다.
세 번째는 아예 다른 접근으로 문서를 청킹해서 여러 번 파인튜닝하는 방법도 생각하고 있어요. 근데 이건 모델이 전체 맥락을 못 잡을까봐 걱정이 되고요.
현재는 어쨌든 시간이 오래 걸리더라도 sliding window로 일단 돌려보고 있는데, 더 나은 방법 있으시면 의견 부탁드려요. 특히 context window 확장해본 경험 있으신 분들이 계신가요?