주요 컨텐츠로 이동

AI 기반의 문서화를 위한 맞춤형 LLM 만들기

엔지니어 2명, 1개월, 1,000달러 미만으로 생각보다 쉽게 만들 수 있습니다
이 포스트 공유하기

(번역: Youngkyong Ko) Original Blog Post

우리는 최근 대규모 언어 모델(LLM)을 사용하여 Unity Catalog의 테이블과 열에 대한 문서를 자동으로 생성하는 AI 기반의 문서화 기능을 발표했습니다. 이 기능에 대한 고객들의 반응이 매우 뜨거웠습니다. 현재 데이터브릭스의 테이블 메타데이터 업데이트 중 80% 이상이 AI의 도움으로 이루어 지고 있습니다.

이 글에서는 이 기능을 개발한 경험을 공유합니다. 기존 SaaS 기반 LLM을 이용해 프로토타입을 만드는 해커톤 프로젝트에서 시작하여, 더 좋고, 더 빠르고, 더 저렴한 맞춤형 LLM을 만들기까지의 과정입니다. 새로운 모델을 개발하는 데 엔지니어 2명, 1개월, 1000달러 미만의 컴퓨팅 비용이 소요되었습니다. 이 경험이 다양한 GenAI 사용 사례에 적용될 수 있을 것이라 믿기에, 유용하게 활용되기를 바랍니다. 그리고 더 중요한 것은 이 과정에서 오픈 소스 LLM의 빠른 발전을 활용할 수 있었다는 점입니다.

AI로 생성하는 문서화 기능이란?

모든 데이터 플랫폼의 중심에는 방대한 데이터셋이 (대개 테이블 형태로) 존재합니다. 그러나 우리가 함께 일했던 거의 모든 조직에서는 문서화되지 않은 테이블이 대부분이었습니다. 문서화 되지 않으면 사람이 비즈니스 질문에 답하는 데 필요한 데이터를 찾기가 어렵고, 또한 최근에는 AI 에이전트가 질문에 대한 답변으로 사용할 데이터셋을 자동으로 찾는 데 어려움을 겪는 등 여러 가지 문제가 발생합니다. (이는 우리가 데이터 인텔리전스라고 부르는 플랫폼의 핵심 기능이지요).

이러한 데이터셋을 문서화하기 위해 사람에 의존하는 대신, 상용 SaaS 기반 LLM을 이용하여 테이블 및 컬럼에 대한 문서화를 스키마에 따라 자동 생성하는 새로운 워크플로가 해커톤에서 프로토타입으로 나왔습니다. 이 새로운 워크플로는 테이블과 컬럼에 대한 설명을 자동으로 제안하고, 아래 그림과 같이 사용자가 이 제안을 개별적으로 수락하거나 일괄 수락하거나 또는 더 충실하게 수정할 수 있습니다. 이 프로토타입을 일부 사용자에게 보여줬을 때, 그들의 즉각적인 질문은 한결같이 "언제부터 사용할 수 있게 되나요?" 였습니다.

Creating a bespoke LLM for AI-generated documentation

LLM의 도전 과제

모든 고객에게 이 기능을 출시하기 위해 노력하는 과정에서 세 가지 문제에 직면했습니다:

  1. 품질: 이 기능의 궁극적인 성공 여부는 생성된 문서의 품질에 달려 있습니다. 수락 빈도를 통해 품질을 측정할 수는 있지만, 기본적인 프롬프트를 제외하고는 품질을 개선할 수 있는 방법이 제한적이었습니다. 비공개 미리 보기 기간 동안 코드 변경이 전혀 없는데도 제안 문서의 품질이 저하되는 것을 간혹 발견하기도 했습니다. 우리의 추측으로는 SaaS LLM 제공자가 특정 작업의 성능에 영향을 미치는 모델 업데이트를 배포한 것으로 짐작됩니다.
  2. 성능(처리량): SaaS LLM 제공자 별로 우리가 사용할 수 있는 API 할당량(API quota)이 제한되어 있었습니다. 우리는 수만개 고객과 함께 하고 있으며, 한 조직에 수백만 개의 테이블이 있는 경우도 드물지 않습니다. 처리량 quota를 따르면서 모든 테이블에 대한 문서를 생성하려면 시간이 너무 오래 걸립니다.
  3. 비용: 위와 연관된 문제로, 이 기능 사용에 대해 고객에게 요금을 부과하지 않는 한, 우리에게 비용 효율성의 문제가 있습니다.

