NEW TECH/AI

GPT-3 사용법(Colab) 및 시조 창작하기

김쿸후 2021. 2. 15. 13:48

GPT -3 란? 

GPT -3란 open AI 사에서 개발한 인공지능 모델로,

무려 3000억 개의 데이터 셋으로 학습을 하였으며 1750개의 매개변수를 가지고 있다. 

지금까지 현존하는 AI모델 중 가장 인공 일반 지능(General Intelligence)에 가장 가깝다고 한다. 

언어 인공지능으로 알려졌지만 지금까지 내가 체험해본 바로는 언어 뿐만이 아니라 그림, 코딩 등등 못하는 게 없다.. 

 

내가 생각하는 GPT -3 특징

1. 빅데이터 학습이 필요없다. (이미 방대한 데이터가 학습된 상태)

  •   예제 몇개만 넣어주면 눈치껏 이후 답을 내놓는다. 

 

2. 한국어 패치가 굉장히 잘돼 있다.

  •  한국어 학습이 따로 필요 없다.

 

GPT -3 사용법

1. openai 설치

코랩을 켜고 다음과 같은 명령어로 openai를 설치한다. 

!pip install openai
import json
import openai

 

2. openai 시크릿 키 입력

시크릿 키는 openAI 홈페이지에서 발급받을 수 있다.

링크는 여기 > share.hsforms.com/1Lfc7WtPLRk2ppXhPjcYY-A4sk30

wait list에 이름을 넣고 기다리면 베타 유저 선정이 될 경우, 연락이 온다. 

한 이주 기다려보고 연락 안 오면 다시 넣는 걸 추천! 나는 일주일 만에 왔다. 

 

https://share.hsforms.com/1Lfc7WtPLRk2ppXhPjcYY-A4sk30

 

share.hsforms.com

openai.api_key = "sk-ENTERYOURSECRETKEY"
response = openai.Completion.create(engine="davinci", prompt="This is a test", max_tokens=5)

 

3. gpt-3 sandbox 설치

깃 링크로 들어가서 클론 받으면 된다.

깃 링크 > github.com/shreyashankar/gpt3-sandbox

 

shreyashankar/gpt3-sandbox

The goal of this project is to enable users to create cool web demos using the newly released OpenAI GPT-3 API with just a few lines of Python. - shreyashankar/gpt3-sandbox

github.com

클론 받은 후 해당 폴더로 이동한다.(cd)

!git clone https://github.com/shreyashankar/gpt3-sandbox.git
cd gpt3-sandbox

 

4. api requirements 다운

!pip install -r api/requirements.txt

 

5. 설치한 것들 불러온 다음 원하는 걸 하면 된다! 

from api import GPT, Example, set_openai_key
gpt = GPT(engine="davinci",
          temperature=0.4,
          max_tokens=60)

 

6. 예제 넣기 

예제 넣는 함수 : add_example(Example('input value' , 'output value'))

내가 원하는 input : prompt

gpt가 출력한 아웃풋 : submit_request(prompt)

gpt.add_example(Example('Thank John for the book.',
                        'Dear John, Thank you so much for the book. I really appreciate it. I hope to hang out soon. Your friend, Sarah.'))

gpt.add_example(Example('Tell TechCorp I appreciate the great service.',
                        'To Whom it May Concern, I want you to know that I appreciate the great service at TechCorp. The staff is outstanding and I enjoy every visit. Sincerely, Bill Johnson'))

gpt.add_example(Example('Invoice Kelly Watkins $500 for design consultation.',
                        'Dear Ms. Watkins, This is my invoice for $500 for design consultation. It was a pleasure to work with you. Sincerely, Emily Fields'))

gpt.add_example(Example('Invite Amanda and Paul to the company event Friday night.',
                        'Dear Amanda and Paul, I hope this finds you doing well. I want to invite you to our company event on Friday night. It will be a great opportunity for networking and there will be food and drinks. Should be fun. Best, Ryan'))

