Generative AI/Language Model

[Generative AI][Large Language Model] State of GPT

데이터 세상 2023. 7. 17. 16:07
728x90
반응형

State of GPT

2023.5.24

Speaker: Andrej Karpathy | OpenAI

 

State of GPT를 주제로 OpenAI Andrej Karpathy가 발표한 내용을 발췌하여 정리한 내용입니다.

 

ChatGPT와 같은 GPT Assistant training pipeline에 대해 토큰화에서 pretraining, supervised finetuning, Reinforcement Learning from Human Feedback(RLHF)에 대해 알아보세요. 프롬프트 전략, finetuning, 빠르게 성장하는 도구 생태계 및 향후 확장을 포함하여 이러한 모델을 효과적으로 사용하기 위한 실용적인 기술 및 정신 모델에 대해 자세히 알아보십시오.

 

https://build.microsoft.com/en-US/sessions/db3f4859-cd30-4445-a0cd-553c3304f8e2

 

Microsoft Build: Highlights from 2023

Keep sharpening your skills with the event’s best on-demand sessions and find upcoming opportunities to spark your interest. Be sure to join us next year for the latest on developer innovations.

build.microsoft.com

 

 

How to train your (Chat)GPT Assistant - GPT Assistant training pipeline

pretraining, supervised fine-tuning, reward modeling, reinforcement learning의 네 가지 주요 단계가 있습니다.

그들은 서로를 연속적으로 따릅니다.

이제 각 단계에는 해당 단계를 지원하는 데이터 세트가 있습니다. 목적을 위해 신경망 훈련을 위한 목표가 될 알고리즘을 가지고 있습니다. 그리고 결과 모델이 있습니다. 

 

Pretraining Stage

이 단계는 이 다이어그램에서 특별합니다. 그리고 이 다이어그램은 모든 계산 작업이 기본적으로 발생하는 단계이기 때문에 확장할 수 없습니다. 이것은 교육 컴퓨팅 시간의 99%를 차지합니다.
그래서 여기에서 우리는 슈퍼컴퓨터에 있는 수천 개의 GPU와 잠재적으로 수개월의 훈련을 통해 인터넷 규모의 데이터 세트를 다루고 있습니다. 다른 세 단계는 몇 시간 또는 며칠 동안 GPU 몇 개에 훨씬 더 가까운 fine tuning 단계입니다.

 

첫째, 많은 양의 데이터를 수집할 것입니다. 다음은 이 LLaMA 기반 모델을 발표한 Meta에서 발표한 이 백서에서 가져온 데이터 혼합이라고 부르는 예입니다.

이제 이러한 컬렉션에 들어가는 데이터 세트의 종류를 대략적으로 볼 수 있습니다. 따라서 웹 스크랩인 Common Crawl, Common Crawl이기도 한 C4, 그리고 일부 고품질 데이터 세트도 있습니다.

예를 들어 GitHub, Wikipedia, Books, Archive, Stock Exchange 등이 있습니다. 이것들은 모두 함께 섞인 다음 주어진 비율에 따라 샘플링되고 GPT의 신경망에 대한 훈련 세트를 형성합니다.

 

이제 이 데이터를 실제로 학습하기 전에 한 가지 전처리 단계를 더 거쳐야 합니다. 바로 토큰화(tokenization)입니다. 그리고 이것은 기본적으로 우리가 인터넷에서 스크랩한 원시 텍스트를 일련의 정수로 번역한 것입니다. 이것이 GPT가 작동하는 기본 표현이기 때문입니다.

이제 이것은 텍스트 조각과 토큰 및 정수 사이의 무손실 변환이며 스테이지에 대한 여러 알고리즘이 있습니다. 일반적으로 예를 들어 작은 텍스트 청크를 반복적으로 병합하고 토큰으로 그룹화하는 바이트 쌍 인코딩(BPE, Byte Pair Encoding)과 같은 것을 사용할 수 있습니다.

그래서 여기서는 이러한 토큰의 일부 예를 보여주고 있으며 이것은 실제로 transofomer에 공급되는 원시 정수 시퀀스(raw integer sequence)입니다.

 

이제 여기에서 단계를 제어하는 하이퍼 매개변수에 대한 두 종류의 유사한 예를 보여주고 있습니다. GPT-4, 훈련 방법 등에 대한 정보를 너무 많이 공개하지 않았습니다. 그래서 저는 GPT-3의 수치를 사용하고 있지만, 물론 GPT-3는 지금, 약 3년 전쯤이면 조금 오래된 것입니다. 그러나 LLaMA는 Meta의 상당히 최근 모델입니다.

 

그래서 이것은 우리가 사전 훈련을 할 때 처리하는 대략적인 규모입니다. 어휘 크기는 일반적으로 10,000 토큰입니다. 컨텍스트 길이는 일반적으로 2,000, 4,000 또는 요즘에는 100,000 정도입니다. 그리고 이것은 GPT가 시퀀스에서 다음 정수를 예측하려고 할 때 볼 정수의 최대 수를 제어합니다.

예를 들어 LLaMA의 경우 대략적인 매개변수 수가 650억개임을 알 수 있습니다. 이제 LLaMA에는 GPT-3의 1,750억 개의 매개변수와 비교하여 65개의 매개변수만 있지만 LLaMA는 훨씬 더 강력한 모델이며 직관적으로 이는 모델이 훨씬 더 오래 훈련되기 때문입니다.

포함된 매개변수의 수만으로 모델의 성능을 판단해서는 안 됩니다.

 

트랜스포머 신경망을 지정하는 데 일반적으로 사용되는 여러 하이퍼파라미터의 표가 나와 있습니다.

heads의 수, 차원(dimension) 크기, 레이어(layers) 수 등이 있습니다.

그리고 하단에는 몇 가지 학습 하이퍼파라미터가 표시되어 있습니다. 예를 들어, 65B 모델을 교육하기 위해 Meta는 2,000개의 GPU, 약 21일의 교육, 약 수백만 달러를 사용했습니다. 이것이 사전 훈련 단계에서 염두에 두어야 할 대략적인 크기입니다.

 

이제 실제로 pretraining을 하면 어떻게 될까요?

대략적으로 말하자면, 우리는 토큰을 가져와 데이터 배치에 배치할 것입니다. 우리는 transformer에 입력할 이러한 배열을 가지고 있으며 이러한 배열은 배치 크기인 B이고 행에 쌓인 모든 독립적인 예이며 B x T이고 T는 최대 컨텍스트 길이입니다.

제 사진에는 10개밖에 없지만 이것이 컨텍스트 길이이므로 2,000, 4,000 등이 될 수 있습니다. 이것은 매우 긴 행이며 우리가 하는 일은 이러한 문서를 가져와서 행으로 묶고 이러한 특수 텍스트 끝 토큰으로 구분하여 기본적으로 transformer에게 새 문서가 시작되는 위치를 알려줍니다. 그래서 여기에 문서의 몇 가지 예가 있고 이를 이 입력으로 확장했습니다.

 

이제 이 모든 숫자를 transformer에 공급할 것입니다. 그리고 하나의 특정 셀에 초점을 맞추겠습니다. 하지만 이 다이어그램의 모든 셀에서 동일한 일이 발생합니다.

