Ferret: modelo de linguagem grande multimodal
(github.com/apple)- Ferret é um MLLM de ponta a ponta que recebe alvos de instrução em formato livre como entrada e fundamenta localizações nas respostas, com o objetivo de possibilitar referência e fundamentação em qualquer granularidade e posição
- Seus componentes centrais são a Hybrid Region Representation e o Spatial-aware Visual Sampler, que dão suporte a referência e fundamentação detalhadas de vocabulário aberto em MLLMs
- O projeto oferece cerca de 1,1 milhão de itens no GRIT Dataset, Ferret-Bench, deltas de checkpoints 7B e 13B, além de procedimentos de treinamento, avaliação e execução de demo
- O treinamento toma como base um ambiente com 8×A100 80GB; quando houver menos GPUs, é preciso ajustar a combinação de
per_device_train_batch_size,gradient_accumulation_stepsenum_gpuspara manter o tamanho global do lote - Os dados e o código são exclusivos para fins de pesquisa; o dataset está sob CC BY NC 4.0 e permite apenas uso não comercial, e também devem ser seguidas as condições de licença do LLaMA, Vicuna e GPT-4
Objetivo e composição do Ferret
- Ferret é um MLLM de ponta a ponta que propõe “Refer and Ground Anything Anywhere at Any Granularity”
- Seu objetivo é aceitar entradas de referência em formatos arbitrários e fundamentar os alvos nas respostas
- As principais contribuições podem ser resumidas em três pontos
- Ferret Model: usa Hybrid Region Representation e Spatial-aware Visual Sampler para possibilitar referência e fundamentação detalhadas de vocabulário aberto
- GRIT Dataset: um dataset de grande escala, hierárquico e robusto, com cerca de 1,1 milhão de itens, para instruction tuning de ground-and-refer
- Ferret-Bench: benchmark de avaliação multimodal que exige, em conjunto, referência e fundamentação, semântica, conhecimento e raciocínio
Lançamentos e status do modelo
- Em 8 de outubro de 2024, Ferret-UI foi lançado
- É apresentado como um MLLM centrado em UI, capaz de executar de forma eficaz tarefas de referring, grounding e reasoning
- Em 10 de julho de 2024, Ferret-v2 foi aceito na COLM 2024
- Em 15 de fevereiro de 2024, o Ferret foi aceito como ICLR 2024 Spotlight
- Em 14 de dezembro de 2023, os checkpoints Ferret 7B e 13B foram lançados
- Em 30 de outubro de 2023, o código do modelo FERRET e o Ferret-Bench foram lançados
Instalação e condições de treinamento
- A instalação segue o fluxo de clonar o repositório e instalar os pacotes em um ambiente Conda com
python=3.10pip install -e .pycocotoolsprotobuf==3.20.0
- Para treinamento, também é necessário instalar os pacotes adicionais ninja e
flash-attn --no-build-isolation - O ambiente de referência para treinamento do FERRET usa 8 GPUs A100, cada uma com 80 GB de memória
- Ao treinar com menos GPUs, é preciso manter o tamanho global do lote
- Tamanho global do lote =
per_device_train_batch_size×gradient_accumulation_steps×num_gpus
- Tamanho global do lote =
- Os hiperparâmetros de fine-tuning usam uma configuração semelhante à do LLaVA(Vicuna)
- FERRET-7B: Global Batch Size 128, Learning rate
2e-5, Epochs 3, Max length 2048, Weight decay 0 - FERRET-13B: Global Batch Size 128, Learning rate
2e-5, Epochs 3, Max length 2048, Weight decay 0
- FERRET-7B: Global Batch Size 128, Learning rate
Modelos-base e uso de checkpoints
- Antes do treinamento, é preciso preparar os pesos do modelo-base Vicuna v1.3
- Também são necessários os pesos do projector da pré-treinamento de estágio 1 do LLaVA
- projector 7B
- projector 13B
- Os checkpoints públicos são fornecidos não como o modelo pré-treinado completo, mas na forma de delta em relação ao Vicuna
- O usuário deve primeiro obter os pesos do Vicuna, depois baixar o delta 7B ou 13B do Ferret e aplicar o offset aos pesos do Vicuna usando o script
ferret.model.apply_delta - Os weight differentials fornecidos pela Apple são cobertos pela licença CC-BY-NC, enquanto o LLaMA e outros softwares de terceiros seguem seus respectivos termos
Avaliação e execução da demo
- A avaliação é detalhada em um documento separado,
EVAL.md - A demo local usa uma UI web Gradio, e exige o treinamento do FERRET e o uso local dos checkpoints
- O fluxo de execução da demo tem três etapas
- executar o controller:
ferret.serve.controller - executar o servidor web Gradio:
ferret.serve.gradio_web_server - executar o model worker, que faz a inferência na GPU:
ferret.serve.model_worker
- executar o controller:
- O model worker é responsável por um único modelo especificado por
--model-path - Quando o carregamento do modelo terminar e aparecer “Uvicorn running on ...”, atualize a UI web Gradio para ver o modelo executado na lista
Restrições de uso e origem
- Os dados e o código são pretendidos e licenciados apenas para fins de pesquisa
- O uso é limitado ao cumprimento dos contratos de licença do LLaMA, Vicuna e GPT-4
- O dataset está sob CC BY NC 4.0 e permite apenas uso não comercial
- Modelos treinados com o dataset não devem ser usados fora de fins de pesquisa
- O projeto se baseia na base de código do LLaVA e na base de código do LLM Vicuna
1 comentários
Opiniões no Hacker News
Já estamos indo para o multimodal? Se o Google não conseguir tornar as descrições de imagem melhores do que o nível de “logotipo de empresa” em acessibilidade nessa área, penso em voltar para a Apple.
A Apple também precisa reduzir os bugs e eliminar a sensação de que o VoiceOver vai desmoronar com qualquer toque mínimo, mas, mesmo sem LLM, as descrições de imagem já são limpas e claras.
Por exemplo, algo mais próximo de “logotipo verde sobre fundo preto”, enquanto o Google, como eu disse, fica mais perto de “logotipo de empresa”. Parece o resultado de IA treinada por crowdsourcing, em vez de com dados bons e de alta qualidade.
Usa a família de modelos Flamingo: https://deepmind.google/discover/blog/tackling-multiple-task...
Também há rumores de que as versões do macOS / iOS do ano que vem incluirão recursos de LLM.
Algo relacionado que vale ver: “LLM in a flash: Efficient Large Language Model Inference with Limited Memory”
A Apple parece estar preparando grandes avanços em inferência on-device usando esse tipo de LLM.
https://arxiv.org/abs/2312.11514
O artigo é antigo (outubro de 2023), mas os pesos acabaram de sair (dezembro de 2023).
https://lifearchitect.ai/models-table/
A Apple parecia quieta em LLMs, mas vem avançando de forma constante em seu stack de IA de hardware+software, sem publicidade espalhafatosa.
Acho que, se uma nova versão do iOS de repente fizer as janelas de chat da OpenAI/Bard parecerem ridiculamente antiquadas, ela pode superar Microsoft/OpenAI e Google.
Se uma parcela significativa do uso de IA migrar para hardware da Apple, isso também seria uma ameaça para a Nvidia, enquanto Arm e TSMC provavelmente se beneficiariam.
É mais provável que ela “simplesmente” use a mesma tecnologia para melhorias incrementais em produtos como a Siri ou o autocompletar do teclado, e acho que esse é um bom caminho.
Ela também não está tentando captar venture capital, e seu negócio principal não é ameaçado pela IA como “evolução da busca”.
Do ponto de vista de produto, até agora só ouvimos mensagens do tipo que o M3 Max é adequado para executar modelos de aprendizado de máquina.
Até que um produto real para consumidores esteja pronto, basta mencionarem isso formalmente em reuniões financeiras e administrarem os analistas.
Também levaria muito tempo para reconquistar a confiança dos desenvolvedores, e não acho que isso vá acontecer.
Você pode definir o que significa “MLLM”?
Eu gostaria que a Apple lançasse, já no ano que vem se possível, um iPhone com um bom assistente LLM privado on-device.
O hardware parece bem adequado para isso.
Se sair assim, eu talvez quebre meu ciclo normal de troca de cerca de 4 anos e compre um celular novo. Para mim, a Siri é praticamente inutilizável.
Vai ser interessante ver se oferecerão recursos diferentes conforme a situação online/offline, ou se será tudo totalmente offline.
Um artigo para contexto: https://archive.is/en3VL
É bem perto do que eu espero de uma ferramenta de voz. Em vez de falar comandos específicos em voz alta, como na Siri, dá para conversar como se fosse com uma pessoa comum.
https://jackcook.com/2023/09/08/predictive-text.html
Uso um iPhone recente, mas é muito raro eu vê-lo funcionando de fato.
Por enquanto, parece lento demais para acompanhar minha velocidade de digitação, ou o modelo é pequeno demais para gerar muitas sugestões úteis.
Ainda hoje é possível fazer o ChatGPT dizer coisas muito horríveis, e, se a Apple lançar algo on-device, também será possível transformá-lo em um robô ruim.
Pessoalmente, acho que LLMs ainda não são seguros para uso em produção voltado ao público em geral.
“O FERRET foi treinado com 8 GPUs A100 de 80 GB de memória” — pelo visto, nem a Apple conseguiu escapar da armadilha do CUDA
É curioso que ela tenha passado de uma relação de antagonismo moral com a Nvidia para uma dependência parcial
Mas, se acabar mergulhando fundo o bastante, talvez invista dinheiro em sua própria infraestrutura de computação
A Nvidia hoje é a rainha da computação em GPU, e desenvolver hardware parecido não é algo pequeno nem barato, mas a Apple está em uma posição muito boa para conseguir fazer isso se decidir investir
Acho que, mesmo havendo conflitos entre empresas, elas aceitam o custo se algum caminho se tornar mais barato ou mais fácil
Mesmo o Studio e o Mac Pro são mais próximos de chips de notebook emendados, e para cargas pesadas é preciso usar equipamento pesado
Sei que a relação com a Nvidia azedou, mas gostaria que eles fortalecessem o ecossistema AMD/ROCm
Claro que é bem provável que a própria Apple esteja criando algo nessa área. Como tem dezenas de bilhões de dólares em ativos líquidos, imagino que esteja usando uma quantia considerável em pesquisa e desenvolvimento
No fim, esses modelos de deep learning rodam em qualquer hardware e, aceitando uma pequena perda de desempenho, dá para trocar facilmente um tipo de hardware por outro
Basicamente, é algo próximo de uma commodity
Alguém sabe qual é o melhor modelo open source que possa ser usado comercialmente e rodar localmente no iPhone?
É open source e roda nativamente nas principais plataformas. Também compartilhei vídeos dele rodando em iPad Mini, Pixel 7, iPhone 12, Surface Pro (Windows 10 & Ubuntu Jellyfish) e Mac (arquiteturas Intel & M)
Não é, de forma alguma, um app finalizado. Como eu queria usar IA on-device no Flutter, comecei portando o llama.cpp, e depois pretendo portar implementações mais recentes como whisper.cpp e bark.cpp
Repositório: https://github.com/BrutalCoding/aub.ai
Em dispositivos Apple, use isto: https://testflight.apple.com/join/XuTpIgyY
O app é compatível com qualquer arquivo GGUF, mas ele precisa estar no formato de prompt ChatML para que a UI de chat/os balões não fiquem estranhos. Ainda não deixei isso personalizável, porque é apenas um app de exemplo do plugin. Mesmo assim, estou trabalhando ativamente para refiná-lo até chegar ao formato que tenho em mente
Mas, em termos de usabilidade, o app do ChatGPT4 é muito melhor. O modelo também é melhor, e os recursos multimodais, incluindo texto/visão/voz, além da UI, também são superiores
“Os dados e o código são destinados e licenciados apenas para uso em pesquisa. Além disso, o uso é limitado ao cumprimento dos contratos de licença do LLaMA, Vicuna e GPT-4. O dataset é CC BY NC 4.0 e permite apenas uso não comercial, e modelos treinados com esse dataset não devem ser usados para fins que não sejam de pesquisa”
Espera, como GPT-4 entrou nessa?