Jump to content

GPT3 3편) HyperCLOVA(한국어 GPT3), CLOVA Studio 사용후기


고우영
 Share

Recommended Posts

 

안녕하세요 자연어처리를 연구하고 있는 고우영입니다. 최근 네이버에서 한국어 초대규모 AI HyperCLOVA 언어모델을 개발하여 직접 사용해보면서 인공지능의 가능성과 한계를 체험해보고자 네이버 HyperCLOVA 에반젤리스트로 지원하여 크로버 스튜디오 클로즈 베타에 참여했습니다. 오늘은 한국어 초대규모 AI HyperCLOVA의  언어모델을 활용할 수 있는  No Code AI 도구인 CLOVA Studio 사용후기를 공유합니다.

 

0. GPT3 관련 지난 글
- GPT3 1편) GPT3 이론 파헤치기: https://keep-steady.tistory.com/52

- GPT3 2편) OpenAI API로 chatbot을 만들어보자: https://keep-steady.tistory.com/51

 

1. 한국어 GPT3, HyperCLOVA

 

image.png.7e9a6003266dea2a0fdae71f42f79394.png

 

HyperCLOVA는 한국어 뉴스 50년 치, 네이버 블로그 9년 치로 구성한 한국어 코퍼스로 학습했습니다. 5,600억 토큰 규모인데, BERT 학습데이터인 33억 단어와 비교하면 대략 100배(토큰과 단어는 다른 단위이므로) 이상의 많은 데이터로 학습했습니다. 개인적인 실험에서 33억 단어는 대략 20G의 텍스트 파일로 구성되는데 학습데이터 텍스트 파일만 대략 20TB 정도 되겠네요. 와..

 

image.png.ff7c57a0c539672f757ed340fa4c271b.png

 

- HyperCLOVA Demo (CLOSED BETA 기간으로써, 신청 및 승인자들만 사용 가능)
     - Demo site: https://clovastudio.ncloud.com/playground/

 

HyperCLOVA는 위 사이트에서 사용할 수 있습니다. 한국어 GPT3를 체험할 수 있는 플레이그라운드입니다. 위 사이트에서 '플레이그라운드'를 들어가면 아래와 같은 화면이 표시됩니다.

왼쪽 파라미터 창에서 GPT 추론 시 필요한 파라미터를 쉽게 설정할 수 있습니다. 가운데 에디터에 텍스트 입력을 통해 Auto-Regressive로 다음 단어를 생성할 수 있습니다. 파라미터 창의 Maximum tokens은 생성할 token 개수입니다. 최대 2048 token까지 생성 가능합니다. 이때 token은 단어가 아닌 subword입니다. TopK, Temperature는 다음 단어 생성 시 어떻게 샘플링할 것인가에 대한 파라미터입니다. 반복되는 token에 penalty를 부과하므로 이미 생성된 token은 피해 생성하도록 하는 파라미터입니다.

 

image.png.8a486c7910cfce058e25022954f0db32.png

 

왼쪽 설정과 가운데에 텍스트를 입력하면 텍스트가 생성됩니다. 우선 오른쪽 위 ‘불러오기’를 통해 예시를 참고할 수 있습니다. 위 그림과 같이 CLOVA에서 미리 다양한 예시를 만들어서 제공합니다. 이 중 내가 하고자 하는 task와 비슷한 예시를 골라 참고합니다. 우선 자연어처리의 가장 기본인 텍스트 분류를 실습해보겠습니다.

 

image.png.570c58ed283665ed39071f81e4cdb4d9.png

 

2. HyperCLOVA 실습
2.1. 텍스트 분류
기존 자연어처리 task에서는 텍스트 분류 모델을 만들기 위해선 많은 데이터와 label을 수집하여 fine-tuning 해야 했습니다.

하지만 HyperCLOVA와 같은 거대 언어모델은 몇 개의 데이터만으로 가이드를 주면 few-shot learning이 가능합니다. 예를 들어 아래 예시는 6개의 예시를 들은 6-shot learning이다. ‘문장: “기분 진짜 좋다”’로 입력 데이터를, ‘감정: 긍정’으로 입력 문장의 label을 명시하는 형식으로 데이터셋을 구성할 수 있습니다. 아래 그림처럼 파라미터와 에디터에 텍스트를 입력한 후 오른쪽 위 ‘실행’ 버튼을 누르면 다음 텍스트가 생성됩니다.

 

image.png.2c81560fd20e54cae1617f6d47165fe5.png

 

image.thumb.png.0dc0a189aca8007035357b73b63f6735.png

 

