2023년 4월 4주차
https://open-assistant.io/
https://huggingface.co/datasets/OpenAssistant/oasst1 https://drive.google.com/file/d/10iR5hKwFqAKhL3umx8muOWSRm7hs5FqX/view
Dolly 2.0에 이어 Open Assistant가 공개됐다. 보니까 LLaMA-30B를 SFT한 모델이 올라가 있다.
사실 흥미로운 것은 이 모델을 개발하는 데 사용한 데이터셋일 듯 하다. 161K 규모의 대부분 사람이 작성한 메시지, 461K 분량의 퀄리티 평가로 구성되어 있고, 이 데이터셋은 대화를 트리 형태로 구성해서 프롬프팅을 하거나 혹은 프롬프트에 대해 사람이 응답을 쓰게 했다. 더 깊이 들여다봐야겠지만 2월에 시작했다고 들었던 프로젝트가 이 정도 수준으로 결과물을 냈다는 것이 놀랍다.
조야한 표현이지만 참 유능하고 빠르다 싶다. ML 엔지니어로서 이런 수준의 판단, 속도, 결단, 퀄리티를 흉내낼 수 있을까 하는 생각을 하게 된다. 다들 ChatGPT를 distill 해서 값싸게 무언가를 해보겠다는 시도가 범람했던 시점에 말이다.
그리고 조금 다른 측면에서 보자면, 베이스 LLM이 있기만 하면 그 위에서 무언가를 하는 것은 비교적 쉽다는 생각을 하게 된다. 데이터셋을 만들거나 튜닝을 하는 것은 베이스 LLM을 만드는 것에 비해서는 훨씬 쉬운 일인 것으로 보인다. 그도 그럴 것이 LLaMA 정도의 모델을 학습하려면, 클라우드를 쓰는 경우에 대략 50억 정도를 생각해야 하는 것으로 보이고, 여러모로 가능한 문제들을 생각하면 100억 정도까지 대비를 해야할 것이다. 물론 더 저렴하고 효율적으로 작업하는 방법들이 있겠지만 여하간 지금까지 보통 개발되었던 ML 모델과는 단위가 다른 수준의 비용이 들어가고, 이 비용을 감당할만한 경우는 많지 않다.
데이터셋이 ML의 최대 자산이라는 말을 많이 하지만, LLM의 시대에는 기본 모델이 최우선인 것이다.
좀 다행스럽게도(?) 영어에 대해서는 아마 공개, 어쩌면 라이센스 문제도 없는 쓸만한 LLM이 나올 듯 싶다. 한국어 같은 마이너(?)한 언어는 좀 더 어렵겠지만, EleutherAI 쪽에서 모델이 나올 것으로 보이고 그렇다면 상당한 임팩트가 있을 것이다.
그리고 이 베이스 LLM들이 쓸만한 수준이라면 정말로 각자 데이터셋을 모아 튜닝해서 사용한다라는 시나리오가 가능성이 있을 것이다. 물론 이 규모의 모델을 배포하는 것과 추론 비용은 또 다른 문제이긴 하지만 어쨌든 비용이 훨씬 가능한 수준으로 내려올 것이다.
그렇다면 중요한 것은 이 베이스 LLM들을 기반으로 어디까지 도달할 수 있을까 하는 문제이다. 가장 위험한 가능성은 GPT-4와 그 이후 모델이 보여주는 능력, Capability가 실제 사용 시나리오에서 매우 중요하고, 그 능력이 있는가 없는가가 사용될 수 있는가 없는가를 결정하는 상황일 것이다. 그렇다면 베이스 LLM으로 GPT-4 혹은 그 이상의 모델이 보여주는 능력에 도달할 수 있어야 한다. 그런데 그것이 가능할까?
(계속해서 GPT-4와 그 이후 모델이라고 말하게 되는데, 현재 ML의 상황에서 현재 수준의 모델을 가지고 판단하는 것은 위험하다고 생각한다. 지금은 발전 도상에 있다고 생각해야 하고, 더 나은 - 특히 질적으로 더 나은 - 모델이 등장할 것이라고 가정하고 논의해야 한다고 생각한다.)
이런 능력이 모델에 투입하는 연산량에 의해 결정되고, 학습 토큰의 수 뿐만 아니라 모델의 규모 또한 중요하다고 가정하면 (즉, 많은 사람들이 기대하는 것처럼 더 작은 모델을 더 오래 학습하는 것으로 달성할 수 있는 것이 아니라면) GPT-4와 그 이후 모델들을 따라잡기는 아마 어려울 것이라고 생각한다.
물론 이것은 영어로 보여줄 수 있는 능력에 한정한 것이긴 하다. Multilingual 상황에서는 Effective Parameter가 감소하면서 훨씬 따라잡기 쉬울 수도 있다. 이건 언어간 Transfer와 Generalization이라는 요인이 어떻게 작동하는가에 달린 문제일 텐데, 아직 이 부분에 대해서 그럴 듯한 예측을 할 수 있는 수준의 데이터는 없는 것 같다. NMT나 인코더 모델의 결과를 바로 대입하기는 적절하지 않을 것 같고, BLOOM 같은 케이스의 결과는 유용하지만 대조군과 좀 더 구체적인 레벨의 Generalization에 대해서 가늠할 수 있는 수준의 정보는 부족한 것 같다. 아마 앞으로 나오겠지만.
그리고 한국어 같은 언어 하나를 타겟한다고 해도 Bilingual 상황 정도는 고려해야할 것이라는 것 또한 고려할 요소겠다. 요약하자면 영어에 대해서는 어려울 것 같고 Multilingual에 대해서는 어느 정도 가능할 수도 있겠지만 그에 대해서 확실하게 말하기에는 정보가 부족하다 정도라고 할 수 있겠다. 굳이 한쪽으로 말하자면 GPT-4 이후까지 고려한다면 Multilingual에서도 쉽지 않을 가능성이 높지 않을까에 한 표. (너무 돌려 말하는 것 같다...)
다른 수준, GPT-3.5 정도 수준으로도 충분하다고 하면, 좋다! 이런 시도들이 성공할 수 있는 가능성이 충분히 존재할 것이라고 생각한다. 올해 초에만 해도 완전히 비관적인 모드였지만 지금은 이 수준에 도달하는 것은 OpenAI나 구글 레벨의 기업 밖에서도 가능한 상황으로 흘러가고 있다고 생각한다. (물론 위에서도 말했듯 이건 베이스 LLM이 상업적으로 사용 가능하도록 공개되는가 아닌가에 크게 달린 부분이긴 하다. 그렇지만 이쪽에서도 충분히 유용한 사례가 몇 가지 나올 가능성이 높다고 본다. 한국어는 EleutherAI 쪽에서 나오는 것 외에는 쉽지 않을 것 같긴 하지만...)
물론 이것은 시장 상황에 대한 다면적인 고려 없이 모델의 능력만 고려해서 한 이야기이기 때문에, 시장 상황에 영향을 미칠 수 있는 다양한 요인들에 따라 국면이 달라질 수도 있겠다. 어떤 능력이 필요할지 아닐지 같은 것은 그 중 하나일 뿐이고, 네트워크 효과라거나, 모델을 내재화하고 싶은 동기의 수준, 익숙함 등등에 따라서 달라질 수 있는 여지는 충분히 있을 것이다. 그렇지만 그 부분에 대해서는 위의 문제보다 정보가 더 없는 것 같아서 무어라 논하기는 어려울 것 같다.
https://arxiv.org/abs/2304.07880
Sabiá: Portuguese Large Language Models (Ramon Pires, Hugo Abonizio, Thales Rogério, Rodrigo Nogueira)
어쩌다 포르투갈어 LM 결과도 들여다보는 날이 왔네요. LLaMA weight를 가지고 10B 정도 되는 포르투갈어 토큰에 대해 학습. 공개 모델을 좀 더 프리트레이닝하는 것도 가능한 접근이 아닐까 싶었는데 증거가 하나 추가됐군요. 데이터 오염이 잘 체크되지는 않은 것 같은데 그걸 감안할 필요는 있겠습니다.
흥미로운 부분은 본래 포르투갈어로 제작된 데이터셋과 영어에서 포르투갈어로 번역한 데이터셋에서 나타나는 차이로 보이네요. 아예 다른 데이터셋들이기 때문에 수치를 비교하기 좀 그렇긴 하지만 포르투갈 네이티브 데이트셋들이 번역 데이터셋들에 비해 포르투갈어 튜닝에 대한 성능 향상폭이 더 큽니다. 논문에서의 추정은 포르투갈어 튜닝이 포르투갈어 문제를 푸는데 필요한 정보, 그러니까 문화나 국가에 대한 정보를 제공한다는 것이네요. 번역 데이터셋들은 영어권 문화나 국가적 배경 정보가 필요한 것이고, 그건 LLaMA에 이미 잘 포함되어 있는 것이라는 거죠. 반대로 말하면 영어로 습득한 정보를 포르투갈어로 구사하는 것에는 큰 문제가 없는 것이라고 할 수도 있겠네요.
물론 LLaMA가 기본적으로 포르투갈어를 꽤 하고, 두 언어의 유사성도 고려해야겠지만요.
더해서 LLaMA 65B까지 올리니 퍼포먼스가 GPT-3.5-turbo와 비슷해지는군요. 이것도 흥미로운 부분인 것 같습니다.
#llm #multilingual
https://arxiv.org/abs/2304.08109
A Comparative Study between Full-Parameter and LoRA-based Fine-Tuning on Chinese Instruction Data for Instruction Following Large Language Model (Xianghui Sun, Yunjie Ji, Baochang Ma, Xiangang Li)
instruction tuning에서 lora vs full parameter finetuning. 이 문제가 궁금하던 상황이라 눈에 띄어서 봤는데...일단 논문에서는 full parameter tuning이 낫다고 보고하고 있지만 lora 세팅이 충분히 최적화된 것이었는지는 잘 모르겠네요. rank 8을 사용했는데, deepspeed chat에서는 의도한 것인지는 모르겠지만 128을 사용하더군요.
#llm #instruct
https://arxiv.org/abs/2304.08103
Low-code LLM: Visual Programming over LLMs (Yuzhe Cai, Shaoguang Mao, Wenshan Wu, Zehua Wang, Yaobo Liang, Tao Ge, Chenfei Wu, Wang You, Ting Song, Yan Xia, Jonathan Tien, Nan Duan)
이건 약간 프롬프트 튜닝의 신기원 같군요. 유저가 간단한 요청을 내리면 planning LLM이 그 요청을 수행하기 위한 계획을 생성하는데, 이 계획은 플로우차트/아웃라인 같은 형태라 유저가 비주얼하게 편집할 수 있습니다. 이 편집된 계획을 다시 자연어로 바꿔 executing LLM이 실행하는 형태네요. 채팅을 넘어 다양한 인터페이스를 시도해보는 것도 흥미로운 방향이다 싶습니다.
#prompt #llm
https://arxiv.org/abs/2304.08354
Tool Learning with Foundation Models (Yujia Qin, Shengding Hu, Yankai Lin, Weize Chen, Ning Ding, Ganqu Cui, Zheni Zeng, Yufei Huang, Chaojun Xiao, Chi Han, Yi Ren Fung, Yusheng Su, Huadong Wang, Cheng Qian, Runchu Tian, Kunlun Zhu, Shihao Liang, Xingyu Shen, Bokai Xu, Zhen Zhang, Yining Ye, Bowen Li, Ziwei Tang, Jing Yi, Yuzhang Zhu, Zhenning Dai, Lan Yan, Xin Cong, Yaxi Lu, Weilin Zhao, Yuxiang Huang, Junxi Yan, Xu Han, Xian Sun, Dahai Li, Jason Phang, Cheng Yang, Tongshuang Wu, Heng Ji, Zhiyuan Liu, Maosong Sun)
#tool
https://twitter.com/WilliamWangNLP/status/1646544361520508929?s=20
https://twitter.com/windx0303/status/1647964084002758659?s=20
https://arxiv.org/abs/2304.09172
Hyperbolic Image-Text Representations (Karan Desai, Maximilian Nickel, Tanmay Rajpurohit, Justin Johnson, Ramakrishna Vedantam)
오 hyperbolic clip embedding! 이거 멋지네요.
#contrastive_learning #clip #vision-language
https://arxiv.org/abs/2304.09151
UniMax: Fairer and more Effective Language Sampling for Large-Scale Multilingual Pretraining (Hyung Won Chung, Noah Constant, Xavier Garcia, Adam Roberts, Yi Tay, Sharan Narang, Orhan Firat)
multilingual lm의 학습시 샘플링 방식과 관련된 방법이네요. oversampling을 하자니 low resource language는 지나치게 많은 에폭을 학습하게 된다는 문제에 대한 대응입니다. 문자 수 기준으로 학습 budget을 설정해서 모든 언어가 최대한 균등한 학습 문자 수 budget을 나눠가지도록 하는 동시에 일정 에폭 이상 반복되지는 않도록 하는 방식이네요.
그와 동시에 mC4 데이터셋을 업데이트했군요. 변화는 새로운 크롤링 데이터 반영, 언어 필터링 강화, bad word에 대한 필터링 약화군요. 데이터 양은 35% 증가했다고 합니다. 데이터 양은 35% 증가했다는데 한국어 양은 큰 변동이 없는 것 같기도 하고...그렇네요.
데이터 구축과 관련해서 첨언하자면 언어 필터로 자연어가 아닌 문서를 더 철저하게 걸러내는 것을 기대했고, bad word가 포함된 문서를 학습에 사용해 bad word에 대해 모델이 학습하도록 기대했군요. 그러니까 무해한 언어만 학습한 모델보다는 유해한 언어도 학습한 모델이 유해한 언어에 대한 대응을 하기에 더 낫다...는 느낌이네요. 또한 bad word filtering을 사용하는 것이 특정 언어에 대해 bias를 야기할 수 있다는 부분도 지적했는데 gopher에서 우려했던 것과 통하는 것이 아닐까 싶습니다.
#multilingual #llm
https://arxiv.org/abs/2304.09871
A Theory on Adam Instability in Large-Scale Machine Learning (Igor Molybog, Peter Albert, Moya Chen, Zachary DeVito, David Esiobu, Naman Goyal, Punit Singh Koura, Sharan Narang, Andrew Poulton, Ruan Silva, Binh Tang, Puxin Xu, Yuchen Zhang, Melanie Kambadur, Stephen Roller, Susan Zhang)
adam으로 대규모 모델을 학습할 때 불안정성이 발생하는 이유는? 그래디언트가 시간에 따라 독립적이지 않고 correlation이 생기면서 결과적으로 업데이트가 bimodal 해지는 것을 원인으로 보고 있군요. 추정하는 문제의 흐름은 다음과 같습니다:
처음에는 업데이트가 unimodal하게 시작됨.
학습이 진행되면서 특정, 특히, 앞 부분 레이어의 그래디언트가 감소하기 시작.
first, second order momentum이 감소하기 시작.
업데이트가 감소하면서 그래디언트 사이에 상관이 높아지기 시작.
first/second order momentum의 비례가 bimodal해지기 시작함. 아직 eps가 들어간 업데이트는 unimodal.
나머지 부분의 weight는 업데이트 되고 있기 때문에, 앞 부분 레이어 또한 업데이트 되어야 할 필요가 생김.
업데이트가 bimodal 분포로 바뀜.
그래디언트가 증가하면서 상관이 감소하기 시작함.
학습이 다시 정상화됨.
6번 단계에서 학습이 폭발하는 현상이 나타난다고 하네요. 바로 관련되어서 생각나는 것은 초기 단계의 activation이 증가하는 것이 네트워크 전체로 퍼져나가고, 그 시점에서 학습이 폭발한다는 관측들과 weight norm이 계속해서 증가하는 현상 (AdamP, https://arxiv.org/abs/2006.08217) 인데 어떤 관계가 있을지는 바로는 잘 모르겠네요. 뭔가 이 부분에 대한 해결책이 나올 수 있을 것 같은데...좀 기다려보면 결과가 나오지 않을까 싶습니다.
여하간 작은 모델에서는 잘 나타나지 않는 현상이라는 것 같습니다. 여담이지만 최대 크기 모델로 테스트한 것이 7B, 30B, 65B, 546B이고 학습을 꽤 진행한 것을 보면 메타에서 500B 수준의 LLaMA를 학습해보고 있는 모양이네요.
#optimizer #llm
https://arxiv.org/abs/2304.11062
Scaling Transformer to 1M tokens and beyond with RMT (Aydar Bulatov, Yuri Kuratov, Mikhail S. Burtsev)
context length가 중요하다는 것이 인지되기 시작해서인지...엄청나게 회자되고 있군요. 기반은 Recurrent Memory Transformer에서 왔습니다. (https://arxiv.org/abs/2207.06881) 간단하게 요약하자면 memory token을 입력으로 받고, memory token을 출력해서 다음 스텝으로 넘겨주는 방식입니다. 선택적으로 BPTT도 하고요.
그 많은 context가 모두 쓸모 있지는 않겠지만 context의 증가에 따라 쓸모 있는 정보의 양은 증가할 것이고, recurrent memory를 쓰는 접근은 이 계속해서 증가하는 정보들을 고정된 크기의 임베딩으로 압축해야 한다는 문제에서 벗어나기 힘들긴 하죠. 그렇다면 반대로 계속해서 증가하는 context를 감당 가능한 수준으로 다룰 수 있는 방법이 무엇인가? 라는 문제로 다시 돌아가게 된다고 봅니다.
#transformer
https://github.com/Stability-AI/StableLM
이미 많은 분들이 뉴스를 전하셨기에 추가 사실만 기록하자면...
1. 라이센스는 CC BY-SA입니다. 동일조건 변경허락이라 아마 모델을 업데이트해서 뭔가를 하면 모델을 공개해야 하는 구조일 것 같은데...나름 제약이 될 수도 있겠군요. (모델은 그대로 두고 어댑터만 쓴다거나 하면 어떻게 되는지 궁금하네요.) 상업적 이용은 지금도 가능합니다. 분위기상 좀 더 포용적인 라이센스로 넘어갈 가능성도 있어 보이네요. 2. The Pile 기반 1.5T 토큰 분량 데이터셋을 썼다고 하는데 The Pile V2는 아닌 것 같습니다. 800B에서 학습이 멈춰있는데 오버피팅이 발생해서 멈춘 것이라고 하네요. duplicate 문제인 것 같고 수정 후 계속 진행될 모양입니다.
데이터셋 퀄리티와 관련해서 redpajama도 썩 좋지 않은 것 같다는 썰이 있군요. 아마 LLaMA와 거의 맞췄을 것 같은데 가능한 문제는 잘 모르겠습니다. 역시 The Pile V2도 지켜보는 게 필요할 것 같네요.
https://arxiv.org/abs/2304.10970
Can GPT-4 Perform Neural Architecture Search? (Mingkai Zheng, Xiu Su, Shan You, Fei Wang, Chen Qian, Chang Xu, Samuel Albanie)
GPT-4로 NAS를 할 수 있는가? 방법은 모델 구현 코드와 함께 다음과 같은 프롬프트를 쓰는 것입니다.
By using this model, we achieved an accuracy of {Accuracy}%. Please recommend a new model that outperforms prior architectures based on the above mentioned experiments. Also, Please provide a rationale explaining why the suggested model surpasses all previous architectures.
어떤 식의 근거를 대는지 궁금한데 그 샘플은 없네요.
#nas #llm
https://arxiv.org/abs/2304.10977
Evaluating Transformer Language Models on Arithmetic Operations Using Number Decomposition (Matteo Muffo, Aldo Cocco, Enrico Bertino)
숫자에 대한 토크나이징이 LM의 계산 성능에 어떤 영향을 미치는가? 기본 토크나이즈, 각 숫자마다 스페이스를 붙여서 분리한 문자열, 자릿수까지 붙여서 장황하게 표현한 문자열을 가지고 파인튜닝을 해봤네요. 자릿수까지 붙여놨을 때 가장 잘 하고, 기본 토크나이즈보다는 스페이스를 붙이는 쪽이 더 나았다라는 결과입니다.
#tokenizer
https://arxiv.org/abs/2304.11111
Inducing anxiety in large language models increases exploration and bias (Julian Coda-Forno, Kristin Witte, Akshay K. Jagadish, Marcel Binz, Zeynep Akata, Eric Schulz)
아니...이게 대체 뭐죠? GPT-3.5에게 불안 지수 평가 질문지로 불안 지수를 평가해봤더니 사람보다 불안 지수가 평균적으로 더 높더라, 프롬프트로 경험하는 정서 상태를 바꿀 수 있는지 평가해봤더니 어느 정도 그렇더라, 그리고 이 불안 지수가 실제 모델의 패턴에 영향을 미치는지 알기 위해 2 armed bandit으로 테스트해봤더니 exploration-exploitation에 대한 행동이 바뀌더라...를 테스트해봤네요.
#llm