Instalação e Uso de LLMs Offline no Android pt.2
Outros posts sobre o tema em:
Como Criar um Pipeline em Python para Testar Modelos no Hugging Face
Parte 1 - Instalando o Ollama no Linux
Parte 2 - Instalando o Ollama no Windows
Parte 3 - Instalando o Ollama no Android pt.1
Parte 5 - Quatro Maneiras de Usar LLMs Offline no Seu Computador
Parte 6 - RAG Offline: Usando LM Studio e Ollama para Processar Documentos
Importante: Nunca utilizar LLMs como oráculos ou como fonte de informações, já encontrei vários erros tanto em modelos online ou offline. Usar apenas como suporte para suas atividades.
Após o teste com o aplicativo LM Playground descobri que é possível rodar LLMs locais como descrito em 1 e 2 no Android utilizando o Termux que é um emulador de terminal Android e aplicativo de ambiente Linux que funciona diretamente sem necessidade de root ou configuração. Ao instalar ele vem com um sistema base mínimo, mas você pode instalar adicionais pelo gerenciador de pacotes APT. De forma resumida, você tem uma instalação Linux em seu celular.
O Termux voltou a estar disponivel na PlayStore, mas eu não tive sucesso ao tentar executar o Ollama na versão instalada por lá, como é uma versão experimental pode ser que futuramente funcione.
Também é possível instalar o Termux via F-Droid ou pelo próprio repositório deles no GitHub. Acabei escolhendo a instalar via GitHub. Não detalharei o processo de instalação, por depender da execução de sideloading e cada marca/aparelho/versão tem seu procedimento. Lembrando que instalar aplicativos fora da Google Play não é um procedimento oficial, então faça por sua conta e risco e sugiro apenas fazer se souber o que você está fazendo.
Para o meu caso, onde estou utilizando um dispositivo Samsung A15:
No vídeo eu mostro o funcionamento dele no meu dispositivo para dois modelos LLMs.
- Baixei a ultíma versão estável e fiz a instalação via sideload no meu dispositivo:
- Executei a aplicação e apareceu a tela inicial do “Termux”:
- Para permitir que o termux tenha acesso ao armazenamento do dispositivo, utilizei o comando abaixo:
termux-setup-storage
- Agora vou atualizar os repositórios de aplicativos e atualizar os aplicativos atuais:
termux-setup-storage
Aqui mostra o que será atualizado e o que sera instalado e pede se você deseja continuar (y-sim ou n-não), eu digitei y.
Durante o processo ele pode pedir o que fazer sobre as source-list (fica a seu critério), eu mantive o default.
Lembrando que é possível instalar vários aplicativos para o terminal, utilizando o pkg, como, por exemplo, o Neofetch:
pkg install neofetch
Feito isto podemos seguir em frente e seguir o procedimento descrito em 2.
- Instalaremos o git, cmake e a linguagem go para poder instalar o Ollama em nosso dispositivo:
pkg install git cmake golang
Lembrando que é uma instalação grande (aqui foram 801 megas):
Após efetuar a instalação ele responde às versões instaladas dos aplicativos:
- Agora podemos clonar o repositório e será criada a pasta Ollama:
git clone --depth 1 https://github.com/ollama/ollama.git
Devemos entrar nesta pasta para poder construir o Ollama:
cd ollama
- Agora construiremos o Ollama da fonte, lembrando que este processo será demorado.
go generate ./...
go build .
Após a instalação do Ollama, agora podemos instanciar o seu servidor.
- Instanciando o servidor do Ollama:
./ollama serve &
Observe que agora tem um novo aplicativo chamado Ollama na pasta ollama:
Agora você pode utilizar os comandos do Ollama para rodar e gerenciar seus modelos de LLMs locais, como, por exemplo, listar os modelos instalados como:
./ollama ls
- Agora instalemos o llama3.2:1b
./ollama run llama3.2:1b
Após instalação (baixará localmente o modelo, neste caso foram mais de 1 GB), o prompt estará disponível:
Você pode começar a fazer seus testes:
Caso você queira parar o prompt ou sair do mesmo, você pode utilizar o comando CTRL+d
- Fora do Ollama, agora testarei a instalação de outros modelos como o qwen2.5:0.5b, mais leve que o anterior.
./ollama run qwen2.5:0.5b
Já instalado, é possível listar os 2 modelos LLMs baixados:
- Agora vamos continuar o script, para remover a pasta de instalação do Go e ganhar espaço:
chmod -R 700 ~go
rm -r ~/go
E como o Termux não possui o .local/bin em seu PATH (embora você possa adicioná-lo se preferir). Se você quiser mover o binário ollama para a pasta bin, você pode fazer o seguinte.
cp ollama/ollama /data/data/com.termux/files/usr/bin/
E agora posso rodar o Ollama em qualquer local do Termux:
Para sair do Termux você pode digitar exit.
exit
Para executar novamente após sair, você pode entrar novamente no aplicativo no seu celular:
E digitar os comandos desejados:
Pode acontecer que seja necessário reiniciar o servidor Ollama e ai, sim, poder aplicar os comandos para utilizar o LLM novamente (O vídeo acima mostrou este caso):
./ollama serve &
Caso você queira obter dados de desempenho das respostas do prompt, você pode incluir –verbose da chamada do run:
ollama run qwen2.5:0.5b --verbose
Desta forma você pode realizar seus testes com o Ollama no seu Android e instalar outros modelos LLMs que não estão disponíveis no LM Playground.
Referências:
[1] “Ollama on Termux ($3682973) · Snippets · GitLab”. GitLab, 17 de junho de 2024, https://gitlab.com/-/snippets/3682973.
[2] Graph, Research. “How to Run Llama 3.2 on Android Phone”. Medium, 30 de setembro de 2024, https://medium.com/@researchgraph/how-to-run-llama-3-2-on-android-phone-64be7783c89f.
Sucesso a todos!