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

Dicas de Engenharia de Prompt

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

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.

Playstore

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.

  1. Baixei a ultíma versão estável e fiz a instalação via sideload no meu dispositivo:

GitHub
GitHub

  1. Executei a aplicação e apareceu a tela inicial do “Termux”:

Termux

  1. Para permitir que o termux tenha acesso ao armazenamento do dispositivo, utilizei o comando abaixo:
termux-setup-storage

armazenamento
armazenamento
armazenamento

  1. Agora vou atualizar os repositórios de aplicativos e atualizar os aplicativos atuais:
termux-setup-storage

atualizar

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.

atualizar

Durante o processo ele pode pedir o que fazer sobre as source-list (fica a seu critério), eu mantive o default.

atualizar

Lembrando que é possível instalar vários aplicativos para o terminal, utilizando o pkg, como, por exemplo, o Neofetch:

pkg install neofetch

atualizar

atualizar

Feito isto podemos seguir em frente e seguir o procedimento descrito em 2.

  1. Instalaremos o git, cmake e a linguagem go para poder instalar o Ollama em nosso dispositivo:
pkg install git cmake golang

modelos

Lembrando que é uma instalação grande (aqui foram 801 megas):

modelos

Após efetuar a instalação ele responde às versões instaladas dos aplicativos:

modelos

  1. Agora podemos clonar o repositório e será criada a pasta Ollama:
git clone --depth 1 https://github.com/ollama/ollama.git

modelos

modelos

Devemos entrar nesta pasta para poder construir o Ollama:

cd ollama

modelos

  1. Agora construiremos o Ollama da fonte, lembrando que este processo será demorado.
go generate ./...

modelos

go build .

modelos

Após a instalação do Ollama, agora podemos instanciar o seu servidor.

  1. Instanciando o servidor do Ollama:
./ollama serve &

modelos

Observe que agora tem um novo aplicativo chamado Ollama na pasta ollama:

modelos

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
  1. Agora instalemos o llama3.2:1b
./ollama run llama3.2:1b

modelos

Após instalação (baixará localmente o modelo, neste caso foram mais de 1 GB), o prompt estará disponível:

modelos

Você pode começar a fazer seus testes:

modelos

modelos

Caso você queira parar o prompt ou sair do mesmo, você pode utilizar o comando CTRL+d

modelos

  1. 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

modelos

Já instalado, é possível listar os 2 modelos LLMs baixados:

modelos

  1. 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

modelos

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:

modelos

Para sair do Termux você pode digitar exit.

exit

Para executar novamente após sair, você pode entrar novamente no aplicativo no seu celular:

modelos

E digitar os comandos desejados:

modelos

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

modelos

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!

Leonardo Grando
Leonardo Grando
Technology Ph.D. Candidate

My research interests include Agent-Based Simulation, Artificial Intelligence, Machine Learning.