모바일 디바이스에 효율적인 비전 언어 모델 배포하기
소개
최근의 대형 언어 모델(LLM)은 다양한 자연어 처리(NLP) 작업에서 전례 없는 성능을 보여주고 있습니다. 대형 언어 모델의 이러한 다재다능한 언어 처리 능력 덕분에 실생활에서 유용하게 사용할 수 있는 다양한 자연어 처리 애플리케이션이 개발되었습니다. 그러나 대형 언어 모델은 상당한 계산 능력을 요구하기 때문에, 일반 사용자가 이를 활용하기 위해선 고성능 클라우드 서비스에 의존해야 합니다. 이러한 클라우드 환경에서는 사용자에게 재정적인 부담이 발생하며 민감한 개인 정보가 외부에 노출될 위험이 있습니다. 이로 인해 개인 노트북이나 모바일 디바이스에서 언어 모델을 사용하려는 수요가 증가하고 있습니다.
이러한 수요에 부응하여 Gemma-2B [1], Phi-3-mini [2], Llama3-7B [3] 와 같은 소형 언어 모델(sLLMs)이 등장했습니다. 대형 언어 모델이 노트북과 모바일 디바이스에서 실행될 수 있도록 하는 다양한 최적화 기술과 배포 도구들도 함께 출시되었습니다. 현재는 이러한 오픈 소스 자원을 통해 모바일 장치에서도 대형 언어 모델이 성공적으로 작동할 수 있게 되었습니다. 더욱이 최근에는 이미지 인코더를 대형 언어 모델에 결합해 이미지를 활용하는 비전 언어 모델(VLM)의 사용이 늘어나고 있습니다. 자연스럽게 모바일 디바이스에서도 비전 언어 모델을 사용하고자 하는 수요도 증가했습니다. 그러나 비전 언어 모델은 Vision Transformer(ViT) 기반의 이미지 인코더를 포함하고 있기 때문에, 더 많은 연산 자원을 필요로 합니다.
이번 포스팅에서는 LLaVA [1] 라는 비전 언어 모델을 경량화하여 모바일 디바이스에 배포하는 과정을 설명해 드리려고 합니다. 구체적으로는 LLaVA-v1.5-7B 구조를 기반으로 경량 모델링을 진행하고 이를 모바일 디바이스에서 배포하기 위해 MLC LLM [5] 을 수정했습니다. 실험 결과, 개선된 LLaVA 모델은 이미지 인코딩 과정에서 지연 시간이 87% 개선되었으며 (37초/이미지 -> 6초/이미지), 언어 모델의 디코딩 속도는 약 50% 개선되었습니다(12 토큰/초 -> 18 토큰/초). 지연 시간이 개선되었음에도 광학 문자 인식(OCR) 벤치마크 하나를 제외한 모든 벤치마크에서 성능 저하는 거의 없었습니다.
효율적인 비전 언어 모델 배포
이번 작업에서는 LLaVA-v1.5-7B를 기본 모델로 사용했습니다. 이 모델은 CLIP ViT-L/14 [6] 를 비전 모델로, Vicuna-v1.5-7B를 언어 모델로 사용합니다 [7]. 이는 다양한 비전 언어 모델 중에서 상대적으로 작은 모델이지만 여전히 모바일 환경에서는 크기가 너무 큽니다. 모바일 환경에서는 일반적으로 소형 언어 모델과 같은 5B 이하의 모델이 사용되므로, 이에 맞게 언어 모델을 변경해야 합니다. LLaVA에서 사용된 언어 모델의 대안으로 다양한 소형 언어 모델 중 여러 벤치마크에서 최고의 정확도를 보여준 Phi-3-mini(3.8B)가 고려되었습니다.
이전에 LLaVA에서 사용된 이미지 인코더는 CLIP ViT-L/14였으며, 이 인코더는 336x336 크기의 입력 이미지를 14x14 패치로 나누어 576개의 토큰과 하나의 이미지 토큰을 생성했습니다. 각 토큰은 이미지 인코더를 통해 처리되어 1,024차원의 임베딩으로 출력됩니다. 이 임베딩들은 프로젝터를 통해 언어 모델의 입력으로 전환됩니다. 모델 크기를 줄이기 위해 이미지 인코더를 CLIP ViT-B/16으로 변경했습니다. CLIP ViT-B/16은 224x224 크기의 입력 이미지를 16x16 패치로 나누어 총 197개의 토큰 임베딩을 생성하며, 각 임베딩의 차원은 768로 CLIP ViT-L/14보다 작습니다.
언어 모델 Phi-3가 비전 모델의 출력을 이해할 수 있도록, LLaVA 저장소에서 공식적으로 제공되는 학습 코드와 데이터를 활용해 프로젝터를 학습시켰습니다 [11]. 또한, 사용자가 지시한 다양한 작업을 이해하고 대응할 수 있도록 이미지 인코더를 동결한 상태로 Low-Rank Adaptation (LoRA) [9] 를 사용하여 vision instruction tuning을 수행했습니다.
저희는 새로 학습된 모델을 ‘Phi with Vision Assistant(PhiVA)’라고 명명했습니다. 또한, PhiVA를 모바일 환경에 배포하기 위해 오픈 소스 런타임 중에서 기기 자원을 효과적으로 활용한다고 알려진 MLC LLM을 사용했습니다. MLC LLM은 현재 다양한 대형 언어 모델의 모바일 환경 배포를 지원하지만, 아직 비전 언어 모델을 공식적으로 지원하지는 않습니다. 예를 들어, 채팅 애플리케이션에서 이미지와 텍스트 입력을 동시에 처리하는 모듈이나 이미지 임베딩을 처리하는 방법을 제공하지 않습니다. 이를 해결하기 위해, MLC-Imp [10] 저장소에서 개발된 이미지 처리 구현체를 MLC LLM에 적용했습니다. 요약하면, 사용자가 다양한 대형 언어 모델과 비전 인코더를 모바일로 이식하여 채팅할 수 있도록 하는 MLC-VLM-template 시스템을 개발한 것입니다. 이 템플릿은 https://github.com/nota-github/MLC-VLM-template에서 확인하실 수 있습니다.
평가
저희는 PhiVA의 성능을 대표적인 모바일 디바이스인 Galaxy 24 Ultra에서 평가했습니다.
지연 시간
LLaVA의 경우 한 이미지를 인코딩하는 데 평균 37초가 걸렸으나, PhiVA는 평균 6초가 걸렸습니다. 언어 모델의 디코딩 과정은 LLaVA의 기존 속도 12 토큰/초에서 18 토큰/초로 개선되었습니다.
2. 정확도
비전 언어 모델에 널리 사용되는 표준 평가 방법인 VLMEvalKit [1] 을 사용하여 모델을 평가했습니다. 이 평가 방법은 OpenVLM Leaderboard [12] 에서도 사용됩니다. 결과적으로 PhiVA는 OCR 벤치마크를 제외한 모든 벤치마크에서 큰 성능 저하를 보이지 않았습니다.
결론
본 포스팅에서는 모바일 디바이스에 비전 언어 모델을 배포하기 위해 최적화하는 과정을 설명했습니다. 최적화의 첫 단계로 사전에 개발된 작은 모델들을 활용했습니다. 그러나 최적화에는 다양한 방법이 존재하므로, 앞으로는 성능 저하를 최소화하면서 지연 시간을 개선할 수 있는 더 다양한 최적화 기술을 탐색할 계획입니다. 또한, 광학 문자 인식 벤치마크에서 성능이 크게 저하된 점은 LoRA와 같은 효율적인 학습 기법을 사용한 결과로 추정됩니다. 향후 연구에서는 학습 방법에 따른 각 벤치마크의 성능 회복 정도를 조사할 예정입니다. 마지막으로, 이 과정에서 생성된 다양한 최적화된 비전 언어 모델을 공개할 계획입니다.
참조
[1] Gemma Team. 2024. Gemma: Open Models Based on Gemini Research and Technology. arXiv preprint arXiv:2403.08295.
[2] Microsoft. 2024. Phi-3 Technical Report: A Highly Capable Language Model Locally on Your Phone. arXiv preprint arXiv:2404.14219.
[3] Meta Llama 3. https://github.com/meta-llama/llama3
[4] Liu et al. 2023. Visual Instruction Tuning. In Proc. NeurIPS 2023.
[5] MLC LLM. https://github.com/mlc-ai/mlc-llm.
[6] Radford et al. 2021. Learning Transferable Visual Models From Natural Language Supervision. arXiv preprint arXiv:2103.00020.
[7] Chiang et al. 2023. Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90%* ChatGPT Quality. https://lmsys.org/blog/2023-03-30-vicuna/.
[8] LLaVa. https://github.com/haotian-liu/LLaVA.
[9] Hu et al. 2022. LoRA: Low-Rank Adaptation of Large Language Models. In Proc. ICLR 2022.
[10] MLC-Imp. https://github.com/MILVLG/mlc-imp.
[11] VLMEvalKit. https://github.com/open-compass/VLMEvalKit.
[12] OpenVLM Leaderboard.
https://huggingface.co/spaces/opencompass/open_vlm_leaderboard.
이 연구에 대해 추가로 궁금한 사항이 있으시면 아래 이메일 주소로 언제든지 문의해 주세요: 📧 contact@nota.ai.
AI 최적화 기술에 관심이 있으시면 저희 웹사이트 🔗 netspresso.ai.를 방문해 보세요.