Python에서OpenAI API 와 W&B 테이블과 함께 GPT-3의 사용
GPT-3을 Python과 물론, Weights & Biases와 함께 사용하는 방법에 대한 가이드
Created on December 9|Last edited on February 14
Comment
소개
GPT-3는OpenAI가 개발한 매우 강력한 모델로 많은 자연스러운 언어 처리 작업에 적용할 수 있습니다.
일반적으로, OpenAI의 Playground는 모델 예측의 여러 실험을 해보고 어떻게 작동하는지 확인해 보기에 좋은 시작점입니다.
예를 들어, GPT-3는 다음과 같습니다:

그러나 모델에 대해 좀 더 진지해지고 싶으시다면 프로젝트나 응용 프로그램의 일부로 Python에서 뱃치를 시작하는 것이 좋습니다.
이 글에선 Python에서 GPT-3를 사용하는 가장 쉬운 방법과 얻어낸 다양한 모델 예측을 추적하고 W&B 테이블을 상호작용(interact)으로 탐색하는 방법을 보여주고자 합니다.
여러분이 테이블 기능에 익숙하지 않으시다면, 테이블 형식의 데이터를 브라우저에서 상호작용(interact)으로 탐색할 수 있는 에코시스템의 툴 중에 하나라고 생각하시면 됩니다. GPT-3를 사용할 때 이 방법이 얼마나 도움이 되는지 곧 알게 될 것입니다.
GPT-3는 무엇에 사용할 수 있나요?
위에서 언급했듯이 GPT-3가 유용한 작업의 정확한 양을 계산하는 것은 정말 어렵습니다. 솔직히 굉장히 많은 방면에서 효과적입니다. 하지만 영감이 필요하시다면, 제가 최근에 GPT-3 Prompt Engineering을 위한 5가지 창의적인 조언(5 Creative Tips for GPT-3 Prompt Engineering)이라는 제목의 게시한 글에 요약, 논제, 질문 답변을 포함하여 GPT-3을 사용하는 몇 가지 멋진 방법들을 공유했습니다.
여기에 OpenAI 자체는 모든 종류의 GPT-3 작업에 대한 많은 예를 제공합니다. 이런 정보가 저희에게 주는 혜택은 이 모든 것이 Python API 코드 스니펫과 함께 제공된다는 것입니다.

