알파카: 강력한 오픈소스 명령-따름 모델

2023. 3. 15. 00:00Generative AI

알파카 (언어모델)

Alpaca: A Strong Open-Source Instruction-Following Model
저자: 로한 타오리*와 이샨 굴라자니*, 티안이 장*, 얀 두부아*, 쉬첸 리*, 카를로스 게스트린, 퍼시 량, 타츠노리 B. 하시모토
 
52K 명령따르기 데모에서 LLaMA 7B 모델을 파인 튜닝 모델인 Alpaca 7B를 소개합니다. 알파카는 OpenAI의 텍스트 다빈치-003과 유사하게 작동하지만 놀라울 정도로 작고 재현하기 쉽고 저렴합니다(600달러 미만).
 
* 알파카 7B
> LLaMA 7B 모델 파인튜닝 모델
> OpenAI 다빈치-003과 유사하지만, 사이즈가 작고 저렴합니다. (600달러 미만? 오픈AI 다빈치-003 호출 비용, 데이터 생성 비용)
 
 
참고: Instrction-Following Model
<사람의 피드백을 통해 지침을 따르도록 훈련된 언어 모델>
언어 모델을 더 크게 만든다고 해서 본질적으로 사용자의 의도를 더 잘 따르는 것은 아닙니다. 

참고: https://arxiv.org/abs/2203.02155  
언어 모델을 더 크게 만든다고 해서 본질적으로 사용자의 의도를 더 잘 따르는 것은 아닙니다. 예를 들어, 언어 모델이 크면 진실하지 않거나, 독성이 있거나, 사용자에게 도움이 되지 않는 출력을 생성할 수 있습니다. 즉, 이러한 모델은 사용자와 일치하지 않습니다. 이 백서에서는 사람의 피드백을 통해 미세 조정함으로써 광범위한 작업에서 언어 모델을 사용자 의도에 맞게 조정할 수 있는 방법을 보여줍니다. OpenAI API를 통해 제출된 라벨러가 작성한 프롬프트와 프롬프트 세트부터 시작하여 원하는 모델 동작에 대한 라벨러 데모 데이터 세트를 수집하여 지도 학습을 사용하여 GPT-3을 미세 조정하는 데 사용합니다. 그런 다음 모델 출력의 순위 데이터 세트를 수집하여 사람의 피드백을 통한 강화 학습을 사용하여 이 지도 모델을 더욱 미세 조정하는 데 사용합니다. 결과 모델을 InstructGPT라고 부릅니다. 사람이 직접 평가한 결과, 13억 개의 파라미터를 가진 InstructGPT 모델이 100배 더 적은 파라미터를 가졌음에도 불구하고 175억 개의 파라미터를 가진 GPT-3 모델보다 선호도가 높았습니다. 더욱이, InstructGPT 모델은 퍼블릭 NLP 데이터 세트에서 성능 저하를 최소화하면서 진실성이 개선되고 독성 출력 생성이 줄어든 것으로 나타났습니다. 비록 InstructGPT가 여전히 간단한 실수를 저지르긴 하지만, 이번 연구 결과는 사람의 피드백을 통한 미세 조정이 언어 모델을 사람의 의도에 맞게 조정하는 데 유망한 방향임을 보여줍니다.

 
개요
GPT-3.5(텍스트-다빈치-003), ChatGPT, 클로드, 빙 채팅과 같은 명령어 추종 모델은 점점 더 강력해지고 있습니다. 이제 많은 사용자가 이러한 모델과 정기적으로 상호 작용하고 심지어 업무에 사용하기도 합니다. 그러나 이러한 모델이 널리 배포되고 있음에도 불구하고 지시 따르기 모델에는 잘못된 정보를 생성하고, 사회적 고정관념을 전파하며, 유해한 언어를 생성할 수 있는 등 여전히 많은 결함이 있습니다.
* 문제 : 가짜 정보 생성
- 잘못된 고정 관념 전파
- 유해한 언어 생성

이러한 시급한 문제를 최대한 해결하려면 학계의 참여가 중요합니다. 안타깝게도 OpenAI의 text-davinci-003과 같은 폐쇄형 모델에 근접한 기능을 갖춘 오픈 소스 모델이 없기 때문에 학계에서 지시 추종 모델에 대한 연구를 수행하는 것은 어려웠습니다.
* 문제: OpenAI의 모델(ex. text-davinci-003)은 비공개 모델
- 학계에서 이에 대한 연구를 할 수 없음