다양한 고객들이 LLM 기반 애플리케이션을 개념 증명(proof-of-concept) 단계에서 프로덕션 단계로 전환하는 과정에서 비슷한 고민을 하는 것을 들었고, 그래서 우리와 비슷한 고객들을 위해 대안을 모색할 수 있는 좋은 기회라고 생각했습니다.

다양한 버전의 SaaS LLM을 실험해 보았지만 모두 동일한 문제를 안고 있었습니다. 지금 생각해보면 이는 놀라운 일이 아닙니다. SaaS LLM은 경이로운 엔지니어링 작품이지만, 테이블 생성부터 삶의 의미에 대한 대화에 이르기까지 모든 사용 사례를 다루어야 하는 매우 일반적인 모델입니다. 일반적이라는 것은 엄청나게 많은 매개변수가 필요하다는 것을 하며, 이 때문에 얼마나 빠르고 저렴하게 답을 낼 수 있는가 하는 측면에서는 한계가 있습니다. 다양한 사용 사례에 최적화하기 위해 LLM이 계속 진화함에 따라, 우리가 가진 특정 좁은 사용 사례에서는 오히려 퇴보하기도 합니다.

맞춤형 모델 만들기

앞서 언급한 문제를 풀기 위해 우리는 맞춤형 모델을 만들기 시작했습니다. 더 좋고, 더 빠르고, 더 저렴한 맞춤형 소형 LLM을 구축하는 데 엔지니어 2명의 팀이 한 달 걸렸습니다:

  • 품질: 우리의 평가로는(아래 참조), 이 모델은 더 저렴한 버전의 SaaS 모델보다 훨씬 우수하며, 더 비싼 버전의 SaaS 모델과 거의 동등한 수준입니다.
  • 성능(처리량): 맞춤형 모델은 훨씬 더 작기 때문에 A10 GPU에 맞출 수 있으며, 수평 확장을 통해 추론 처리량을 늘릴 수 있습니다. 또한 더 작은 GPU를 더 많이 사용할 수 있으므로 모든 테이블에 대한 설명을 더 빠르게 생성할 수 있습니다.
  • 비용: 모델을 미세 조정(fine-tuning run)할 때마다 몇 달러밖에 들지 않으며, 많은 실험을 수행했기 때문에 총 개발 비용은 1000달러 미만입니다. 또한 추론 비용도 10배나 절감되었습니다.

첫 번째 단계는 이를 응용 머신 러닝 문제로 취급하는 것이었습니다. "응용 머신 러닝"이 어렵고 복잡하게 들리지만, 다음과 같은 작업이 필요하다는 뜻입니다:

  • 초기 모델을 부트스트랩할 수 있도록, 훈련용 데이터셋(training datasets) 찾기 
  • 프로덕션에 배포하기 전에 품질을 측정할 수 있도록 평가 메커니즘 만들기
  • 모델을 훈련하고 선택
  • 실제 사용 지표들을 수집하여 프로덕션 환경에서 모델이 얼마나 잘 작동하는지 모니터링
  • 품질, 성능, 비용의 세 가지 측면을 지속적으로 개선하기 위해 모델 학습과 새로운 모델 배포를 반복

훈련용 데이터

이 미세 조정 작업을 위한 초기 학습 데이터셋은 서로 다른 두 가지 데이터 소스를 사용하여 만들었습니다:

  1. 북미산업분류체계(NAICS) 코드. 이는 미국 비즈니스 경제와 관련된 통계 데이터를 수집, 분석, 발표할 목적으로 연방 통계 기관에서 사업체를 분류하는 데 사용하는 공공 데이터셋입니다.
  2. 데이터브릭스의 내부 사용 사례 분류 큐레이션 데이터셋. 고객에게 모범 사례 아키텍처를 보여주기 위해 솔루션 아키텍트들이 만든 내부 데이터셋들입니다.

위의 사용 사례 데이터를 이용해 CREATE TABLE 문을 합성하여 다양한 테이블들을 생성한 다음, 다른 LLM을 사용하여 테이블 설명과 컬럼 주석을 포함한 샘플 응답을 생성했습니다. 이렇게 총 3,600여 개의 학습 예제를 생성했습니다. 

