최근 OpenAI가 개발한 AI 챗봇 프로그램인 ChatGPT가 주요 AI 커뮤니티를 휩쓸었습니다. 이에 대한 모든 사람의 열정은 더욱 높아졌으며 계속해서 그 잠재력을 활용하고 있습니다.
일부 연구자들은 가만히 앉아 있지 못하고 ChatGPT와 동등한 오픈 소스 소프트웨어를 개발하는 방법을 궁금해하기 시작했습니다. 아직 조치를 취하지 않은 분들을 위해 이번에 소개할 프로젝트(PaLM + RLHF)는 이러한 기능을 구현한 참고 사례입니다.
프로젝트 주소: https://github.com/lucidrains/PaLM-rlhf-pytorch
이 프로젝트는 PaLM 아키텍처 위에 RLHF(Human Feedback Reinforcement Learning)를 구현하는 것입니다. 기본적으로 ChatGPT와 동일하지만 차이점은 PaLM을 사용한다는 점입니다. PaLM은 Google의 일반 AI 아키텍처 "Pathways"에서 훈련된 5,400억 개의 매개변수를 갖춘 대규모 언어 모델입니다. RLHF는 ChatGPT가 GPT 3.5 시리즈 모델을 기반으로 사전 훈련된 언어 모델을 지속적으로 미세 조정하는 "인위적으로 레이블이 지정된 데이터 + 강화 학습"(RLHF)을 도입하여 대규모 언어 모델(LLM)이 학습할 수 있도록 하는 것을 목표로 합니다. 인간의 명령을 이해하고 주어진 프롬프트에 따라 최적의 답변을 제공하는 방법을 배웁니다.
RLHF에 대해 더 알고 싶다면 다음을 참조하세요: https://huggingface.co/blog/rlhf
네티즌들은 "AI 분야에서는 특별한 돌파구가 있을 때마다 개발자들이 빠르게 오픈 소스 버전이 재생산됩니다. "
그러나 프로젝트에는 현재 사전 훈련된 가중치 없이 훈련 아키텍처와 코드만 포함되어 있습니다. 사용 지침에서 문서에는 PaLM을 먼저 교육해야 한다고 나와 있습니다.
일부 네티즌들도 이에 대해 다음과 같이 우려를 표시했습니다. 이것은 기성 프로젝트가 아니라 껍질과 같은 구조일 뿐이며 훈련하는 데 값비싼 간접비가 필요합니다. 조직은 그런 식으로 Google Train PaLM과 같을 수 있습니다.
일부 네티즌들은 "사전 훈련된 가중치가 없는 것은 매우 안타깝다. 공식적으로 희소 가중치의 50% 이상을 해제해야 하고, 나머지는 개발자가 스스로 훈련하게 하는 것이 최선의 선택"이라고 말했다.
그러나 일부 네티즌들은 시도해 보겠다고 말했습니다.
이 프로젝트가 어떻게 진행되는지 살펴 보겠습니다.
$ pip install palm-rlhf-pytorch
다른 자동 회귀 변환기와 마찬가지로 PaLM을 먼저 훈련합니다.
import torch from palm_rlhf_pytorch import PaLM palm = PaLM( num_tokens = 20000, dim = 512, depth = 12 ).cuda() seq = torch.randint(0, 20000, (1, 2048)).cuda() loss = palm(seq, return_loss = True)loss.backward() # after much training, you can now generate sequences generated = palm.generate(2048) # (1, 2048)
그런 다음 선별된 인간 피드백을 사용하여 보상 모델을 교육합니다. 원본 논문에서는 과적합 없이 사전 훈련된 변환기로부터 미세 조정된 보상 모델을 얻는 것이 불가능했습니다. 프로젝트 작성자는 미세 조정을 위해 LoRA를 사용할 수 있는 옵션을 제공합니다.
import torch from palm_rlhf_pytorch import PaLM, RewardModel palm = PaLM( num_tokens = 20000, dim = 512, depth = 12, causal = False ) reward_model = RewardModel( palm, num_binned_output = 5 # say rating from 1 to 5 ).cuda() # mock data seq = torch.randint(0, 20000, (1, 1024)).cuda()prompt_mask = torch.zeros(1, 1024).bool().cuda() # which part of the sequence is prompt, which part is response labels = torch.randint(0, 5, (1,)).cuda() # train loss = reward_model(seq, prompt_mask = prompt_mask, labels = labels)loss.backward() # after much training reward = reward_model(seq, prompt_mask = prompt_mask)
마지막으로 변환기 및 보상 모델을 RLHFTrainer에 전달합니다.
아아아아위 내용은 충분히 빠르다! 인기 있는 ChatGPT와 동등한 오픈 소스 프로젝트가 여기에 있습니다. 네티즌: 실행하지 못할까 걱정됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!