메타의 LLaMA 7B 모델을 미세 조정한 알파카(Alpaca)라는 이름의 명령어 추종 언어 모델에 대한 연구 결과를 공개합니다. 알파카 모델은 텍스트 다빈치-003을 사용하여 자가 학습 스타일로 생성된 52K개의 명령어 추종 데모로 훈련했습니다. 알파카는 OpenAI의 텍스트 다빈치-003과 유사한 동작을 많이 보여주지만, 놀랍게도 크기가 작고 재현이 쉽고 저렴합니다.
 
* 자가 학습 스타일, 셀프 인스트럭션: 언어 모델과 자체 생성 명령어 정렬하기

참고: https://arxiv.org/abs/2212.10560  
대규모 '명령어 튜닝' 언어 모델(명령어에 반응하도록 미세 조정)은 제로 샷을 새로운 작업에 일반화할 수 있는 놀라운 능력을 입증했습니다. 그럼에도 불구하고 양과 다양성, 창의성이 제한적인 사람이 작성한 명령어 데이터에 크게 의존하기 때문에 튜닝된 모델의 일반성을 저해합니다. 이에, 자체 생성에서 부트스트랩하여 사전 학습된 언어 모델의 명령어 추종 기능을 개선하는 프레임워크인 Self-Instruct를 소개합니다. 파이프라인은 언어 모델에서 명령어, 입력 및 출력 샘플을 생성한 다음 이를 잘라내어 원래 모델을 미세 조정하는 데 사용합니다. 바닐라 GPT3에 이 방법을 적용한 결과, 개인 사용자 데이터와 사람의 주석으로 학습된 InstructGPT_001의 성능과 동등한 수준으로 Super-Natural Instructions에서 원래 모델보다 33% 절대적으로 향상된 성능을 보였습니다. 추가 평가를 위해 새로운 작업에 대한 전문가 작성 명령어 세트를 큐레이팅하고, 사람의 평가를 통해 Self-Instruct로 GPT3를 튜닝하는 것이 기존 공개 명령어 데이터 세트를 사용하는 것보다 큰 폭으로 성능이 뛰어나며, 절대적인 격차는 5%에 불과하다는 것을 보여줍니다. Self-Instruct는 사전 학습된 언어 모델을 명령어와 정렬하는 데 거의 주석이 필요 없는 방법을 제공하며, 향후 명령어 튜닝에 대한 연구를 촉진하기 위해 대규모 합성 데이터 세트를 공개합니다.

 
학습 레시피와 데이터를 공개하고 있으며, 향후 모델 가중치도 공개할 예정입니다. 또한 연구 커뮤니티가 알파카의 행동을 더 잘 이해할 수 있도록 대화형 데모를 개최하고 있습니다. 상호작용을 통해 예상치 못한 기능과 실패를 발견할 수 있으며, 이는 향후 모델 평가에 도움이 될 것입니다. 또한 이러한 동작을 더 잘 이해하고 완화할 수 있도록 사용자가 웹 데모에서 우려되는 동작을 신고해 주시기 바랍니다. 모든 릴리스에는 위험이 수반되므로 이 블로그 게시물의 뒷부분에서 이번 공개 릴리스에 대한 저희의 사고 프로세스에 대해 설명합니다.

알파카는 학술 연구용으로만 사용되며 상업적 사용은 금지된다는 점을 강조합니다. 이러한 결정에는 세 가지 요소가 있습니다: 첫째, 알파카는 비상업적 라이선스가 있는 LLaMA를 기반으로 하고 있으므로 이 결정을 그대로 계승합니다. 둘째, 명령 데이터는 OpenAI의 텍스트 다빈치-003을 기반으로 하는데, 사용 약관에 따라 OpenAI와 경쟁하는 모델을 개발하는 것이 금지되어 있습니다. 마지막으로, 적절한 안전 조치를 설계하지 않았기 때문에 알파카는 일반적인 용도로 배포할 준비가 되어 있지 않습니다.
>> 알파카: 학술 연구용, 상업적 사용 금지
>> LLaMA는 비상업적 라이선스, 이를 이용하는 알파카도 비상업적으로 사용해야함
>> OpenAI의 다빈치-003을 기반으로 명령어를 만듦 => 사용 약관에는 경쟁 모델 개발 금지되어 있음
 
