2 puntos por GN⁺ 2023-12-24 | 1 comentarios | Compartir por WhatsApp
  • 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_steps y num_gpus para 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.10
    • pip install -e .
    • pycocotools
    • protobuf==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
  • 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

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
  • 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

 
GN⁺ 2023-12-24
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

    • La app Lookout de Google es una app de accesibilidad para personas ciegas o con baja visión, y ya se actualizó hace unos 6 meses con un LLM multimodal
      Usa la familia de modelos Flamingo: https://deepmind.google/discover/blog/tackling-multiple-task...
    • Si el artículo sale apenas ahora, es muy probable que Apple lleve al menos 1 o 2 años trabajando en esto
      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

    • No creo que Apple vaya a crear un gran chatbot al estilo ChatGPT
      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
    • Apple tampoco vende tiempo de cómputo para que otras empresas ejecuten IA, ni vende hardware personalizado a gran escala para entrenamiento de IA
      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
    • Viendo el historial de Apple con la IA y el estado de abandono de CoreML, ese escenario parece muy poco probable
      Incluso recuperar la confianza de los desarrolladores tomaría mucho tiempo, y no parece que vaya a pasar
    • ¿Podrías dar ejemplos? Me cambié a Android porque uso mucho al asistente personal mientras manejo, y Siri era realmente malísimo
    • ¿Cómo puedes estar tan seguro? Hasta este enlace se apoya en trabajo de otras personas, así que no sé si Apple haya aportado tanto como crees
  • ¿Alguien puede definir qué significa “MLLM”?

    • Multimodal Large Language Model, o sea, modelo de lenguaje grande multimodal
    • Funciona haciendo que el modelo de lenguaje delegue tareas a otros modelos de lenguaje más pequeños y luego cobre de más por el tiempo de GPU
    • ¿Y FERRET es un acrónimo?
  • 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

    • Según los rumores, Apple está preparando iOS 18 como una versión centrada en IA
      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
    • La voz de GPT-4 es realmente excelente
      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
    • Como referencia, la autocorrección ya está respaldada por un LLM pequeño
      https://jackcook.com/2023/09/08/predictive-text.html
    • En iOS 17 metieron un LLM muy pequeño en el texto predictivo
      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
    • Todavía nadie ha logrado domar los modelos LLM, y Apple no es la excepción
      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

    • Siento que Apple por ahora apenas está tanteando el terreno en IA
      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
    • Apple Silicon está bien, pero son chips diseñados para dispositivos portátiles
      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
    • “Dependencia” es una palabra demasiado fuerte
      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?

    • Hice un plugin de Flutter que puede hacer esto, y también armé una app de ejemplo
      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
    • Mistral 7B está bastante bien, e instruct v0.2 corre en mi iPhone a través de MLC Chat
      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?

    • Probablemente porque en alguna etapa se usaron datos de entrenamiento generados por GPT-4. También podría venir por el lado de Vicuna
    • Puede que esté ahí porque usan GPT-4 para calificar las respuestas en el stack de evaluación
    • Qué interesante. Entonces Apple básicamente acaba de decir públicamente que usó GPT-4 en el entrenamiento, ¿no?