주목할 점은 모든 고객이 혜택을 누릴 수 있는 이 강력한 기능을 훈련하는 데 고객 데이터를 전혀 사용하지 않았다는 점입니다. 

부트스트랩 모델 평가

기능 출시 후에는 사용자가 제안을 수락하는 비율과 같은 프로덕션 지표들을 통해 모델의 품질을 측정할 수 있습니다. 하지만 기능을 출시하기 전에 SaaS LLM의 품질과 비교하여 모델의 품질을 평가할 수 있는 방법이 필요했습니다.

편견 없는 방식으로 평가하기 위해, 62개 테이블에 대해 두 비교 대상 모델이 각각 생성한 설명을 직원 4명이 평가하도록 간단한 이중 맹검 평가(double-blind evaluation) 프레임워크를 만들었습니다. 이후, 각 행에 입력을 표시하고 두 출력을 무작위 순서로 보여주는 시트를 생성했습니다. 평가자는 더 나은 샘플에 투표합니다 (동점을 줄 수도 있고요). 그런 다음 여러 평가자의 투표를 처리하여 보고서를 생성하고 각 평가자가 동의한 정도를 합산했습니다.

지금까지의 경험에 비추어 볼 때, 수십에서 수백 개의 데이터 포인트로 구성된 평가 데이터셋은 초기 이정표(milestone)로 충분하며, 이는 다른 사용 사례에도 일반화할 수 있습니다.

모델 선택과 미세 조정

모델 선택에는 다음 기준을 고려했습니다:

  • 라이선스가 상업적 사용을 지원하는지 여부
  • 텍스트 생성을 위한 모델의 성능(품질)
  • 모델의 속도

위 기준에 따라 우리의 LLM 가이드에서 볼 수 있듯이 MPT-7B와 Llama2-7B가 유력한 후보였습니다. MPT-30B와 Llama-2-13B와 같은 더 큰 모델도 고려했습니다. 결국 품질과 추론 성능의 조합이 가장 좋은 MPT-7B를 선택했습니다:

  • 이 작업을 위해 미세 조정된 MPT-7B와 Llama-2-7B 모델 간에는 품질에서 눈에 띄는 차이가 없었습니다.
  • 더 작은 7B 모델들도 미세 조정 후 이미 품질 기준을 충족하고 있었습니다. 더 저렴한 버전의 SaaS 모델보다 훨씬 좋았고, 더 비싼 버전과 거의 동등한 수준이었습니다.
  • 이 작업에 더 큰 모델을 사용할 경우 증가되는 서비스 비용을 정당화할 만한 이점은 아직 찾지 못했습니다.
  • 소형 모델의 응답 시간(latency)이 대형 모델보다 훨씬 더 좋으면서도 품질은 비슷했기 때문에 훨씬 더 빠른 제품 경험을 제공할 수 있었습니다.
  • 더 작은 모델은 더 쉽게 구할 수 있는 A10 GPU에 잘 맞으며 서빙에도 A10을 이용할 수 있습니다. 가용한 GPU가 많다는 것은 곧 작업의 추론 처리량이 더 높다는 것을 의미합니다.

약 3,600개의 예제에서 모델을 미세 조정하는 데 걸린 시간은 총 15분 정도에 불과했습니다!

MPT-7B를 모델로 선택했지만, LLM 환경은 빠르게 변화하고 있으며 오늘의 최고 모델이 내일도 최고 모델이 될 수는 없습니다. 따라서 우리는 이를 반복적이고 지속적인 프로세스라고 생각하고, 효율적이고 빠르게 평가할 수 있는 도구를 사용하는 데 집중하고 있습니다.

프로덕션 파이프라인의 주요 아키텍처 구성 요소