이제 녹색 셀을 살펴보겠습니다. 녹색 셀은 그 앞에 있는 모든 토큰을 살펴볼 것이므로 모든 토큰은 노란색입니다. 그리고 우리는 전체 컨텍스트를 transformer 신경망에 공급할 것입니다. 그리고 transformer는 시퀀스의 다음 토큰(이 경우에는 빨간색)을 예측하려고 시도할 것입니다.

이제 transformer는 안타깝게도 이 신경망 아키텍처에 대해 자세히 설명할 시간이 많지 않습니다. 일반적으로 또는 이와 유사한 것입니다.

물론 이러한 매개 변수를 tuning하면 이러한 셀 각각에 대해 약간씩 다른 예측 분포를 얻게 됩니다. 예를 들어 어휘 크기가 50,257 토큰인 경우 다음 항목에 대한 확률 분포를 지정해야 하기 때문에 기본적으로 뒤따를 모든 항목에 대한 확률을 가질 수 있기 때문에 그만큼 많은 수를 갖게 됩니다.

 

이제 특정 셀에 대한 이 특정 예에서 513이 다음에 올 것입니다. 그래서 우리는 이것을 transformer weights(가중치)를 업데이트하기 위한 supervision 소스로 사용할 수 있습니다. 그래서 우리는 이것을 기본적으로 병렬의 모든 단일 셀에 적용하고 있습니다. 그리고 우리는 배치를 계속 교환하고 transformer가 시퀀스에서 다음에 오는 토큰에 대해 올바른 예측을 하도록 노력하고 있습니다.

 

이 모델 중 하나를 훈련할 때 이것이 어떻게 보이는지 좀 더 구체적으로 보여드리겠습니다. 이것은 실제로 New York Times에서 나온 것이며 셰익스피어에 대해 소규모 GPT를 교육했습니다. 그래서 여기에 셰익스피어의 작은 스니펫이 있고 그들은 그것에 대해 GPT를 교육했습니다.

 

이제 초기화 초기에 GPT는 완전히 임의의 가중치로 시작하므로 완전히 임의의 출력도 얻게 됩니다. 그러나 시간이 지남에 따라 GPT를 더 오래 훈련할수록 모델에서 점점 더 일관되고 일관된 종류의 샘플을 얻게 됩니다.

물론 샘플에서 샘플링하는 방식은 다음에 무엇이 올지 예측하는 것입니다. 해당 분포에서 샘플링하고 계속 프로세스에 다시 공급하면 기본적으로 큰 시퀀스를 샘플링할 수 있습니다.

그래서 마지막에는 transformer가 단어와 공백을 넣을 위치, 쉼표를 넣을 위치 등에 대해 학습했음을 알 수 있습니다. 그래서 우리는 시간이 지남에 따라 점점 더 일관된 예측을 하고 있습니다.

이것은 모델 사전 교육을 수행할 때 보고 있는 종류의 플롯입니다. 효과적으로, 우리는 당신이 훈련하면서 시간이 지남에 따라 손실 함수를 보고 있습니다. 그리고 손실이 낮다는 것은 트랜스포머가 올바른 것을 예측한다는 것을 의미합니다. 시퀀스에서 올바른 다음 정수에 더 높은 확률을 제공합니다.

 

이제 한 달 후에 이 모델을 학습시킨 후 이 모델로 무엇을 할까요? 우리가 현장에서 가장 먼저 알아차린 것은 이러한 모델이 기본적으로 언어 모델링 프로세스에 있고 매우 강력한 일반 표현을 학습하며 임의의 다운스트림 작업에 대해 매우 효율적으로 fine-tuning할 수 있다는 것에 관심이 있습니다.

예를 들어, 감정 분류에 관심이 있는 경우 이전에는 많은 긍정과 부정을 수집한 다음 이를 위해 일종의 NLP 모델을 훈련시키는 접근 방식을 사용했습니다. 그러나 새로운 접근 방식은 감정, 분류를 무시하고 대규모 언어 모델 사전 교육을 수행하고 대규모 transformer를 교육한 다음에만 가능합니다. 몇 가지 예만 있을 수 있으며 이를 위해 모델을 매우 효율적으로 fine-tuning할 수 있습니다.

 

이것은 실제로 매우 잘 작동합니다. 그 이유는 기본적으로 transformer가 언어 모델링 작업에서 엄청난 양의 작업을 멀티태스킹해야 하기 때문입니다. 왜냐하면 다음 토큰을 예측하는 것만으로도 텍스트의 구조와 그 안의 모든 다른 개념에 대해 많은 것을 이해해야 하기 때문입니다.

이것이 GPT-1이었습니다.

 

이제 GPT-2 즈음에 사람들은 실제로 fine-tuning보다 훨씬 더 낫다는 사실을 알아차렸습니다. 실제로 이러한 모델을 매우 효과적으로 유도할 수 있습니다. 그래서 이들은 언어 모델이고 그들은 문서를 완성하기를 원합니다. 따라서 이러한 가짜 문서를 배열하는 것만으로도 실제로 작업을 수행하도록 그들을 속일 수 있습니다.

 

예를 들어, 우리는 약간의 구절이 있고 "QA, QA, QA"와 같은 종류의 작업을 수행합니다. 이것은 few-shot 프롬프트라고 합니다. 그런 다음 Q를 수행한 다음 transformer가 시도할 때 문서를 완성하면 실제로 질문에 대한 답변이 됩니다. 따라서 이것은 기본 모델을 프롬프트 엔지니어링하여 일종의 문서를 모방하고 작업을 수행하도록 믿게 만드는 예입니다.

 

그래서 이것은 prompting은 fine-tuning을 촉구하고 신경망 훈련이나 fine-tuning 등이 없어도 실제로 많은 문제에서 매우 잘 작동할 수 있음을 확인하는 시대가 시작되었다고 생각합니다.

 

이제 그 이후로 모든 사람이 훈련한 기본 모델의 전체 진화 트리를 보았습니다. 모든 모델을 사용할 수 있는 것은 아닙니다. 예를 들어 GPT-4 기본 모델은 출시되지 않았습니다. API를 통해 상호 작용할 수 있는 GPT-4 모델은 기본 모델이 아닙니다. 그것은 보조 모델이고 우리는 그것들을 얻는 방법을 조금 다룰 것입니다.

GPT-3 기본 모델은 DaVinci라는 이름의 API를 통해 사용할 수 있으며 GPT-2 기본 모델은 GitHub 저장소의 가중치로도 사용할 수 있습니다. 그러나 현재 가장 사용 가능한 기본 모델은 Meta의 LLaMA 시리즈일 것입니다.

 

이제 한 가지 지적할 점은 기본 모델이 assistant(조수)가 아니라는 것입니다. 그들은 당신의 질문에 답하기를 원하지 않습니다. 그들은 단지 문서를 완성하기를 원할 뿐입니다. 그래서 만약 당신이 그들에게 "빵과 치즈에 대한 시를 써라"라고 말한다면, 그것은 단지 – 알다시피, 그것은 더 많은 질문으로 질문에 답할 것입니다. 문서라고 생각하는 것을 완성하는 것입니다.

그러나 작동 가능성이 더 높은 기본 모델에 대해 특정 방식으로 메시지를 표시할 수 있습니다. 예를 들어 빵과 치즈에 대한 시가 있습니다. 이 경우 올바르게 자동 완성됩니다.

기본 모델을 보조자로 속일 수도 있습니다. 이를 수행하는 방법은 사람과 조수 사이에 일종의 문서가 있고 일종의 정보를 교환하는 것처럼 보이게 하는 특정 몇 번만 프롬프트를 만드는 것입니다.

그런 다음 맨 아래에 쿼리를 끝에 넣으면 기본 모델이 조건 자체와 같이 도움이 되는 도우미 및 일종의 답변이 될 것입니다. 그러나 이것은 그다지 신뢰할 수 없으며 실제로는 잘 작동하지 않지만 수행할 수는 있습니다.

 

Supervised Fine-tuning Stage

따라서 대신 기본 모델 문서 완성자가 아닌 실제 GPT 조수를 만드는 다른 경로가 있습니다. 

그래서 supervised fine-tuning으로 우리를 데려갑니다. 따라서 supervised fine-tuning 단계에서는 작지만 고품질 데이터 세트를 수집할 것입니다. 그리고 이 경우 인간 계약자에게 신속하고 이상적인 응답 형식의 데이터를 수집하도록 요청할 것입니다. 그리고 우리는 이것들을 많이, 일반적으로 수만 개 정도 수집할 것입니다.

그런 다음 이 데이터에 대해 언어 모델링을 계속 수행할 것입니다. 따라서 알고리즘적으로 변경된 사항은 없습니다. 훈련 세트를 교체하는 중입니다. 그래서 예전에는 인터넷 문서였는데, 기본적으로 QA 즉각 대응하는 자료의 경우는 대용량/저품질, 저건 저품질/저품질이었습니다.

그래서 우리는 여전히 언어 모델링을 할 것입니다. 그런 다음 훈련 후 SFT(Supervised Fine-Tuning) 모델을 얻습니다. 이 모델을 실제로 배포할 수 있습니다. 그들은 실제 조수이며 어느 정도 작동합니다.

 

예제 데모가 어떤 모습인지 보여드리겠습니다. 그래서 여기에 인간 계약자가 생각해 낼 수 있는 것이 있습니다. "Can you write a short introduction about the relevance of the term monopsony (단독이라는 용어의 관련성에 대한 짧은 소개를 써주실 수 있나요)?" 또는 이와 유사한 질문이 있습니다. 그런 다음 계약자도 이상적인 응답을 작성합니다.

그리고 이러한 응답을 작성할 때 광범위한 라벨 문서를 따르고 있으며 도움이 되고 진실하며 무해해야 합니다. 여기에 있는 라벨링 지침입니다. 아마 당신은 그것을 읽을 수 없을 것이고 나도 읽을 수 없을 것입니다. 그러나 그들은 길고 이것은 지시를 따르고 이 지시를 완료하려고 노력하는 사람들일 뿐입니다.

이것이 데이터 세트의 모습입니다. 그리고 이러한 모델을 훈련시킬 수 있으며 이것은 어느 정도 작동합니다.

 

Reward Modeling

이제 실제로 여기에서 파이프라인을 계속 진행하고 보상 모델링과 강화 학습으로 구성된 인간 피드백의 강화 학습인 RLHF(Reinforcement Learning from Human Feedback)로 이동할 수 있습니다.

그래서 그 부분을 다룬 다음 추가 단계를 거쳐야 하는 이유와 SFT 모델과 비교하는 방법에 대해 다시 설명하겠습니다.
따라서 보상 모델링 단계에서 우리가 할 일은 이제 데이터 수집을 비교 형식으로 전환하는 것입니다. 

 

여기 데이터 세트가 어떻게 생겼는지에 대한 예가 있습니다. 동일한 프롬프트가 맨 위에 있습니다. 어시스턴트에게 주어진 문자열이 회문인지 확인하는 프로그램이나 함수를 작성하도록 요청하는 것입니다.

그런 다음 우리가 하는 일은 이미 학습한 SFT 모델을 가져와 여러 완성을 만드는 것입니다. 따라서 이 경우에는 모델이 생성한 3개의 완성이 있습니다. 그런 다음 사람들에게 이러한 완료 순위를 매기도록 요청합니다.

따라서 잠시 동안 이것을 응시한다면 이러한 예측 중 일부를 비교하기에는 매우 어려운 일이며 사람들은 단일 프롬프트 완료 쌍에 몇 시간이 걸릴 수 있습니다. 그러나 이들 중 하나가 다른 것보다 훨씬 낫다고 판단하고 순위를 매긴다고 가정해 봅시다. 

 

그런 다음 이러한 완성 사이의 가능한 모든 쌍에 대한 이진 분류와 매우 유사한 것으로 이를 따를 수 있습니다.

이제 행에 프롬프트를 배치하고 프롬프트는 여기에 있는 세 행 모두에서 동일합니다. 따라서 모두 같은 프롬프트이지만 완성도가 다르므로 노란색 토큰은 SFT 모델에서 나옵니다.

 

그런 다음 마지막에 또 다른 특별 보상 판독 토큰을 추가하고 기본적으로 이 단일 녹색 토큰에서만 transformer를 감독하고 transformer는 해당 프롬프트에 대한 완료가 얼마나 좋은지에 대한 보상을 예측합니다.

그래서 기본적으로 각 완료의 품질에 대해 추측합니다. 그런 다음 그것들 모두에 대해 추측을 하면 우리는 그것들의 순위를 알려주는 실측 정보도 갖게 됩니다. 그래서 우리는 실제로 이 숫자 중 일부가 다른 것보다 훨씬 높아야 한다고 강제할 수 있습니다. 우리는 이것을 손실 함수로 공식화하고 모든 계약자들의 비교에서 나오는 실측과 일치하는 보상 예측을 하도록 모델을 훈련합니다.

이것이 우리가 보상 모델을 훈련하는 방법이며 이를 통해 프롬프트에 대한 완료가 얼마나 좋은지 점수를 매길 수 있습니다.

 

Reinforcement Learning Stage

일단 보상 모델이 있으면 그 자체로는 어시스턴트로서 그다지 유용하지 않기 때문에 이것을 배치할 수 없지만, 지금 뒤따르는 강화 학습 단계에는 매우 유용합니다. 보상 모델이 있기 때문에 주어진 프롬프트에 대한 임의 완료의 품질에 점수를 매길 수 있습니다.

따라서 강화 학습 중에 우리가 하는 것은 기본적으로 다시 많은 프롬프트 모음을 얻고 이제 보상 모델과 관련하여 강화 학습을 수행하는 것입니다.

 

그 모습은 다음과 같습니다. 

우리는 하나의 프롬프트를 취하여 행으로 배치하고 이제 SFT 모델을 사용합니다. 우리는 기본적으로 SFT 모델로 초기화된 학습하려는 모델을 사용하여 노란색으로 일부 완성을 생성합니다. 그런 다음 보상 토큰을 다시 추가하고 현재 고정된 보상 모델에 따라 보상을 읽습니다. 더 이상 변하지 않습니다.

