AI VIDEO BRIEFING
한국어 sLLM Text-to-SQL 파인튜닝 실습: LoRA 학습과 GPT 평가 파이프라인 구축 정리
스터디 발표 영상을 바탕으로 한국어 소형 LLM을 Text-to-SQL 과제에 파인튜닝하는 과정을 정리했다. 데이터 구성과 LoRA 학습, LLM에게 채점을 맡기는 평가 파이프라인의 실무적인 걸림돌을 함께 다룬다.

핵심 메시지
쉽게 이해하기
이 영상은 AI·ML·Quant 스터디에서 『LLM을 활용한 실전 AI 애플리케이션 개발』 6장을 함께 읽고 코드를 돌려 본 발표 기록이다. 다루는 과제는 자연어 질문을 SQL 쿼리로 바꾸는 Text-to-SQL로, 한국어를 지원하는 6B 규모의 소형 모델을 받아 이 과제에 맞게 학습시키는 것이 목표다. 발표자들은 사용한 기반 모델이 영어와 중국어를 지원하는 모델이고, 여기에 한국어를 확장한 파생 모델이 공개돼 있어 그것을 가져다 썼다고 설명한다.
왜 이 과제인지에 대한 설명이 인상적이다. 발표자는 챗봇에게 질문하고 답을 받는 수준을 넘어 구체적인 작업을 시키려 할 때 가장 쓸모가 커 보이는 일이 이것이라고 말한다. 웹사이트나 서비스는 결국 버튼을 누르면 SQL로 데이터베이스를 조회해 화면에 뿌리는 구조인데, 복잡한 SQL문을 그때그때 사람이 짜기 어려우므로 모델이 대신 만들어 서버에 요청하게 하자는 발상이다. SI 업무에서 테이블을 긁어 오는 반복 작업이 큰 비중을 차지한다는 점, 은행 챗봇 같은 서비스에도 비슷한 구조가 들어 있으리라는 점, 요즘은 여기에 검색 증강을 얹어 도메인 특화 솔루션으로 판매되기도 한다는 점이 함께 언급된다.
학습 데이터는 게임 데이터베이스를 상정해 만든 것으로, 테이블을 만드는 스키마 정의와 자연어 질문, 그리고 정답 SQL이 한 묶음이다. 발표에서는 플레이어 테이블 예시를 열어 정수형 기본 키와 자동 증가, 가변 길이 문자열과 유일성 제약, 결측 금지 조건 같은 컬럼 정의를 하나씩 읽는다. 이어 '이름이 특정 문자열로 끝나는 플레이어를 최신 가입순으로 보여 달라'는 질문이 어떻게 와일드카드 조건과 내림차순 정렬을 가진 쿼리로 옮겨지는지 짚는다. 모델은 스키마와 질문 두 가지를 보고 이 쿼리를 만들어 내야 한다.
평가 파이프라인은 실습에서 가장 손이 많이 간 부분이다. 문자열이 정확히 일치하는지 보는 방식은 순서만 살짝 달라져도 틀렸다고 판정하니 의미가 없고, 실제로 쿼리를 실행해 결과 테이블을 비교하는 방식은 수만 건마다 데이터베이스를 조회해야 해서 시간이 감당되지 않는다. 그래서 정답과 모델 생성 결과를 함께 넣고 맞았는지 틀렸는지 판정하게 하는 프롬프트를 만들어 상용 모델에 보내고, 응답을 JSON 형식으로 받아 저장한 뒤 판다스로 읽어 정답 비율을 집계한다. 이때 요청 수와 토큰 수 제한 때문에 프롬프트를 순차적으로 전달해야 하고, 예제의 기본값보다 한도를 크게 낮춰야 중간에 멈추지 않는다는 실무 팁도 나온다.
파인튜닝은 명령줄에서 실행하는 학습 라이브러리를 써서 진행한다. 기반 모델은 4비트로 양자화해 불러오고, 전체 파라미터를 바꾸는 대신 어댑터를 덧붙여 학습하는 LoRA 방식을 옵션으로 지정한다. 학습이 끝나면 만들어진 어댑터를 기존 모델과 병합하는 짧은 코드가 이어진다. 다만 이 라이브러리가 LoRA만 지원해서, 특정 레이어를 얼려 두고 일부만 학습시키는 선택적 학습은 하기 어렵다는 제약이 언급됐다.
주요 인사이트
- 파인튜닝의 목적이 정확도만은 아니다. 발표자는 소형 모델에 JSON으로 답하라고 지시해도 형식을 만든 뒤 뒤에 설명을 잔뜩 붙이는 일이 잦다고 말한다. 이번 실습에서도 SQL 뒤에 주석과 부연이 계속 붙어 프롬프트로는 해결되지 않았고, 학습을 거치자 첫 SQL문만 출력하는 형태로 정리됐다.
- 학습 시간에 대한 감각을 참석자들이 직접 확인해 준 대목이 유용하다. 3만 건 규모 데이터로 고성능 GPU에서는 한 시간 안팎, 한 참석자가 RTX 3090에서 돌렸을 때도 모델이 크지 않아 한 시간 내외였다고 한다. 반면 무료 코랩 자원으로는 여덟 시간에서 아홉 시간이 넘어 무료 제공 한도를 넘길 수 있다는 이야기가 나온다.
- 성능을 올릴 방법으로 정리된 것은 다섯 갈래다. 실제와 맞지 않는 데이터를 걸러 3만 건에서 2만 9천 건 수준으로 정제하기, LoRA 관련 파라미터 조정하기, 특정 데이터베이스에만 치우친 평가 데이터를 다른 분야까지 넓히기, 공개된 대형 Text-to-SQL 데이터셋을 추가해 학습량 늘리기, 그리고 더 큰 모델을 쓰거나 그 모델에서 증류하기다.
- 최신 동향으로는 스파이더(Spider) 데이터셋을 사용한 최근 모델의 정확도가 90%에 가깝게 올라왔다는 자료가 소개됐다. 다만 해당 모델들은 영어와 중국어 기반이라 한국어 과제에는 그대로 쓰기 어렵고, 그래서 한국어 데이터를 별도로 만들어 학습하는 이번 실습의 접근이 필요해진다.
- 발표 말미에는 선호 최적화 계열의 방법을 적용해 보는 것도 한 가지 방향으로 제안됐다. 다만 이는 검증된 결과가 아니라 앞으로 시도해 볼 만한 후보로 언급된 수준이다.
자주 묻는 질문
Text-to-SQL 모델에는 무엇을 입력하나?
질문만 넣는 것이 아니라 조회 대상 테이블의 스키마를 함께 넣는다. 테이블을 생성하는 정의문을 맥락으로 주면 컬럼 이름과 데이터 타입, 필요하면 설명까지 모델이 볼 수 있고, 여기에 자연어 질문을 붙여 정답 SQL과 짝지어 학습시킨다.
왜 LLM에게 채점을 맡겼나?
문자열 완전 일치는 의미가 같아도 표현이나 순서가 다르면 오답이 되어 변별력이 없고, 쿼리를 실제로 실행해 결과를 비교하는 방식은 평가할 때마다 데이터베이스를 조회해야 해서 수만 건 규모에서는 시간이 너무 오래 걸린다. 그래서 정답과 생성 결과를 함께 주고 판정하게 하는 방식을 택했으며, 발표자는 이것이 요즘 많이 쓰이는 방법이라고 덧붙였다.
평가 스크립트를 돌릴 때 주의할 점은?
상용 API의 사용량 제한이다. 요청 횟수와 한 번에 보낼 수 있는 토큰 수에 제한이 있어 이를 넘기면 실행 도중 바로 오류가 난다. 발표자들은 예제의 기본값보다 한도를 크게 낮춰 순차적으로 전달해야 끝까지 돌아간다고 설명했다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