이 글은 최근 큰 이슈가 되고 있는 자연어 처리 인공지능 모델인 OpenAI 기반 GPT3, BERT 설치 사용 방법을 간략히 나눔해 본다.
GPT3 installation
GPT 개념
GPT-3(Generative Pre-trained Transformer 3)은 OpenAI의 최신 언어 모델이다. 하나의 문장 뒤에 오는 문장을 예측하거나, 하나의 언어에서 다른 언어를 번역할 수 있다.
GPT-3는 매우 큰 텍스트 데이터에서 훈련된 언어 모델이다. 작동은 간단하다. 텍스트를 제공하면 모델이 비슷한 스타일과 구조에 따라 문장을 생성합니다. 이를 이용해 챗봇 같은 것을 쉽게 개발할 수 있다. 다른 다양한 데모는 여기(예제)를 참고하라.
설치
코딩은 Python 만 필요하다. 그러나 앱을 실행하려면 다음이 필요하다.
- OpenAI API key(여기서 신청. 비공개 베타 테스트 프로그램에 참가해야 함)
- Python 3.6 이상
- yarn
먼저 베타 테스트를 신청해 키값을 얻는다.
github에 있는 GPT3-Sandbox를 다운로드한다. 그리고, 다음을 실행한다.
1. 가상환경 생성
python -m venv $ENV_NAME
2. 가상환경 활성화
source $ENV_NAME/bin/activate
3. 설치
pip install -r api/requirements.txt
다음과 같은 패키지 디펜던시 에러 발생 시 requirements.txt의 해당 패키지 버전을 낮추어 재실행해본다.
4. 보안키 추가
openai.cfg 파일을 생성하고 OPENAI_KEY=$YOUR_SECRET_KEY 를 파일 내에 추가함. $YOUR_SECRET_KEY 는 'sk-somerandomcharacters' 처럼 되어 있음. 참고로, 키가 제대로 설정되어 있지 않으면, 예제 실행 시 다음과 같은 에러가 발생함.
5. 환경 변수 설정
아래와 같이 환경변수openai.cfg 위치를 설정한다.
export OPENAI_CONFIG=/path/to/config/openai.cfg
6. Yarn 설치
yarn install
이제 설치가 끝나면 다음과 같이 예제를 테스트해본다.
python examples/run_latex_app.py
실행 결과는 다음과 같다.
관련 예제 사용은 여기서 방법을 확인할 수 있다.
간단한 예시
Python으로 OpenAI GPT-3 API를 사용하여 웹 데모를 만들어 본다. 이 예는 영어를 계산, 수식, LaTeX로 변환하기 위한 GPT 적용 예시이다. 다음과 같이 간단히 Example(Input, Output) 형식으로 예시를 만들어 주면, 비슷한 Input example에 유사한 Output을 대답해준다.
# Construct GPT object and show some examples
gpt = GPT(engine="davinci",
temperature=0.5,
max_tokens=100)
gpt.add_example(Example('Two plus two equals four', '2 + 2 = 4'))
gpt.add_example(Example('The integral from zero to infinity', '\\int_0^{\\infty}'))
gpt.add_example(Example('The gradient of x squared plus two times x with respect to x', '\\nabla_x x^2 + 2x'))
gpt.add_example(Example('The log of two times x', '\\log{2x}'))
gpt.add_example(Example('x squared plus y squared plus equals z squared', 'x^2 + y^2 = z^2'))
# Define UI configuration
config = UIConfig(description="Text to equation",
button_text="Translate",
placeholder="x squared plus 2 times x")
demo_web_app(gpt, config)
이 코드를 python 스크립트로 실행하면, 새로운 입출력을 테스트할 수 있는 웹 앱이 자동으로 시작된다. 참고로, examples 디렉토리에는 이미 3 개의 예제 스크립트가 있다.
아래는 매우 간단한 사칙연산을 학습하는 예이다. 최소한의 예시로 계산기 모델을 제공한다.
# add some calculation examples
gpt.add_example(Example("add 3+5", "8"))
gpt.add_example(Example("add 8+5", "13"))
gpt.add_example(Example("add 50+25", "75"))
다음은 자연어를 SQL 언어로 변환하는 예이다.
# Example
gpt.add_example(Example('Fetch unique values of DEPARTMENT from Worker table.',
'Select distinct DEPARTMENT from Worker;'))
gpt.add_example(Example('Print the first three characters of FIRST_NAME from Worker table.',
'Select substring(FIRST_NAME,1,3) from Worker;'))
# Question
prompt = "Display the lowest salary from the Worker table."
output = gpt.submit_request(prompt)
print(output.choices[0].text)
prompt = "Tell me the count of employees working in the department HR."
print(gpt.get_top_reply(prompt))
BERT
레퍼런스
- github.com, OpenAI GPT3
- Miguel grinberg, 2020.8, Building a Chatbot with OpenAI's GPT-3 engine, Twilio SMS and Python
- How to build GPT-3 (with CoLab, Unity, API)
- openai.com blog, 2020.6, OpenAI API with REST API
- 16 OpenAI GPT-3 Demos and Examples to Convince You that AI Threat is Real, or is it ?
- Code generation model using GPT-3
- Next web.com, 2020.7, OpenAI’s new GPT-3 language explained in under 3 minutes