이제 보상 모델은 이러한 프롬프트에 대한 모든 단일 완료의 품질을 알려줍니다. 따라서 우리가 할 수 있는 것은 이제 기본적으로 동일한 언어 모델링 손실 함수를 적용할 수 있지만 현재 노란색 토큰에 대해 훈련하고 있습니다. 그리고 우리는 보상 모델이 나타내는 보상으로 언어 모델링 목표를 저울질하고 있습니다.

예를 들어, 첫 번째 행에서 보상 모델은 이것이 상당히 높은 점수 완료라고 말했습니다. 따라서 첫 번째 행에서 샘플링하게 된 모든 토큰은 강화될 것이며 미래에 더 높은 확률을 갖게 될 것입니다. 반대로 두 번째 행에서 보상 모델은 이 완성, -1.2를 정말 좋아하지 않았습니다. 따라서 두 번째 행에서 샘플링한 모든 단일 토큰은 미래에 대해 약간 더 높은 확률을 갖게 될 것입니다. 그리고 우리는 많은 프롬프트에서 많은 배치로 이 작업을 반복합니다. 그리고 기본적으로 여기에 노란색 토큰을 생성하는 정책을 얻습니다. 기본적으로 모든 것이 여기에 있습니다. 여기에서 완료한 모든 항목은 이전 단계에서 교육한 보상 모델에 따라 높은 점수를 받습니다.

그것이 우리가 훈련하는 방법입니다. 이것이 바로 RLHF 파이프라인입니다. 그리고 마지막에는 배포할 수 있는 모델을 얻습니다. 예를 들어 ChatGPT는 RLHF 모델이지만 (inaudible) 등의 다른 모델은 SFT 모델입니다. 우리는 기본 모델, SFT 모델 및 RLHF 모델을 보유하고 있으며 이는 일종의 상태와 비슷합니다.


Why RLHF?

이제 왜 RLHF를 하고 싶습니까? 그다지 흥미롭지 않은 한 가지 대답은 그것이 더 잘 작동한다는 것입니다. 이것은 instruct GPT 논문에서 나온 것입니다. 얼마 전 이러한 실험에 따르면 이러한 PPO 모델은 RLHF입니다. 그리고 우리는 그것들을 인간에게 줄 때 많은 비교에서 기본적으로 선호된다는 것을 봅니다. 인간은 기본적으로 보조자가 되라는 메시지가 표시되는 기본 모델에 비해 SFT 모델에 비해 RLHF 모델에서 오는 토큰을 기본적으로 선호합니다. 그래서 더 잘 작동합니다.

하지만 이유를 물을 수 있습니다. 왜 더 잘 작동합니까? 

 

그리고 저는 커뮤니티가 실제로 동의한 하나의 놀라운 대답이 있다고 생각하지 않지만 잠재적으로 한 가지 이유를 제시할 것입니다. 그것은 계산적으로 비교하는 것과 생성하는 것이 얼마나 쉬운지 사이의 비대칭성과 관련이 있습니다.

하이쿠(haiku)를 생성하는 예를 들어 보겠습니다. 모델에게 클립에 대한 하이쿠를 쓰라고 요청한다고 가정해 보겠습니다. 훈련 데이터를 제공하려는 계약자라면 SFT에 대한 기본 데이터를 수집하는 계약자라고 상상해 보십시오. 클립으로 멋진 하이쿠를 만들려면 어떻게 해야 합니까? 당신이 그것에 능숙하지 않을 수도 있지만, 내가 당신에게 하이쿠의 몇 가지 예를 든다면, 당신은 이 하이쿠들 중 일부를 다른 하이쿠들보다 훨씬 더 감상할 수 있을 것입니다. 그래서 어느 것이 좋은지 판단하는 것이 훨씬 쉬운 일입니다. 따라서 기본적으로 이 비대칭성은 비교가 인간으로서 잠재적으로 자신을 활용하고 약간 더 나은 모델을 만들기 위한 판단에 더 나은 방법이 되도록 만듭니다.

 

이제 RLHF 모델은 경우에 따라 기본 모델을 엄격하게 개선한 것이 아닙니다. 특히, 예를 들어 엔트로피가 약간 손실되는 것을 발견했습니다. 그것은 그들이 더 많은 (PT?) 결과를 제공한다는 것을 의미합니다. 더 낮은 변형을 출력할 수 있습니다. 기본 모델보다 변동이 적은 샘플을 출력할 수 있습니다. 기본 모델에는 많은 엔트로피가 있으며 다양한 출력을 제공합니다.

예를 들어, 내가 여전히 기본 모델을 사용하는 것을 선호하는 한 가지 장소는 기본적으로 n개의 항목이 있고 이와 유사한 항목을 더 생성하려는 설정입니다. 여기 제가 방금 준비한 예가 있습니다. 멋진 포켓몬 이름을 생성하고 싶습니다. 7개의 포켓몬 이름을 부여하고 기본 모델에 문서를 완성하도록 요청했습니다. 그리고 그것은 나에게 훨씬 더 많은 포켓몬 이름을 주었다. 이들은 허구입니다. 나는 그것들을 찾아보려고 노력했다. 나는 실제 포켓몬이 있다고 믿지 않는다. 그리고 이것은 기본 모델이 잘할 것이라고 생각하는 종류의 작업입니다. 왜냐하면 여전히 엔트로피가 많고 이전에 제공한 것과 같이 다양하고 멋진 종류의 더 많은 것을 제공할 것이기 때문입니다.

 

Assistant models in the wild

모든 것을 말했지만 이들은 현재 시점에서 사용할 수 있는 보조 모델과 비슷합니다. 사용 가능한 많은 보조 모델의 순위를 매기고 기본적으로 ELO 등급을 부여한 Berkeley 팀이 있습니다. 물론 현재 최고의 모델 중 일부는 GPT-4이며, Claude GPT 3.5와 여러 모델이 그 뒤를 잇고 있습니다. 이들 중 일부는 Kuna, Koala 등과 같은 가중치로 사용할 수 있습니다. 그리고 여기 처음 세 행은 모두 RLHF 모델이고 다른 모든 모델은 제가 아는 한 SFT 모델입니다.

 

이것이 우리가 높은 수준에서 이러한 모델을 훈련시키는 방법입니다. 

 

Applications

이제 기어를 바꿔 문제에 GPT 도우미 모델을 가장 잘 적용할 수 있는 방법을 살펴보겠습니다.

이제 저는 구체적인 예를 들어 작업하고 싶습니다. 여기서 구체적인 예를 들어 보겠습니다. 기사나 블로그 게시물을 작성 중이고 마지막에 이 문장을 작성한다고 가정해 보겠습니다. “California’s population is 53 times that of Alaska.(캘리포니아 인구는 알래스카 인구의 53배입니다.)” 어떤 이유로 이 두 주의 인구를 비교하려고 합니다.

풍부한 내부 독백과 도구 사용에 대해 생각하고 이 마지막 문장을 생성하기 위해 실제로 두뇌에서 얼마나 많은 계산 작업이 수행되는지 생각해 보십시오. 이것이 당신의 뇌에서 어떻게 보일지 모릅니다.