그럼, Python에서 GPT-3를 사용하는 방법에 대해 알아보겠습니다!
코드
Python에서 OpenAI API를 사용하려면 API 키를 환경 변수로 추가하는 것부터 시작해야 합니다. OpenAI 홈페이지에 등록하시면 API 키를 받으실 수 있으며, 여기에서 확인하실 수 있습니다.
%env OPENAI_API_KEY=YOUR_OPENAI_API_KEY
보통 API 키를 다른 사람에게 보여주면 안되기 때문에, 이 게시글을 다 쓴 후에 새로 만들겠습니다.
💡
다음으로 두 가지 디펜던시(dependency)를 설치합니다: OpenAI의 Python 클라이언트와wandb는 Weights & Biases의 Python 클라이언트로 GPT-3의 예측을 탐색하는데 사용할 것입니다.
!pip install --upgrade openai wandb
그런 다음 모듈을 가져와서 API 키를OpenAI의 Python 클라이언트에 전달합니다.
import osimport openaiimport wandbopenai.api_key = os.getenv("OPENAI_API_KEY")
이제GPT-3 in Python이라는 새로운 Weights & Biases 프로젝트와 더불어 W&B 테이블을 초기화할 수 있습니다. 이 테이블은 표 데이터를 상호작용으로 탐색하는 도구이며 이 테이블은prompt 와 completion이라는 두 개의 열을 가지고 있습니다.
run = wandb.init(project='GPT-3 in Python')prediction_table = wandb.Table(columns=["prompt", "completion"])
자, 이 튜토리얼의 기본 내용은 다음과 같습니다. 다음 코드에서 API를 통해 GPT-3 예측을 얻기 위한 프롬프트를 보낼 것입니다 (OpenAI는 대용량 GPT-3 모델의 모든 전산을 처리하므로 어떤 하드웨어를 보유하고 있는지는 그다지 중요하지 않습니다. 그러니 걱정하지 마세요).
gpt_prompt = "Correct this to standard English:\n\nShe no went to the market."response = openai.Completion.create(engine="text-davinci-002",prompt=gpt_prompt,temperature=0.5,max_tokens=256,top_p=1.0,frequency_penalty=0.0,presence_penalty=0.0)print(response['choices'][0]['text'])prediction_table.add_data(gpt_prompt,response['choices'][0]['text'])
GPT-3 모델의 요청/응답의 극한은 2049 "토큰(token)"입니다. 여기서 "토큰"은 대략 4 글자로 설명됩니다. 즉, 백과사전만큼이나 긴 프롬프트를 처리하거나 응답을 생성할 순 없지만 지금 여러분이 읽고 있는 이 글과 비슷한 크기의 글을 생성할 순 있습니다.
💡
따라서engine="text-davinci-002" 라인에서 GPT-3의 어떤 변형을 사용할지 지정합니다. 현재 가장 성능이 뛰어난 것은text-davinci-002이지만 더 작은(그리고 더 저렴한) 엔진도 있습니다. 여기 OpenAI 문서에서 다양한 GPT-3 엔진에 대해 자세히 알아보실 수 있습니다.
그 다음, 지정해야 할 몇 가지 하이퍼 파라미터가 있습니다.
- 온도(temperature)는 무작위성을 제어합니다. 온도의 값을 낮추면 무작위성이 줄어듭니다.
- max_tokens은 응답을 생성할 최대 토큰 수입니다.
GPT-3 모델 예측의 시각화
프롬프트에서 추론(inference)을 수행한 후, OpenAI의 API 응답에서 텍스트를 추출하고 이 코드 라인을 사용하여 W&B 테이블에 추가합니다.
prediction_table.add_data(gpt_prompt,response['choices'][0]['text'])
원하는 횟수만큼 이 프로세스를 반복할 수 있습니다. 심지어 일련의 프롬프트에서 반복적으로 이 프로세스를 실행할 수도 있습니다. 이러한 방식으로 테이블에 데이터를 계속 추가할 수도 있습니다.
그리고 실험을 마친 후wandb.log를 호출하여 W&B 테이블을 기록하고 브라우저에서 상호작용으로 시각화할 수 있습니다.
wandb.log({'predictions': prediction_table})wandb.finish()
이렇게 하면 GPT-3의 신속하고 완료된 실험 절차와 결과를 절대 잃어버리지 않을 것입니다! 😉
다음은 제가 GPT-3을 잠깐 가지고 놀다가 Python에서 다양한 프롬프트를 수작업으로 익힌 후에 얻어낸 결과물의 예시입니다.
Run set
4
GPT-3에서 더 많은 것을 얻고 싶으신가요?
만약, 예를 들어 GPT-3가 제품에 대한 사람들의 질문에 대답하는 것에 도움이 되기를 원하는 경우, GPT-3의 미세 조정(fine-tuning)을 고려해 보는 것이 좋습니다!
Weights & Biases 와 OpenAI의 콜라보를 통해 이제OpenAI Python CLI code 라인 하나만으로 W&B 내에서 미세 조정 작업을 추적할 수 있습니다.

만약 이에 대해서 더 알아보고 싶으시다면 제가 작성한 새로운 ‘닥터 후 (Doctor Who)’ 에피소드 시놉스를 생성하기 위해 GPT-3를 미세 조정하는 것에 대한 게시글을 한번 읽어 보시거나 제가 GPT-3를 미세 조정하는 것에 대하여 만든 이 영상을 즐기실 수 있습니다!
결론
읽어주셔서 감사하고, 이 보고서가 Python에서 GPT-3를 사용하는 데 도움이 되며 즐거우셨기를 바랍니다! 행복하게 생성하세요! 😊
Add a comment
Iterate on AI agents and models faster. Try Weights & Biases today.