트레이닝 레시피
교육 예산 내에서 고품질의 명령어 추종 모델을 훈련하기 위해서는 강력한 사전 학습 언어 모델과 고품질의 명령어 추종 데이터라는 두 가지 중요한 과제가 있습니다. 첫 번째 과제는 최근 출시된 Meta의 새로운 LLaMA 모델을 통해 해결되었습니다. 두 번째 과제에 대해서는 기존의 강력한 언어 모델을 사용하여 인스트럭션 데이터를 자동으로 생성할 것을 제안하는 셀프 인스트럭트 논문이 있습니다. 특히 알파카는 OpenAI의 텍스트-davinci-003에서 생성된 52K 명령어 데모에 대한 LLaMA 7B 모델의 지도 학습을 사용하여 미세 조정된 언어 모델입니다.
* 모델 훈련에 필요한 사항
>> 사전 학습 언어 모델 (🦙: 라마, LLaMA)
>> 명령어 추종 데이터 (instruction-following data) // davinci-003 으로 생성한 52K 명령어 사용

아래 그림은 알파카 모델을 얻은 방법을 보여줍니다. 데이터의 경우, 자가 학습 방법을 기반으로 명령에 따른 데모를 생성했습니다. 먼저 자가 학습 시드 세트에서 사람이 작성한 175개의 명령어-출력 쌍으로 시작했습니다. 그런 다음 텍스트-davinci-003에 문맥 내 예제로서 시드 세트를 사용하여 더 많은 명령어를 생성하도록 요청했습니다. 생성 파이프라인을 간소화하여 자체 인스트럭트 방식보다 개선했으며(자세한 내용은 GitHub 참조), 비용도 크게 절감했습니다. 데이터 생성 프로세스를 통해 52,000개의 고유 명령어와 해당 출력이 생성되며, OpenAI API를 사용하여 500달러 미만의 비용이 들었습니다.

- 사람이 만든 175개의 명령어 시드(Seed) 태스크를 다빈치-003에 넣어서, 52k개의 명령어-추종 예제를 생성함
- 이 데이터로 LLaMa를 파인튜닝함
 
이 지침을 따르는 데이터 세트를 장착한 다음, 완전히 샤딩된 데이터 병렬 및 혼합 정밀도 훈련과 같은 기술을 활용하여 허깅 페이스의 훈련 프레임워크를 사용하여 LLaMA 모델을 미세 조정했습니다. 대부분의 클라우드 컴퓨팅 제공업체에서 100달러도 안 되는 비용으로 8개의 80GB A100에서 7B LLaMA 모델을 미세 조정하는 데 3시간이 걸렸습니다.
- 허깅페이스 트레이닝 프레임워크를 이용
- 클라우드 컴퓨팅 업체에서 3시간 학습 (100달러 미만 비용 발생)
 
예비 평가
알파카를 평가하기 위해 셀프 인스트럭션 평가 세트의 입력에 대해 5명의 학생 작성자가 인적 평가를 실시합니다. 이 평가 세트는 셀프 인스트럭션 작성자가 수집한 것으로 이메일 작성, 소셜 미디어, 생산성 도구 등 다양한 사용자 중심 지침 목록을 포함합니다. 텍스트 다빈치 003과 알파카 7B를 블라인드 쌍으로 비교한 결과, 두 모델의 성능이 매우 유사하다는 것을 알 수 있었습니다: 알파카는 텍스트 다빈치 003과의 비교에서 90 대 89로 승리했습니다.
5명의 학생이 평가 실시
- 알파카 90
- 다빈치 89

모델 크기가 작고 데이터 추종 명령의 양이 많지 않다는 점을 고려할 때 이 결과는 상당히 놀라웠습니다. 이 정적 평가 세트를 활용하는 것 외에도, 알파카 모델을 대화형으로 테스트한 결과 알파카가 다양한 입력 세트에서 텍스트-davinci-003과 유사하게 작동하는 경우가 많다는 것을 발견했습니다. 알파카의 대화형 데모를 공개할 예정이니 독자들이 알파카를 직접 평가하고 피드백을 보내주시기 바랍니다.

이 섹션의 나머지 부분에서는 알파카의 기능과 한계를 보여드리기 위해 몇 가지 인터랙션 예제를 포함했습니다.