prompt = "Tell Yujin politely that please do not eat beef all"
output = gpt.submit_request(prompt)
output

 

6.1 한국어 예제 출력

output.choices[0]['text']

 

7. temperature 변경하기

temperature은 ai의 창작 도로 0은 창작이 없는 상태 1은 100% 창작의 상태를 말한다 (느낌상,,,ㅋㅋ)

gpt = GPT(temperature=0.8, max_tokens=200)

 

GPT -3로 시조 창작하기

나는 언어 인공지능 인 gpt3의 한계를 바로 시험해보고자 ㅎㅎ 시조를 창작해봤다. 

gpt = GPT(temperature=0.3, max_tokens=200)

gpt.add_example(Example(
    "한산섬 달 밝은 밤에",
    "한산섬 달 밝은 밤에 수루에 혼자 앉아\n\
큰 칼 옆에 차고 깊은 시름 하는 적에\n\
어디서 일성호가는 남의 애를 끊나니"))

gpt.add_example(Example(
    "철령 높은 봉에",
    "철령 높은 봉에 쉬어 넘는 저 구름아\n\
고신원루를 비 삼아 뛰워다가\n\
임 계신 구중심처에 뿌려 본들 어떠리"))

gpt.add_example(Example(
    "세상 사람들이",
    "세상 사람들이 입들만 성하여서\n\
제 허물 전혀 잊고 남의 흉 보는 괴야\n\
남의 흉 보거라 말고 제 허물을 고치고저"))

gpt.add_example(Example(
    "심산에 밤이 드니",
    "심산에 밤이 드니 북풍이 더욱 차다\n\
옥루고처에도 이 바람 부는 게오\n\
긴밤에 치우신가 북두 비겨 바래로다"))
gpt.add_example(Example(
    "동창이 밝았느냐",
    "동창이 밝았느냐 노고지리 우지진다\n\
소치는 아이는 상기 아니 일었느냐\n\
재 너머 사래 긴 밭을 언제 갈려 하느니"))

gpt.add_example(Example(
    "오늘도 다 새거다 ",
    "오늘도 다 새거다 호미 메고 가자스라\n\
내 논 다 매어든 네 논 좀 매어주마\n\
올 길에 뽕 따다가 누에 먹여 보자스라"))

gpt.add_example(Example(
    "이고 진 저 늙은이 짐 벗어 나를 주오",
    "이고 진 저 늙은이 짐 벗어 나를 주오\n\
나는 젊었거니 돌이라 무거울까\n\
늙기도 설워라커든 짐을 조차 지실까"))

gpt.add_example(Example(
    "지당에 비 뿌리고",
    "지당에 비 뿌리고 양류에 내 끼인 제\n\
사공은 어디 가고 빈 배만 매었는고\n\
석양에 짝 잃은 갈매기만 오락가락 하노라"))

prompt = "사랑이 사랑인지라"
output = gpt.submit_request(prompt)
output.choices[0]['text']

결과는?!

output: 사랑이 사랑인지라 그러니 내가 너를 사랑하는 것이
아니라는 것이 아니라는 것이 내가 너를 사랑하는 것이

temperature을 0.3으로 낮게 주었더니, 제시어로 주었던 example이 반복되어 출력되었다,

하지만 한국어 input의 음률을 맞추려고 한 의도가 보여 상당히 흥미로웠다. 

앞으로 머신(현재는 Davinci)과 temperature 등을 변경해서 유의미한 데이터가 나올 때까지 돌려볼 예정이다. 

 

 

더 자세한 결과가 궁금하다면?

github.com/gimkuku/GPT3-colab/blob/main/%EC%8B%9C%EC%A1%B0%EC%B0%BD%EC%9E%91.ipynb


 

이 글을 본 많은 한국인 gpt -3 유저들도 도움이 되었으면 좋겠다:)

모두 모두 유의미한 데이터가 나오길 바란다! 

 

질문은 댓글로 해주시면 아는 한 성심성의껏 답글 달아드리겠습니다!