Créditos do projeto | Papel de lontra | Papel otterhd | Papel imitador
Pontos de verificação:
Para quem na China continental: |
Isenção de responsabilidade: o código pode não ser perfeitamente polido e refaturado, mas todos os códigos de excesso de abertura são testados e executáveis , pois também usamos o código para apoiar nossa pesquisa. Se você tiver alguma dúvida, não hesite em abrir um problema. Estamos ansiosos por sugestões e PRs para melhorar a qualidade do código.
[2023-11]: Apoia a avaliação do GPT4V em 8 benchmarks; ANOUNCING OTTERHD-8B, melhorado de Fuyu-8b. Confira otterHD para obter detalhes.
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]: DATASET ANOUNCING MIMIC-IT para múltiplos ajustes de instrução de imagem/vídeo intercalados.
[2023-06]
frame tensors
foram incapazes de não procurar uma vision_x
errada.Certifique -se de ajustar o
sys.path.append("../..")
corretamente para acessarotter.modeling_otter
para iniciar o modelo.
Os grandes modelos de idiomas (LLMs) demonstraram aptidão universal excepcional, pois poucos alunos/tiro zero para inúmeras tarefas, devido ao pré-treinamento em extensos dados de texto. Entre esses LLMs, o GPT-3 se destaca como um modelo de destaque com capacidades significativas. Além disso, as variantes do GPT-3, nomeadamente InstructGPT e ChatGPT, se mostraram eficazes na interpretação das instruções de linguagem natural para executar tarefas complexas do mundo real, graças ao ajuste de instrução.
Motivado pelo formato intercalado a montante do modelo flamingo, apresentamos? Otter, um modelo multimodal baseado no OpenFlamingo (a versão de código aberto do Flamingo de DeepMind). Treinamos nossa lontra de forma de instrução no Contexto em nosso conjunto de dados proposto de unidade ( MIMIC - IT ) . A OTTER mostra a capacidade de aprender de seguidores e de contexto melhorada em imagens e vídeos.
O Mimic-It permite a aplicação do modelo de assistente visual egocêntrico que pode servir que pode responder a suas perguntas como ei, você acha que eu deixei minhas chaves na mesa? . Aproveite o poder de Mimic-It para desbloquear todo o potencial do seu assistente visual acionado por IA e elevar suas tarefas interativas de linguagem de visão a novas alturas.
Também introduzimos Syphus , um pipeline automatizado para gerar pares de resposta-resposta de alta qualidade em vários idiomas. Com base na estrutura proposta pela LLAVA, utilizamos o ChatGPT para gerar pares de resposta-resposta com base no conteúdo visual. Para garantir a qualidade dos pares gerados de resposta de instrução, nosso pipeline incorpora mensagens do sistema, anotações visuais e exemplos de contexto como solicitantes para o ChatGPT.
Para mais detalhes, consulte o conjunto de dados Mimic-it.
A OTTER foi projetada para suportar o ajuste de instruções em contexto multimodal com base no modelo OpenFlamingo, que envolve condicionar o modelo de idioma na mídia correspondente, como uma imagem que corresponde a uma legenda ou um par de resposta-resposta.
Treinamos lontras no conjunto de dados MIMIC-IT com aproximadamente 2,8 milhões de pares de resposta de instrução no contexto, que são estruturados em um modelo coesivo para facilitar várias tarefas. A OTTER suporta entradas de vídeos (os quadros são organizados como implementação do Flamingo original) e várias entradas de imagens como exemplos de contexto, que é o primeiro modelo sintonizado de instrução multimodal .
O modelo a seguir abrange imagens, instruções do usuário e respostas geradas por modelos, utilizando os rótulos de função User
e GPT
para ativar interações perfeitas e assistentes do usuário.
prompt = f"<image>User: { instruction } GPT:<answer> { response } <endofchunk>"
Treinar o modelo de lontra no conjunto de dados MIMIC-IT permite adquirir diferentes capacidades, como demonstrado pelas tarefas LA e SD. Treinado na tarefa de LA, o modelo exibe excepcional compreensão de cenas, habilidades de raciocínio e recursos de conversação de várias rodadas.
# multi-round of conversation
prompt = f"<image>User: { first_instruction } GPT:<answer> { first_response } <endofchunk>User: { second_instruction } GPT:<answer>"
Em relação ao conceito de organizar exemplos de contexto em linguagem visual, demonstramos aqui a capacidade adquirida do modelo de lontra de seguir instruções inter-contextuais após o treinamento da tarefa LA-T2T. O formato de dados de entrada organizado é o seguinte:
# 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 mais detalhes, consulte o apêndice do nosso artigo para outras tarefas.
conda env create -f environment.yml
. Especialmente para garantir que os transformers>=4.28.0
, accelerate>=0.18.0
.Depois de configurar o ambiente, você pode usar o? Modelo flamingo /? Modelo de lontra como um? Abraçando o modelo de rosto com apenas algumas linhas! As configurações/pesos com um clique e depois o modelo são baixados automaticamente. Consulte o HuggingFace Otter/Flamingo para obter detalhes.
A OTTER é treinada com base no OpenFlamingo. Pode ser necessário usar pesos convertidos no Luodian/OTTER-9B-Init ou Luodian/Otter-Mpt7b-Init. Eles são convertidos respectivamente do OpenFlamingo-llama7B-V1 e do OpenFlamingo-Mpt7b-V2, adicionamos um token <answer>
para o ajuste de instrução a jusante da Otter.
Você também pode usar quaisquer pesos de lontra treinados para começar com o seu treinamento em cima, veja -os com pesos de lontra. Você pode se referir ao Mimic-It para preparar arquivos JSON de imagem/instrução/trem.
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
Se você achou esse repositório útil, 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 pelo conselho e apoio, bem como pela equipe OpenFlamingo por sua grande contribuição para a comunidade de código aberto.
Enormes elogios para a equipe Flamingo e OpenFlamingo para o trabalho nesta ótima arquitetura.