VXSkull - Codex Intel Group

Codex Channel: https://t.me/CodexIntelChannel
Nesse artigo irei ensinar de forma objetiva como rodar modelos de linguagem de forma local em dispositivos Android através do Termux (proot-distro), o utilitário que irá ser utilizado é o Ollama (ollama.com).
Requisitos:
- Termux com proot-distro instalado.
- Pelo menos 6GB de RAM.
- Espaço disponível para os modelos de linguagem (variado).
- Conexão estável com a internet para baixar os modelos.
A performance irá variar da quantidade de RAM disponível e CPU do celular.
Importante: Se o seu dispositivo é Android 12 para cima, veja esse link e depois volte para ler o artigo https://docs.andronix.app/android-12/andronix-on-android-12-and-beyond.
Primeiro instale o Termux no seu celular através desses links:
Github: https://github.com/termux/termux-app/releases (prefira as versões estáveis)
F-Droid: https://f-droid.org/en/packages/com.termux/
Não use a Google Play pois o aplicativo de lá está desatualizado e não funciona conforme o esperado.
Após a instalação aguarde o aplicativo terminar de configurar, quando o terminal estiver pronto para uso digite os comandos abaixo:
pkg update && pkg upgrade -y
Esses comandos atualizam os repositórios dos pacotes e os pacotes atuais, aguarde pois essa primeira etapa pode demorar.
Logo após digite:
pkg install proot-distro -y
Isso irá instalar o utilitário proot-distro, ele permitirá o uso de distros linux populares através do Termux sem a necessidade de acesso root no celular.
Após isso será preciso instalar uma distro para as seguintes tarefas, eu escolhi Ubuntu mas você pode usar outra distro se preferir (usando proot-distro list para ver as distros disponíveis):
proot-distro install ubuntu
Após o rootfs da distro ter sido baixado e instalado, acesse a distro com:
proot-distro login ubuntu
Após acessar a distro linux, atualize os pacotes pelo gerenciador de pacotes, no caso do Ubuntu é o APT:
apt update && apt upgrade -y
Instale os pacotes necessários para instalação do Ollama:
apt install curl
Em seguida instale Ollama:
curl -fsSL https://ollama.com/install.sh | sh
Ao termino da instalação, é necessário iniciar o servidor do Ollama:
ollama serve 1>&- 2>&- &
"1>&- 2>&- &" serve para forçar a omissão da saída padrão e de erro. Devido o proot-distro não possuir compatibilidade com um sistema de init como systemd essa é a a forma de executar o servidor dele.
No Ollama.com pode ser procurado diversos modelos mas no contexto de um celular android é recomendado um modelo menor, com menor quantidade de parâmetros devido ao alto uso de RAM e CPU.
Ao executar o modelo desejado, certifique-se de que o celular possui memória RAM disponível para uso, eu recomendo pelo menos 3GB.
Um dos modelos mais leves para ser executado é o Qwen 2.5 de aproximadamente meio bilhão de parâmetros (qwen2.5:0.5b), pesando aproximadamente 400MB, ele possui uma variante fine-tuned para código um pouco maior (qwen2.5-coder:0.5b), Qwen é um modelo projetado pelo Alibaba, vamos baixar no Ollama:
ollama pull qwen2.5:0.5b
Para executar:
ollama run qwen2.5:0.5b.

Para sair digite "/exit" ou "/bye".
Para interromper a geração atual pressione Ctrl+C.
Para listas os modelos locais digite:
ollama list

Para remover modelos locais digite:
ollama rm <nome do modelo>
Eu testei em um celular com 8GB de memória RAM com um processador Helio G99 e consegui rodar modelos de até 2 bilhões de parâmetros, quanto maior o modelo maior a exigência de memória RAM e consequentemente menor a velocidade de geração.
Algumas observações:
No campo de prompt do Ollama é possivel digitar alguns comandos como /exit e /bye porém existem outros comandos úteis:
/show -> exibe informações específicas sobre aquele modelo ou sessão:
/show info -> exibe informações sobre o modelo.

/show system -> exibe o system do LLM, esse texto é como uma pré instrução para o LLM interpretar como deve agir de forma primária, na maioria dos modelos é configurado para que LLM saiba que é um assistente virtual.
/show template -> exibe o template da LLM.
/set -> define variáveis de sessões úteis, alguns exemplos abaixo:
/set verbose -> ao final de cada resposta do LLM a um prompt será descrito informações importantes sobre aquela requisição, como o modelo, quantidade de tokens por segundo e outros.

/set quiet -> opção padrão, desativa o verbose.
/set system <string> -> muda o system do LLM.

/clear -> limpa o contexto atual da conversa.
Demais opções ainda não foram exploradas até a data da criação desse artigo, sinta-se livre para explorar na documentação.
O system do LLM deve ser escrito na língua do system padrão do LLM, geralmente inglês para o melhor entendimento do LLM.
Os prompts feitos em uma língua diferente da língua primária (geralmente inglês) usada para o treinamento do LLM pode ter resultados de menor qualidade.
O Ollama permite a construção de modelos personalizados baseado em modelos existentes com systems e templates próprios.
Entre no canal do Codex: https://t.me/CodexIntelChannel