좋습니다. 다음 단계에서는 블로그를 작성하겠습니다. 이 두 모집단을 비교해 보겠습니다. 좋아요, 우선, 당연히 이 두 모집단을 모두 확보해야 합니다. 이제 저는 이 인구를 제 머리 위로 알지 못할 수도 있다는 것을 알고 있습니다. 그래서 저는 제가 아는 것을 알고 있거나 제 자기 지식에 대해 알지 못하는 것과 비슷합니다. 도구를 사용하고 Wikipedia로 이동하여 캘리포니아 인구와 알래스카 인구를 조회합니다.

이제 저는 이 둘을 나누어야 한다는 것을 알고 있지만, 다시 한 번 39.2를 0.74로 나누는 것이 성공할 가능성이 매우 낮다는 것을 알고 있습니다. 그것은 내 머리로 할 수 있는 종류의 일이 아닙니다. 따라서 저는 계산기에 의존할 것입니다. 저는 계산기를 사용하여 펀칭하고 출력이 대략 53인지 확인할 것입니다. 그런 다음 아마도 53이 의미가 있도록 내 두뇌에서 반성 및 온전성 검사를 수행할 것입니다. 음, 그것은 상당히 큰 부분이지만 California는 가장 인구가 많은 주이므로 괜찮을 것 같습니다.

 

그런 다음 필요한 모든 정보를 얻었고 이제 글쓰기의 일종의 창의적인 부분에 도달했습니다. "California has 53x times greater.(캘리포니아는 53배 더 큽니다.)" 그리고 나서 스스로 생각합니다. 정말 어색한 표현입니다. 실제로 삭제하고 다시 시도하겠습니다. 그래서 저는 글을 쓰면서 제가 쓰고 있는 내용을 거의 검사하고 좋은지 아닌지 판단하는 별도의 프로세스를 가지고 있습니다. 그런 다음 삭제하고 재구성한 다음 결과에 만족할 수 있습니다.

기본적으로 간단히 말해서, 이와 같은 문장을 만들 때 내부 독백 측면에서 많은 일이 발생합니다. 하지만 GPT를 훈련할 때 이와 같은 문장은 어떻게 보일까요?

 

GPT의 관점에서 이것은 일련의 토큰일 뿐입니다. GPT는 이러한 토큰을 읽거나 생성할 때 청크, 청크, 청크, 청크로 이동하며 각 청크는 각 토큰에 대해 대략 동일한 양의 계산 작업입니다. 그리고 이러한 transformer는 매우 얕은 네트워크가 아닙니다. 그들은 약 80개의 추론 레이어를 가지고 있지만 80개는 여전히 많지 않습니다. 따라서 이 transformer는 모방하기 위해 최선을 다할 것입니다. 하지만 물론 여기서 프로세스는 여러분이 수행한 프로세스와 매우 매우 다르게 보입니다.

특히 최종 아티팩트에서 우리가 생성한 다음 결국 LLM에 공급하는 데이터 세트에서 모든 내부 대화가 완전히 제거됩니다. 그리고 귀하와 달리 GPT는 모든 단일 토큰을 살펴보고 모든 토큰에 동일한 양의 컴퓨팅을 소비합니다. 따라서 실제로 좋아할 것이라고 기대할 수 없습니다. 음, 토큰당 너무 많은 일을 할 것이라고 기대할 수 없습니다.

또한 특히 기본적으로 이러한 transformer는 토큰 시뮬레이터와 같습니다. 그들은 그들이 모르는 것을 모릅니다. 그들은 단지 다음 토큰을 모방합니다. 그들은 자신이 잘하는 것과 못하는 것을 모릅니다. 그들은 단지 다음 토큰을 모방하기 위해 최선을 다할 뿐입니다. 루프에 반영되지 않습니다. 그들은 온전함을 확인하지 않습니다. 기본적으로 실수를 수정하지 않습니다. 그들은 단지 토큰 시퀀스를 샘플링합니다. 머릿속에 별도의 내부 독백 흐름이 없지 않나요? 그들은 무슨 일이 일어나고 있는지 평가하고 있습니다.

이제 그들은 일종의 인지적 이점을 가지고 있다고 말하고 싶습니다. 즉, 그들은 실제로 100억 개의 매개변수를 가지고 있기 때문에 방대한 수의 영역에 걸쳐 매우 큰 사실 기반 지식을 가지고 있다는 것입니다. 그것은 많은 사실을 저장하는 많은 저장소이며, 또한 상대적으로 크고 완벽한 작업 메모리를 가지고 있다고 생각합니다. 컨텍스트 창에 맞는 것은 내부 자체 주의 메커니즘을 통해 트랜스포머에서 즉시 사용할 수 있습니다. 그래서 완벽한 기억과 비슷하지만 그 크기가 유한합니다. 그러나 트랜스포머는 그것에 매우 직접적으로 접근할 수 있습니다. 따라서 컨텍스트 창 안에 있는 모든 것을 무손실로 기억할 수 있습니다.

그것이 내가 그 두 가지를 비교하는 방법입니다. 제가 이 모든 것을 언급하는 이유는 제 생각에 자극은 여기 있는 우리의 두뇌와 LLM 두뇌와 같은 두 종류의 아키텍처 사이의 인지적 차이를 보완하는 것이라고 생각하기 때문입니다. 거의 그렇게 보시면 됩니다.

 

예를 들어 사람들이 발견한 한 가지는 실제로 잘 작동합니다. 특히 작업에 추론이 필요한 경우 트랜스포머가 토큰당 너무 많은 추론을 수행할 것으로 기대할 수 없습니다. 따라서 점점 더 많은 토큰에 추론을 퍼뜨려야 합니다. 예를 들어 트랜스포머에게 매우 복잡한 질문을 주고 단일 토큰으로 답을 얻을 것으로 기대할 수 없습니다. 시간이 충분하지 않습니다. 이러한 트랜스포머는 생각하고, 인용하거나 인용하지 않으려면 토큰이 필요합니다. 저는 때때로 말하고 싶습니다.

그래서 이것은 잘 작동하는 것 중 일부입니다. 예를 들어 질문에 답할 때 작업을 표시해야 하는 트랜스포머를 보여주는 몇 가지 짧은 프롬프트가 있을 수 있습니다. 그리고 몇 가지 예를 들면 트랜스포머가 해당 템플릿을 모방하고 평가 측면에서 더 잘 작동하게 됩니다.

또한 트랜스포머가 작업을 표시하도록 조건을 지정하기 때문에 단계적으로 생각해 봅시다. 그리고 작업을 표시하는 모드로 전환되기 때문에 토큰당 계산 작업이 줄어듭니다. 따라서 시간이 지남에 따라 추론이 느려지기 때문에 결과적으로 성공할 가능성이 더 큽니다.

 

여기 또 다른 예가 있습니다. 이것을 자기 일관성(Self-consistency)이라고합니다. 우리는 글쓰기를 시작할 수 있는 능력이 있다는 것을 알았지만 잘 되지 않았습니다. 다시 시도할 수 있고 여러 번 시도하고 가장 잘 작동하는 것을 선택할 수 있습니다. 이러한 접근 방식에서는 한 번만 샘플링하는 것이 아니라 여러 번 샘플링한 다음 좋은 것을 찾은 다음 해당 샘플만 보관하거나 다수결 투표를 하는 등의 프로세스를 가질 수 있습니다. 기본적으로 이러한 트랜스포머는 다음 토큰을 예측하는 과정에서 귀하와 마찬가지로 운이 좋지 않을 수 있습니다. 그리고 그들은 그다지 좋지 않은 토큰을 샘플링할 수 있었고 추론의 측면에서 일종의 막다른 골목처럼 내려갈 수 있습니다.

그래서 당신과 달리 그들은 그것으로부터 회복할 수 없습니다. 그들은 샘플링하는 모든 단일 토큰에 갇혀 있습니다. 그래서 그들은 이 순서가 잘 풀리지 않을 것이라는 것을 알더라도 그 순서를 계속할 것입니다. 그들에게 되돌아보고, 검사하거나, 찾으려고 노력하고, 기본적으로 주위를 둘러볼 수 있는 능력을 주십시오.

 

여기에도 하나의 기술이 있습니다. 실제로 LLM은 그들이 망쳤을 때를 압니다. 예를 들어, 운이 맞지 않는 시를 생성하도록 모델에 요청하면 시가 나올 수 있지만 실제로는 운이 맞습니다. 그러나 특히 GPT-4와 같은 더 큰 모델의 경우 그냥 물어볼 수 있습니다. 임무를 완수했습니까? 그리고 실제로 GPT-4는 자신이 임무를 수행하지 못했다는 사실을 잘 알고 있습니다. 샘플링에서 운이 좋지 않았습니다. 그래서 그것은 당신에게 말할 것입니다, 아니오, 나는 실제로 과제를 충족하지 못했습니다. 자, 다시 시도하겠습니다.

그러나 당신이 그것을 촉구하지 않으면 그것은 알지도 못합니다. 다시 방문하는 것을 모릅니다. 프롬프트에서 이를 보충해야 합니다. 받으셔야 확인이 가능합니다. 확인을 요청하지 않으면 자체적으로 확인하지 않습니다. 그것은 단지 토큰 시뮬레이터입니다.

 

좀 더 일반적으로, 이러한 기술 중 많은 부분이 시스템 2를 재생성한다고 말하는 bucket에 속한다고 생각합니다. 여러분은 인간을 위한 시스템 1, 시스템 2 사고에 익숙할 것입니다. 시스템 1은 빠르고 자동적인 프로세스이며 토큰을 샘플링하는 LLM에 해당한다고 생각합니다. 그리고 시스템 2는 더 느리고 의도적으로 계획하는 뇌의 한 부분입니다.

 

그래서 이것은 실제로 지난 주에 나온 논문입니다. 공간이 꽤 빠르게 진화하고 있기 때문입니다. 그것은 생각의 나무라고 불리며 생각의 나무에서 이 논문의 저자는 주어진 프롬프트에 대해 여러 완성을 유지할 것을 제안했습니다. 그리고 그들은 또한 그 과정에서 점수를 매기고 잘 진행되고 있는 것을 유지하고 있습니다. 그래서 많은 사람들이 기본적으로 LLM을 위해 우리의 두뇌에 있는 이러한 능력 중 일부를 되살리기 위해 일종의 프롬프트 엔지니어링을 가지고 놀고 있습니다.

자, 여기서 주목하고 싶은 한 가지는 이것이 단순한 프롬프트가 아니라는 것입니다. 이것은 실제로 여러 프롬프트를 유지해야 하기 때문에 일부 Python 글루 코드와 함께 사용되는 프롬프트이며 확장할 프롬프트를 파악하기 위해 여기에서 몇 가지 트리 검색 알고리즘을 수행해야 합니다. Python 글루 코드와 (와일드?) 루프 또는 더 큰 알고리즘에서 호출되는 개별 프롬프트의 공생입니다.

나는 또한 여기에 AlphaGo와 정말 멋진 유사점이 있다고 생각합니다. 알파고는 바둑을 칠 때 다음 돌을 놓는 정책이 있는데, 이 정책은 원래 인간을 흉내내어 훈련한 것이다. 그러나 이 정책 외에도 Monte-Carlo 트리 검색도 수행합니다. 그리고 기본적으로 머리 속에서 여러 가능성을 실행하고 모든 가능성을 평가하고 잘 작동하는 가능성만 유지합니다. 그래서 제 생각에는 이것이 일종의 AlphaGo와 비슷하다고 생각합니다. 하지만 그것이 의미가 있다면 텍스트의 경우입니다.

Tree of Thought와 마찬가지로 사람들은 단순한 질문/답변 프롬프트가 아니라 많은 프롬프트를 함께 연결하는 Python 글루 코드와 훨씬 더 비슷해 보이는 더 일반적인 기술을 탐색하기 시작했습니다.

오른쪽에는 생각, 행동, 관찰, 생각, 행동, 관찰의 순서로 프롬프트에 대한 답변을 구성하는 React라는 이 논문의 예가 있습니다. 질문에 답하기 위한 일종의 사고 과정인 전체 롤아웃입니다. 그리고 이러한 작업에서 모델은 도구 사용도 허용됩니다.

 

왼쪽에는 Auto GPT의 예가 있습니다. 그런데 이제 Auto GPT는 최근에 많은 과대 광고를 받은 프로젝트이지만 여전히 영감을 주는 흥미로운 프로젝트라고 생각합니다. LLM이 일종의 작업 목록을 유지하고 계속해서 재귀적으로 작업을 세분화할 수 있는 프로젝트입니다. 그리고 나는 이것이 현재 잘 작동하지 않는다고 생각하며 사람들에게 실제 응용 프로그램에서 사용하도록 조언하지 않습니다. 시간이 지남에 따라 이것이 어디로 가고 있는지에 대해 일반적으로 영감을 얻는 것이라고 생각합니다.

이는 모델 시스템 2에 생각을 부여하는 것과 같습니다.

 

다음으로 흥미로운 점은 LLM의 거의 심리적인 단점은 LLM이 성공하기를 원하지 않는다는 것입니다.

그들은 모방하고 싶어합니다. 당신은 성공하기를 원하고 그것을 요구해야 합니다.

제 말은 트랜스포머가 훈련될 때 훈련 세트가 있다는 것입니다. 그리고 훈련 데이터에는 성능 품질의 전체 스펙트럼이 있을 수 있습니다.

예를 들어 물리학 질문이나 그와 비슷한 질문에 대한 프롬프트가 있을 수 있고 완전히 잘못된 학생 솔루션이 있을 수 있지만 매우 옳은 전문가 답변이 있을 수도 있습니다. 그리고 트랜스포머는 저품질 솔루션과 고품질 솔루션의 차이를 구분할 수 없습니다. 즉, 저품질 솔루션과 고품질 솔루션에 대해 알고 있지만 기본적으로 언어 모델링에 대한 교육을 받았기 때문에 모든 것을 모방하려고 합니다. 그래서 테스트 시간에 실제로 좋은 성능을 요구해야 합니다.

