큰 언어 모델 (LLM) 개요
- LLM이 어떻게 작동하는가?
- LLM은 제공된 프롬프트에 따라 가능한 완성을 제공합니다. 예를 들어, "나는 먹는 것을 좋아해"라는 프롬프트에 대해 "크림 치즈의 베이글이나 엄마의 미트로프, 친구들과 함께 먹는 것"이라고 답변할 수 있습니다.
- 이를 위해 LLM은 주로 지도학습을 사용하여 학습합니다. 지도학습에서 컴퓨터는 레이블이 지정된 학습 데이터를 사용하여 입력-출력 또는 X-Y 매핑을 학습합니다.
- LLM의 훈련 방법은 무엇인가?
- LLM은 주어진 텍스트 데이터에서 다음 단어를 예측하도록 지도학습을 사용하여 구축됩니다.
- 예를 들어, "나의 좋아하는 음식은 베이글에 크림 치즈와 연어"라는 문장은 주어진 문장 조각이나 접두어에 대해 다음 단어를 예측하도록 학습 예제의 시퀀스로 변환됩니다.
- 수백 또는 더 많은 단어로 구성된 대규모 훈련 세트를 가지고 있다면, 텍스트의 일부를 시작점으로 하여 언어 모델이 다음 단어를 예측하도록 반복적으로 학습시킬 수 있습니다.
- LLM의 주요 유형
- 기본 LLM: 텍스트 훈련 데이터를 기반으로 다음 단어를 반복적으로 예측합니다.
- 지시문에 따른 LLM: 사용자의 지시문을 따르려고 합니다. 예를 들어, "프랑스의 수도는 무엇인가?"라는 질문에 "프랑스의 수도는 파리입니다."라고 답변합니다.
- Base LLM에서 Instruction Tuned LLM으로 어떻게 이동하는가?
- ChatGPT와 같은 지시문에 따른 LLM을 훈련하는 과정은 먼저 대량의 데이터에서 기본 LLM을 훈련하는 것으로 시작됩니다. 이는 대형 슈퍼 컴퓨팅 시스템에서 몇 개월 동안 진행될 수 있습니다.
- 기본 LLM 훈련 후에는 출력이 입력 지시문을 따르는 작은 예제 집합에 대해 모델을 미세 조정합니다. 이를 위해 계약 업체가 지시문과 해당 지시문에 대한 적절한 반응의 많은 예제를 작성하는 데 도움을 줄 수 있습니다.
- 마지막으로, LLM의 출력 품질을 향상시키기 위해 흔히 사용되는 과정은 LLM의 많은 다른 출력에 대한 사람들의 평가를 얻는 것입니다. 이는 출력이 유익하고, 정직하고, 무해한지 등의 기준에 따라 평가됩니다
- 대형 언어 모델 튜닝(Large Language Model Tuning): 이 모델들은 인간의 피드백을 통해 향상시키기 위한 기법으로 RLHF(Reinforcement Learning from Human Feedback)를 사용합니다. 기본 LLM 학습에는 수 개월이 소요될 수 있지만, 훨씬 적은 데이터셋과 연산 자원을 활용하여 기본 LLM을 지시사항에 따라 튜닝하는 과정은 수 일 내에 가능합니다.
- OpenAI API 사용: OpenAI 패키지를 설치하고, OpenAI 키를 로드하여 다양한 작업을 수행할 수 있습니다.
- 대형 언어 모델 작동 방식의 기술적 세부 사항: 대형 언어 모델은 한 번에 한 단어를 예측하는 것으로 설명되었지만, 실제로는 다음 토큰을 예측합니다. 예를 들어, "lollipop"이라는 단어를 입력하면, 모델은 이를 세 개의 토큰("l", "oll", "ipop")으로 분해하고, 이 토큰을 기반으로 예측을 수행합니다.
- 토큰화 이해와 활용: 토큰화는 일련의 문자를 의미있는 단위로 그룹화하는 과정입니다. 영어에서 한 토큰은 대략 평균 네 문자 또는 3/4 단어에 해당합니다. 토큰의 수를 확인하는 것은 대형 언어 모델의 입력 토큰 제한을 초과하지 않는지 확인할 때 유용할 수 있습니다.
- API 키의 안전한 사용: 개발자들은 종종 API 키를 코드에 텍스트 형태로 직접 작성합니다. 이 방법은 보안에 취약하므로, "dotenv" 라이브러리를 사용하여 ".env"라는 로컬 파일에 API 키를 저장하고 이를 읽어와서 사용하는 것이 더 안전한 방법입니다.
- 프롬프팅의 혁신성: 프롬프팅을 활용한 머신러닝은 AI 애플리케이션 개발을 혁신하고 있습니다. 전통적인 지도학습 워크플로우에 비해 프롬프팅 기반의 머신러닝은 텍스트 애플리케이션을 빠르게 구축할 수 있게 해줍니다. 한편, 이 방법은 표 형식의 데이터에 대한 머신러닝 애플리케이션에는 적용되지 않습니다.
- 다음 영상에 대한 소개: 다음 영상에서는 이러한 컴포넌트들을 활용하여 고객 서비스 어시스턴트의 입력을 평가하는 방법을 보여줍니다. 이는 온라인 소매상의 고객 서비스 어시스턴트를 구축하기 위한 큰 예제의 일부입니다.
ChatGPT API 호출
OpenAI의 ChatGPT는 대화형 모델로, 입력으로 메시지의 목록을 받아 출력으로 모델 생성 메시지를 반환합니다. 이 방식은 다단계 대화를 손쉽게 가능하게 하지만, 단일 단계의 작업에서도 유용하게 활용될 수 있습니다.
API 호출 예시
Python에서 OpenAI API를 호출하는 방법은 다음과 같습니다:
import openai
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)
메시지 구성
API 호출의 주요 입력은 'messages' 파라미터입니다. 'messages'는 메시지 객체의 배열이며, 각 객체는 'role'("system", "user", "assistant")과 'content'를 가지고 있어야 합니다. 대화는 하나의 메시지로 시작할 수도 있고, 여러 번의 왕래가 있을 수도 있습니다.