15 puntos por GN⁺ 2025-05-14 | 1 comentarios | Compartir por WhatsApp
  • Repositorio oficial de Apple para "FastVLM: Efficient Vision Encoding for Vision Language Models", presentado en CVPR 2025
  • FastViTHD muestra un rendimiento de reducción del número de tokens y menor tiempo de codificación de imágenes de alta resolución
  • El modelo más pequeño logra resultados 85 veces más rápidos que LLaVA-OneVision-0.5B y un encoder 3.4 veces más pequeño
  • El modelo grande muestra un rendimiento sobresaliente y una velocidad 7.9 veces mayor que Cambrian-1-8B
  • Se ofrece una app de demostración que funciona en dispositivos móviles como iPhone

Importancia y ventajas del proyecto FastVLM

  • FastVLM es una implementación oficial de código abierto para modelos de lenguaje visual (Vision Language Model, VLM)
  • Ofrece ventajas sobresalientes en velocidad y eficiencia frente a encoders de visión existentes
  • Tiene gran utilidad en distintos tipos de hardware, especialmente en Apple Silicon y entornos móviles
  • Se pueden elegir y usar directamente modelos preentrenados de distintos tamaños y niveles de rendimiento
  • Frente a otros proyectos, garantiza respuesta en tiempo real optimizada y menor uso de recursos de hardware gracias a su tamaño de modelo reducido

Características principales

  • FastViTHD es un encoder de visión innovador con estructura híbrida que reduce la cantidad de tokens de salida y acorta considerablemente el tiempo de codificación de imágenes de alta resolución
  • El modelo más pequeño, FastVLM-0.5B, tiene un TTFT (tiempo hasta el primer token) 85 veces más rápido que LLaVA-OneVision-0.5B y un encoder 3.4 veces más pequeño
  • El modelo grande FastVLM-7B, combinado con el LLM Qwen2-7B, muestra un TTFT 7.9 veces más rápido y un rendimiento superior con un solo encoder de imagen al compararse con SOTA recientes como Cambrian-1-8B
  • Incluso incluye una app de demostración que funciona en un entorno móvil real (iOS), lo que permite validar de inmediato la utilidad práctica de la tecnología

Información de modelos (Model Zoo)

  • Se ofrecen modelos FastVLM de varios tamaños (FastVLM-0.5B, FastVLM-1.5B, FastVLM-7B) en versiones de etapa 2 y etapa 3
  • Para cada modelo se proporcionan oficialmente archivos de checkpoint de PyTorch
  • Los usuarios pueden usar los comandos oficiales para descargar en lote varios modelos al directorio checkpoints

Ejemplo de uso (Usage Example)

  • Es posible probar inferencia de forma fácil y rápida con checkpoints de PyTorch ya entrenados mediante el script predict.py
  • Con el comando de ejemplo, al ingresar una imagen y enviar un prompt (pregunta), se puede obtener una descripción de la imagen o la respuesta a la pregunta

Soporte para Apple Silicon y dispositivos móviles

  • Se ofrece una guía que explica el proceso de exportación y cuantización del modelo para inferencia en Apple Silicon
  • Se distribuyen oficialmente archivos de checkpoint de una versión optimizada directamente para Apple Silicon
  • En la carpeta /app se incluyen una guía de desarrollo de apps y el código fuente para usarlo directamente en iPhone, iPad y Mac

Información adicional y guía de código abierto

  • Se proporcionan el enlace oficial de arXiv del paper de FastVLM y el formato de cita para el paper de CVPR 2025
  • La base de código se apoya en varios proyectos de código abierto, y se detallan por separado las contribuciones y la información de licencias
  • Antes de usar el modelo y el código, es necesario revisar la licencia (archivo de licencia y licencia del modelo)