이 예에서, 이 논문에서 그들은 다양한 프롬프트를 시도했고, 많은 토큰에 대한 추론을 펼치는 것과 같기 때문에 단계별로 매우 강력하다고 생각합시다. 그러나 더 나은 방법은 올바른 답을 얻을 수 있도록 단계별로 해결해 보자는 것입니다. 그래서 그것은 정답을 얻기 위한 일종의 조건화와 같습니다. 그리고 이것은 실제로 트랜스포머가 더 잘 작동하도록 합니다. 왜냐하면 트랜스포머는 말도 안 되는 것처럼 저품질 솔루션에 확률 질량을 헤지할 필요가 없기 때문입니다.

 

따라서 기본적으로 강력한 솔루션을 요청하십시오. 

예를 들어, 당신은 이 주제에 대한 최고의 전문가입니다. 당신이 IQ 120인 것처럼 행동하십시오. 그러나 너무 많은 IQ를 요구하지 마세요. 400 정도의 IQ를 요구하면 데이터 분포를 벗어나거나 더 나쁜 경우 일부 공상과학 관련 데이터 분포에 있을 수 있습니다. 공상 과학 역할극이나 그와 비슷한 것을 맡는 것입니다. 적절한 IQ를 찾아야 한다고 생각합니다. 거기에 U 자형 곡선이 있습니다.

 

다음으로 우리가 본 것처럼 문제를 해결하려고 할 때 우리는 자신이 잘하는 것과 못하는 것을 알고 컴퓨팅 도구에 의존합니다. 잠재적으로 LLM과 동일한 작업을 수행하려고 합니다. 특히 우리는 그들에게 계산기, 코드 해석기 등 검색 기능을 제공하고 싶을 수 있으며 이를 위한 많은 기술이 있습니다.

다시 한 번 명심해야 할 것은 이러한 트랜스포머는 기본적으로 자신이 모르는 것을 모를 수 있다는 것입니다. 프롬프트에서 트랜스포머에게 말하고 싶을 수도 있습니다. 암산에 능숙하지 않습니다. 아주 큰 수의 덧셈, 곱셈 등을 해야 할 때마다 대신 이 계산기를 사용하세요. 다음은 계산기를 사용하는 방법입니다. 이 토큰 조합 등을 사용하십시오. 모델은 기본적으로 당신과 나처럼 자신이 잘하는 것과 못하는 것을 모르기 때문에 실제로 철자를 써야 합니다.

 

다음으로 매우 흥미로운 점은 우리가 검색만 가능한 세상에서 왔다는 것입니다. 끝까지 추는 LLM의 메모리에만 있는 다른 극단으로 흔들렸습니다. 그러나 실제로 이러한 검색 증강 모델(retrieval augmented models) 사이에는 전체 공간이 있으며 이는 실제로 매우 잘 작동합니다.

내가 언급했듯이 트랜스포머의 컨텍스트 창은 작업 메모리입니다. 작업과 관련된 정보로 작업 메모리를 로드할 수 있다면 모델은 모든 메모리에 즉시 액세스할 수 있기 때문에 매우 잘 작동합니다. 그래서 많은 사람들이 기본적으로 검색 증강 세대(retrieval augmented generation)에 정말 관심이 있다고 생각합니다.

그리고 하단에는 많은 다른 유형의 데이터에 대한 한 종류의 데이터 커넥터가 있는 LAMA 인덱스의 예가 있습니다. 그리고 그 모든 데이터를 인덱싱할 수 있고 LLM에서 액세스할 수 있도록 만들 수 있습니다.

새로운 레시피는 관련 문서를 가져오고, 청크로 분할하고, 모두 삽입하고, 기본적으로 해당 데이터를 나타내는 삽입 벡터(embedding vectors)를 얻는 것입니다. 이를 벡터 저장소(vector store)에 저장한 다음 테스트 시간에 벡터 저장소에 일종의 쿼리를 만듭니다. 작업과 관련이 있을 수 있는 청크를 가져와 프롬프트에 입력한 다음 생성합니다. 이것은 실제로 잘 작동할 수 있습니다.

 

이것은 당신과 내가 문제를 해결할 때와 비슷하다고 생각합니다. 메모리에서 모든 것을 할 수 있고 트랜스포머는 매우 크고 광범위한 메모리를 가지고 있지만 일부 기본 문서를 참조하는 데 정말 도움이 됩니다. 무언가를 찾기 위해 교과서로 돌아가거나 무언가를 찾기 위해 라이브러리의 문서로 돌아가는 자신을 발견할 때마다 트랜스포머도 확실히 그렇게 하기를 원합니다. 라이브러리의 일부 문서가 작동하는 방식에 대해 약간의 기억이 있지만 찾아보는 것이 훨씬 좋습니다. 여기에도 동일하게 적용됩니다.

 

다음으로 제약 프롬프팅(Constrained Promptin)에 대해 간단히 이야기하고 싶었습니다. 나는 또한 이것이 매우 흥미롭다고 생각합니다. 이것은 기본적으로 LLM의 출력에서 특정 템플릿을 시행하는 기술입니다. 지침은 실제로 Microsoft의 한 예입니다. 이제 LLM의 출력이 JSON이 되도록 강제합니다. 그리고 이것은 실제로 출력이 이 형식을 취한다는 것을 보장할 것입니다. 왜냐하면 그것들이 들어가서 트랜스포머에서 나오는 모든 다른 토큰의 확률을 엉망으로 만들고 그 토큰을 고정하기 때문입니다. 그런 다음 트랜스포머는 여기의 공백만 채우고 있습니다. 그런 다음 해당 공백에 들어갈 수 있는 항목에 대해 추가 제한을 적용할 수 있습니다.

이것은 정말 도움이 될 수 있으며 이러한 종류의 제약 조건 샘플링도 매우 흥미롭다고 생각합니다.

 

또한 fine-tuning에 대해 몇 마디 말하고 싶었습니다. 프롬프트 엔지니어링으로 정말 멀리 갈 수 있는 경우이지만 모델을 fine-tuning하는 것에 대해 생각할 수도 있습니다.

이제 모델을 fine-tuning에한다는 것은 실제로 모델의 가중치를 변경한다는 의미입니다. 실제로 이를 수행하는 것이 훨씬 더 쉽게 접근할 수 있게 되었으며, 이는 최근에 개발되어 라이브러리가 있는 여러 기술 때문입니다.

예를 들어 LoRA와 같은 매개변수 효율적인 fine-tuning 기술을 사용하면 모델의 작고 희소한 부분만 훈련하도록 할 수 있습니다. 대부분의 모델은 기본 모델에 고정되어 있으며 일부는 변경할 수 있습니다. 그리고 그것은 경험적으로 꽤 잘 작동하며 모델의 작은 부분만 조정하는 것이 훨씬 저렴합니다. 또한 대부분의 모델이 고정되어 있기 때문에 경사 하강법으로 업데이트되지 않기 때문에 해당 부분을 계산하는 데 매우 낮은 정밀도의 추론을 사용할 수 있습니다. 따라서 모든 것이 훨씬 더 효율적입니다.

또한 제가 언급한 바와 같이 현재 다양한 오픈 소스 고품질 기반 모델을 보유하고 있습니다. 그리고 저는 LAMA가 꽤 좋다고 생각합니다. 비록 상업적으로 허가되지는 않았지만 지금 당장은 믿습니다.

 

