Inf-MLLM: Efficient Streaming Inference of Multimodal Large Language Models on a Single GPU
<|reference_start|>Inf-MLLM: Efficient Streaming Inference of Multimodal Large Language Models on a Single GPU: Multimodal Large Language Models (MLLMs) are distinguished by their multimodal comprehensive ability and widely used in many real-world applications including GPT-4o, autonomous driving and robotics. Despite their impressive performance, the multimodal inputs always incur long context. The inference under long context requires caching massive Key and Value states (KV cache) of previous tokens, which introduces high latency and excessive memory consumption. Due to this reason, it is challenging to deploy streaming inference of MLLMs on edge devices, which largely constrains the power and usage of MLLMs in real-world applications. In this paper, we introduce Inf-MLLM, an efficient inference framework for MLLMs, which enable streaming inference of MLLM on a single GPU with infinite context. Inf-MLLM is based on our key observation of the attention pattern in both LLMs and MLLMs called "attention saddles". Thanks to the newly discovered attention pattern, Inf-MLLM maintains a size-constrained KV cache by dynamically caching recent tokens and relevant tokens. Furthermore, Inf-MLLM proposes attention bias, a novel approach to enable MLLMs to capture long-term dependency. We show that Inf-MLLM enables multiple LLMs and MLLMs to achieve stable performance over 4M-token long texts and multi-round conversations with 1-hour-long videos on a single GPU. In addition, Inf-MLLM exhibits superior streaming reasoning quality than existing methods such as StreamingLLM and 2x speedup than H2O.<|reference_end|>
@article{ning2024inf-mllm:,
    title={Inf-MLLM: Efficient Streaming Inference of Multimodal Large Language
  Models on a Single GPU},
    author={Zhenyu Ning, Jieru Zhao, Qihao Jin, Wenchao Ding, Minyi Guo},
    journal={arXiv preprint arXiv:2409.09086},
    year={2024},
    archivePrefix={arXiv},
    eprint={2409.09086},
    primaryClass={cs.LG cs.AI cs.CV cs.DC cs.PF}
}