https://blog.google/technology/ai/google-gemini-ai/
구글이 제미니 1.0을 발표했군요. PaLM 2가 그랬듯 모델 크기별로 Nano, Pro, Ultra로 나눠집니다. 아무래도 관심은 SoTA 달성용인 Ultra에 더 가긴 하네요.
https://storage.googleapis.com/deepmind-media/gemini/gemini_1_report.pdf
모델은 TPUv4로 학습했군요. 구글은 체크포인트를 디스크에 저장하는 것 따위는 하지 않습니다. 그냥 메모리에 하나 복사해놓고 문제가 생기면 메모리에서 복원하는 방식이군요. GPT-4 Leak에 따르면 이것 때문에 GPT-4의 실질적인 utilization이 깎였다고 하는데 인프라와 시스템적 우위가 드러나는 지점이네요.
테크니컬 리포트의 어조를 보면 scratch 학습된 multimodal 모델이 아닌가 싶습니다. 이미지와 비디오 입력이 가능하고 이미지 출력이 가능하군요. 오디오는 Universal Speech Model에서 가져왔다고 하니 이쪽은 scratch 학습은 아닐 수도 있겠네요. Context length는 32K 입니다. 토크나이저 학습에서 비 라틴 문자들에 대한 효율성에 신경을 썼다고 하네요. Nano는 Nano 1, 2로 나눠지는데 온 디바이스 추론용이라서 그런지 모델 크기가 공개되어 있습니다. (1.8B, 3.25B)
이미지 디코더와 텍스트 디코더가 나눠져 있는 형태로 나와 있습니다. 실제 구조는 어떨지 모르지만 눈에 띄는 부분이네요.
벤치마크 수치를 보면 일단 GPT-4 보다 우수하도록 맞췄다는 느낌입니. MMLU는 90%를 넘었다는 상징성과 GPT-4에 대한 우수성을 보여주기 위해서인지 5 shot이 아니라 CoT@32를 썼습니다. HellaSwag 숫자가 밀리는데 여기에 대해서 HellaSwag는 프리트레이닝 데이터셋 구성에 따라 영향을 많이 받는다는 증거까지 제시해서 설명하려 노력하고 있군요.
Vision 벤치마크에서도 GPT-4V 보다 모두 우수합니다. 다국어 OCR 능력도 더 우수한 것 같네요. 비디오도 Few shot SoTA 들에 대해서 모두 우위를 보이고 있고, ASR과 Speech Translation 성능 또한 뛰어납니다. Nano가 Whisper보다 나은 수준입니다.
https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf
그리고 Gemini Pro를 가져다 AlphaCode 2를 만들었습니다. Codeforces에서 AlphaCode에 비해 2배에 가까운 성능 향상이 있었고 85%의 인간 참가자보다 나은 성능일 거라고 추정하고 있네요.
Instruction Tuning은 일반적인 SFT + RLHF의 흐름이고 SFT 데이터 퀄리티의 중요성을 다시 이야기하고 있군요. Reward 모델에서도 모델이 응답 거부하는 현상을 막기 위한 데이터셋 구성의 중요성에 대해 이야기하고 있습니다. 기본적으로 Helpfulness, Factuality, Safety의 세 가지 헤드를 가진 Reward 모델을 만들었군요. 거기에 Constitutional AI의 방법과 유사한 방법을 채택했습니다. Constitutional AI는 계속 검증되고 있네요.
Factuality 헤드가 따로 있다는 것에서 알 수 있듯 Factuality에 대해 신경을 쓴 느낌입니다. 이걸 보 Helpfulness & Harmlessness의 두 가지 축에서 세 가지 축으로 넘어가야 하는 것 같기도 하네요.
Red Teaming과 테스트는 결국 모델이 나와야만 가능한 것이라서 그런지 Ultra에 대한 Instruction Tuning 작업은 현재진행형인 것 같네요.
추가로 클라우드에서 TPU v5p를 공개했습니다. 다들 NVIDIA의 마진 때문에 고통 받고 있는데 자체 하드웨어를 일찌감치 만들고, 또 대규모로 사들이고 있는 구글이 그 지점에서 갖는 우위가 엄청나지 않나 싶습니다. TPU v5p로 학습될 Gemini의 다음 버전이 어떨지 무섭네요.
Inflection이 Inflection-2를 세계 2위의 LM이라고 홍보했었는데 얼마 되지 않아 3위 모델이 되었군요. 학습 FLOPS를 얼마나 태웠을지 궁금하긴 합니다. SemiAnalysis는 GPT-4의 최대 5배 수준이지 않을까 예상했던데 저는 현실적으로 그보다는 작지 않을까 싶네요.
리포트를 보다 눈에 띈 것 하나. 하나의 데이터센터가 아니라 여러 데이터센터에서 학습했다는 이야기가 있군요. DiLoCo (https://arxiv.org/abs/2311.08105) 가 이걸 위한 방법이었을까요? 재미있는 지점이네요.
AMD에서 MI300X를 발표했네요. FLOPS도 우수하고 메모리 대역폭도 목표치만큼은 아니더라도 우수하지만 실 성능은 그만큼 나오지는 않는 것 같다는 느낌이네요. 그렇지만 소프트웨어적 측면에서 개선 가능할 듯 싶고 일단 메모리 용량 자체가 커서 그걸로 갖는 우위가 꽤 있을 듯 싶습니다. NVIDIA의 B100이 나올 거라는 문제가 있긴 하지만 그래도 NVIDIA가 앞으로도 지금 같은 마진을 유지하기는 쉽지 않지 않을까요? 뭐 그렇다고는 해도 H100을 수백만 단위로 팔아치우고 있고 B100도 그만큼 팔 것 같지만요.
https://arxiv.org/abs/2312.03701
Self-conditioned Image Generation via Generating Representations (Tianhong Li, Dina Katabi, Kaiming He)
GAN 시절의 representation bottleneck을 condition으로 써서 생성하던 접근을 diffusion에서 보게 되네요.
#diffusion
https://arxiv.org/abs/2312.03584
Context Diffusion: In-Context Aware Image Generation (Ivona Najdenkoska, Animesh Sinha, Abhimanyu Dubey, Dhruv Mahajan, Vignesh Ramanathan, Filip Radenovic)
diffusion으로 in-context learning 하기. 결과적으로는 query와 context 이미지에 대해 conditional 하게 생성한다는 느낌이죠. context로 스타일을 주고 query로 스케치를 준 다음 이미지를 생성한다는 등은 좀 평범하지만(?) context로 segmentation map을 주고 query로 이미지를 줘서 segmentation을 한다거나 하는 시나리오는 흥미롭지 않나 싶습니다.
vision 쪽에서는 vision task들을 사용해서 모델을 구성하는 접근이 여전히 통용되고 있네요. language 쪽과의 차이가 아닐까 싶습니다. (생각해보면 프리트레이닝 시점에 instruction data라는 이름의 multitask 데이터를 추가하는 것이 흔한 것을 보면 language 쪽도 비슷할지도 모르겠습니다.)
#in_context_learning #diffusion
https://arxiv.org/abs/2312.03631
MOCHa: Multi-Objective Reinforcement Mitigating Caption Hallucinations (Assaf Ben-Kish, Moran Yanuka, Morris Alper, Raja Giryes, Hadar Averbuch-Elor)
멀티모달 모델이 증가하면서 멀티모달 상황에서 할루시네이션을 잡는 것이 중요한 문제가 되고 있네요. 그리고 그와 함께 RL이 할루시네이션 억제에 효과적이라는 사례들이 증가하고 있군요. GT 캡션을 사용해 NLI, BERTScore를 reward로 사용했습니다.
John Schulman이 할루시네이션과 RL에 대해서 다뤘을 때의 추론은 모델 내에 들어있는 정보와 SFT supervision의 갭에 의한 차이였죠. 그렇지만 멀티모달 모델에서의 할루시네이션은 좀 더 기본적인 컨텍스트 내에 없는 정보를 생성하는 경향이 문제가 되는 듯 한데 이 시나리오는 John Schulman의 논지와는 좀 다를 듯 싶습니다. 그와는 별개로 이 논문에서처럼 피드백을 주는 것이 레이블을 만들어 주는 것보다 더 쉽다는 측면에서 RL이 여전히 의미가 있겠지만요.
#hallucination #vision-language #multimodal #rl
https://www.anthropic.com/index/claude-2-1-prompting
Claude의 key retrieval task 성능이 논란이 되니 Anthropic이 그에 대한 답을 내놨군요. Key retrieval 같이 끼워넣은 문장에 대해 답하는 능력은 떨어진다는 설명이네요. Assistant 프롬프트로 "Here is the most relevant sentence in the context:" 라고 끼워넣으면 잘 된다고.
Key retrieval에서 나타나는 성능 패턴은 모델의 근본적인 한계나 프리트레이닝의 문제보다는 instruction tuning과 과제 자체의 특성 때문일 수 있지 않을까 싶었는데 그 증거가 될 수 있을 것 같군요.
https://arxiv.org/abs/2311.09198 관련해서 참조할만한 결과. 문제는 (늘 그렇듯) 데이터가 아닐지.
https://arxiv.org/abs/2312.03700
OneLLM: One Framework to Align All Modalities with Language (Jiaming Han, Kaixiong Gong, Yiyuan Zhang, Jiaqi Wang, Kaipeng Zhang, Dahua Lin, Yu Qiao, Peng Gao, Xiangyu Yue)
이미지/오디오/포인트 클라우드 등에 대한 multimodal 모델. 각 데이터에 대해 1/2D Conv로 토크나이즈 한 다음 CLIP에 넣어버리고 MoE projection을 태워서 토큰으로 LLM에 넣는 방식이군요. 이렇게 합쳐나가다가 결국 인코더도 projection도 없이 트랜스포머 하나에 다 붙게 되겠죠. (어쩌면 이미 그렇게들 하고 있을 수도 있겠네요.)
#multimodal
https://arxiv.org/abs/2312.02179
Training Chain-of-Thought via Latent-Variable Inference (Du Phan, Matthew D. Hoffman, David Dohan, Sholto Douglas, Tuan Anh Le, Aaron Parisi, Pavel Sountsov, Charles Sutton, Sharad Vikram, Rif A. Saurous)
Chain-of-Thought 튜닝에 필요한 rationale을 생성할 수 있는가? 하는 연구. rationale을 latent z라고 하고, 프롬프트 x와 정답 y에 대해 p(z | x, y)로 rationale을 생성합니다. privileged information을 사용하는 것이라고 볼 수도 있겠네요. 그 다음 p(z | x)로 rationale들을 생성해가면서 p(y | x, z)로 rationale을 사용해서 답이 나왔는지를 체크하고 맞으면 rationale을 교체합니다.
조금 다른 이야기이긴 한데 모델의 생성 결과를 평가할 수 있다면 모델을 개선할 수 있다는 RL스러운 생각이 들긴 하네요. 그래서 수학 같은 문제에 대해 formal verification으로 뭔가를 할 수 있지 않을까 하는 이야기가 나오는 거겠죠.
#prompt #synthetic-data