명심해야 할 점은 기본적으로 fine-tuning은 기술적으로 훨씬 더 복잡하다는 것입니다. 제대로 하려면 훨씬 더 많은 기술적 전문성이 필요하다고 생각합니다. 꽤 복잡할 수 있는 데이터 세트 및/또는 합성 데이터 파이프라인(synthetic data pipelines)에 대한 인간 데이터 계약자가 필요합니다. 이렇게 하면 반복 주기가 확실히 느려집니다.

그리고 높은 수준에서 SFT는 언어 모델링 작업을 계속하고 있기 때문에 달성할 수 있다고 말하고 싶습니다. 비교적 간단합니다. 그러나 RLHF는 매우 연구 영역이며 작업하기가 훨씬 더 어렵습니다. 따라서 누군가가 자신의 RLHF 구현을 시도한다고 조언하지 않을 것입니다. 이것들은 꽤 불안정하고 훈련하기가 매우 어렵습니다. 제 생각에 지금 당장은 매우 초보자에게 친숙한 것이 아닙니다. 그리고 잠재적으로 여전히 매우 빠르게 변할 가능성이 있습니다.

 

나는 이것이 바로 지금 내 일종의 기본 권장 사항이라고 생각합니다. 귀하의 작업을 두 가지 주요 부분으로 나눌 것입니다. 첫 번째는 최고의 성능을 달성하는 것이고, 두 번째는 이 순서대로 성능을 최적화하는 것입니다.

첫째, 현재 최고의 성능은 GPT-4 모델에서 나옵니다. 지금까지 가장 유능합니다. 매우 상세한 프롬프트를 사용하십시오. 그들은 많은 작업 컨텍스트, 관련 정보 및 지침을 가지고 있습니다. 이메일로 답장을 보낼 수 없는 경우 작업 계약자에게 무엇을 말할 것인지 생각해 보십시오. 그러나 작업 계약자는 인간이며 내면의 독백이 있고 매우 영리하다는 점을 명심하십시오. LLM은 이러한 자질을 가지고 있지 않으므로 LLM의 심리학을 거의 생각하고 이에 대한 프롬프트를 제공해야 합니다.

관련 컨텍스트 및 정보를 이러한 프롬프트에 검색 및 추가하고 기본적으로 많은 프롬프트 엔지니어링 기술을 참조하십시오. 그 중 일부는 위의 슬라이드에 강조 표시되어 있지만 이 역시 공간이 매우 넓기 때문에 온라인에서 프롬프트 엔지니어링 기술을 찾아보라고 권하고 싶습니다. 거기에는 다루어야 할 것이 많습니다.

몇 가지 간단한 예를 들어 실험해 보십시오. 이것이 말하는 것은 단지 말하고 싶은 것이 아니라 가능할 때마다 보여주고 싶다는 것입니다. 가능한 경우 사용자가 의미하는 바를 실제로 이해하는 데 도움이 되는 모든 예를 제공하십시오.

도구와 플러그인을 실험하여 기본적으로 LLM에게 어려운 작업을 오프로드한 다음 단일 프롬프트 및 답변이 아닌 것에 대해 생각하십시오. 잠재적인 변화와 반영, 그것들을 함께 붙이는 방법, 잠재적으로 여러 샘플을 만들 수 있는 방법 등에 대해 생각해 보십시오.

마지막으로, 잠시 동안 계속해야 할 프롬프트 엔지니어링을 짜냈다고 생각한다면 응용 프로그램에 맞게 모델을 잠재적으로 fine-tuning할 수 있는 몇 가지를 살펴보십시오. 그리고 여기에 전문가의 취약한 연구 영역이 있습니다. 저는 그것이 작동하도록 할 수 있다면 현재 SFT보다 약간 더 잘 작동하는 RLHF라고 말하고 싶습니다. 그러나 다시 말하지만 이것은 꽤 관련이 있습니다. 그리고 비용을 최적화하려면 더 낮은 용량 모델이나 더 짧은 프롬프트 등을 탐색하십시오.

 

또한 LLM이 현재 적합하다고 생각되는 사용 사례에 대해 몇 마디 말하고 싶었습니다. 특히 오늘날 LLM에는 많은 제한 사항이 있습니다. 그래서 저는 귀하의 모든 응용 프로그램에 대해 확실히 염두에 둘 것입니다. 그건 그렇고, 이것은 전체 연설이 될 수 있으므로 자세히 다룰 시간이 없습니다.

 

모델이 편향될 수 있습니다. 그들은 정보를 조작하고 환각(hallucinate) 시킬 수 있습니다. 추론 오류(resoning errors)가 있을 수 있습니다. 그들은 전체 종류의 응용 프로그램에 어려움을 겪을 수 있습니다. 그들은 지식 컷오프가 있기 때문에 예를 들어 2021년 9월에 대한 정보를 모를 수 있습니다.

프롬프트 주입(prompt injection), 탈옥 공격(jailbreak attacks), 데이터 중독 공격(data poisioning attacks)을 포함하여 매일 Twitter에 나오는 것과 같은 광범위한 공격에 취약합니다.

지금 제가 추천하는 것은 저부담 애플리케이션에서 LLM을 사용하고, 항상 사람의 감독과 결합하고, 영감과 제안의 원천으로 사용하고, 어딘가에서 작업을 수행하는 완전히 자율적인 에이전트 대신 부조종사를 생각하는 것입니다. 모델이 지금 거기에 있는지는 확실하지 않습니다.

GPT-4는 놀라운 인공물이라는 말로 마무리하고 싶었습니다. 그것이 존재한다는 것에 매우 감사하고 아름답습니다. 수학, 코딩 등을 할 수 있는 많은 영역에 걸쳐 엄청난 지식을 가지고 있습니다. 

 

또한 생태계에 구축되고 통합되는 다른 모든 것의 번창하는 생태계가 있습니다. 제가 말한 것 중 일부입니다. 그리고 이 모든 기능을 손끝에서 사용할 수 있습니다.

 

다음은 GPT-4에 질문을 하고 메시지를 표시하고 응답을 받기 위한 코드 측면에서 필요한 모든 것입니다. 이 경우 "Microsoft Build 2023의 청중에게 영감을 줄 수 있는 말을 할 수 있습니까?"라고 물었습니다. 저는 이것을 Python에 입력했고 그대로 GPT-4는 다음과 같이 말했습니다.

그리고 그나저나 기조연설에서 이 트릭을 사용했는지 몰랐기 때문에 제가 영리하다고 생각했습니다.  하지만 이건 정말 잘해요.

“신사숙녀 여러분, Microsoft Build 2023의 혁신가 및 선구자 여러분, 그 어느 때보다 뛰어난 인재들의 모임에 오신 것을 환영합니다. 여러분은 미래의 건축가이자 인류가 번성하는 디지털 영역을 형성하는 공상가입니다. 기술의 무한한 가능성을 받아들이고 아이디어가 상상만큼 높이 솟아오를 수 있도록 하십시오. 다음 세대를 위해 더욱 연결되고 놀랍고 포용적인 세상을 함께 만들어 갑시다. 창의력을 발휘하고 미지의 세계를 탐험하며 꿈을 현실로 만들 준비를 하세요. 당신의 여정은 오늘부터 시작됩니다.”

728x90
반응형