Octopus-v3 기술문서: On-Device용 Multimodal AI Agent를 위한 1B 미만 규모의 모델

:pytorch:PyTorchKR:kr:

Octopus-v3 기술문서: On-Device용 Multimodal AI Agent를 위한 10억 미만 규모의 모델

지난 4/13에 Android OS 제어를 위한 Agent-LLM인 Octopus-v2에 대한 소식을 전해드렸었는데요, 이번 주 초에 Octopus-v3 기술 문서가 공개되었다는 소식을 듣고 다시금 Octopus-V3 모델 소식을 들고왔습니다. :sweat_smile:

이번 주에는 유독 Microsoft의 Phi-3-mini(3.8B)Apple의 OpenELM(270M ~ 3B) 같이 스마트폰과 같은 제한된 환경에서의 실행을 전제로한 작은 언어 모델들(Small LM, sLLM)이 많이 눈에 띄는 것 같네요.

Octopus-v3는 텍스트 쿼리 외에 Vision까지 입력으로 받는 Multimodal 모델이면서도 1B 미만의 크기로 최적화했다고 하는데요, 어떠한 시도를 하고 있는지 함께 살펴보시죠! :wink:


Octopus-v3 기술문서: On-Device용 Multimodal AI Agent를 위한 10억 미만 규모의 모델 / Octopus v3: Technical Report for On-device Sub-billion Multimodal AI Agent

Octopus v3 소개

Octopus v3는 텍스트, 이미지의 데이터 유형을 직접 처리할 수 있도록 설계된 컴팩트한 멀티모달 AI 모델입니다. 멀티모달 AI 에이전트는 텍스트와 이미지와 같은 다양한 입력 데이터를 이해하고 처리하여 더 효과적으로 작업을 수행할 수 있도록 설계되었습니다. Octopus v3는 이에 더해 "기능 토큰(functional token)"이라는 개념을 통합하여 사용자 입력에 기반한 특정 작업을 수행할 수 있도록 하였습니다. 또한, Octopus v3는 하나의 모델로 중국어와 영어를 모두 처리할 수 있습니다.

이 기술 문서에서는 Octopus v3의 모델 개발에 사용한 주요 기법들에 대한 내용과 함께, GPT-4V와 같은 대규모의 멀티모달 모델들과의 성능 비교를 통해 제한된 연산 능력을 가진 기기들에서도 효율적으로 동작함을 강조합니다. 또한, 사용자의 질의에 답변을 제공하는 것에 그치지 않고, 직접 장치에 특정 명령을 수행하도록 하는 "기능 토큰(functional token)"을 통해 사용자와의 상호작용을 더 확장할 수 있는 가능성을 보여주고 있습니다.

주요 기법들

다음은 Octopus v3 모델 개발에 사용한 주요 기법들에 대한 내용들로, 이미지 정보와 텍스트 입력의 통합 및 모델의 행동 예측 능력을 최적화하는데 초점을 맞추고 있습니다.

시각 정보 인코딩 / Encoding visual information

이미지 처리에서 시각 정보를 인코딩하는 여러 방법이 있으며, 히든 레이어(hidden layers)의 임베딩을 활용하는 방법이 일반적입니다. 예를 들어, VGG-16 모델의 히든 레이어 임베딩은 스타일 전환 작업에 사용됩니다. OpenAI의 CLIP 모델은 텍스트와 이미지 모두의 임베딩을 맞추는 능력을 보여주며, 이미지 인코더를 사용하여 이미지를 임베딩합니다. 더 진보된 기술로는 ViT(Vision Transformer)에서 사용되는 이미지 토큰화(image tokenization)와 같은 방법이 있습니다. 우리의 연구는 다양한 이미지 인코딩 기술을 평가하고 CLIP 모델의 방법이 가장 효과적이라고 판단했습니다. 이러한 판단 하에 Octopus v3에서는 CLIP 기반 모델을 사용하여 이미지를 인코딩하고 있습니다.

3.2 기능 토큰 / Functional token

자연 언어 및 이미지에 적용되는 토큰화와 마찬가지로, 특정 기능을 기능 토큰(functional token)으로 캡슐화하는 접근 방식을 사용하였습니다. 이러한 학습 토큰들을 학습하기 위해서는 기존의 자연어 모델에서는 보이지 않는 용어들을 관리하는 기법이 필요합니다. 즉, 문맥적 환경들로 기능 토큰의 의미가 정의되는(enriched) 형태로, word2vec 방식과 유사합니다.

예를 들어, 고급 언어 모델은 PEGylation이나 Endosomal Escape와 같은 복잡한 화학 용어들을 처음 보게 되면 처리에 어려움을 겪습니다. 하지만 이러한 용어를 포함한 다양한 데이터셋을 학습하며 용어의 의미를 습득할 수 있게 됩니다. 마찬가지로 Octopus v2 모델이 제공하는 강력한 플랫폼(roburst platform)을 활용하여 기능 토큰 또한 마찬가지 방법으로 습득할 수 있습니다.

다단계 학습 / Multi-stage training

고성능 멀티모달 AI 에이전트를 개발하기 위해, 인과적 언어 모델(causal language model)과 이미지 인코더를 통합하는 모델 아키텍처를 사용하고 있습니다. 모델 학습은 여러 단계로 구성되는데, 초기에는 인과적 언어 모델과 이미지 인코더를 별도로 학습하며 기본적인 기능들을 학습합니다. 이후, 각 구성 요소 통합을 목적으로 하는 정렬 학습(Alignment Training)을 통해 이미지 처리 능력과 텍스트 처리 능력을 동기화(synchronize)하게 됩니다.

이후 Octopus-v2 프레임워크를 활용하여 앞에서 설명한 기능 토큰을 학습하게 됩니다. 학습의 마지막 단계에서 외부 환경과의 상호작용을 가능하게 하는 이러한 기능 토큰들을 추가로 정제하고 최적화합니다. 이 과정에서 더 큰 언어 모델(LLM)을 보상 모델로 하는 강화학습을 사용합니다. 반복적인 학습 과정을 거쳐 멀티모달 정보 처리 능력을 효율적으로 향상시킬 수 있습니다.

모델 성능 평가

몇 가지 사례들을 통해 Octopus v3 모델과 GPT-4 및 GPT-4V 모델과의 결과를 비교해보았습니다. 많이 사용하는 10가지의 스마트폰 API를 기능 토큰으로 변환하고 성능을 평가하였습니다. (이 문서에서는 10개의 기능 토큰만을 예시로 보였지만, 실제로는 더 다양한 기능 토큰들을 학습 및 사용할 수 있습니다.)

Octopus 모델의 기능 토큰은 <nexa_0>, ..., <nexa_N>과 같은 형태지만, 더 나은 시연을 위해 해당 기능 이름으로 기능 토큰을 대체하여 표기하였습니다. 아래 결과는 모두 직접 생성된 것으로 별도의 파서(parser)를 사용하지 않았습니다.

Octopus-v3 사용 예시: 구글 검색
Octopus-v3 사용 예시: 아마존 물품 구매

Octopus-v3 사용 예시: 재활용
Octopus-v3 사용 예시: 분실물

Octopus-v3 사용 예시: 인테리어 디자인
Octopus-v3 사용 예시: 인스타카트 쇼핑

더 읽어보기

NexaAI의 Octopus v3 홈페이지

Octopus v3 기술 문서

Octopus v3 사용 신청 양식

현재 연구 목적으로만 제공 중이라고 합니다.

Octopus v2 모델 소개 글

다른 On-Device 모델(또는 소규모 언어 모델)에 대한 글

다른 소규모 멀티모달 모델에 대한 글




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: