본문 바로가기
인공지능 (VLM, MLLM)/MLLM (Multimodal Large Language Model)

[Multimodal Large Language Model - Part 3] 모델구조

by 애플파ol 2024. 11. 10.

✓ MLLM 구조

MLLM의 구조, (이론은 쉽다, 하지만 코드는 어렵다)

 

  1. MLLM이라는 것은 Multimodal Large Language Model의 약자이다.
    • 멀티모달 이라는 것은 단일 입력이 아닌 2개 이상의 입력이 들어갈때 표현하는 언어이다.
    • Large Language Model 이라는 것은 대형언어모델 이라는 뜻이다.
  2. 기본적으로 MLLM의 모델에서는 2가지의 입력이 들어간다. 바로 텍스트이미지.
    • 텍스트 - 토크나이징이 된상태로 모델의 입력으로 들어감. 즉, LLM이라고 그냥 생각하면 된다.
    • 이미지 - 다양한 비전모델을 보면 알겠지만, 이미지를 인코딩을 수행함(CLIP-ViT와 같이) 
  3. Vision - encoder를 통과한 이미지는 Multimodal Projector 로 들어감.
    • 이유 : LLM의 입력에 들어가기 위해 Text입력의 Dimension 과 맞춰야 하기 때문이다.
    • 차원 변경 : [B, L', D'] → [B, L', D]
    • 정리 : Vision Token의 shape이 [B, L', D'] 라고 하자 ( B : Batch, L : sequence length, D : Dimension) 그리고 text token의 shape이 [B, L, D] 라고 하자. Vision token과 text token의 shape이 맞아야 둘을 이어 붙여서 연결할 수 있는데, D' 과 D 는 차원이 동일하지가 않다. 이를 위해 Multimodal Projector로 들어가고 그 결과 [B, L', D'] → [B, L', D]가 된다. 이제 둘을 합칠수 있다. [B, L', D] + [B, L, D] → [B, (L'+L), D] 가 된다.
  4.  LLM의 입력으로는 이미지와 텍스트가 합쳐진 [B, (L'+L), D] 가 입력으로 사용됨

 

※ 주의 : 하지만, MLLM의 코드는 상당히 복잡하다는것, 모델코드가 어려운게 아니라 학습 및 추론 과정의 코드가 복잡하다.

(허깅페이스에서 LLM의 생태계를 구축해놓았지만, MLLM에 대한 생태계는 구축이 되어 있지 않기 때문, 개인적인 생각으로는 허깅페이스에서 MLLM 모듈을 지원하도록 결국 만들것 같긴한데 만들고 나면 MLLM의 논문은 무수히 나오겠지.. 그전에 빨리 해야한다는 압박감이 마음속에 존재하긴한다..)