Llamafile - permite implantar e executar LLMs em um único arquivo
(github.com/Mozilla-Ocho)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.exepara 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
Comentários do Hacker News
Como usar o modelo LLaVA
llamafile-server-0.1-llava-v1.5-7b-q4, de 4,26 GBhttp://127.0.0.1:8080/para enviar uma imagem e começar a conversar com o modeloRelato de experiência com desenvolvimento de app para macOS
Recomendação de post relacionado de Simon Willison
Compartilhamento de links relacionados
Sugestão do nome Llaminate
Admiração pelo suporte a CUDA com Cosmopolitan
Menção ao limite de tamanho de executável no Windows
Compartilhamento de método para testar vários modelos no llama.cpp
Apontamento sobre a limitação de um binário que funciona apenas com um único modelo e conjunto de pesos
Menção à velocidade surpreendente com que Justine cria projetos incríveis