MATH404

[nosce te ipsum]

Voltando aos trabalhos

Executando um "ChatGPT" localmente

12/11/2024

A pouco tempo comecei me interessar pelo uso de inteligência artificial, apenas por curiosidade. E por isso comecei a testar algumas tecnologias como geradores de textos, criadores de legendas e geradores de vozes. Porém, ficar refém de uma empresas para fornecer esse tipo de serviço, além de frustrante e nada privado, é limitante, pois é um tipo de serviço que possui limitações de uso e de criatividade. E como um bom entusiasta de tecnologia, prefiro ser limitado apenas pelo hardware que possuo, e não pelo software. Assim, procurei por alternativas locais para esses serviços, e uma delas, que trago agora nessa pestagem, é rodar localmente um modelo de inteligência artificial que faça a geração de respostas, tal qual faz o chat gpt.

Antes de começar

É preciso entender que diferentes hardwares funcionam de forma diferente, por isso aquilo que funcionar para mim pode não funcionar para você. Aquilo que coloco nessa postagem funcionou de forma eficaz em um processador Ryzen 5 3400, sem placa gráfica externa (APU), com 16GB de RAM, rodando em uma distribuição Arch Linux, testada também no Windows 11. Também é possível que ocorram erros ligados a linguagem Python, por isso é recomendável um conhecimento mínimo na linguagem para resolução de problemas que possam ocoorrer.

Oobabooga

A primeira ferramenta que iremos utilizar é o Oobabooga, que nada mais é que uma interface gráfica que roda no navegador e possibilita utilizarmos os modelos geradores de textos de forma fácil.

Ao acessar a página do obabooga no github podemos baixar os arquivos compactados no formato zip ou clonar o repositório no PC se tiver o git instalado

Vou optar pela primeira opção, afinal nem todos possuem a ferramenta git ou o conhecimento necessário para executá-la (recomendo estudar sobre, é muito útil).

Após isso descompactamos os arquivos em um diretório do PC. Haverão vários arquivos dentro do diretório, de inicio vamos dar atenção aos arquivos start_linux.sh, ou caso utilize o Windows o arquivo start_windows.bat, que serão responsáveis por baixar todos os arquivos necessários para executar a webui, inclusive as bibliotecas do Python. Executando no linux, são baixados alguns arquivos e logo aparece um promp perguntando qual a nossa GPU. Como não possuo uma GPU, apenas uma APU com placa gráfica integrada, selecionei a última opção.

Após um tempo baixando e instalando bibliotecas, é apresentada a tela abaixo com a mensagem: Running on local URL: http://127.0.0.1:7860. Isso quer dizer que instalação das bibliotecas ocorreu sem erros e a webui está rodando localmente nesse endereço.

Podemos accessá-la usando o navegador, porém essa é apenas a interface, precisamos instalar os modelos para começar a brincadeira.

Hugging Face

O site Hugging Face é uma plataforma colaborativa de projetos de inteligência artificial. É como se fosse um github para projetos de I.A. É lá que podemos pesquisar e baixar LLMs, que são os modelos de linguagem de grande porte, compartilhados pela comunidade.
Ao acessar o site clicamos na opção Models, onde serão listados todos os modelos disponíveis.Na pesquisa de modelos vamos buscar pelo modelo Wizard-Vicuna-7B-Uncensored-gguf. Este é um modelo de 7 bilhões de parâmetros (7B), cuja censura foi retirada pela comunidade, porém o mais importante nesse caso é a extensão GGUF, que vai permitir uma melhor execução utilizando apenas a CPU.

Nessa mesma página, clicamos na aba Files and Versions e uma lista de arquivos para download será aberta. Para esse tutorial vou baixar a versão Q2, que representa o nível de quantização do modelo. Quanto maior esse número, mais memória será utilizada.

Apos o download, vamos mover o arquivo que baixamos para a pasta models, que fica dentro do diretório onde descompactamos o oobabooga. Feito isso nosso modelo está pronto para ser utilizado.

Vamos voltar para o navegador na página do oobabooga, na aba Model, primeiro clicamos no botão para atualizar os modelos, assim no campo de seleção ao lado ficará disponível para seleção o modelo que baixamos. Ao fazer isso, clicamos no botão Load para carregarmos o modelo. Se tudo ocorrer bem, será apresentada a mensagem "Successfully loaded", indicando sucesso.

Em meus testes no Windows, ocorreram alguns erros relacionados ao python, então precisei procurar uma solução usando o código de erro. Alguns tópicos em foruns traziam alguns comandos para serem executados no python. Caso você precise executar comandos para corrigir algum erro, não use o terminal de forma convencional, execute o arquivo cmd_linux.sh (ou cmd_windows.bat, no Windows), isso porque o oobabooga cria um ambiente virtual totalmente separado do seu sistema operacional, e esses arquivos permitem que você carregue esse ambiente para realizar modificações.

Hora de Executar

Agora poderemos usar o modelo, voltamos para a aba chat e poderemos fazer perguntas. Nos meus teste, selecionando o Mode chat a resposta é produzida mais rápido. Perguntando a cor do céu, temos a seguinte resposta:

A pergunta é respondida em inglês. Então troquei o modo para chat-instruct e consegui obter uma resposta em portugês, mas não foi uma resposta razoável:

Então vamos a mais um teste, dessa vez testando a censura do modelo. Para isso fiz uma pergunta que seria bloqueada no ChatGPT:

Finalizando

Nesse post foi mostrado que é possível executar um modelo de inteligência artificial aos moldes de um Chat GPT, possuindo um hardware médio.
Embora haja a desvantagem de consumir muitos recursos e levar um tempo maior, existe a vantagem de executar modelos sem a censura das grandes empresas, obtendo privacidade para testar a tecnologia. Nos meus testes, a execução no sistema operacional Linux, além de não apresentar erros na instalação, foi mais fluída e menos demorada para produzir as respostas.
Minha dica é que se você for seguir os passos desse tutorial, teste vários outros modelos GGUF e não se limite apenas aquele que foi testado, vale muito a pena.