Créditos del proyecto | Papel de nutria | Papel Otterhd | Papel de imitación
Puntos de control:
Para quién en China continental: |
Descargo de responsabilidad: el código puede no estar perfectamente pulido y refactorizado, pero todos los códigos abiertos se prueban y se ejecutan, ya que también usamos el código para respaldar nuestra investigación. Si tiene alguna pregunta, no dude en abrir un problema. Esperamos ansiosamente sugerencias y PRS para mejorar la calidad del código.
[2023-11]: Apoyo a la evaluación de GPT4V en 8 puntos de referencia; Anuncia de OTTERHD-8B, mejorado de Fuyu-8b. Vea la OTTERHD para más detalles.
datasets :
- name : magnifierbench
split : test
prompt : Answer with the option's letter from the given choices directly.
api_key : [Your API Key] # GPT4 or GPT3.5 to evaluate the answers and ground truth.
debug : true # put debug=true will save the model response in log file.
- name : mme
split : test
debug : true
- name : mmbench
split : test
debug : true
models :
- name : gpt4v
api_key : [Your API Key] # to call GPT4V model.
IMAGE_TEXT : # Group name should be in [IMAGE_TEXT, TEXT_ONLY, IMAGE_TEXT_IN_CONTEXT]
LADD : # Dataset name can be assigned at any name you want
mimicit_path : azure_storage/json/LA/LADD_instructions.json # Path of the instruction json file
images_path : azure_storage/Parquets/LA.parquet # Path of the image parquet file
num_samples : -1 # Number of samples you want to use, -1 means use all samples, if not set, default is -1.
M3IT_CAPTIONING :
mimicit_path : azure_storage/json/M3IT/captioning/coco/coco_instructions.json
images_path : azure_storage/Parquets/coco.parquet
num_samples : 20000
[2023-08]
[2023-07]: Anuncing de datos de datos MIMIC-IT para múltiples ajuste de texto de imagen/video intercalado.
[2023-06]
frame tensors
fueron sin error a una vision_x
incorrecta.Asegúrese de ajustar el
sys.path.append("../..")
correctamente para acceder aotter.modeling_otter
para iniciar el modelo.
Los modelos de idiomas grandes (LLM) han demostrado una aptitud universal excepcional como pocos estudiantes/estudiantes de disparo para numerosas tareas, debido a su pre-entrenamiento en datos de texto extensos. Entre estos LLM, GPT-3 se destaca como un modelo prominente con capacidades significativas. Además, las variantes de GPT-3, a saber, InstructGPT y ChatGPT, han demostrado ser efectivos en la interpretación de instrucciones del lenguaje natural para realizar tareas complejas del mundo real, gracias a la sintonización de instrucciones.
Motivado por el formato interinado aguas arriba previa del modelo del modelo de flamenco, ¿presentamos? Otter, un modelo multimodal basado en OpenFlamingo (la versión de origen abierto de Deepmind's Flamingo). Entrenamos a nuestra nutria en una forma de sintonización de instrucciones en contexto en nuestro conjunto de datos propuesto de MI- M Odal i n- c onText I Nstruction Tuning ( MIMIC-IT ). Otter muestra la capacidad de aprendizaje mejorado de instrucciones y de aprendizaje en contexto tanto en imágenes como en videos.
Mimic-It permite la aplicación del modelo de asistente visual egocéntrico que puede servir que puede responder a sus preguntas como Hey, ¿crees que dejé mis llaves sobre la mesa? . Aproveche el poder de Mimic-It para desbloquear todo el potencial de su asistente visual impulsado por la IA y elevar sus tareas interactivas en idioma de visión a nuevas alturas.
También presentamos Syphus , una tubería automatizada para generar pares de respuesta de instrucción de alta calidad en múltiples idiomas. Sobre la base del marco propuesto por Llava, utilizamos CHATGPT para generar pares de respuesta de instrucción basados en contenido visual. Para garantizar la calidad de los pares de respuesta de instrucción generados, nuestra tubería incorpora mensajes del sistema, anotaciones visuales y ejemplos en contexto como indicaciones para ChatGPT.
Para obtener más detalles, consulte el conjunto de datos MIMIC-IT.
Otter está diseñado para admitir un ajuste de instrucciones multimodal en contexto basado en el modelo OpenFlamingo, que implica acondicionar el modelo de idioma en los medios correspondientes, como una imagen que corresponde a un título o un par de instrucciones-respuesta.
Entrenamos a la nutria en un conjunto de datos MIMIC-IT con aproximadamente 2.8 millones de pares de respuesta de instrucción en contexto, que se estructuran en una plantilla cohesiva para facilitar varias tareas. Otter admite entradas de videos (los marcos se organizan como implementación original de Flamingo) y múltiples entradas de imágenes como ejemplos en contexto, que es el primer modelo sintonizado de instrucciones multimodal .
La siguiente plantilla abarca imágenes, instrucciones del usuario y respuestas generadas por el modelo, utilizando las etiquetas de rol User
y GPT
para habilitar interacciones asociadas a los usuarios.
prompt = f"<image>User: { instruction } GPT:<answer> { response } <endofchunk>"
La capacitación del modelo de nutria en el conjunto de datos MIMIC-IT le permite adquirir diferentes capacidades, como lo demuestran las tareas LA y SD. Entrenado en la tarea de LA, el modelo exhibe una comprensión de escena excepcional, habilidades de razonamiento y capacidades de conversación de ronda múltiple.
# multi-round of conversation
prompt = f"<image>User: { first_instruction } GPT:<answer> { first_response } <endofchunk>User: { second_instruction } GPT:<answer>"
Con respecto al concepto de organizar ejemplos de contexto visual en el contexto, demostramos aquí la capacidad adquirida del modelo nutria para seguir instrucciones intercontextuales después de la capacitación en la tarea LA-T2T. El formato de datos de entrada organizado es el siguiente:
# Multiple in-context example with similar instructions
prompt = f"<image>User: { ict_first_instruction } GPT: <answer> { ict_first_response } <|endofchunk|><image>User: { ict_second_instruction } GPT: <answer> { ict_second_response } <|endofchunk|><image>User: { query_instruction } GPT: <answer>"
Para obtener más detalles, consulte el Apéndice de nuestro artículo para ver otras tareas.
conda env create -f environment.yml
. Especialmente para asegurarse de que los transformers>=4.28.0
, accelerate>=0.18.0
.Después de configurar el entorno, puede usar el? Modelo de flamingo /? ¿Modelo de nutria como A? ¡Abrazando el modelo de cara con solo unas pocas líneas! Un clic y luego las configuraciones/pesas del modelo se descargan automáticamente. Consulte Huggingface Otter/Flamingo para más detalles.
Otter está entrenada en función de OpenFlamingo. Es posible que deba usar pesos convertidos en Luodian/Otter-9b-Init o Luodian/Otter-MPT7B-In. Se convierten respectivamente de OpenFlamingo-llama7b-V1 y OpenFlamingo-MPT7B-V2, agregamos un token <answer>
para el ajuste de instrucciones aguas abajo de Otter.
También puede usar cualquier peso de nutria capacitado para comenzar con su entrenamiento sobre el nuestro, verlos en Peso de Otter. Puede consultar MIMIC-IT para preparar archivos de imagen/instrucción/trenes JSON.
export PYTHONPATH=.
RUN_NAME= " Otter_MPT7B "
GPU=8
WORKERS= $(( ${GPU} * 2 ))
echo " Using ${GPU} GPUs and ${WORKERS} workers "
echo " Running ${RUN_NAME} "
accelerate launch --config_file=./pipeline/accelerate_configs/accelerate_config_zero3.yaml
--num_processes= ${GPU}
pipeline/train/instruction_following.py
--pretrained_model_name_or_path=luodian/OTTER-MPT7B-Init
--model_name=otter
--instruction_format=simple
--training_data_yaml=./shared_scripts/Demo_Data.yaml
--batch_size=8
--num_epochs=3
--report_to_wandb
--wandb_entity=ntu-slab
--external_save_dir=./checkpoints
--run_name= ${RUN_NAME}
--wandb_project=Otter_MPTV
--workers= ${WORKERS}
--lr_scheduler=cosine
--learning_rate=2e-5
--warmup_steps_ratio=0.01
--save_hf_model
--max_seq_len=1024
Si encontró útil este repositorio, considere citar:
@article{li2023otter,
title={Otter: A Multi-Modal Model with In-Context Instruction Tuning},
author={Li, Bo and Zhang, Yuanhan and Chen, Liangyu and Wang, Jinghao and Yang, Jingkang and Liu, Ziwei},
journal={arXiv preprint arXiv:2305.03726},
year={2023}
}
@article{li2023mimicit,
title={MIMIC-IT: Multi-Modal In-Context Instruction Tuning},
author={Bo Li and Yuanhan Zhang and Liangyu Chen and Jinghao Wang and Fanyi Pu and Jingkang Yang and Chunyuan Li and Ziwei Liu},
year={2023},
eprint={2306.05425},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
Agradecemos a Jack Hessel por el consejo y el apoyo, así como al equipo de OpenFlamingo por su gran contribución a la comunidad de código abierto.
Enormes elogios al equipo de Flamingo y OpenFlamingo por el trabajo en esta gran arquitectura.