Jump to content

튜닝, 가능성의 한계를 넘다


CLOVA Studio 관리자2
 Share

Recommended Posts

성능 끌어 올리기
 
클로바 스튜디오에서는 프롬프트 작업을   실행하는 것에서 그치는 것이 아니라 개발 프로세스상에서 수정과 검증을 반복하는 과정을 거쳐야 합니다.
차수별로 생성 결과에 대해서 품질을 평가하며 60~70 수준의 성능까지 끌어올릴  있도록 합니다.  과정을 통해 최적화된 프롬프트를 완성하는 것이죠.
우리는 이것을 프롬프트 엔지니어링이라고 부릅니다.
 
p-6-1.thumb.png.c02664c713f1097a553ba437bfa435fd.png
 
하지만 플레이그라운드에서 작업을 하다 보면 원하는 결과가 나오지 않는 상황에 직면하게 됩니다.
아무리 파라미터 조절을 하고 프롬프트를 수정해도 기대하던 결과와 다르게 나오는 것이죠.
기본 모델(Backbone model)로는 성능 개선의 한계에 도달했기 때문입니다.
 
클로바 스튜디오는 이런 문제들을 해결할 방법을 가지고 있습니다.
바로 튜닝이죠. 사용자가 보유한 데이터셋을 가지고 모델을 최적화시킬  있습니다.
 
▼ 튜닝을 활용하면 작업 성능이 오르지 않던 정체 구간에서, 성능을 끌어올릴  있습니다.
 
p-6-2.thumb.png.f0d5a8fe64c9cd6cba582b702fda1bdf.png
 
저는 오늘 여러분께 프롬프트로 잘 안되던 작업을 튜닝해서 가능해지도록 한 사례를 공유해 드리려고 합니다.
 
em_1.png.a29a191f571d561a29e8b7f048fdfc60.png
 
 클로바 스튜디오에서는 맞춤법 교정기를 쉽게 만들  있는데요. 여타 맞춤법 서비스와 비교를 했을  성능도  괜찮은 편입니다.
 
p-6-3.thumb.png.180b5976c8870ef90c5ac6ef4831452f.png
 
하지만 저는 다른 형식으로 출력되기를 희망했습니다. 
 문장에서 교정이 필요한 단어를 추출한 , 화살표(→) 표기를 가지고 수정된 단어를 보여주는 형식을 원했습니다.
 
p-6-4.thumb.png.821af4d50daef5af78aa526eada08269.png
 
▼ 그렇지만 실행 결과가 좋지 않았습니다. 틀리지 않은 단어를 수정하거나, 다른 단어로 대치시켜버리는 등의 문제가 있었습니다.
 
p-6-5.thumb.png.063da7a2a2000e5916855100038c2a60.png
 
em_2.png.4f500af3004b082299c2709f0ce885ad.png
 
여기서 저는 한 가지 의문을 품게 되었습니다.
오류 문장을 교정된 문장으로 변환하는 방식은 잘 되는데, 어째서 오류 문장을 {단어} → {단어 교정} 형태로는 잘 안되는 것일까요?
이 문제를 해결하기 위해 튜닝 기능을 사용해봤습니다.
그럼 지금부터, 좋은 결과를 내지 못했던 작업을, 좋은 결과를 낼 수 있는 작업으로 개선했던 사례를 공유하겠습니다.
 
em_3.png.12c6b7ecfec25102dc8e45a5d1428459.png
 
 
튜닝, 꼭 해야 해요?
 
① 현재 플레이그라운드에는 2048 토큰이라는 제약 조건이 있는데요튜닝을 이용하면 이러한 제약 조건 없이 예제를 더욱 다양하게 구성할  있습니다.
② 원하는 방식으로 데이터셋을 구성하여, 니즈에 적합한 방향으로 출력이   있도록   있습니다.
③ 모델을 학습하면, 모델이 가벼워지며 Task 수행 시간 단축되고 비용을 절감할  있습니다.
 
 
데이터셋을 모으는 
 
튜닝을 시작하기에 앞서 가장 중요한 것이 바로 데이터셋입니다.
데이터셋을 이미 보유하고 있다면 괜찮으나, 데이터셋이 없는 경우 데이터를 확보하는 데에 시간이 오래 걸릴  있습니다.
튜닝으로 좋은 성능을 내려면 최소 1,000 이상의 데이터가 필요하기 때문이죠.
 
① 맞춤법 데이터는 어디서 모았나요?
네이버 국어사전 퀴즈, 네이버 국어사전 우리말 바로쓰기, 국립국어원 온라인 가나다, 모두의 말뭉치, 외에도 인터넷상에서 수집한 자주 틀리는 맞춤법 자료들을 참고하여 수동으로 하나씩 직접 작성했습니다.
 
② 1,000개 데이터를 모으는 데 얼마나 걸렸나요?
개인당 작업 분량에는 다소 차이가 있으나, 4명이 참여했으며 데이터셋 1,200개만큼 모으는 데에 8~9 정도 소요되었습니다. 다만, 맞춤법의 경우 대부분 정답이 명확히 있기 때문에 다른 유형의 작업보다는 수월한 편일 듯합니다. 반면에 중복되지 않은 새로운 데이터를 구하는 것은 힘들었습니다.
 
 데이터를 쉽게 불릴 방법은 없을까요?