위 그림은 생성된 결과입니다.  6개의 데이터와 label 쌍을 주어주는 6-shots learning 정도만 입력으로 주어도 문장을 잘 분류하는 것을 확인할 수 있습니다. 심지어 문장 분류뿐만 아니라 유사한 문장과 감정을 생성하 주기도 합니다.

아래 예시는 1-shot과 2-shot의 예시입니다. 한 개의 예시 데이터만 주어졌음에도 불구하고 “아오 진짜 짜증나게 하네”라는 문장을 “부정”으로 잘 분류하는 것을 확인할 수 있습니다. 2-shot의 예시에서는 긍정, 부정 한 개씩 데이터를 주었을 때, “이걸로 보내드릴게요” 문장을 “중립”으로 분류합니다. 이는 입력 데이터에서 등장하지 않았던 class입니다.

 

1-shot

문장: "기분 진짜 좋다"

감정: 긍정

###

문장: "아오 진짜 짜증나게 하네"

감정: 부정

 

2-shot

문장: "기분 진짜 좋다"

감정: 긍정

###

문장: "아오 진짜 짜증나게 하네"

감정: 부정

###

문장: "이걸로 보내드릴게요"

감정: 중립

 

 

2.2. 요약

 

image.png.fd6f856a78fd658cfe94c525bdb3c270.png

 

텍스트 생성 문제는 자연어처리에서 매우 어려운 task입니다. Seq2seq 모델을 이용하여야 하고, 최소 2만 개 이상의 병렬 데이터셋이 필요합니다. 그런데 HyperCLOVA는 단 2개의 원문-요약문 데이터를 보여줬음에도 불과하고 원문 요약을 아주 잘한 것을 확인했습니다. 요약문: “금융보안에 대한 불안을 원칙적으로 해소할 수 있는 서비스가 나옴씽크폴은 SK텔레콤, KT, LG유플러스 등 통신사와 함께 아이디 패스워드 도용 방지 시스템 막바지 테스트를 진행하고 있다고 밝혔음아이디나 패스워드, 계좌번호, 비밀번호를 해킹당해도 해킹의 가능성이 있는 불법로그인이나 출금”

사실 꼼꼼히 읽어보면 띄어쓰기가 틀리거나 ‘.’이 생략되기도 하였고 살짝 말이 안 되는 부분이 있습니다. 하지만 이 정도는 Seq2seq 모델로 많은 데이터셋을 학습시켰을 때도 나타나는 현상입니다. 2-shots learning 만으로도 본문의 내용을 요약하는 텍스트를 잘 생성하는 것이 신기하네요.

 

2.3. 번역
번역 task 역시 seq2seq 모델에 병렬 데이터셋 백만 문장 쌍 정도로 학습해야 안 좋은 번역기 수준의 모델을 만들 수 있습니다. 하지만 HyperCLOVA는 1-shot learning 만으로도 완벽한 번역을 실행했습니다. 하지만 상황에 따라서는 1개 문장만으로 번역이 완벽하지 않을 수도 있습니다. 정확도를 높이기 위해서는 2번 이상의 학습을(2-shots Learning) 권장합니다.

아래 예시는 1~4 shot learning의 예시입니다. Src 문장을 완벽하게 번역하고, 이를 넘어서서 유사한 src 문장을 생성합니다. 그리고 또 생성된 src 문장을 번역하는 것을 확인할 수 있습니다. 즉 이를 이용하여 소수 번역 병렬 데이터셋으로 번역 모델을 만드는 경우 data augmentation으로 활용하기에 적절할 거 같습니다.

 

2.3.1. 1-shot
번역을 위해 source와 target 문장 쌍을 딱 한 개만 주어주는 1-shot learning을 해보았습니다. 딱 한 개의 데이터만 보여줬는데도 불구하고 번역모델이 만들어졌고, 입력 데이터와 비슷한 문장과, 그에 해당하는 번역문이 생성되어 신기했습니다. 딱 한 예시만 보여줘도 이렇게 잘한다고??

 

image.png.246cb7f2cc564facc7c9691e72ef9624.png

 

2.3.2. 2-shot
1-shot으로도 잘되니 2-shot도 잘됐습니다. 오오

 

image.png.67aeacde025ef8286258ddb2beb0a908.png

 

2.3.3. 3-shot
3-shot으로 해보니 역시 잘됩니다. 번역 품질도 좋습니다. 어떻게 번역 관련 학습을 한 게 아닌대도 이렇게 좋은 번역이 될까요. HyperCLOVA는 저보다 훨씬 똑똑한 거 같아요 ㅎ

 