데이터브릭스 데이터 인텔리전스 플랫폼의 다음과 같은 주요 구성 요소를 활용하여 이 과정을 빠르게 구축할 수 있었습니다:

  • Databricks LLM finetuning.  모델 미세 조정을 위한 매우 간단한 인프라를 제공합니다. 우리는 훈련 데이터를 JSON 형식으로 준비했고, 한 줄의 CLI 명령으로 LLM을 미세 조정할 수 있었습니다.
  • Unity Catalog: 프로덕션에서 사용하는 모델은 Unity Catalog(UC)에 등록되어 데이터뿐만 아니라 모델에도 필요한 거버넌스를 제공합니다. 또한 종단간 계보(end-to-end lineage) 기능을 통해 모델에서 학습된 데이터셋까지 추적할 수 있습니다.
  • Delta Sharing: 이 기능을 사용하여 전 세계 모든 프로덕션 지역에 모델을 배포하여 더 빠르게 서비스를 제공할 수 있었습니다.
  • 데이터브릭스의 최적화된 LLM serving: 모델이 UC에 등록되면 새로운 최적화된 LLM 서빙을 사용하여 서빙할 수 있으며, 이는 기존 LLM 서빙에 비해 처리량과 지연 시간 개선 측면에서 상당한 성능 향상을 제공합니다.

비용

전체 프로젝트의 미세 조정 컴퓨팅 비용은 1000달러 미만이었습니다(각각의 미세 조정 실행 비용은 몇 달러에 불과했습니다). 그 결과 최종적으로 비용을 10배 이상 절감할 수 있었습니다. 비용 절감 효과가 큰 이유는 무엇일까요? 다음과 같은 점을 고려하면 놀라운 일이 아닙니다:

  • 앞서 언급했듯이 SaaS LLM은 일반 챗봇 역할을 포함하여 모든 사용 사례를 처리해야 합니다. 이러한 범용성은 매우 많은 수의 매개변수를 필요로 하며, 추론에도 상당한 컴퓨팅 비용이 발생합니다.
  • 보다 구체적인 작업을 위해 미세 조정하는 경우 훨씬 더 작은 프롬프트를 사용할 수 있습니다. 더 큰 범용 모델에는 입력이 무엇인지, 출력이 어떤 형태로 이루어져야 하는지에 대한 자세한 지침이 포함된 더 긴 프롬프트가 필요합니다. 미세 조정된 모델은 지침과 예상 구조를 모델 자체에 내장할 수 있습니다. 성능에 영향을 주지 않으면서 입력 토큰의 수를 절반 이상 줄일 수 있었습니다.
  • 추론 비용은 입력 및 출력 토큰의 수에 따라 늘어나며, 토큰당 요금이 부과되는 SaaS 서비스의 경우 비용은 선형적으로 증가합니다. 데이터브릭스의 LLM 서빙은 시간당 과금되는 프로비저닝된 처리량을 제공하여 일관된 지연 시간, 가동 시간 SLA, 자동 확장(autoscaling)을 제공합니다. 더 작은 LLM은 훨씬 저렴하고 가용성 높은 더 작은 GPU에 장착할 수 있고, 고도로 최적화된 런타임을 제공하기 때문에 비용을 크게 절감할 수 있습니다. 또한, 더 작은 LLM은 더 빠르게 확장 및 축소되므로 수요의 피크에 맞춰 빠르게 확장하고 공격적으로 대응할 수 있습니다.

결론

잘 문서화된 데이터를 보유하는 것은 모든 데이터 사용자에게 매우 중요하며, AI 기반 데이터 플랫폼(데이터 인텔리전스라고 부르는)을 강화하기 위해 그 중요성이 날로 커지고 있습니다. 이 새로운 GenAI 기능의 프로토타이핑을 위해 SaaS LLM으로 시작했지만 품질, 성능, 비용에 대한 문제에 부딪혔습니다. 우리는 동일한 작업을 더 나은 품질로 수행하면서도 수평 확장(scale-out)을 통해 처리량을 늘리고 비용을 10배 절감할 수 있는 맞춤형 모델을 구축했습니다. 핵심을 요약하면 다음과 같습니다:

  • 엔지니어 2명
  • 1달
  • 학습과 실험을 위한 컴퓨팅 비용 1000달러 미만
  • 합성으로 생성된 3600개의 예제를 MPT-7B에서 15분 이내에 미세 조정
  • 4명의 인간 평가자, 62개의 초기 평가 예제

이 경험은 특정 작업을 위한 맞춤형 LLM을 개발 및 배포하는 것이 얼마나 쉬운지 보여줍니다. 이 모델은 현재 아마존 웹 서비스와 구글 클라우드의 데이터브릭스에 탑재되어 있으며, 데이터브릭스 플랫폼에서 대부분의 데이터 주석 강화에 사용되고 있습니다.

Databricks 무료로 시작하기

관련 포스트

모든 엔지니어링 블로그 포스트 보기