위의 예는 알파카의 출력이 일반적으로 잘 작성되어 있음을 보여줍니다. 알파카는 명령어를 따르는 데이터 세트의 일반적인 스타일을 반영한다는 점에 유의하세요. 그 결과, 알파카의 답변은 일반적으로 ChatGPT보다 짧으며, 이는 텍스트-davinci-003의 짧은 출력을 반영합니다.
 

알파카에게 instruction follwing model 이 무엇인지 물어봤습니다. 무료 서비스로 제공중이라 처리 시간이 꽤 오래 걸려서 답변을 했습니다. 꽤 정확한 답변을 해냈네요.

 
알려진 한계
알파카는 환각, 독성, 고정관념 (hallucination, toxicity, and stereotypes) 등 언어 모델에서 흔히 볼 수 있는 몇 가지 결함도 보입니다. 특히 환각은 텍스트 다빈치-003과 비교해도 알파카의 일반적인 실패 모드인 것으로 보입니다.

예를 들어, 다음 그림에서 알파카는 탄자니아의 수도가 탄자니아에서 가장 큰 도시인 다르에스살람이라고 잘못 말합니다. (도도마로 대체되기 전인 1974년까지 수도였습니다.)

또한 다음 예시에서 볼 수 있듯이 알파카는 잘못된 정보를 퍼뜨리는 잘 작성된 결과물을 생성하는 데에도 사용할 수 있습니다.

알파카에는 기본 언어 모델 및 명령어 튜닝 데이터와 관련된 다른 많은 제한 사항이 있을 수 있습니다. 그러나 이 아티팩트는 중요한 결함을 연구하는 데 기초가 되는 비교적 가벼운 모델을 제공하므로 커뮤니티에 여전히 유용할 것으로 믿습니다. 사용자 여러분께서도 웹 데모에서 새로운 종류의 장애를 플래그 지정하여 식별하는 데 도움을 주실 것을 권장합니다. 전반적으로 알파카의 출시가 지시 추종 모델과 인간의 가치에 부합하는 모델에 대한 추가 연구를 촉진할 수 있기를 바랍니다.

출시되는 에셋
오늘 출시되는 에셋은 다음과 같습니다:

- 데모: 누구나 알파카를 사용해 볼 수 있는 대화형 데모입니다.
- 데이터: 알파카를 미세 조정하는 데 사용되는 52K 데모.
- 데이터 생성 프로세스: 데이터 생성을 위한 코드.
- 하이퍼파라미터: 허깅 페이스 API를 사용하여 모델을 미세 조정하는 데 사용됩니다.
 
가까운 시일 내에 다음 에셋을 출시할 예정입니다:

- 모델 가중치: 7B 알파카 및 더 큰 LLaMA 모델의 미세 조정 버전에 대한 알파카 모델 가중치 출시에 대한 지침을 얻기 위해 Meta에 문의했습니다.
- 훈련 코드: 유니티의 코드는 포옹 얼굴 인터페이스를 LLaMA에 사용합니다. 현재로서는 LLaMA를 지원하기 위한 노력이 아직 진행 중이며 안정적이지 않습니다. Hugging Face가 공식적으로 LLaMA를 지원하게 되면 정확한 훈련 명령어를 제공할 예정입니다.
 
공개 결정
위의 자산을 공개함으로써 학계가 교육을 따르는 언어 모델에 대한 통제된 과학적 연구를 수행할 수 있게 되어 더 나은 과학적 연구와 궁극적으로 이러한 모델의 기존 결함을 해결할 수 있는 새로운 기술을 개발할 수 있을 것으로 믿습니다.

동시에 모든 공개에는 몇 가지 위험이 수반됩니다. 첫째, 학습 레시피를 공개하면 특정 기능의 실현 가능성이 드러난다는 점을 잘 알고 있습니다. 한편으로는 더 많은 사람들(악의적인 행위자 포함)이 (의도적이든 아니든) 해를 끼칠 수 있는 모델을 만들 수 있게 됩니다. 반면, 이러한 인식은 특히 이러한 모델에 대한 심층적인 안전 연구를 수행할 수 있는 수단을 확보한 학계에서 신속한 방어 조치를 취하도록 장려할 수 있습니다. 전반적으로, 저희는 연구 커뮤니티에 대한 혜택이 이 특정 릴리스의 위험보다 더 크다고 생각합니다.

