Plataforma de IA generativa p2p
Existem muitos computadores pessoais e homelabs por aí com muitos computadores que permanecem ociosos. Este projeto visa criar um mercado de pessoas com computação sobressalente e pessoas com necessidades de computação. Observe que este não é um mercado financeiro – pretende ser um bem público. Se decolar, ninguém sabe, mas enquanto isso, doarei qualquer cálculo que puder, assim que estiver instalado e funcionando.
crie um ambiente virtual:
$ python -m venv env
Dependendo do seu ambiente, pode ser necessário substituir python
no comando acima por python3
.
Em distribuições baseadas em Debian, você também pode precisar instalar o venv primeiro, se ainda não estiver instalado:
apt install python3.12-venv
ative o ambiente virtual:
source env/bin/activate
. e nv S cripts a ctivate
Se este comando não funcionar (por exemplo Activate.ps1 cannot be loaded because running scripts is disabled on this system
), talvez seja necessário executar o seguinte comando em uma sessão do Administrador do PowerShell:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Você pode estar faltando algumas dependências do CMAKE
no Debian, você pode executar o seguinte
sudo apt-get install build-essential cmake
TODO: instruções para outros sistemas operacionais comuns
então, execute:
pip install -r requirements.txt
Se você também quiser utilizar sua GPU (em vez de apenas sua CPU), siga estas instruções específicas da plataforma.
Este é o recurso que usei para fazer as coisas finalmente funcionarem: https://medium.com/@piyushbatra1999/installing-llama-cpp-python-with-nvidia-gpu-acceleration-on-windows-a-short-guide-0dfac475002d
Resumindo:
Pré-requisitos
As próximas etapas precisam ser executadas no mesmo ambiente virtual que você configurou acima. Você verá algo como (env) no canto inferior esquerdo do seu terminal (pode não ser verdade em todas as plataformas e em todos os terminais).
Isso substituirá o llama-cpp-python que você instalou via pip install -r requirements.txt
e o instruirá a usar o cuBLAS.
se você estiver usando o prompt de comando
set CMAKE_ARGS=-DLLAMA_CUBLAS=on
set FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
se você estiver usando Powershell
$env:CMAKE_ARGS = "-DLLAMA_CUBLAS=on"
$env:FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
ao executar server.py
em seguida, você verá BLAS = 1
em uma coleção de linhas semelhante a esta:
AVX = 1 | AVX_VNNI = 0 | AVX2 = 1 | AVX512 = 0 | AVX512_VBMI = 0 | AVX512_VNNI = 0 | FMA = 1 | NEON = 0 | ARM_FMA = 0 | F16C = 1 | FP16_VA = 0 | WASM_SIMD = 0 | BLAS = 1 | SSE3 = 1 | SSSE3 = 0 | VSX = 0 |
Isso indica que server.py
pode acessar corretamente os recursos da GPU.
llama_cpp_python é inicializado assim:
llm = Llama (
model_path = model_path ,
n_gpu_layers = - 1 ,
n_ctx = 8192 ,
chat_format = "llama-3"
)
n_gpu_layers
instrui o lhama a usar o máximo possível de recursos da GPU.
PENDÊNCIA
PENDÊNCIA
Você precisará alternar entre as guias do terminal (por exemplo, tmux, guias do terminal VS Code).
Inicie o relé, que é executado em http://localhost:5000:
python relay.py
Em seguida, em uma aba separada do terminal, inicie o servidor, que roda em http://localhost:3000:
python server.py
NOTA: Quando iniciado pela primeira vez, ou se o arquivo do modelo não estiver presente (atualmente apenas Llama 7B Chat GGUF de TheBloke), o script fará o download do modelo (aproximadamente 4 GB) e o salvará no diretório models/
no diretório do seu projeto em o mesmo nome de arquivo. Isso será controlado pela interação do usuário no futuro para evitar downloads de arquivos grandes sem o consentimento do usuário. Eventualmente, você basicamente navegará pelos modelos e escolherá um em uma lista.
relay.py
atua como um proxy entre o cliente (incluindo, mas não se limitando a, client.py
deste repositório) e server.py
, ofuscando o IP público um do outro, resolvendo uma das grandes limitações das redes P2P (por exemplo, para .torrents). Em uma versão futura, relay.py
não verá o conteúdo da conversa entre servidor e cliente graças à criptografia ponta a ponta. Qualquer um pode bifurcar este projeto e executar seu próprio relé, que possui computação fornecida por vários server.py
s executados em vários hardwares de consumo.
Você pode testar as coisas usando o cliente de linha de comando simples, client.py
:
python client.py
Digite sua mensagem quando solicitado e pressione Enter. Tudo isso agora está acontecendo no seu hardware local, graças a llama_cpp_python
, uma ligação para llama.cpp.
Para sair, pressione Ctrl+C/Cmd+C.
Alternativamente, você pode visitar http://localhost:5000 no seu navegador.
PENDÊNCIA