Crédits du projet | Papier Otter | Papier Otterhd | Papier mimic-it
Points de contrôle:
Pour qui sur le continent en Chine: |
Avertissement: le code peut ne pas être parfaitement poli et refactorisé, mais tous les codes ouvrir sont testés et exécutables car nous utilisons également le code pour soutenir nos recherches. Si vous avez des questions, n'hésitez pas à ouvrir un problème. Nous attendons avec impatience les suggestions et les PR pour améliorer la qualité du code.
[2023-11]: soutenir l'évaluation de GPT4V sur 8 repères; Anounding Otterhd-8b, amélioré de Fuyu-8b. Découvrez Otterhd pour plus de détails.
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]: ANNEUNCCING MIMIC-IT DataSet pour plusieurs réglages d'instructions d'image / texte vidéo entrelacés.
[2023-06]
frame tensors
n'étaient pas à tort à une mauvaise vision_x
.Assurez-vous d'ajuster correctement le
sys.path.append("../..")
pour accéder àotter.modeling_otter
afin de lancer le modèle.
Les modèles de grands langues (LLM) ont démontré une aptitude universelle exceptionnelle en tant qu'apprenants peu / zéro-tirs pour de nombreuses tâches, en raison de leur pré-formation sur des données de texte étendues. Parmi ces LLM, GPT-3 se démarque comme un modèle proéminent avec des capacités importantes. De plus, les variantes de GPT-3, à savoir InstructGpt et Chatgpt, se sont révélées efficaces pour interpréter des instructions en langage naturel pour effectuer des tâches complexes du monde réel, grâce au réglage des instructions.
Motivé par le format entrelacé en amont pré-entraînement du modèle Flamingo, nous présentons-nous? Otter, un modèle multimodal basé sur OpenFlamingo (la version open source du flamanto de DeepMind). Nous formons notre loutre dans une manière de réglage des instructions dans le contexte sur notre jeu de données ( Mimic -it ). Otter présente une amélioration de la capacité d'apprentissage de suivi des instructions et de contexte dans les images et les vidéos.
Mimic-it permet l'application d'un modèle d'assistant visuel égocentrique qui peut servir qui peut répondre à vos questions comme Hey, pensez-vous avoir laissé mes clés sur la table? . Exploitez la puissance de Mimic-it pour débloquer tout le potentiel de votre assistant visuel axé sur l'IA et élever vos tâches interactives en langue visuelle vers de nouveaux sommets.
Nous introduisons également Syphus , un pipeline automatisé pour générer des paires d'instruction-réponse de haute qualité dans plusieurs langues. S'appuyant sur le cadre proposé par Llava, nous utilisons ChatGpt pour générer des paires d'instruction-réponse basées sur le contenu visuel. Pour garantir la qualité des paires d'instructions-réponse générées, notre pipeline intègre des messages système, des annotations visuelles et des exemples dans le contexte en tant qu'invites pour Chatgpt.
Pour plus de détails, veuillez consulter l'ensemble de données Mimic-it.
Otter est conçu pour prendre en charge le réglage d'instructions multimodal dans le contexte basé sur le modèle OpenFlamingo, qui implique de conditionner le modèle de langue sur le support correspondant, comme une image qui correspond à une légende ou à une paire d'instructions-réponse.
Nous formons Otter sur un ensemble de données Mimic-it avec environ 2,8 millions de paires d'instructions-réponse en contexte, qui sont structurées en un modèle cohérente pour faciliter diverses tâches. Otter prend en charge les entrées de vidéos (les trames sont organisées en tant qu'implémentation de Flamingo d'origine) et plusieurs entrées d'images comme exemples dans le contexte, qui est le premier modèle réglé d'instructions multimodal .
Le modèle suivant comprend des images, des instructions de l'utilisateur et des réponses générées par le modèle, en utilisant les étiquettes de rôle User
et GPT
pour permettre des interactions assocantes-utilisateur.
prompt = f"<image>User: { instruction } GPT:<answer> { response } <endofchunk>"
La formation du modèle Otter sur l'ensemble de données Mimic-IT lui permet d'acquérir différentes capacités, comme le montrent les tâches LA et SD. Formé sur la tâche de LA, le modèle présente une compréhension exceptionnelle des scènes, des capacités de raisonnement et des capacités de conversation multi-rondes.
# multi-round of conversation
prompt = f"<image>User: { first_instruction } GPT:<answer> { first_response } <endofchunk>User: { second_instruction } GPT:<answer>"
En ce qui concerne le concept d'organisation des exemples en langage visuel en contexte, nous démontrons ici la capacité acquise du modèle Otter à suivre les instructions inter-contextuelles après une formation sur la tâche LA-T2T. Le format de données d'entrée organisé est le suivant:
# 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>"
Pour plus de détails, veuillez vous référer à l'annexe de notre article pour d'autres tâches.
conda env create -f environment.yml
. Surtout pour vous assurer que les transformers>=4.28.0
, accelerate>=0.18.0
.Après avoir configuré l'environnement, vous pouvez utiliser le? Modèle Flamingo /? Otter Model en tant que? Modèle de visage étreint avec seulement quelques lignes! Les configurations / poids des modèles en un clic, puis les modèles sont téléchargés automatiquement. Veuillez vous référer à HuggingFace Otter / Flamingo pour plus de détails.
Otter est formé sur la base d'OpenFlamingo. Vous devrez peut-être utiliser des poids convertis à Luodian / Otter-9B-INT ou Luodian / Otter-Mpt7b-Init. Ils sont respectivement convertis à partir d'OpenFlamingo-Lama7b-V1 et d'OpenFlamingo-Mpt7b-V2, nous avons ajouté un jeton <answer>
pour le réglage des instructions en aval d'Otter.
Vous pouvez également utiliser tous les poids de loutre formés pour commencer avec votre formation au-dessus de la nôtre, les voir à Otter Weights. Vous pouvez vous référer à Mimic-it pour préparer des fichiers Image / Instruction / Train 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 vous avez trouvé ce référentiel utile, veuillez envisager de citer:
@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}
}
Nous remercions Jack Hessel pour les conseils et le soutien, ainsi que l'équipe Openflamingo pour leur grande contribution à la communauté open source.
Énormes distinctions à l'équipe Flamingo et Openflamingo pour le travail sur cette grande architecture.