Ovis (Open VISion) é uma nova arquitetura Multimodal Large Language Model (MLLM), projetada para alinhar estruturalmente incorporações visuais e textuais. Para uma introdução abrangente, consulte o artigo de Ovis.
Ovis foi testado com Python 3.10, Torch 2.4.0, Transformers 4.46.2 e DeepSpeed 0.15.4. Para obter uma lista abrangente de dependências de pacotes, consulte o arquivo requirements.txt
. Antes de fazer ajustes ou inferências, instale o Ovis da seguinte maneira.
git clone [email protected]:AIDC-AI/Ovis.git
conda create -n ovis python=3.10 -y
conda activate ovis
cd Ovis
pip install -r requirements.txt
pip install -e .
Ovis pode ser instanciado com LLMs populares. Fornecemos os seguintes MLLMs Ovis:
Ovis MLLMs | ViT | LLM | Pesos do modelo | Demonstração |
---|---|---|---|---|
Ovis1.6-Gemma2-27B | Siglip-400M | Gemma2-27B-It | Abraçando cara | - |
Ovis1.6-Gemma2-9B | Siglip-400M | Gemma2-9B-It | Abraçando cara | Espaço |
Ovis1.6-Lhama3.2-3B | Siglip-400M | Llama-3.2-3B-Instrução | Abraçando cara | Espaço |
Com parâmetros de 29B , o Ovis1.6-Gemma2-27B alcança desempenho excepcional no benchmark OpenCompass, classificando-se entre os MLLMs de código aberto de primeira linha.
Com apenas 10B de parâmetros, Ovis1.6-Gemma2-9B lidera o benchmark OpenCompass entre MLLMs de código aberto dentro de parâmetros de 30B .
Ovis1.6-Llama3.2-3B lidera o benchmark OpenCompass entre MLLMs de código aberto sob parâmetros 4B , superando até mesmo o Llama-3.2-11B-Vision-Instruct.
O ajuste fino do Ovis1.6-Gemma2-9B é suportado no ms-swift.
Fornecemos um wrapper de inferência em ovis/serve/runner.py
, que pode ser usado como:
from PIL import Image
from ovis . serve . runner import RunnerArguments , OvisRunner
image = Image . open ( 'IMAGE_PATH' )
text = 'PROMPT'
runner_args = RunnerArguments ( model_path = 'MODEL_PATH' )
runner = OvisRunner ( runner_args )
generation = runner . run ([ image , text ])
Baseado no Gradio, o Ovis também pode ser acessado através de uma interface de usuário web:
python ovis/serve/server.py --model_path MODEL_PATH --port PORT
Quantizamos o Ovis1.6 usando AutoGPTQ. Para obter informações detalhadas sobre como executar e criar sua própria versão quantizada, consulte os respectivos cartões modelo Huggingface: Ovis1.6-Gemma2-9B-GPTQ-Int4 e Ovis1.6-Llama3.2-3B-GPTQ-Int4. Ovis1.6 quantizado mantém desempenho comparável ao seu equivalente não quantizado, ao mesmo tempo que requer menos memória GPU:
Desempenho de referência:
Uso de memória GPU (max_partition=9):
Se você achar Ovis útil, cite o artigo
@article{lu2024ovis,
title={Ovis: Structural Embedding Alignment for Multimodal Large Language Model},
author={Shiyin Lu and Yang Li and Qing-Guo Chen and Zhao Xu and Weihua Luo and Kaifu Zhang and Han-Jia Ye},
year={2024},
journal={arXiv:2405.20797}
}
Este trabalho é um esforço colaborativo da equipe MarcoVL. Também gostaríamos de fornecer links para os seguintes artigos do MLLM de nossa equipe:
Este projeto está licenciado sob a Licença Apache, Versão 2.0 (SPDX-License-Identifier: Apache-2.0).
Usamos algoritmos de verificação de conformidade durante o processo de treinamento, para garantir a conformidade do modelo treinado da melhor maneira possível. Devido à complexidade dos dados e à diversidade de cenários de utilização do modelo de linguagem, não podemos garantir que o modelo esteja completamente livre de problemas de direitos autorais ou conteúdo impróprio. Se você acredita que algo viola seus direitos ou gera conteúdo impróprio, entre em contato conosco e resolveremos o assunto imediatamente.