image.png.7076fb1bce3c9f3c7abe82a419e29892.png

 

2.3.4. 4-shot
4-shot의 결과입니다. HyperCLOVA로 번역을 해보며 느낀 건 생성된 번역데이터도 의미 있지만, 그 뒤에 비슷한 src와 tgt의 문장 쌍이 생성됩니다. 이를 통해서 번역모델을 개발하기 위한 데이터 증강(augmentation)에 사용하면 적은 데이터를 많이 늘리는데 유용하게 쓰일 수 있을 거 같습니다.

 

image.thumb.png.a35631d63acac6a7e21db791d9502589.png

 

2.4. 챗봇
마지막으로 상황문을 주어주고, 챗봇 질문과 답변을 생성하는 모델 예시입니다. 우선 행사에 대한 자세한 정보를 입력한 후, 챗봇 사용자가 질문을 하면 CLOVA가 상황문을 기반으로 답변하는 답변문을 생성하는 것이 목적입니다. 아래 예시를 보면 2개의 사용자와 CLOVA의 질의응답인 2-shots learning만으로도 사용자의 “사전등록은 언제야?”라는 질문에 대한 답변을 “5월 11일부터 5월 25일 오후 1시 30분까지 진행될 예정이야”라고 완벽하게 답변하는 것을 확인할 수 있습니다. 또 이에 멈추지 않고 상황문을 기반으로 사용자들이 질문할 수 있는 질문거리를 생성하고, 이에 대한 답변 역시 생성합니다.

 

image.png.eed0547b56f4e63803343237add857bc.png

 

3. Conclusion
 

HyperCLOVA를 이용하여 문장 분류, 요약, 번역, 챗봇 task를 few-shot learning으로 아주 손쉽게 구현했습니다. 플레이그라운드에 예시도 잘되어있어서 누구든 편하고 쉽게, 그리고 엄청난 인공지능 언어모델 성능을 구현할 수 있습니다!!!

추가로 few-shots learning을 이용하면, 기존에 많은 데이터로 fine-tuning을 해야 얻을 수 있었던 모델을 아주 손쉽게 2~3개의 데이터로 만들 수 있습니다. 그리고 각 task에 대해선 task별 fine-tuning이 필요했지만 HyperCLOVA는 범용 거대 언어모델에 prompt를 어떻게 주는지 만으로도 좋은 모델을 즉각적으로 만들 수 있었습니다. 사용자가 prompt를 어떻게 생성하느냐에 따라 무궁무진하게 다양한 애플리케이션으로 사용될 수 있습니다.

근 몇 달간 HyperCLOVA 에반젤리스트로 활동하면서 한국어 GPT3의 강력함을 경험해봤습니다. GPT3 논문에서 '데이터? 이제 많이 필요 없어. 데이터 몇 개만 넣으면 few-shot learning으로 어떤 task고 다 가능해!!'라는 말이 믿어지지가 않았습니다. 그런데 HyperCLOVA에서 돌려보니 아주 쉽게 2분 만에 정말로 가능하네요.

또 이런 거대 언어 모델은 모델이 너무 커서 일반 GPU로는 사용이 불가능합니다. 보유한 GPU 메모리에 모델이 안 올라갑니다. 그런데 HyperCLOVA를 이용하면 GPU 없이도 똑똑한 인공지능 모델을 뚝딱뚝딱 만들 수 있네요^^

 

 

링크 복사
다른 사이트에 공유하기

고우영님. Few Shot Learning에 대한 상세한 설명까지 감사합니다.

많은 분들이 참고하실 수 있도록 Few Shot Leaning에 대한 영문 논문도 아래에 링크를 공유 합니다.
Language Models are Few-Shot LearnersSubmitted on 28 May 2020 (v1), last revised 22 Jul 2020 (this version, v4)]
Learning from Few Examples: A Summary of Approaches to Few-Shot Learning[Submitted on 7 Mar 2022]

고우영님께서 결론에 적어주신 것처럼, Large Language Model의 구축 및 운영을 하기 위해서는 어마어마한 GPU와 정제된 Data가 기본적으로 필요합니다.
허나, HyperCLOVA을 통해서 많은 분들이 활용하실 수 있도록 플랫폼으로 만들어두었으니, CLOVA STUDIO을 통해서 쉽게 접근, 테스트, 활용이 가능합니다. *^^*

링크 복사
다른 사이트에 공유하기

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



로그인
 Share

×
×
  • Create New...