멀티모달 AI의 약속은 고급 의료 진단부터 보다 풍부하고 역동적인 고객 경험 창출에 이르기까지 모든 곳에 있습니다. 하지만 전선에 있는 우리에게 텍스트, 이미지, 오디오 등을 처리할 수 있는 멀티모달 시스템을 구축하는 것은 종종 사용자 정의 통합, 보일러플레이트 코드 및 호환성 문제의 끝없는 얽힘처럼 느껴집니다. 이것이 제 좌절이었고, 궁극적으로 AnyModal 을 만드는 데 이르렀습니다.
인정합시다. 세상과 인간의 상호작용은 한 가지 유형의 데이터에 국한되지 않습니다. 우리는 단어, 시각, 소리, 신체적 감각을 동시에 해석합니다. 멀티모달 AI의 개념은 바로 이 아이디어에서 비롯됩니다. 멀티모달 AI는 여러 유형의 데이터를 동일한 처리 파이프라인으로 가져와서 모델이 이전에는 단일 모달리티 시스템에서는 너무 복잡했던 작업을 처리할 수 있도록 합니다. 엑스레이와 의료 기록을 함께 분석하는 의료 애플리케이션이나 텍스트와 오디오 신호를 모두 고려하여 고객 감정을 정확하게 측정하는 고객 서비스 시스템을 상상해 보세요.
하지만 여기에 과제가 있습니다. 텍스트(GPT와 같은) 또는 이미지(ViT와 같은)에 대한 단일 모달리티 모델은 잘 확립되어 있지만, 이를 결합하여 유동적으로 상호 작용하는 것은 간단하지 않습니다. 기술적 복잡성으로 인해 많은 연구자와 개발자가 멀티모달 AI를 효과적으로 탐색하지 못했습니다. AnyModal을 소개합니다.
머신 러닝을 다루는 제 작업에서 저는 GPT, ViT, 오디오 프로세서와 같은 도구가 단독으로는 강력하지만, 이러한 도구를 결합하여 멀티모달 시스템을 만드는 것은 종종 서투르고 프로젝트별 코드로 함께 꿰매야 한다는 것을 알았습니다. 이 접근 방식은 확장되지 않습니다. 모달리티를 통합하기 위한 현재 솔루션은 매우 특화되어 있거나 특정 작업(예: 이미지 캡션 또는 시각적 질의응답)에만 적합하도록 설계되었거나, 데이터 유형을 함께 작동시키기만 해도 짜증나는 양의 보일러플레이트 코드가 필요합니다.
기존 프레임워크는 특정 모달리티 조합에 좁게 초점을 맞추기 때문에 새로운 데이터 유형으로 확장하거나 동일한 설정을 다른 작업에 적용하기 어렵습니다. AI 모델의 이러한 "사일로화된" 구조는 제가 끊임없이 바퀴를 재발명해야 한다는 것을 의미했습니다. 그때 저는 번거로움 없이 모든 유형의 데이터를 하나로 모으는 유연하고 모듈식 프레임워크인 AnyModal을 구축하기로 결정했습니다.
AnyModal 은 멀티모달 AI 개발을 간소화하고 간소화하도록 설계된 프레임워크입니다. 다양한 입력 유형을 결합하는 복잡성을 줄이기 위해 비텍스트 입력에 대한 토큰화, 인코딩 및 생성을 처리하여 대규모 언어 모델(LLM)에 새로운 데이터 유형을 추가하는 것을 더 쉽게 만들었습니다.
이 개념은 입력 파이프라인에 대한 모듈식 접근 방식을 중심으로 전개됩니다. AnyModal을 사용하면 피처 인코더(예: 이미지의 Vision Transformer 또는 오디오의 스펙트로그램 프로세서)를 교체하고 이를 LLM에 원활하게 연결할 수 있습니다. 이 프레임워크는 복잡성의 대부분을 추상화하므로 이러한 시스템을 서로 호환되도록 하기 위해 몇 주 동안 코드를 작성할 필요가 없습니다.
AnyModal의 중요한 구성 요소는 비텍스트 데이터와 LLM의 텍스트 기반 입력 처리 간의 격차를 메우는 입력 토크나이저 입니다. 작동 방식은 다음과 같습니다.
이 듀얼 레이어 접근 방식을 통해 모델은 멀티모달 데이터를 단일 시퀀스로 처리하여 모든 입력 유형을 고려한 응답을 생성할 수 있습니다. 기본적으로 AnyModal은 서로 다른 데이터 소스를 LLM이 이해할 수 있는 통합된 형식으로 변환합니다.
AnyModal이 어떻게 작동하는지 감을 잡기 위해 LLM에서 이미지 데이터를 사용하는 예를 살펴보겠습니다.
from transformers import ViTImageProcessor, ViTForImageClassification from anymodal import MultiModalModel from vision import VisionEncoder, Projector # Step 1: Initialize Vision Components processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224') vision_model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224') vision_encoder = VisionEncoder(vision_model) # Step 2: Define Projection Layer for Compatibility vision_tokenizer = Projector(in_features=vision_model.config.hidden_size, out_features=768) # Step 3: Initialize LLM and Tokenizer from transformers import AutoTokenizer, AutoModelForCausalLM llm_tokenizer = AutoTokenizer.from_pretrained("gpt2") llm_model = AutoModelForCausalLM.from_pretrained("gpt2") # Step 4: Build the AnyModal Multimodal Model multimodal_model = MultiModalModel( input_processor=None, input_encoder=vision_encoder, input_tokenizer=vision_tokenizer, language_tokenizer=llm_tokenizer, language_model=llm_model, input_start_token='<|imstart|>', input_end_token='<|imend|>', prompt_text="Describe this image: " )
이러한 모듈형 설정을 통해 개발자는 다양한 인코더 및 LLM을 플러그 앤 플레이 방식으로 사용하여 이미지 캡션에서 질의 응답까지 다양한 멀티모달 작업에 맞게 모델을 조정할 수 있습니다.
AnyModal은 이미 여러 사용 사례에 적용되어 흥미로운 결과를 얻었습니다.
AnyModal은 다양한 데이터 유형을 처리하는 복잡성을 추상화하여 개발자가 일반적으로 멀티모달 통합과 함께 발생하는 병목 현상 없이 신속하게 프로토타입을 구축하거나 고급 시스템을 개선할 수 있도록 지원합니다.
멀티모달 시스템을 구축하려고 한다면 다음과 같은 문제에 직면했을 것입니다.
AnyModal은 보일러플레이트를 줄이고, 유연한 모듈을 제공하며, 빠른 사용자 정의를 허용함으로써 이러한 문제점을 해결합니다. 개발자는 호환성 문제로 싸우는 대신, 더 빠르고 효율적으로 스마트 시스템을 구축하는 데 집중할 수 있습니다.
AnyModal의 여정은 이제 막 시작일 뿐입니다. 저는 현재 오디오 캡션과 같은 추가 모달리티에 대한 지원을 추가하고 틈새 사용 사례에 더욱 적응할 수 있도록 프레임워크를 확장하는 작업을 진행 중입니다. 커뮤니티 피드백과 기여는 개발에 매우 중요합니다. 멀티모달 AI에 관심이 있다면 여러분의 아이디어를 듣고 싶거나 협업하고 싶습니다.
멀티모달 AI에 흥미가 있거나 개발 프로세스를 간소화하고 싶다면 AnyModal을 사용해 보세요. AI 혁신의 다음 전선을 여는 데 함께 노력합시다.