구글, 740M 파라미터 멀티모달 임베딩 모델 EmbeddingGemma 2를 Apache 2.0으로 공개
- 구글이 Gemma 4 아키텍처 기반 EmbeddingGemma 2를 Apache 2.0 라이선스로 공개함. 전체 740M 파라미터를 텍스트 270M, 비전 170M, 오디오 300M로 쪼개 필요한 모듈만 켜는 구조임
- MRL(Matryoshka Representation Learning)로 출력 벡터를 768차원에서 512, 256, 128차원까지 잘라 쓸 수 있어 로컬 벡터 DB 저장량이 최대 6배 줄어듦
- Pixel 11 Pro에서 양자화했을 때 텍스트 전용 가중치가 약 191MB, 전체 멀티모달 모델이 약 567MB의 활성 RAM으로 동작함
- 컨텍스트 창이 8K 토큰으로 1편보다 4배 넓어져 오디오 5.5분, 이미지 29장, 비디오 58프레임을 한 번에 넣을 수 있음
- MTEB Code 점수가 68.76에서 78.6으로 9.92점 올랐고, 1편 EmbeddingGemma는 다운로드 2000만 건을 넘김
Hacker News opinions
드디어 나왔네. LLM이랑 에이전트 쪽은 변곡점을 지났는데 중간 크기 임베딩 모델이 없어서 아쉬웠음. 텍스트만 270M, 텍스트+비전 440M이면 충분히 쓸 만함. EmbeddingGemma에 맞춰 보정해둔 로컬 임베딩 툴도 있는데 이제 슬슬 공개해도 되겠다.
비전만 되는 게 아니라 오디오까지 된다는 게 신기함. 텍스트랑 그 텍스트가 말해지는 오디오, 이미지 안의 텍스트 같은 쌍이 임베딩 공간에서 얼마나 가깝게 붙는지 궁금함. CLIP으로 비슷한 걸 해봤는데 이미지 임베딩에 내용 정보랑 화풍, 톤 정보가 같이 담기고 선형으로 분리도 되더라.
아까 말한 툴에 Opus 5.5로 이미지, 오디오 입력을 붙이고 M3 Pro에서 돌려봤음. 짧은 텍스트는 초당 78개, 이미지는 초당 4개, 30초 오디오 청크는 초당 6개, 비디오는 분당 초당 0.2개 나옴. 인코더가 1fps라 어쩔 수 없고 M5 Ultra면 최소 5배는 나올 듯.
Apache 2.0인 게 제일 반가움. 임베딩 모델은 수백만 벡터를 계산해 저장해두는데 그 모델이 사라지면 다시 임베딩하는 비용을 다 물어야 함. 2024년 4월에 OpenAI가 재임베딩 비용을 대준다고 한 적은 있는데 모든 제공자가 그럴 거라고 믿을 수는 없음. 직접 호스팅은 싫고, 호스팅 서비스를 쓰되 가중치는 열려 있어야 함.
그건 그냥 골든 테스트를 두는 게 낫지. CPU에서 GPU로만 바꿔도 토큰이 달라질 수 있음.
왜 siglip2랑 비교를 안 하는 거지? 완전 멀티모달이 아니라서? 아니면 팀이 달라서?
EG2는 인코더가 없어서 OCR에는 못 씀. 그게 이유 중 하나일 듯.
파라미터 배분이 재밌음. 전체 740M인데 텍스트 270M, 비전 170M, 오디오 300M임.
이해는 감. 비전은 정지 이미지만 처리하니 제일 작고, 텍스트는 언어의 엔트로피를 다뤄야 하고, 오디오는 시간 축이 없으면 의미가 없으니까.
텍스트 쪽은 voyageai 모델이랑 비교한 게 보고 싶음. 예전에 써봤는데 Qwen 계열보다 나았음.
나도 한동안 이 쪽을 떠나 있었는데 Voyage는 아주 틈새 도메인 아니면 진지한 경쟁자가 아니었음. 90% 넘는 용례에서는 이게 더 나을 걸.
참고로 이건 이전 온디바이스 임베딩 모델이랑 달리 MatFormers가 아니라 MRL로 학습된 거라 차원을 줄여도 모델 가중치는 같이 줄일 수 없음. 멀티모달 MatFormers는 아직 연구가 없는 듯.
텍스트랑 이미지로 Jev 같은 작업도 할 수 있다는 게 재밌음. MediaPipe 예제도 있음.
실제로 로컬에서 돌려봤는데 예제에 있는 "Cancel my flight and refund my credit card immediately."가 분류에 실패했음. 결제나 환불이 아니라고 p(true) 0.22로 나왔고 Laya가 이 경우엔 훨씬 정확했고 속도도 거의 비슷했음.
텍스트 벤치마크는 1편이랑 동일함. 대신 새 모델은 필요 없는 모달리티를 끄고 텍스트만 켜둘 수 있음.
이런 크기의 멀티모달을 기기에서 돌려서 실제로 뭘 하는지 궁금함. 뭐에 정확하고 할루시네이션 비율은 어떤지.
주 용도는 이미지랑 텍스트를 서로 매핑하는 거임. 이미지를 인코딩해두고 텍스트 질의를 같은 모델로 인코딩해서 최근접 이웃을 찾는 식의 이미지 시맨틱 검색.
법률 실무라면 케이스 파일에서 "카트리나 전 지붕"이랑 "카트리나 후 지붕"을 검색해서 증언록이랑 사진을 같이 찾는 데 쓸 수 있을 것 같음. 아직 해보진 않았음.
JetBrains 글이 며칠 전에 MRL 대신 이진 양자화를 쓰는 방법을 알려줬는데 EmbeddingGemma2에도 되는지 궁금함. 호환 안 될 이유가 있는지.