2 pontos por GN⁺ 2023-11-30 | 1 comentários | Compartilhar no WhatsApp

Resumo do projeto llamafile

  • Desenvolvimento de um framework que combina llama.cpp e Cosmopolitan Libc para realizar o sonho de desenvolvedores de IA de poder compilar e executar em qualquer lugar
  • O llamafile pode ser executado em diversas microarquiteturas e arquiteturas de CPU, e permite executar código com uma única build em vários sistemas operacionais
  • É possível incluir os pesos do LLM dentro do próprio llamafile e obter execução rápida por meio de mapeamento direto de memória

Como usar os binários

  • Fornece binários de exemplo de vários modelos que podem ser baixados pelo Hugging Face
  • O binário de linha de comando é executado como se estivesse chamando manualmente a função "main" do llama.cpp
  • O binário de servidor executa um servidor web local para oferecer um chatbot baseado na web

Observações

  • No macOS, é necessário instalar o Xcode ao usar Apple Silicon
  • No Windows, é preciso renomear o arquivo para llamafile.exe para conseguir executá-lo
  • Se houver problemas de execução em zsh, Python subprocess, Fish etc., recomenda-se usar comandos alternativos
  • No Linux, são fornecidas formas de resolver problemas com binfmt_misc

Suporte a GPU

  • Em Apple Silicon, funciona automaticamente com o Xcode instalado
  • No Linux, é necessário instalar um compilador e definir flags para suporte a GPU Nvidia cuBLAS
  • No Windows, após a primeira execução pelo prompt de comando nativo x64 do MSVC, é necessário configurar o caminho do CUDA

Como compilar o código-fonte

  • Orientações sobre como compilar o código-fonte do llamafile usando o toolchain cosmocc
  • Exemplos de geração de código de funções libc e execução de servidor HTTP

Documentação do zipalign

  • Explica como usar a ferramenta zipalign para adicionar arquivos não compactados alinhados a um arquivo PKZIP
  • Oferece execução mais rápida do que ferramentas de arquivo ZIP existentes e atende aos requisitos de alinhamento de memória

Detalhes técnicos

  • O llamafile utiliza a funcionalidade mmap() para permitir execução rápida ao combinar script de shell e pesos
  • Apresenta soluções técnicas para inclusão de pesos em ZIP, portabilidade entre microarquiteturas e arquiteturas, e suporte a GPU

Licença

  • O projeto llamafile usa a licença Apache 2.0, e as alterações em llama.cpp seguem a licença MIT

Problemas conhecidos

  • No Windows 64 bits, há um limite de tamanho de arquivo de 4 GB, então os pesos precisam ser usados em arquivo separado

Opinião do GN⁺

O ponto mais importante deste texto é a abordagem inovadora do projeto llamafile para permitir que desenvolvedores de IA compilem e executem LLMs com facilidade em qualquer lugar. O projeto oferece compatibilidade com diversas plataformas e arquiteturas e melhora bastante a praticidade ao permitir distribuição em um único arquivo com os pesos incluídos. Esses avanços técnicos têm potencial para acelerar ainda mais a pesquisa e o desenvolvimento em IA, tornando o tema bastante interessante para quem acompanha essa área.

1 comentários

 
GN⁺ 2023-11-30
Comentários do Hacker News
  • Como usar o modelo LLaVA

    • A melhor forma de testar o modelo LLaVA no macOS é usar um modelo que combina texto e imagem, semelhante ao GPT-4 Vision.
    • Explica passo a passo como executá-lo no macOS e espera-se que funcione de forma parecida em outras plataformas também, embora isso ainda não tenha sido testado.
      1. Baixe do Hugging Face o arquivo llamafile-server-0.1-llava-v1.5-7b-q4, de 4,26 GB
      2. Conceda permissão de execução no terminal
      3. Execute o arquivo para iniciar um servidor web na porta 8080
      4. No navegador, acesse http://127.0.0.1:8080/ para enviar uma imagem e começar a conversar com o modelo
  • Relato de experiência com desenvolvimento de app para macOS

    • Junto com a admiração pelo excelente trabalho de portabilidade de Justine Tunney / jart, o desenvolvedor executa o llama.cpp em seu app para macOS com um frontend em SwiftUI.
    • Na primeira versão do app, o foco foi em um único download e em não depender de fluxo de chat nem de conexão de rede.
    • O modelo era fornecido em bundle com o app, então podia ser usado imediatamente após o download, mas surgiu o problema de os usuários precisarem baixar novamente 3 GB toda vez que uma atualização de UI era distribuída.
    • Após reclamações dos usuários, o download do modelo padrão foi separado da UI, de modo que nas atualizações do app passou a ser necessário distribuir apenas cerca de 5 MB.
    • Acredita-se que quem usar essa ferramenta poderá enfrentar um problema semelhante ao querer atualizar o llama.cpp, e fica a dúvida se há casos em que isso não seria importante.
  • Recomendação de post relacionado de Simon Willison

    • É fornecido um link recomendado para um post relacionado de Simon Willison.
  • Compartilhamento de links relacionados

    • São compartilhados links para a apresentação do llamafile pela Mozilla e para um tweet de Justine Tunney.
  • Sugestão do nome Llaminate

    • É sugerido o nome "Llaminate" para a tarefa genérica de empacotar modelos compatíveis com Llama em um blob pronto para uso.
  • Admiração pelo suporte a CUDA com Cosmopolitan

    • Há admiração pelo fato de o Cosmopolitan ter adicionado neste mês suporte a linking dinâmico para ativar GPU.
    • Embora seja necessário instalar o CUDA Developer Toolkit, é interessante a possibilidade de distribuir apps CUDA sem dependências adicionais além do driver da Nvidia.
  • Menção ao limite de tamanho de executável no Windows

    • É compartilhada a experiência de que um executável de 4 GB funciona bem em um sistema Windows 10 de 64 bits.
  • Compartilhamento de método para testar vários modelos no llama.cpp

    • É compartilhado, junto com código, um método para clonar o llama.cpp no GitHub, baixar o modelo necessário e executar o servidor.
  • Apontamento sobre a limitação de um binário que funciona apenas com um único modelo e conjunto de pesos

    • É apresentada a opinião de que um binário que executa apenas um modelo e um único conjunto de pesos é limitante.
  • Menção à velocidade surpreendente com que Justine cria projetos incríveis

    • Há um comentário sobre como Justine está criando projetos incríveis em uma velocidade surpreendente.