llama.cpp é uma biblioteca de software de código aberto escrita em C++ que realiza inferência em vários modelos de grandes linguagens, como Llama. Junto com a biblioteca, um CLI e um servidor web estão inclusos. Foi desenvolvida junto com o projeto GGML, uma biblioteca tensora de uso geral.
Foi desenvolvida por Georgi Gerganov, formado em Física, no final de 2022 e inspirada pela LibNC
que foi criado por Fabrice Bellard inventor do FFmpeg e do QuickJS.
O diferencial do LLaMA C++
é que não possui depedências e funciona em computadores sem GPU e smartphones. LLaMA.cpp utiliza o formato de arquivo GGUF
que é um formato binário que armazena tensores e metadados em um único arquivo.
Você pode utilizar binários pré-compilados para Windows, macOS, GNU/Linux e FreeBSD.
Basta fazer o download na página de releases. Exemplo para Ubuntu(funciona e serve em qualquer distro, mas precisa ter a lib cURL instalada):
Exemplo para a versão de build:
3615
.
Você também pode compilar do zero, foi assim que eu fiz, pois desta forma há optimizações na construção para seu hardware. Basta clonar o repositório do GitHub e compilar com make:
Você precisará de algum modelo de exemplo, existem modelos para diversos propósitos: Criar conversa para Chat, Gerar código de linguagens de programação,… E você pode procurar e fazer download no site: Hugging Face. Exemplo de download para um Modelo para Chat: Qwen1.5-4B-Chat-GGUF
Para mais informações acesse a aba Files and versions no link: https://huggingface.co/Qwen/Qwen1.5-4B-Chat-GGUF.
Agora basta usar o llama-cli
e rodar com os seguintes parâmetros:
Nesse exemplo, vamos supôr que queremos que a I.A. no responda: O que é C++?(em inglês):
-m
para indicar o caminho do modelo;-p
para fazer a pergunta;-n
é usado para especificar o número de tokens que o modelo deve gerar em resposta a uma entrada. Neste caso, o valor 128
indica que o modelo deve gerar até 128 tokens
.Aguarde, em alguns casos, dependendo do seu hardware, pode demorar.
Eu achei o projeto excelente, principalmente porque você pode usá-lo na sua máquina sem nenhum custo e nem regra de contas free. No entanto, apesar de toda a melhoria significativa, aqueles que possuem somente CPU e com 2 núcleos não terá muita facilidade de uso, sem dizer que essa simples pergunta consumiu quase 15GB da minha RAM.
Mas, isso é porque meu hardware realmente está bem defasado, porém, mesmo assim, rodou!
Existem alguns front-end para o LLaMA C++, incluindo server web e desktop, dentre eles:
Além de diversos outros citados no próprio repositório do llama.cpp, além de várias outras informações que você pode obter por lá!