Ferret: modelo de lenguaje grande multimodal
(github.com/apple)- Ferret es un MLLM de extremo a extremo que recibe como entrada objetivos de referencia en formato libre y fundamenta ubicaciones en sus respuestas; apunta a referencia y fundamentación a cualquier nivel de granularidad y sin depender de la posición
- Sus componentes clave son Hybrid Region Representation y Spatial-aware Visual Sampler, que permiten referencia y fundamentación detalladas de vocabulario abierto en un MLLM
- El proyecto ofrece en conjunto el GRIT Dataset de aproximadamente 1.1 millones de ejemplos, Ferret-Bench, deltas de checkpoints 7B·13B, y procedimientos para entrenamiento, evaluación y ejecución de demos
- El entrenamiento toma como referencia un entorno de 8×A100 de 80 GB; cuando se usan menos GPU, se debe ajustar la combinación de
per_device_train_batch_size,gradient_accumulation_stepsynum_gpuspara mantener el tamaño de batch global - Los datos y el código son solo para fines de investigación; el dataset está bajo CC BY NC 4.0 y permite únicamente uso no comercial, y también deben cumplirse las condiciones de licencia de LLaMA, Vicuna y GPT-4
Objetivos y componentes de Ferret
- Ferret es un MLLM de extremo a extremo que propone “Refer and Ground Anything Anywhere at Any Granularity”
- Su objetivo es aceptar entradas de referencia en cualquier formato y fundamentar los objetivos en las respuestas
- Sus principales aportes se resumen en tres puntos
- Ferret Model: usa Hybrid Region Representation y Spatial-aware Visual Sampler para posibilitar referencia y fundamentación detalladas de vocabulario abierto
- GRIT Dataset: un dataset de tuning de instrucciones ground-and-refer a gran escala, jerárquico y robusto, con aproximadamente 1.1 millones de ejemplos
- Ferret-Bench: benchmark de evaluación multimodal que exige referencia y fundamentación, semántica, conocimiento y razonamiento en conjunto
Estado de lanzamientos y modelos
- El 8 de octubre de 2024 se publicó Ferret-UI
- Se presenta como un MLLM centrado en UI, capaz de ejecutar de forma efectiva tareas de referring, grounding y reasoning
- El 10 de julio de 2024, Ferret-v2 fue aceptado en COLM 2024
- El 15 de febrero de 2024, Ferret fue aceptado como ICLR 2024 Spotlight
- El 14 de diciembre de 2023 se publicaron los checkpoints 7B·13B de Ferret
- El 30 de octubre de 2023 se publicaron el código del modelo FERRET y Ferret-Bench
Instalación y condiciones de entrenamiento
- La instalación sigue el flujo de clonar el repositorio e instalar paquetes en un entorno Conda con
python=3.10pip install -e .pycocotoolsprotobuf==3.20.0
- Para entrenamiento, también se requiere instalar los paquetes adicionales ninja y
flash-attn --no-build-isolation - El entorno de referencia para entrenar FERRET es de 8 GPU A100, cada una con 80 GB de memoria
- Al entrenar con menos GPU, se debe mantener el tamaño de batch global
- Tamaño de batch global =
per_device_train_batch_size×gradient_accumulation_steps×num_gpus
- Tamaño de batch global =
- Los hiperparámetros de fine-tuning usan una configuración similar a 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
Uso de modelos base y checkpoints
- Antes de entrenar, se deben preparar los pesos del modelo base Vicuna v1.3
- También se necesitan los pesos del projector de preentrenamiento de etapa 1 de LLaVA
- projector 7B
- projector 13B
- Los checkpoints publicados no se entregan como modelos preentrenados completos, sino como deltas respecto de Vicuna
- El usuario primero debe obtener los pesos de Vicuna, luego descargar el delta 7B o 13B de Ferret y aplicar el offset a los pesos de Vicuna con el script
ferret.model.apply_delta - Los weight differentials provistos por Apple están bajo licencia CC-BY-NC, mientras que LLaMA y otros software de terceros se rigen por sus propias condiciones
Evaluación y ejecución de demos
- La evaluación se detalla en el documento separado
EVAL.md - La demo local usa una UI web de Gradio y requiere entrenamiento de FERRET y uso local de checkpoints
- El flujo de ejecución de la demo consta de tres pasos
- Ejecutar el controller:
ferret.serve.controller - Ejecutar el servidor web de Gradio:
ferret.serve.gradio_web_server - Ejecutar el model worker que realiza la inferencia en GPU:
ferret.serve.model_worker
- Ejecutar el controller:
- El model worker se encarga de un único modelo especificado con
--model-path - Cuando termina la carga del modelo y aparece “Uvicorn running on ...”, se puede actualizar la UI web de Gradio para ver en la lista el modelo ejecutado
Restricciones de uso y fuentes
- Los datos y el código están destinados y licenciados solo para fines de investigación
- Su uso está limitado al cumplimiento de los acuerdos de licencia de LLaMA, Vicuna y GPT-4
- El dataset está bajo CC BY NC 4.0 y solo permite uso no comercial
- Los modelos entrenados con el dataset no deben usarse fuera de fines de investigación
- El proyecto se basa en el codebase de LLaVA y el codebase LLM de Vicuna
1 comentarios
Opiniones en Hacker News
¿Ya vamos rumbo a lo multimodal? Si Google no puede lograr que las descripciones de imágenes en accesibilidad sean mejores que el nivel de “logo de empresa”, estoy pensando en volver a Apple
Aunque Apple también tiene que reducir errores y quitar esa sensación de que VoiceOver se puede desmoronar con cualquier pequeño cambio, las descripciones de imágenes ya son limpias y claras incluso sin LLM
Por ejemplo, se acerca más a “un logo verde sobre fondo negro”, mientras que Google, como dije antes, se queda más cerca de “logo de empresa”. Parece el resultado de cuando la IA se entrena con contenido colaborativo en vez de con datos buenos y de alta calidad
Usa la familia de modelos Flamingo: https://deepmind.google/discover/blog/tackling-multiple-task...
También hay rumores de que la próxima versión de macOS / iOS incluirá funciones con LLM
Algo relacionado que vale la pena ver: “LLM in a flash: Efficient Large Language Model Inference with Limited Memory”
Apple parece estar preparándose para dar un gran salto en inferencia en el dispositivo usando este tipo de LLM
https://arxiv.org/abs/2312.11514
El artículo es viejo (octubre de 2023), pero los pesos salieron hace poco (diciembre de 2023)
https://lifearchitect.ai/models-table/
Apple parecía estar callado en LLM, pero ha seguido desarrollando de forma constante su stack de IA de hardware + software sin publicidad ruidosa
Si una nueva versión de iOS de repente hace que las ventanas de chat de OpenAI/Bard parezcan ridículamente obsoletas, creo que podría pasarle por encima a Microsoft/OpenAI y Google
Si una parte importante del uso de IA se mueve al hardware de Apple, eso también sería una amenaza para Nvidia, y es probable que Arm y TSMC se beneficien
Lo más probable es que simplemente use la misma tecnología para mejorar gradualmente productos como Siri o el autocompletado del teclado, y me parece una buena dirección
No está buscando levantar venture capital, y su negocio principal tampoco está amenazado por la IA como “evolución de la búsqueda”
Desde el lado del producto, hasta ahora lo único que se escucha es el mensaje de que el M3 Max sirve bien para ejecutar modelos de aprendizaje automático
Hasta que el producto real para consumidores esté listo, les basta con mencionarlo de forma protocolaria en reuniones financieras para mantener tranquilos a los analistas
Incluso recuperar la confianza de los desarrolladores tomaría mucho tiempo, y no parece que vaya a pasar
¿Alguien puede definir qué significa “MLLM”?
Ojalá Apple saque pronto, quizá el próximo año, un iPhone con un buen asistente LLM privado en el dispositivo
El hardware parece muy adecuado para eso
Si sale así, podría romper mi ciclo habitual de cambio cada 4 años y comprar un teléfono nuevo. Para mí, Siri está casi al nivel de inutilizable
Sería interesante ver si ofrece funciones distintas según estés en línea o fuera de línea, o si será completamente offline
Un artículo con algo de contexto: https://archive.is/en3VL
Es muy cercana a lo que uno esperaría de una herramienta de voz. No tienes que decir comandos específicos en voz alta como con Siri, sino que puedes hablar como si conversaras con una persona normal
https://jackcook.com/2023/09/08/predictive-text.html
Uso un iPhone reciente, pero muy rara vez veo que realmente funcione
Ahora mismo parece demasiado lento para seguir mi velocidad al escribir, o el modelo es demasiado pequeño para dar muchas sugerencias útiles
Incluso hoy puedes hacer que ChatGPT diga cosas bastante horribles, y si Apple saca algo en el dispositivo, también podrían convertirlo en un robot dañino
Personalmente, sigo creyendo que los LLM todavía no son seguros para uso en producción dirigido al público
Que FERRET “fue entrenado con 8 GPU A100 de 80 GB”... parece que Apple tampoco pudo escapar de la trampa de CUDA
Es curioso que pasaran de tener una relación de enemistad moral con Nvidia a depender de ella en parte
Pero si se meten de verdad, podrían gastar dinero en su propia infraestructura de cómputo
Nvidia es el rey del cómputo con GPU en este momento, y desarrollar hardware comparable no es algo ni pequeño ni barato, pero Apple está en una muy buena posición para lograrlo si decide invertir
Aunque haya conflictos entre empresas, si algún proceso resulta más barato o más fácil, las compañías lo aceptan con gusto
Incluso el Studio y el Mac Pro se parecen más a una unión de chips de laptop, y para trabajo pesado hay que usar equipo pesado
Sé que la relación con Nvidia se deterioró, pero me gustaría que fortalecieran el ecosistema de AMD/ROCm
Claro, también es muy posible que Apple esté construyendo algo propio en esta área. Tienen decenas de miles de millones de dólares en efectivo, así que seguro están destinando bastante a I+D
Al final, estos modelos de aprendizaje profundo corren en cualquier hardware, y si aceptas una pequeña pérdida de rendimiento, es fácil cambiar un tipo de hardware por otro
Básicamente es casi un bien genérico
¿Alguien sabe cuál es el mejor modelo de código abierto que se pueda usar comercialmente y correr de forma local en un iPhone?
Es open source y corre de forma nativa en las principales plataformas. También compartí videos funcionando en iPad Mini, Pixel 7, iPhone 12, Surface Pro (Windows 10 & Ubuntu Jellyfish) y Mac (Intel y arquitectura M)
No es una app terminada para nada. Empecé portando llama.cpp porque quería usar IA on-device desde Flutter, y después planeo portar implementaciones más recientes como whisper.cpp y bark.cpp
Repositorio: https://github.com/BrutalCoding/aub.ai
En dispositivos Apple pueden usar esto: https://testflight.apple.com/join/XuTpIgyY
La app es compatible con cualquier archivo GGUF, pero debería usar el formato de prompts de ChatML para que la UI de chat o los globos de diálogo no se vean raros. Todavía no lo hice configurable, porque al final solo es una app de ejemplo del plugin. Aun así, estoy trabajando activamente para pulirla y llevarla a la forma que quiero
Eso sí, en usabilidad la app de ChatGPT4 es muchísimo mejor. El modelo también es mejor, y las funciones multimodales con texto/visión/voz junto con la UI también están mejor logradas
“Los datos y el código están destinados y licenciados solo para uso de investigación. Además, su uso está restringido a cumplir con los acuerdos de licencia de LLaMA, Vicuna y GPT-4. El dataset está bajo CC BY NC 4.0 y solo permite uso no comercial, y los modelos entrenados con este dataset no deben usarse fuera de fines de investigación”
Espera, ¿cómo entró aquí GPT-4?