Executar modelos de IA de código aberto localmente em nossos próprios computadores nos dá privacidade, possibilidades infinitas de ajustes e liberdade em relação às grandes corporações. É quase uma questão de liberdade de expressão.
Para nós, com pouca GPU, no entanto, ter nosso próprio computador de IA parece ser um sonho caro.
E se eu lhe disser que você pode obter um computador de IA útil por US$ 300? Interessado? Você precisa fornecer seu próprio monitor, teclado e mouse. E você precisa de alguns ajustes no sistema operacional Linux, drivers, middleware e configurações.
Para esclarecer, NÃO estamos falando de “treinar” ou “ajustar” grandes modelos generativos de IA. Vamos nos concentrar em como executar LLM de código aberto (grandes modelos de linguagem, como
Agora, vamos continuar.
Vamos supor que um dos principais casos de uso de um computador doméstico com IA seja executado
No entanto, você precisa do seguinte para obter uma velocidade de inferência mais rápida. Caso contrário, você será como ver o cabelo crescer na palma da mão enquanto o LLM cospe uma ficha de cada vez.
Para geração de imagens com difusão estável, você precisa de potência de GPU. No entanto, você não precisa ter uma GPU muito sofisticada para isso. Você pode aproveitar a GPU integrada já em seus computadores domésticos:
Todos os Macs com CPU M1/M2/M3, que integra CPU, GPU e memória de alta velocidade (eles são realmente bons, mas devido ao preço estão excluídos deste artigo específico)
AMD APU (por exemplo, Ryzen 7 5700U), que integra CPU e GPU para mini-PCs econômicos. Este será o foco deste artigo.
CPU Intel (por exemplo, Core i5-1135G7), que também integra CPU e GPU. Eles estão um pouco acima do orçamento de US$ 300 para todo o mini-PC, mas os leitores podem explorá-los por conta própria.
Um Mini PC baseado em AMD com as seguintes especificações geralmente é vendido por menos de US$ 300. Não quero endossar nenhuma marca em particular, então você mesmo pode pesquisar:
Esbanjei um pouco e optei pelo modelo de US$ 400 com 32 GB de RAM e SSD de 1 TB (todo o resto igual). O principal motivo é que pesquiso LLMs de código aberto e gostaria de rodar modelos maiores, além de rodar Stable Difusion. Mas você poderá fazer quase tudo neste artigo com o computador de US$ 300.
Para APUs AMD como o
Você precisa mudar isso dependendo do seu caso de uso principal:
Se você precisar apenas executar a inferência do LLM, poderá pular toda essa etapa de preparação. Como a inferência do LLM só precisará usar CPU, você deve economizar a maior parte da RAM para a CPU para poder executar modelos LLM maiores.
Se você precisar correr
No meu caso, quero executar a inferência Stable Diffusion XL e LLM no mesmo mini PC. Portanto, gostaria de alocar 16 GB (de um total de 32 GB) para a GPU.
Você pode conseguir isso alterando as configurações do BIOS. Normalmente, há um limite superior e a configuração padrão pode ser muito inferior ao limite superior. No meu computador, o limite máximo era de 16 GB, ou metade do total de RAM disponível.
Se o BIOS do seu computador suportar essas configurações, vá em frente e mude para o número desejado. Meu BIOS não tem essa configuração.
Se o seu BIOS não tiver essa configuração, siga as instruções “Desbloqueando a alocação de memória GPU na APU AMD Ryzen ™?” por Winston Ma. Eu tentei e funcionou bem, agora tenho 16 GB de VRAM.
da AMD
Para instalar e fazer o ROCm da AMD funcionar, você deve se certificar de que as versões do hardware GPU, distribuição Linux, kernel, python, driver HIP, biblioteca ROCm e pytorch são compatíveis. Se você deseja o mínimo de dor e a máxima possibilidade de sucesso na primeira vez, siga as combinações recomendadas e verificadas.
Verifique o link a seguir para obter versões compatíveis do sistema operacional Linux e do kernel e instale-os. Inicialmente, cometi o erro de apenas instalar meu sistema operacional Linux favorito e o kernel Linux padrão, e foi uma grande dor retroceder para resolver problemas de compatibilidade. Você pode evitar essa dor apenas usando as combinações oficialmente suportadas.
Se toda a instalação terminar bem, você pode digitar rocminfo
e algo assim será exibido (cortei apenas as partes mais relevantes em destaque em amarelo):
ROCk module is loaded
=====================
HSA System Attributes
=====================
Runtime Version: 1.1
System Timestamp Freq.: 1000.000000MHz
Sig. Max Wait Duration: 18446744073709551615 (0xFFFFFFFFFFFFFFFF) (timestamp count)
Machine Model: LARGE
System Endianness: LITTLE
Mwaitx: DISABLED
DMAbuf Support: YES
==========
HSA Agents
==========
*******
Agent 1
*******
Name: AMD Ryzen 7 5800H with Radeon Graphics
Uuid: CPU-XX
Marketing Name: AMD Ryzen 7 5800H with Radeon Graphics
Vendor Name: CPU
Pool Info:
Pool 1
Segment: GLOBAL; FLAGS: COARSE GRAINED
Size: 16777216(0x1000000) KB
A dependência do Python pode ser bastante complicada, por isso é uma boa prática configurar um ambiente adequado. Você pode usar qualquer um
source venv/bin/activate
conda activate llm
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm5.7
O seguinte é específico para APUs com gráficos integrados. Embora não sejam oficialmente apoiados pelo ROCm, o seguinte provou funcionar.
export HSA_OVERRIDE_GFX_VERSION=9.0.0
Agora, depois de todos os passos complicados, vamos testar se o ROCm está funcionando com o Torch. E você pode ver que o ROCm está “fingindo” ser CUDA para fins de Pytorch.
python3 -c 'import torch' 2> /dev/null && echo 'Success' || echo 'Failure'
Success
python3 -c 'import torch; print(torch.cuda.is_available())'
True
Vamos começar com algo fácil para nosso computador AI recém-configurado de US$ 300: executar localmente um grande modelo de linguagem. Podemos escolher um dos modos populares de código aberto:
Além disso, você também pode experimentar pequenos LLMs de
Estaremos usando
Primeiro, você precisa instalar wget
e git
. E então siga as etapas para compilar e instalar o llama.cpp.
sudo apt-get install build-essential
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
make
Para executar os LLMs em nossa máquina barata, em vez de servidores em nuvem com GPUs caras, precisamos usar uma versão “compactada” dos modelos para que eles caibam no espaço de RAM. Para um exemplo simples, um modelo LLaMA-2 7B possui 7B parâmetros, cada um representado por float16 (2 bytes).
Além disso, o formato do arquivo deve ser
Primeiro, testamos no mini PC AMD e alcançamos cerca de 10 tokens por segundo. Na verdade, isso é bastante decente e você pode conversar com o LLM sem esperar muito.
Configuração do sistema:
Instrução de linha de comando:
./main -m models/llama-2-7b-chat.Q4_0.gguf --color -ins -n 512 --mlock
llama_print_timings: load time = 661.10 ms
llama_print_timings: sample time = 234.73 ms / 500 runs ( 0.47 ms per token, 2130.14 tokens per second)
llama_print_timings: prompt eval time = 1307.11 ms / 32 tokens ( 40.85 ms per token, 24.48 tokens per second)
llama_print_timings: eval time = 50090.22 ms / 501 runs ( 99.98 ms per token, 10.00 tokens per second)
llama_print_timings: total time = 64114.27 ms
Em seguida, testamos em um mini PC Intel e alcançamos cerca de 1,5 tokens por segundo. Isso é um pouco lento para uma sessão de bate-papo frutífera. Não é uma comparação justa, já que o Intel N5105 é claramente mais fraco que o AMD 5800H. Mas esse é o único mini PC Intel que possuo. Se você usar uma CPU Intel mais poderosa (por exemplo, Core i5-1135G7), deverá obter resultados comparáveis. Por favor, relate suas descobertas nos comentários abaixo.
Configuração do sistema:
./main -m models/llama-2-7b-chat.Q4_0.gguf -ins --color -n 512 --mlock
llama_print_timings: load time = 14490.05 ms
llama_print_timings: sample time = 171.53 ms / 97 runs ( 1.77 ms per token, 565.49 tokens per second)
llama_print_timings: prompt eval time = 21234.29 ms / 33 tokens ( 643.46 ms per token, 1.55 tokens per second)
llama_print_timings: eval time = 75754.03 ms / 98 runs ( 773.00 ms per token, 1.29 tokens per second)
E preste atenção também nesta página, em relação ao AMD ROCm
export HSA_OVERRIDE_GFX_VERSION=9.0.0
source venv/bin/activate
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
./webui.sh --upcast-sampling --skip-torch-cuda-test --precision full --no-half
Teste 1
SDXL (resolução máxima 1024x1024) recomenda pelo menos 12 GB de VRAM, então você definitivamente precisa realizar a etapa de preparação 1 para alocar 16 GB de VRAM para iGPU. Portanto, essa tarefa só é possível com o mini PC de US$ 400.
./webui.sh --upcast-sampling
Teste 1:
Teste 2:
Embora este artigo se concentre em sistemas operacionais Linux, você também pode fazer com que o Stable Diffusion funcione no Windows. Aqui estão meus experimentos:
Teste 1:
Então, você está se divertindo executando seus próprios modelos generativos de IA em seu novo mini PC de US$ 300? Espero que você faça.
Modelos de IA de código aberto executados em dispositivos pessoais são uma das áreas mais interessantes para os criadores, já que nenhum de nós terá o enorme pool de GPU para realmente treinar um modelo fundamental. Isso permitirá uma nova geração de aplicativos que são superinteligentes e, ao mesmo tempo, preservam a privacidade de nossos dados.
Qual o proximo?
E feliz em mexer com IA, código aberto e no dispositivo!