Skip to content

Latest commit

 

History

History
35 lines (18 loc) · 5.86 KB

230719 Llama 2.md

File metadata and controls

35 lines (18 loc) · 5.86 KB

Llama 2에 대한 생각.

새로운 모델이 나온다기에 크기도 좀 더 커지고 multilingual로 한 3~5T 토큰 정도를 쓴, 뭔가 최신 레시피가 들어간 모델이 나오지 않을까 하는 예상(이라기보다는 기대)을 했었는데 실제로는 1과 엇비슷한 모델이 나왔다. 데이터를 좀 더 확장해서 2T 토큰에 4K context length, GQA 등. 기존 Llama에서 유틸리티(context length, GQA)적 측면, 데이터 측면에서 아쉬운 것을 보강하고 다시 만드는 식으로 작업한 게 아닐까 싶다. 아마 1과 2 프리트레이닝 사이에 시간적 갭이 그렇게 크지는 않지 않았을까 하는 생각도 있다. 이후에 나올 preference data 수집에 최소 14주 정도를 썼다는 것을 고려하면.

학습 데이터에서도 safety를 위해 민감 정보가 많은 사이트들을 배제하고 좀 더 고가치 데이터를 upsampling하는 정도의 작업을 주로 소개하고 있다. pretrain 데이터 mix가 궁금하긴 한데 이건 안 알려줌.

그러니까 대략 1의 연장선상에 있는 모델이라는 느낌. 2T까지도 training loss curve가 예쁘게 나온다는 것을 다시 확인했고, 토큰을 좀 더 넣어보면 재미있겠다는 생각이 든다. 사실상 english monolingual이라는 것이 아쉬운데 다른 언어에 대해 추가 프리트레이닝도 해볼만하겠다는 생각이 든다.

사실 Llama 2 논문의 메인 포인트는 Alignment라고 봐야할 것이다. 메타에서도 프리트레이닝 뿐만 아니라 alignment를 하고 싶은 욕구가 있었을 것 같긴 하다.

1단계로 SFT를 보면 Flan 데이터로 부트스트래핑을 한 것을 제외하면 공개된 instruction tuning 데이터는 배제했다. 이유로는 퀄리티 컨트롤의 문제를 들었는데 사실 상업적 공개까지 염두에 둔 상태에서 GPT 데이터를 털어오는 것은 선택하기 어려웠을 것 같기도 하다. 27K 정도의 데이터를 모았고, 메타에서는 대략 이 정도로도 충분히 만족스러운 수준까지 올라왔다고 판단한 듯 싶다.

그리고 이 데이터를 기반으로 대규모로 preference data를 수집했다. 14 배치에 걸쳐 1.4M 데이터를 수집했고, 여기에 공개되어 있는 preference data를 결합해 총 2.9M 수준의 데이터를 사용했다. 흥미로운 것은 이 정도 규모가 되어도 학습한 reward model의 성능이 saturation 되지 않는다는 것. 더 큰 규모의 데이터로 성능이 더 향상될 여지가 많을 것 같다.

OpenAI에서 수학 문제 풀이에 800K 수준의 preference data를 구축했던 것을 고려하면(https://arxiv.org/abs/2305.20050) OpenAI나 Anthropic에서는 10M 단위의 preference comparison을 보유하고 있지 않을까 싶기도 하다.

개인적으로는 이 sft와 preference 데이터셋의 수집 과정에 대한 디테일들, agreement ratio 등이 궁금하긴 하다.

reward modeling 단계의 흥미로운 부분은 preference의 정도에 따라 ranking loss에 margin term을 추가했다는 것.

그리고 preference data의 수집과 함께 RLHF를 총 5번 진행했다. preference data로 reward model을 학습하고, 학습된 reward model로 RLHF를 진행하고, RLHF 모델로 새 데이터를 수집하는 것을 반복하는 방식.

이렇게 iteration을 여러 번 진행하다 보니 매번 PPO를 튜닝하는 것은 부담스러웠던 것 같고, 그래서 더 심플하게 Best-of-N으로 여러 샘플을 뽑고 reward model로 최선의 샘플을 추려 그 샘플에 대해 supervised training을 진행하는 방식을 사용했다. 그리고 마지막 iteration에 대해서만 PPO를 진행.

RLHF를 여러 번 진행하는 것은 Anthropic에서 보여준 적이 있는데(https://arxiv.org/abs/2204.05862) 그 사례가 더 추가됐다고 할 수 있겠다.

RLHF 과정에서 흥미로운 포인트는 helpful reward model과 harmless reward model을 따로 두고 이 둘을 휴리스틱으로 결합하여 reward를 만들었다는 것. 여러모로 helpfulness와 harmlessness를 분리해서 생각하는 것이 필요하다는 것을 다시 확인하는 것인 듯 하다.

또 한 가지 흥미로운 것은 시스템 프롬프트, 페르소나, 혹은 이모지나 하이쿠로 답하라 같은 프롬프트에 대해 일관되게 답을 할 수 있는 기능을 주입한 방법(GAtt). context distillation 기반 방법인데, 이런 형태의 이미 친숙한 기능도 그냥 되는 것이 아니라 추가적인 작업이 필요하다는 것과 그걸 어떻게 할 수 있는지를 보여준 사례라고 할 수 있겠다.

마지막으로 흥미로웠던 것은 RLHF가 성공적인 이유로 제안하는 것. RLHF가 성공적인 것은 어노테이션 과정에서 사람과 모델 사이의 시너지를 촉진하기 때문이다. 예를 들어 기존 NLP 과제에서는 모델에게 모델이 생성해야할 출력을 사람이 직접 작성하는 방식으로 데이터셋을 구축했다. 그런데 예를 들어 소설을 쓰는 과제를 위한 데이터셋을 구축한다면, 일반적인 어노테이터가 좋은 소설을 쓰게 하기는 어렵다. 그렇지만 모델이 생성한 소설 중 더 나은 소설을 고르게 하는 것은 훨씬 쉽다. 예술을 창작하는 것보다는 예술을 감상하는 것이 더 쉬운 것이다.

그러니까 어떤 gold set을 구성하는 방식으로 데이터셋을 만드는 기존의 방식과는 다른 방식으로 데이터셋을 구축하게 되는 것이고, 그렇게 했을 때 오히려 일반적인 사람보다 훨씬 더 나은 능력을 갖도록 모델을 학습시킬 수 있다는 것이다.

여러모로 Alignment의 측면에서 이 정도 규모에서 이 정도 수준으로 디테일을 알려준 사례는 많지 않고, 그래서 그만큼 더 참고할만한 결과일 듯 싶다. 그렇지만 다음에는 multilingual 모델도 공개해줬으면...