훈련 레시피를 공개하는 만큼, 데이터, 모델 가중치, 훈련 코드를 공개해도 레시피의 단순성을 고려할 때 추가적인 위험은 최소화할 수 있다고 생각합니다. 동시에 이러한 자산을 공개하면 학계에서 표준 데이터 세트, 모델 및 코드를 사용하여 통제된 비교를 수행하고 확장을 탐색할 수 있으므로 재현 가능한 과학에 엄청난 이점이 있습니다.

알파카에 대화형 데모를 배포하면 유해한 콘텐츠가 더 널리 퍼지고 스팸, 사기 또는 허위 정보의 장벽이 낮아지는 등 잠재적인 위험도 있습니다. 저희는 두 가지 위험 완화 전략을 마련했습니다. 첫째, OpenAI의 콘텐츠 중재 API를 사용하여 콘텐츠 필터를 구현하여 OpenAI의 사용 정책에 정의된 유해 콘텐츠를 필터링합니다. 둘째, 다른 사람들이 알파카 7B의 출력인지 여부를 어느 정도 확률로 감지할 수 있도록 Kirchenbauer 외(2023)에 설명된 방법을 사용하여 모든 모델 출력에 워터마크를 표시합니다. 마지막으로, 데모 사용에 대한 엄격한 이용 약관이 있으며, 비상업적 용도로만 사용할 수 있고 LLaMA의 라이선스 계약을 준수하는 용도로만 제한됩니다.

모델 웨이트를 공개하거나 사용자가 직접 지시에 따라 모델을 훈련하면 이러한 완화 조치를 우회할 수 있다는 것을 알고 있습니다. 그러나 이러한 완화 조치를 도입함으로써 모범 사례를 발전시키고 궁극적으로 기초 모델의 책임 있는 배포를 위한 커뮤니티 규범을 개발할 수 있기를 바랍니다.

향후 방향
저희는 알파카가 열어줄 연구 기회에 흥분하고 있습니다. 앞으로의 흥미로운 방향이 많이 있습니다:

- 평가: 알파카를 더욱 엄격하게 평가할 필요가 있습니다. 우리는 언어 모델의 전체론적 평가(HELM)로 시작하여 보다 생성적이고 지시를 따르는 시나리오를 포착할 수 있도록 발전해 나갈 것입니다.
- 안전: 알파카의 위험성을 더 연구하고 자동 레드팀, 감사 및 적응 테스트와 같은 방법을 사용하여 알파카의 안전성을 개선하고자 합니다.
- 이해: 훈련 레시피에서 기능이 어떻게 발생하는지 더 잘 이해하고자 합니다. 기본 모델에는 어떤 특성이 필요하나요? 확장하면 어떤 일이 발생하나요? 인스트럭션 데이터의 어떤 속성이 필요한가요? 텍스트-davinci-003에서 자가 학습을 사용하는 대신 사용할 수 있는 대안은 무엇인가요?

감사
알파카는 기존 작업에 직접적으로 그리고 비판적으로 의존하고 있습니다. LLaMA 모델을 훈련하고 공개한 Meta AI Research, 데이터 생성 파이프라인의 기반을 제공한 셀프 인스트럭트 팀, 훈련 코드를 제공한 Hugging Face, 그리고 길을 닦고 달성할 수 있는 것을 보여준 OpenAI에 감사의 말씀을 전하고 싶습니다.

또한, 명령어 추종형 LLM과 채팅 모델을 위한 오픈소스 노력에는 OpenChatKit, Open Assistant, Carper AI 등 다른 많은 오픈소스도 있다는 점을 강조하고 싶습니다.
 
 
>> 오픈소스 기반의 대규모 언어 모델을 개발, 서비스 환경이 점점 더 좋아지고 있습니다. 놀랍습니다.
 
 
본 글은 다음 링크의 내용을 번역, 요약했습니다.
 
https://crfm.stanford.edu/2023/03/13/alpaca.html

Stanford CRFM

We introduce Alpaca 7B, a model fine-tuned from the LLaMA 7B model on 52K instruction-following demonstrations. Alpaca behaves similarly to OpenAI’s text-davinci-003, while being surprisingly small and easy/cheap to reproduce (<$600). Web Demo   GitHub

crfm.stanford.edu