2 puntos por GN⁺ 2023-11-30 | 1 comentarios | Compartir por WhatsApp

Resumen del proyecto llamafile

  • Desarrollo de un framework que combina llama.cpp y Cosmopolitan Libc para hacer realidad el sueño de que los desarrolladores de IA puedan compilar y ejecutar en cualquier lugar
  • llamafile puede ejecutarse en diversas microarquitecturas y arquitecturas de CPU, y permite ejecutar código con una sola compilación en múltiples sistemas operativos
  • Es posible incluir los pesos del LLM dentro de llamafile para lograr una ejecución rápida mediante mapeo directo en memoria

Uso del binario

  • Se proporcionan binarios de ejemplo de varios modelos descargables a través de Hugging Face
  • El binario de línea de comandos se ejecuta igual que invocar manualmente la función "main" de llama.cpp
  • El binario de servidor ejecuta un servidor web local para ofrecer un chatbot basado en web

Precauciones

  • En macOS, si se usa Apple Silicon, es necesario instalar Xcode
  • En Windows, es necesario cambiar el nombre del archivo a llamafile.exe para poder ejecutarlo
  • Si hay problemas de ejecución en zsh, Python subprocess, Fish, etc., se recomienda usar comandos alternativos
  • Se ofrece un método de solución cuando aparece un problema con binfmt_misc en Linux

Soporte de GPU

  • En Apple Silicon funciona automáticamente al instalar Xcode
  • En Linux, se requiere instalar el compilador y configurar flags para el soporte de GPU Nvidia cuBLAS
  • En Windows, después de la primera ejecución desde el símbolo del sistema nativo MSVC x64, es necesario configurar la ruta de CUDA

Cómo compilar el código fuente

  • Se explica cómo compilar el código fuente de llamafile usando la toolchain cosmocc
  • Se proporcionan ejemplos de generación de código de funciones libc y de ejecución de un servidor HTTP

Documento de zipalign

  • Se explica cómo usar la herramienta zipalign para agregar archivos sin comprimir alineados a un archivo PKZIP
  • Permite una ejecución más rápida que las herramientas tradicionales para archivos ZIP y cumple con los requisitos de alineación de memoria

Detalles técnicos

  • llamafile aprovecha la función mmap() para combinar scripts de shell y pesos, haciendo posible una ejecución rápida
  • Presenta soluciones técnicas para la inclusión de pesos en ZIP, la portabilidad entre microarquitecturas y arquitecturas, y el soporte de GPU

Licencia

  • El proyecto llamafile usa la licencia Apache 2.0, y los cambios realizados a llama.cpp se distribuyen bajo la licencia MIT

Problemas conocidos

  • En Windows de 64 bits existe un límite de tamaño de archivo de 4 GB, por lo que los pesos deben usarse como archivo separado

Opinión de GN⁺

Lo más importante de este texto es el enfoque innovador del proyecto llamafile para que los desarrolladores de IA puedan compilar y ejecutar LLM fácilmente en cualquier lugar. El proyecto ofrece compatibilidad con diversas plataformas y arquitecturas, y mejora mucho la comodidad de uso al permitir la distribución en un solo archivo que incluye los pesos. Este avance técnico tiene el potencial de acelerar aún más la investigación y el desarrollo en IA, por lo que resulta muy interesante para quienes siguen este campo.

1 comentarios

 
GN⁺ 2023-11-30
Opiniones de Hacker News
  • Cómo usar el modelo LLaVA

    • La mejor manera de probar el modelo LLaVA en macOS es usar un modelo que combina texto e imágenes, similar a GPT-4 Vision.
    • Explica paso a paso cómo ejecutarlo en macOS, y se espera que funcione de forma similar en otras plataformas (aunque aún no se ha probado).
      1. Descargar desde Hugging Face el archivo llamafile-server-0.1-llava-v1.5-7b-q4 de 4.26 GB
      2. Dar permisos de ejecución en la terminal
      3. Ejecutar el archivo para iniciar un servidor web en el puerto 8080
      4. Ir en el navegador a http://127.0.0.1:8080/ para subir una imagen y empezar a conversar con el modelo
  • Experiencia compartida desarrollando una app para macOS

    • Junto con la admiración por el excelente trabajo de portabilidad de Justine Tunney / jart, el desarrollador ejecuta llama.cpp en su propia app de macOS con un frontend en SwiftUI.
    • En la primera versión de la app, se enfocó en una sola descarga y en que el flujo de chat no necesitara conexión de red.
    • Se incluía el modelo dentro de la app para que pudiera usarse inmediatamente después de descargarla, pero surgió el problema de que los usuarios tenían que volver a descargar 3 GB cada vez que se distribuía una actualización de la UI.
    • Tras las quejas de los usuarios, separó la descarga del modelo base y la UI, de modo que en las actualizaciones de la app ahora solo se distribuyen unos 5 MB.
    • Cree que quienes usen esta herramienta enfrentarán un problema parecido cuando quieran actualizar llama.cpp, y se pregunta si habrá casos en los que esto no sea importante.
  • Recomendación de una publicación relacionada de Simon Willison

    • Se comparte un enlace recomendado a una publicación relacionada de Simon Willison.
  • Enlaces relacionados compartidos

    • Se comparten enlaces a la presentación de llamafile por parte de Mozilla y a un tuit de Justine Tunney.
  • Propuesta del nombre Llaminate

    • Se propone el nombre "Llaminate" para la tarea general de envolver modelos compatibles con Llama en un blob listo para usar.
  • Admiración por el soporte de CUDA usando Cosmopolitan

    • Hay admiración porque Cosmopolitan añadió este mes soporte para enlazado dinámico con el fin de habilitar GPU.
    • Resulta interesante la posibilidad de distribuir apps con CUDA sin dependencias adicionales aparte del driver de Nvidia, aunque sí se requiere instalar el CUDA Developer Toolkit.
  • Mención del límite de tamaño de ejecutables en Windows

    • Se comparte la experiencia de que un ejecutable de 4 GB funciona bien en un sistema Windows 10 de 64 bits.
  • Se comparte cómo experimentar con varios modelos en llama.cpp

    • Se comparte, junto con código, cómo clonar llama.cpp desde GitHub, descargar el modelo necesario y ejecutar el servidor.
  • Se señala la limitación de un binario que solo funciona con un único modelo y un único conjunto de pesos

    • Se expresa una opinión sobre la limitación de un binario que solo ejecuta un solo modelo y un solo conjunto de pesos.
  • Mención de la sorprendente velocidad de Justine para crear proyectos increíbles

    • Se menciona que Justine está creando proyectos increíbles a una velocidad sorprendente.