Ovis (Open VISion) es una novedosa arquitectura de modelo de lenguaje grande multimodal (MLLM), diseñada para alinear estructuralmente incrustaciones visuales y textuales. Para obtener una introducción completa, consulte el artículo de Ovis.
Ovis ha sido probado con Python 3.10, Torch 2.4.0, Transformers 4.46.2 y DeepSpeed 0.15.4. Para obtener una lista completa de las dependencias de los paquetes, consulte el archivo requirements.txt
. Antes de realizar ajustes o inferencias, instale Ovis de la siguiente manera.
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 .
Se puede crear una instancia de Ovis con LLM populares. Proporcionamos los siguientes MLLM de Ovis:
MLLM de Ovis | ViT | LLM | Pesos del modelo | Manifestación |
---|---|---|---|---|
Ovis1.6-Gemma2-27B | Siglip-400M | Gemma2-27B-Eso | abrazando cara | - |
Ovis1.6-Gemma2-9B | Siglip-400M | Gemma2-9B-Eso | abrazando cara | Espacio |
Ovis1.6-Llama3.2-3B | Siglip-400M | Llama-3.2-3B-Instrucción | abrazando cara | Espacio |
Con parámetros 29B , Ovis1.6-Gemma2-27B logra un rendimiento excepcional en el punto de referencia OpenCompass, ubicándose entre los MLLM de código abierto de primer nivel.
Con solo 10 mil millones de parámetros, Ovis1.6-Gemma2-9B lidera el punto de referencia OpenCompass entre MLLM de código abierto dentro de 30 mil millones de parámetros.
Ovis1.6-Llama3.2-3B lidera el punto de referencia OpenCompass entre MLLM de código abierto bajo parámetros 4B , superando incluso a Llama-3.2-11B-Vision-Instruct.
El ajuste fino de Ovis1.6-Gemma2-9B es compatible con ms-swift.
Proporcionamos un contenedor de inferencia en ovis/serve/runner.py
, que se puede utilizar 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 ])
Basado en Gradio, también se puede acceder a Ovis a través de una interfaz de usuario web:
python ovis/serve/server.py --model_path MODEL_PATH --port PORT
Cuantizamos Ovis1.6 usando AutoGPTQ. Para obtener información detallada sobre cómo ejecutar y crear su propia versión cuantificada, consulte las respectivas tarjetas de modelo de Huggingface: Ovis1.6-Gemma2-9B-GPTQ-Int4 y Ovis1.6-Llama3.2-3B-GPTQ-Int4. Ovis1.6 cuantificado mantiene un rendimiento comparable al de su homólogo no cuantificado y requiere menos memoria de GPU:
Rendimiento de referencia:
Uso de memoria de GPU (max_partition=9):
Si encuentra útil a Ovis, cite el artículo.
@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 trabajo es un esfuerzo colaborativo del equipo de MarcoVL. También nos gustaría proporcionar enlaces a los siguientes artículos MLLM de nuestro equipo:
Este proyecto tiene la licencia Apache, versión 2.0 (identificador de licencia SPDX: Apache-2.0).
Utilizamos algoritmos de verificación de cumplimiento durante el proceso de capacitación, para garantizar el cumplimiento del modelo entrenado lo mejor que podamos. Debido a la complejidad de los datos y la diversidad de escenarios de uso del modelo de lenguaje, no podemos garantizar que el modelo esté completamente libre de problemas de derechos de autor o contenido inadecuado. Si cree que algo infringe sus derechos o genera contenido inadecuado, comuníquese con nosotros y abordaremos el asunto de inmediato.