2023년 7월 5주차
https://arxiv.org/abs/2307.12950
RLCD: Reinforcement Learning from Contrast Distillation for Language Model Alignment (Kevin Yang, Dan Klein, Asli Celikyilmaz, Nanyun Peng, Yuandong Tian)
#ai-feedback
https://arxiv.org/abs/2307.08621
딱 세 포인트로 그린 것이긴 하지만 transformer보다 나은 scaling curve를 보여준 극히 드문 결과라 아무래도 뭔가 잠재성이 있지 않을지 생각해보게 된다. 그래서 기존의 linear attention이나 recurrent network와는 어떻게 다른지 한 번 봤다.
일단 기본적인 접근은 다음과 같다.
S(n) = γS(n - 1) + K(n)^T·V(n) O(n) = Q(n)S(n)
전형적인 linear recurrent network 혹은 state space model처럼 생겼다. S4 같은 모델과 정말 흡사하다고 할 수 있겠는데, 차이가 있다면 Q(n)과 K(n)이 S4 같은 경우에는 고정된 행렬이라면 Retentive Network에서는 토큰에 대한 linear mapping으로 계산되는 값이기에 각 스텝의 토큰에 따라 변화하는 값이라는 것과 과거 state에 대해서 간단한 감쇄 γ를 사용하고 있다는 것.
이렇게 보면 흥미로운 변형으로 보인다. 그런데 recurrent한 형태가 아니라 parallel한 형태로 보면 모양새가 묘하다.
O = (QK^T⊙D)V
linear attention처럼 softmax가 제외되었는데...흔히 linear attention에 등장하는 것처럼 kernel을 사용해서 softmax를 근사하는 대신 D 행렬과 hadamard product를 하는 방식으로 변형되어 있다. D 행렬은 토큰 사이의 거리에 따른 감쇄 γ를 원소로 갖는 행렬이다.
그러니까...softmax를 빼버리고 거리에 따라 attention weight에 가중치를 곱해주는 것으로 충분하다는 것이 된다. 정말로? 물론 swiglu 형태의 gating이나 attention head별 normalization이 들어가 있긴 하지만, 이게 맞다면 애초에 softmax와 혹은 softmax를 근사하기 위한 nonlinearity가 없어도 된다는 의미를 시사하는 것이 아닐까... (물론 hadamard product가 들어가기 때문에 결합 순서를 바꿔 연산 비용을 줄이는 트릭을 쓸 수는 없다.)
이상하다 싶긴 하지만, 많은 사람들이 지적한 것처럼 RWKV와 유사한 것이라고 하면 RWKV도 어느 정도 동작한다는 것이 알려져 있으니 또 가능하지 않으리라는 법도 없는 듯 싶다.
별개로 recurrent한 구조를 다시 가져오려는 시도들에 대해서는 대체로 부정적으로 보기는 했었다. 간단히 그 수많은 토큰에 대한 정보를 하나의 상태 벡터에 밀어넣을 수 없다고 봤기 때문이다. You can't cram the meaning of a whole_ %&!$# sentence into a single $&!# 라는 교훈이 있지 않았던가. 애초에 attention 자체가 한 문장의 의미를 하나의 벡터에 인코딩하는 것이 어려웠기에 등장한 것이다.
그렇지만 이건 2~3층 정도의 256~512 차원 LSTM을 쓰던 시절의 이야기이긴 하고, 수K 레벨의 차원을 수십~수백 층 쌓는 현재의 모델들은 규모 자체가 다르긴 하다. 예를 들어 LLaMA 65B를 생각해보면 8192 차원에 80 레이어 모델이니, 256 차원 단어 벡터를 우겨넣는다고 하면 2560 단어를 그대로 집어넣을 수도 있겠다. 모델이 이렇게 돌아가지는 않지만, 의미적 압축 등도 고려하면 state에 밀어넣을 수 있는 토큰은 여하간 꽤 많을 것이다.
거기다 S4나 retentive network 같은 경우엔 차원의 크기가 Value 차원이 아니라 Key * Value 차원이기에 state의 capacity는 넉넉할 것 같긴 하다. 실제로 문제가 되는 것은 state의 capacity가 아니라 (RWKV에서도 이야기가 많이 나왔듯) 실제로 이러한 recurrent한 구조에서 long range context를 모델링하는 것이 가능한가 하는 쪽일 수도 있지 않을까 싶다.
논문의 결과가 과연 transformer에 대해 공정한 것이었는가 하는 의심이 들긴 하지만...애초에 잘 되는 것이 거의 불가능하다고 생각했던 것이 prior라면 잘 하면 좋은 결과가 가능할 수도 있겠다 하는 생각이 현재 posterior이긴 하다.
여담
논문 실험에 (512개를 쓰긴 했지만) AMD MI200(!)을 사용했다. xPos, Kosmos-1, 2에서 V100을 쓴 것도 그렇고 이쪽을 쓰고 싶어서 쓴 것은 아닐 듯 한데. GPU 자원 경쟁에서 밀린 것인가 싶다.
https://arxiv.org/abs/2307.15217
Open Problems and Fundamental Limitations of Reinforcement Learning from Human Feedback (Stephen Casper, Xander Davies, Claudia Shi, Thomas Krendl Gilbert, Jérémy Scheurer, Javier Rando, Rachel Freedman, Tomasz Korbak, David Lindner, Pedro Freire, Tony Wang, Samuel Marks, Charbel-Raphaël Segerie, Micah Carroll, Andi Peng, Phillip Christoffersen, Mehul Damani, Stewart Slocum, Usman Anwar, Anand Siththaranjan, Max Nadeau, Eric J. Michaud, Jacob Pfau, Dmitrii Krasheninnikov, Xin Chen, Lauro Langosco, Peter Hase, Erdem Bıyık, Anca Dragan, David Krueger, Dorsa Sadigh, Dylan Hadfield-Menell)
RLHF의 한계에 대해서 논하고 있는데...fundamental하다고 주장하고 있는 것은 주로 human preference라는 굉장히 복잡하고 다양한 문제 자체의 난점, 데이터셋을 구축하는 것의 어려움, 그리고 그 데이터셋을 reward model로 녹여내는 것의 문제가 중심이군요.
#alignment
https://arxiv.org/abs/2307.14936
PanGu-Coder2: Boosting Large Language Models for Code with Ranking Feedback (Bo Shen, Jiaxin Zhang, Taihong Chen, Daoguang Zan, Bing Geng, An Fu, Muhan Zeng, Ailun Yu, Jichuan Ji, Jingyang Zhao, Yuenan Guo, Qianxiang Wang)
코드 모델에 유닛 테스트로 RL을 하는 접근의 결실이 나왔군요. (정확히는 RRHF 기반이긴 합니다.) Evol Instruct 기반으로 성능을 높인 다음에 유닛 테스트 피드백을 기반으로 Ranking 학습을 하는 방식이네요. HumanEval이 쭉쭉 오르고 있습니다. (61.64 까지.)
#alignment
https://arxiv.org/abs/2307.14995
Scaling TransNormer to 175 Billion Parameters (Zhen Qin, Dong Li, Weigao Sun, Weixuan Sun, Xuyang Shen, Xiaodong Han, Yunshen Wei, Baohong Lv, Fei Yuan, Xiao Luo, Yu Qiao, Yiran Zhong)
linear attention으로 multi billion 모델을 학습을 시켰다고?! 인 줄 알고 봤는데 딱히 그렇진 않고 그 규모로 scaling 할 수 있는지를 살펴봤다 정도네요. linear attention은 약간 한 물 간 접근이라는 느낌이었는데 retentive networks가 딱 linear attention처럼 생겨서 positional embedding과 잘 결합하면 이게 혹시 가능한 건가 하는 생각도 들긴 하네요.
#transformer #efficient_attention
https://arxiv.org/abs/2307.15504
Exploring Format Consistency for Instruction Tuning (Shihao Liang, Kunlun Zhu, Runchu Tian, Yujia Qin, Huadong Wang, Xin Cong, Zhiyuan Liu, Xiaojiang Liu, Maosong Sun)
https://arxiv.org/abs/2307.15337
Skeleton-of-Thought: Large Language Models Can Do Parallel Decoding (Xuefei Ning, Zinan Lin, Zixuan Zhou, Huazhong Yang, Yu Wang)
응답의 요점 템플릿을 만든 다음 템플릿의 각 항목을 병렬로 채우는 방식으로 디코딩 속도를 가속하는 방법이군요. 예를 들어 리스트에서 각 항목의 제목 정도를 생성한 다음, 각 리스트 항목에 대해 본문을 생성한다는 느낌입니다.
디코딩 속도 가속을 위해 제안된 방법이긴 한데...뭔가 planning을 푸는 방법으로 생각해볼 수도 있지 않을까 싶네요.
#efficiency
https://arxiv.org/abs/2307.15771
The Hydra Effect: Emergent Self-repair in Language Model Computations (Thomas McGrath, Matthew Rahtz, Janos Kramar, Vladimir Mikulik, Shane Legg)