1 comentarios

 
GN⁺ 2025-05-14
Opiniones de Hacker News
  • Un modelo tope de gama de 0.5B que ocupa 2 GB; no tiene sentido pensar que cada app vaya a descargar esto por separado. Seguro que Apple planea precargar estos modelos a nivel del sistema operativo y ofrecer un SDK para que todas las apps puedan invocarlos localmente. De verdad es una etapa muy emocionante. Incluso abrí un issue para confirmar este punto
    • Creo que habría un potencial enorme si existiera un modelo fundacional estandarizado por el SO y basado en pesos abiertos. Si la API permitiera que los desarrolladores cargaran ajustes finos LoRa personalizados sobre el modelo estándar del SO en tiempo de ejecución, idealmente se podría tener lo mejor de ambos mundos: modelos especializados por app manteniendo tamaños de app populares, junto con las ventajas del modelo fundacional
    • Al cuantizarlo a f16 o incluso int8 quizá se podría reducir aún más el tamaño del modelo, pero lo que dijiste es el punto clave. También desde la perspectiva del usuario, descargar un archivo de 500 MB para una sola app no es una experiencia agradable
    • Recuerdo que en la WWDC del año pasado comentaron algo parecido también sobre los LLM. La idea era que el SO proporcionara un modelo base y que cada app pudiera afinarlo con LORAs o montarle cabezales personalizados
    • No creo que mencionen esto públicamente a menos que sea en una presentación grande. Mi apuesta es que solo se podrá confirmar en algo como la WWDC
  • Siento que subir lo suficiente la velocidad de time-to-first-token es esencial para apps tipo asistentes on-device basados en visión continua, que miran la pantalla y actúan de inmediato. Ver la app real funcionando en el repo me pareció bastante impresionante, y me emociona pensar en compilarla y probarla yo mismo esta noche
  • Ojalá contribuyeran más activamente a la comunidad de AI/ML y subieran también los pesos y la arquitectura del modelo a HuggingFace. Curiosamente, hoy vi usar un VLM gratuito en una demo parecida de VLM. Aquí va la referencia: https://github.com/ngxson/smolvlm-realtime-webcam
  • Estoy construyendo directamente una app de voz+visión en tiempo real llamada Sen. Ahora mismo la publiqué en beta y transmite frames en tiempo real con webrtc. Ya me parece rápida e inteligente, y me pregunto cuánto mejorará todo esto a medida que estos modelos se acerquen más al hardware. En el futuro, parece posible que corran de forma natural en el dispositivo con un TTFB rápido
    • Si tienes algún post donde expliques el stack técnico y la configuración, ¿podrías compartirlo? O si no, incluso un resumen me serviría. Quiero hacer algo tipo un Qwen personal para niños, que intercambie prompts con botones y voz; por ahora no necesito visión (aunque sería genial añadirla algún día). Siri de verdad decepciona. Todavía no siento que esté al nivel que quiero
  • Me entusiasma mucho que, en lugar de meter recursos sin límite, se estén haciendo esfuerzos por reducirlos de forma eficiente y hacer modelos más pequeños que puedan ejecutarse
  • Cada vez siento más que el futuro de la robótica serán los modelos VLA (visión-lenguaje-acción). El FSD de Tesla también es un modelo VLA end-to-end, y la codificación visual eficiente parece que será decisiva para la seguridad y la capacidad de respuesta de los robots
  • Como padre de un niño pequeño con el nervio óptico gravemente dañado, vivía con la posibilidad de que pudiera quedarse ciego en cualquier momento, pero gracias a un tratamiento experimental en un ensayo clínico del NIH ha logrado conservar parte de la visión (creo que el apoyo a la ciencia debe continuar). Gracias a los avances en Vision-Language Model, ahora tengo la esperanza de que, incluso si mi hijo pierde la vista, podrá seguir relacionándose con el mundo, ir a la universidad y destacarse en las áreas de ciencia o ingeniería que le gustan. Tiene mucho talento para su edad y me ilusiona su futuro
    • Quiero compartir la experiencia de haber crecido en los años 80 siendo 100% ciego. En ese tiempo la tecnología no estaba ni cerca de lo que hay ahora; las computadoras aparecieron cuando yo tenía unos 12 años, aprendí a teclear en una vieja máquina de escribir y a escribir braille con una pesada máquina metálica. El OCR de esa época era bastante malo, y no fue hasta la preparatoria que pude seguir las clases con una laptop con línea braille. Usaba DOS y tomaba apuntes con Word 5.5. Salvo PC Lingua para aprender latín, casi no había herramientas específicas para estudiar. Al final, solo tenía mis notas electrónicas y mi propia cabeza, y aun así terminé la escuela y hoy tengo un trabajo muy satisfactorio, vivo en mi propia casa, estoy con una novia maravillosa y llevo una vida completamente independiente. De hecho, hasta tuve que apartar a mi mamá a propósito porque siempre intentaba ayudarme. Entre las personas con discapacidad, a la sobreprotección de los padres a veces se le llama “una discapacidad adicional causada por los padres”, y te pediría que no lo tomes de forma emocional sino que pienses en lo que significa. Tu hijo puede ser totalmente independiente a los 18. Cuanto más se retrase a la fuerza ese momento, más difícil será la verdadera independencia y se perderán oportunidades para desarrollar fortaleza interior. Entiendo por qué te da esperanza el avance actual de la tecnología, pero creo que el potencial de tu hijo es mayor de lo que imaginas. Si lo ayudas a descubrir sus propias capacidades, pueden pasar cosas realmente sorprendentes. Y también espero que no dependa solo de dispositivos caros o herramientas de última generación. A mí también me encantan los modelos de visión, pero incluso hoy, cuando salgo de casa, solo llevo mi bastón y mi teléfono. A veces le pregunto a Siri “¿dónde estoy?”, pero al final quien realmente me guía es mi bastón. De hecho, gran parte de la tecnología más nueva está sobrevendida, y quiero subrayar que con el oído y el tacto normales se puede hacer muchísimo más de lo que la gente cree. De corazón, les deseo mucha suerte a tu familia y al crecimiento de tu hijo
  • Siento que con esta tecnología se podría crear una ayuda real para personas con discapacidad visual usando solo un teléfono y una cámara montada en unas gafas. Personas que antes no podían moverse sin asistencia podrían llevar una vida más independiente y desplazarse por sí mismas en lo cotidiano
    • Puede ser útil para distinguir entre pollo a la crema y sopa cremosa de champiñones, pero para temas de movilidad no creo que ayude demasiado frente a las estrategias que ya usan las personas ciegas. Una retroalimentación del tipo “hay un árbol aquí, otro árbol allá, un peatón, otro árbol, una señal” realmente no parece muy útil para desplazarse
  • Me pregunto si esto se podrá convertir/ejecutar en llama.cpp. El hecho de que esté basado en LLaVA me da bastante expectativa