Programa
Recentemente, escrevi um artigo sobre como executar LLMs com Python e Torchchat. O Torchchat é uma estrutura flexível projetada para executar LLMs de forma eficiente em várias plataformas de hardware. A realização de um LLM localmente oferece vários benefícios, inclusive:
- Acesso off-line: Como o modelo está sendo executado em nosso dispositivo, não precisamos estar conectados à Internet para usá-lo.
- Privacidade: Como nós mesmos executamos o modelo, os prompts e os dados que inserimos permanecem privados.
- Custo: Podemos executar o modelo gratuitamente.
Após o recente lançamento do Llama 3.2decidi estender meu artigo anterior para ensinar como implantá-lo em nossos telefones celulares, com foco no Android.
Aqui está uma visão geral de alto nível do que precisamos fazer:
- Faça o download dos arquivos do modelo, que estão disponíveis gratuitamente porque o modelo é de código aberto.
- Gere os arquivos necessários para executar o modelo em um dispositivo móvel.
- Configure um aplicativo de bate-papo do Android que executa o modelo.
O Torchchat fornece uma resposta para todas essas etapas. Ele tem comandos para fazer o download do modelo e gerar os arquivos necessários para executá-lo. Além disso, ele vem com um aplicativo de demonstração de bate-papo para Android, portanto, você não precisa criar um.
Desenvolver aplicativos de IA
Baixando o Torchchat
A primeira etapa é clonar o repositório repositório do Torchchat usando o Git:
git clone git@github.com:pytorch/torchchat.git
Você também pode fazer isso sem o Git, baixando-o usando o botão de download no GitHub:
Observação importante: Depois de clonar (ou fazer download) do repositório, uma pasta chamada torchchat
ficará disponível em nosso computador. Todos os comandos mencionados neste artigo devem ser executados a partir dessa pasta.
Instalação do Torchchat
Vamos supor que você já tenha instalado o Python e o Anaconda. Se não estiverem, consulte estes dois tutoriais: Como instalar o Anaconda no Windows e como instalar o Anaconda no Mac OS X.
Como alternativa, siga as etapas no repositório do Torchchat, que usa um ambiente virtual em vez do Anaconda.
Começamos criando um ambiente do Anaconda usando o comando:
conda create -yn llama python=3.10.0
Isso cria um ambiente chamado llama
que usa a versão 3.10
do Python. A opção -yn
combina -y
e -n
:
- A opção
-y
permite que o comando prossiga sem pedir confirmação antes de criar o ambiente. - A opção
-n
especifica o nome do ambiente, que, nesse caso, éllama
. Depois de criar o ambiente, nós o ativamos e instalamos as dependências.
Para ativá-lo, usamos o seguinte comando:
conda activate llama
Para instalar as dependências necessárias, utilizamos o script de instalação fornecido pelo TorchChat:
./install/install_requirements.sh
Baixando o modelo Llama 3.2 1B
Neste tutorial, usaremos o modelo Llama 3.2 1B, um modelo de um bilhão de parâmetros. Você pode fazer o download usando o comando:
python torchchat.py download llama3.2-1b
O processo é o mesmo para fazer experiências com outros modelos -precisamos substituir llama3.2-1b
pelo alias do modelo desejado. É importante que você selecione apenas modelos marcados como compatíveis com dispositivos móveis.
O Torchchat utiliza o Hugging Face para o gerenciamento de modelos. Consequentemente, o download de um modelo requer uma conta Hugging Face. Para obter um guia completo sobre como criar uma conta e fazer login no terminal, consulte a seção "Download de um modelo" deste tutorial do Torchchat.
Como alternativa, o modelo também pode ser baixado do site oficial da Llama. No entanto, usar o Torchchat é mais conveniente, pois facilita a exportação dos arquivos de modelo para implantação móvel.
Exportando o modelo
Para implantar em um dispositivo móvel, primeiro exportamos o modelo para gerar o artefato.pte
, que é um arquivo usado pelo Executorch. O Executorch é o mecanismo que o Torchchat usa para executar o LLM em um dispositivo móvel.
Para gerar o arquivo PTE, primeiro você deve instalar o Executorch. Para fazer isso, execute os seguintes comandos:
export TORCHCHAT_ROOT=${PWD}
./torchchat/utils/scripts/install_et.sh
Após a conclusão da instalação, podemos gerar o arquivo PTE usando o comando:
python torchchat.py export llama3.2-1b --quantize torchchat/quant_config/mobile.json --output-pte-path llama3_2-1b.pte
Esse comando também quantizará o modelo, reduzindo seu tamanho e aumentando a velocidade de inferência. Usamos a configuração padrão do Torchchat em torchchat/quant_config/mobile.json
.
Quando esse processo for concluído, será criado um arquivo chamado llama3_2-1b.pte
na pasta torchchat
.
Preparando o aplicativo móvel
A Torchchat oferece um aplicativo de demonstração para Android que nos permite operar o Llama diretamente em nossos smartphones. Esse projeto de demonstração pode ser encontrado na pasta Torchchat que você baixou. Seu caminho relativo é torchchat/edge/android/torchchat
. Observe que a primeira referência torchchat
no caminho refere-se a uma pasta dentro do repositório, não à pasta raiz do repositório.
Faça o download e configure a biblioteca Java
- Faça o download do arquivo
.aar
fornecido pelo Torchchat. Ele contém a biblioteca Java e a biblioteca JNI correspondente, para que você possa criar e executar o aplicativo. - Navegue até a pasta do diretório do aplicativo:
torchchat/edge/android/torchchat/app/
- Crie um diretório chamado
libs
(se ainda não existir um) - Renomeie o arquivo de download para
executorch.aar
e cole-o na pastalibs
.
Carregar o projeto Android no Android Studio
Faça o download e instale o Android Studio em site oficial. Quando a instalação estiver concluída, abra o projeto:
O projeto de demonstração está localizado em torchchat/edge/android/torchchat
.
Quando abrimos o projeto, esta janela nos pergunta se confiamos no código:
Aqui, escolha a opção "Trust Project" (Confiar no projeto).
Depois de abrir o projeto, o Android Studio precisará de algum tempo para carregar a configuração e concluir a configuração inicial. É importante que você espere até que esse processo seja concluído. Você pode monitorar o status no canto inferior direito da janela. Quando estiver pronto, o botão de execução na parte superior deverá ficar verde:
Configuração do modo de desenvolvedor no Android
Para poder executar o aplicativo no telefone por meio do Android Studio, precisamos ativar o modo de desenvolvedor em nosso dispositivo. Veja como podemos fazer isso:
- Vá para "Configurações"
- Selecione "About device" (Sobre o dispositivo) ou "About phone" (Sobre o telefone)
- Abra "Informações sobre o software"
- Encontre o "Número de compilação" e pressione-o sete vezes
É isso aí! Agora, podemos usar nosso dispositivo para executar o aplicativo a partir do Android Studio. Quando fizermos isso, o aplicativo permanecerá em nosso telefone, o que nos permitirá executá-lo mesmo sem uma conexão com o computador.
Instalando o adb
O aplicativo precisa que os arquivos de modelo estejam localizados em uma pasta específica no telefone. Para enviar esses arquivos para o telefone, usamos o adb
(Android Debug Bridge). Você pode instalá-lo usando o Android Studio seguindo estas etapas:
- Navegue até as configurações e comece a digitar "Android SDK" na barra de pesquisa
- Localize o menu chamado "Android SDK" e clique nele
- Selecione a opção "Android SDK command line tools (latest)" (Ferramentas de linha de comando do Android SDK (mais recentes))
- Clique em "Apply" (Aplicar) para instalá-lo
Observe que, na parte superior da janela, o Android Studio mostra a localização do sdk do Android:
Copiamos esse caminho e executamos o seguinte comando (substituindo abaixo pelo caminho que acabou de ser copiado):
export PATH=$PATH:<android_skd_location>/platform-tools/
Para confirmar que o adb
foi instalado com êxito, use o comando adb --version
, que exibirá a versão do adb.
Configurar o aplicativo no telefone
Conecte o telefone ao computador com um cabo. O nome do dispositivo aparecerá na lista de dispositivos ao lado do botão Executar:
Antes de executar o aplicativo no telefone, agora usamos o site adb
para copiar os arquivos de modelo necessários para o nosso dispositivo.
- Encontre o ID do dispositivo usando o comando
adb devices
. Pode haver várias linhas na saída. Localize aquele com o formulário com o dispositivo forme copie o código do dispositivo.
- Crie o diretório para armazenar os arquivos de modelo usando
adb -s shell mkdir -p /data/local/tmp/llama
. - Copie o arquivo
.pte
localizado na pasta torchchat comadb -s push llama3_2-1b.pte /data/local/tmp/llama
. - Localize o arquivo do tokenizador de modelo usando
python torchchat.py where llama3.2-1b
. Você verá várias linhas, mas o que nos interessa é o caminho mostrado na última linha.
- Copie o arquivo do tokenizador para o dispositivo usando
adb -s push /tokenizer.model /data/local/tmp/llama
, substituindopelo caminho obtido na etapa anterior.
Depois de concluir essas etapas, os arquivos do modelo deverão estar no telefone e prontos para uso. Você pode verificar isso listando todos os arquivos localizados na pasta do dispositivo que acabamos de criar:
adb -s <device_code> shell ls
O resultado deve conter os dois arquivos que acabamos de copiar:
llama3_2-1b.pte
tokenizer.model
Executar o aplicativo
Agora tudo está pronto para executar o aplicativo de demonstração em nosso telefone. Você pode clicar na seta verde para executá-lo.
Isso abrirá o aplicativo em nosso dispositivo. O aplicativo solicita que você selecione os arquivos do modelo e do tokenizador.
Usando o aplicativo Llama 3.2 1B
Agora podemos começar a conversar com o Llama3.2 1B em nosso telefone! A interface do aplicativo é bastante simplista. Você pode usar a caixa de texto "Prompt" para escrever um prompt e enviá-lo ao modelo usando o botão "Generate".
Como o modelo é executado off-line, eu poderia usá-lo no avião para o meu próximo destino para pedir, por exemplo, algumas recomendações de pratos:
Com essa interação, observamos algumas limitações do aplicativo de demonstração:
- A resposta repete nossa solicitação.
- A formatação da resposta começa com "I've been to Taiwan...", indicando que o aplicativo não foi projetado para usar o modelo diretamente como um assistente.
- As respostas são cortadas abruptamente, provavelmente porque o limite de tokens foi atingido.
Podemos comparar o comportamento executando o mesmo modelo no terminal com o comando:
python torchchat.py chat llama3.2-1b
Fornecemos o mesmo prompt para ver se o comportamento era diferente. De fato, nesse caso, a resposta parece muito mais natural e útil, apesar de também ter sido cortada:
Entrei em contato com a equipe do Torchchate eles me disseram que o Llama 3.2 era muito recente e que o aplicativo de demonstração precisava ser ligeiramente atualizado para ser compatível com ele.
No entanto, o processo de configuração permanecerá o mesmo, e o conhecimento adquirido aqui ainda se aplicará à versão atualizada. É possível que, no momento em que você estiver lendo este artigo, ele já tenha sido atualizado e esteja funcionando corretamente.
Conclusão
Neste guia, aprendemos como configurar o Llama 3.2 1B diretamente em um dispositivo Android usando o Torchchat. Cobrimos o processo passo a passo de download e instalação dos componentes necessários, incluindo os arquivos de modelo e o aplicativo de demonstração para Android.
Embora existam algumas limitações no aplicativo de demonstração atual, especialmente na formatação e no comprimento da resposta, o potencial subjacente dessas implementações é imenso.
Se você quiser ler mais sobre o Llama 3.2, recomendo estes blogs: