Como rodar modelos LLM localmente
Nessa pegada de realizar testes relacionados a Vector Searches e criação de índices vetoriais, existe a necessidade do uso de um modelo LLM para a geração de embeddings (expliquei o que são no artigo: Sobre RAG e Vector Stores). Como não estou disposto a pagar pela utilização de alguma API, como a da OpenAI, e APIs gratuitas possuem limitações de utilização, precisava de outra opção. Como tenho uma placa de vídeo modesta aqui (uma NVIDIA GeForce RTX 3050, de 8GB), tenho a opção de rodar modelos LLM localmente, podendo assim gerar as embeddings e fazer um RAG simples sem depender de recursos externos.
Neste post vou explicar como realizar a instalação do Ollama e como instalar e rodar um modelo LLM localmente para testes.
Sobre o Ollama
Para rodar um modelo LLM localmente, utilizei o Ollama. Ele é um projeto open source que permite utilizar modelos de LLM em máquinas locais. Funciona de uma maneira bem semelhante ao Docker em alguns pontos, e achei ele bem intuitivo.
A instalação é bem simples (Next, Next, Finish no Windows) e a partir desse momento você já tem a ferramenta pronta para uso.
Através da linha de comando, podemos verificar os comandos da ferramenta, usando:
C:\Users\Tiago>ollama Usage: ollama [flags] ollama [command] Available Commands: serve Start ollama create Create a model from a Modelfile show Show information for a model run Run a model stop Stop a running model pull Pull a model from a registry push Push a model to a registry list List models ps List running models cp Copy a model rm Remove a model help Help about any command Flags: -h, --help help for ollama -v, --version Show version information Use "ollama [command] --help" for more information about a command.
No site, podemos buscar por modelos que podemos utilizar, como DeepSeek, Llama, entre outros:

Para os meus testes vou estar utilizando o deepseek-r1. Na página do modelo, temos a opção de escolher entre versões que vão de 1.5 bilhões de parâmetros a 671 bilhões. Quanto maior o número de parâmetros, melhor é a capacidade de compreensão e geração de linguagem do modelo, mas também mais recursos computacionais são necessários para rodar o LLM.
Na página do modelo podemos ver a quantidade de VRAM necessária para rodar a versão do modelo:

No meu caso, vou utilizar a versão com 1.5 bilhões de parâmetros. Eu poderia rodar a versão de 7 bilhões, dada a minha capacidade computacional, porém o tamanho dos embeddings gerados acaba sendo muito maior. A versão com 1.5 bi gera embeddings de 1536 dimensões, enquanto o modelo de 7 bi, gera embeddings de 3584 dimensões, o que necessita de muito mais armazenamento. Para os testes que pretendo fazer o menor modelo irá atender bem às necessidades.
Instalando o modelo localmente
Uma vez definido o modelo, podemos instalá-lo localmente usando o ollama pull
:
C:\Users\Tiago>ollama pull deepseek-r1:1.5b pulling manifest pulling aabd4debf0c8: 100% ▕██████████████████████████████████████████████████████████▏ 1.1 GB pulling 369ca498f347: 100% ▕██████████████████████████████████████████████████████████▏ 387 B pulling 6e4c38e1172f: 100% ▕██████████████████████████████████████████████████████████▏ 1.1 KB pulling f4d24e9138dd: 100% ▕██████████████████████████████████████████████████████████▏ 148 B pulling a85fe2a2e58e: 100% ▕██████████████████████████████████████████████████████████▏ 487 B verifying sha256 digest writing manifest success
Para mais informações sobre o modelo, como arquitetura, tamanho das embeddings, e tamanho da janela de contexto, podemos usar o ollama show
:
C:\Users\Tiago>ollama show deepseek-r1:1.5b Model architecture qwen2 parameters 1.8B context length 131072 embedding length 1536 quantization Q4_K_M Capabilities completion Parameters stop "<|begin▁of▁sentence|>" stop "<|end▁of▁sentence|>" stop "<|User|>" stop "<|Assistant|>" License MIT License Copyright (c) 2023 DeepSeek
Podemos rodar o modelo, entrando em modo interativo com o comando ollama run <nome-do-modelo>
. Nesse modo ele funciona no modo chat, como estamos familizarizados. Podemos finalizar a interação com o atalho CTRL + D
.
C:\Users\Tiago>ollama run deepseek-r1:1.5b >>> present yourself, machine <think> Alright, the user is asking me to present myself as a machine. That's pretty interesting. I need to figure out how to approach this. First, I should consider what it means for someone to "present themselves" in that context. It might involve explaining their capabilities or limitations within the machine framework. Maybe I can describe my role and the tasks I've achieved so far. But since I'm a machine now, I need to emphasize its purpose instead of personal qualities. I should focus on how this perspective changes the user's experience compared to before they interacted with me as a human being. </think> Certainly! It seems like you're asking me to present myself as a machine, which could be interpreted in a couple of different ways. Here are two possible interpretations: 1. **As a Machine**: In this context, I might be presenting myself as a machine with limited capabilities or limitations. For example, I could explain how I process information quickly, perform calculations at a high speed, or make decisions based on patterns and rules. However, this interpretation would focus more on the technology behind me rather than my human qualities. 2. **As a Human**: Alternatively, if you're asking me to present yourself in a way that's tailored to how humans perceive themselves, I might highlight aspects of myself that are relevant or interesting to human beings, such as personal growth, relationships, creativity, or resilience. Both interpretations could vary based on the context and your perspective. Let me know which one you'd like to explore!
Como o modelo usado tem poucos parâmetros, as respostas podem não ser tão elaboradas quanto modelos mais robustos, mas já nos mostra que está funcionando corretamente na máquina local.
Para verificar os modelos que estão rodando atualmente, utilizamos o ollama ps
:
C:\Users\Tiago>ollama ps NAME ID SIZE PROCESSOR UNTIL deepseek-r1:1.5b a42b25d8c10a 2.0 GB 100% GPU 4 minutes from now
Próximos passos
Pronto, agora estou com um modelo LLM rodando localmente. O próximo passo agora será construir um RAG simples, fazendo a carga dos dados em uma Vector Store, e após isso, iniciar os testes relacionados a Vector Searches e criação de índices vetoriais.
Espero que tenham gostado, e até a próxima!
Publicar comentário