적은 데이터를 가지고 수 배의 데이터로 늘릴 수 있는 ‘데이터 확장(Data Augmentation)’ 기능을 곧 공개합니다.
 
p-6-6.thumb.png.5e04e5e3dd34b31bf7592adea29b6278.png
 
④ 데이터셋을 구할 수 있는 곳이 있나요?
현재 여러 기관에서 데이터를 개방하여 모두가 쉽게 용이하게 활용할 수 있도록 하고 있습니다.
단, 실서비스 제공을 위해서는 별도 약관 확인 및 법무 검토가 필요할 수 있습니다.
 

 

본격! 튜닝 시작하기
 
데이터셋은 csv 혹은 json 형식을 지원합니다. 파일의 첫 번째 행은 Text, Completion이 포함되어 있어야 하며, 총 두 개의 열로만 구성되어야 합니다.
 
▼ Text 열에는 맞춤법이 틀린 문장을 넣고, Completion 열은 {단어} → {단어 교정} 형태로 구성했습니다.
 
p-6-7.thumb.png.50b5f6f39ffb1671f93e76dab66dde2c.png
 
 
▼ 모델 엔진 선택합니다.
p-6-8-2.thumb.png.3915a5979a0ae7918e529122d0233fd5.png
 
자세한 튜닝에 대한 가이드는 다음 링크에서 확인하실 수 있어요. (가이드 보기)
 
 튜닝 학습이 완료되면 상세 페이지에서 인퍼런스 테스트를   있습니다. 입력하면 학습된 모델로 출력한 결과를 확인할  있지요.
 
p-6-9.thumb.png.4b5b20603ec9c6ae516e243a9f21bc88.png
 
자, 이제 결과를 살펴볼까요!
 
 문장을 입력하면 {단어} → {단어 교정} 형태로 맞춤법을 교정해주고 있습니다.
 
p-6-10.thumb.png.7847e16a2b6d18eb947fe80531ab9927.png
 
em_4.png.897f3909dc15c5c08dd3d17af16f3e1c.png
 
 간단한 띄어쓰기를 고쳐주기도 하고요.
 
p-6-11.thumb.png.c94e30485aa82b7ff0e478aac2b1c6a2.png
 
 오타를 찾아서 교정합니다.
 
p-6-12.thumb.png.566f19eb39d6470ad50a75f7e67a5b48.png
 
▼ 문장을 조금 바꾸어 입력해도 맞춤법을 교정해주는 것을 확인할  있습니다.
 
p-6-13.thumb.png.29c48fb2afb259e7b5b24a683d6934e9.png
 
  가지 알아둘 점은 현재 튜닝은 아래와 같은 인퍼런스 파라미터를 기본으로 하고 있는데요.
파라미터 조절로도 출력 결과에 차이가 있어서, 테스트  발행을 통해 설정값 조절을 하는 것을 해보는 것도 추천합니다.
향후 플레이그라운드에서도 튜닝 모델을 불러와서 사용하실  있게 개선할 예정입니다.
 
p-6-14.thumb.png.e74ccc5d9a82dfaff1f3c30538f7df7a.png
 
 
튜닝의 성능을 검증하기
 
이제 튜닝된 모델의 결과를 검증해볼 시간입니다. 기존 프롬프트의 작업과 튜닝의 작업을 비교해볼까요?
문장 50개를 가지고 대략적인 차이를 비교해 보았습니다. ① 단어 추출 교정 프롬프트는 정답이 17개지만, ② 튜닝된 모델의 정답은 2배인 34개입니다.
원래  되던  문장 변환 프롬프트의 정답이 31개인  보면, 기존에 아예 안되던 프롬프트가 튜닝을 통해서  되던 프롬프트에 버금가거나 상회할 정도로 개선되었다고   있습니다.
 
p-6-15.thumb.png.b05aaa184b5be83f319a5f389eaa8023.png
 
여전히 오답을 내는 경우도 있었습니다.  부분은 데이터 보강, 인퍼런스 파라미터 조정 등을 통해 일부 개선할  있을 것이라 예상합니다.
 
 
마치며,
 
저는 이번 사례를 통해서 깨닫게  점이 있습니다 안되는 프롬프트를 튜닝하는 것은 비효율적일  있다는 것입니다.
시간을 들여 데이터셋을 만들  안되던 형식으로 튜닝을 진행해봤자,   줄로 이루어진 최적의 프롬프트와 성능이 비슷할  있는 것입니다. 
 
p-6-16.thumb.png.df2c5ee466c1a09aec6e3e329e0c05db.png
 
그래서 효율적인 프롬프트를 먼저 탐구해보는 것이 결과적으로는 시간과 비용을 절약해줄  있으리라 생각합니다.
 동작하는 프롬프트를 튜닝하면 성능이 월등히 좋아지지 않을까요?
 
em_5.png.2e061cad076a7ed5a3cee68fb8342d0b.png
 
이만 내용을 마치며, 다음에는 더욱 재미있는 내용으로 찾아올게요.
 
링크 복사
다른 사이트에 공유하기

게시글 및 댓글을 작성하려면 로그인 해주세요.



로그인
 Share

×
×
  • Create New...