Plateforme d'IA générative p2p
Il existe des tonnes d’ordinateurs personnels et de laboratoires personnels avec de nombreuses ressources informatiques qui restent inutilisées. Ce projet vise à créer un marché de personnes disposant de ressources informatiques en réserve et de personnes ayant des besoins en matière de calcul. Notez qu’il ne s’agit pas d’un marché financier : il s’agit d’un bien public. Si cela décolle, personne ne le sait, mais je ferai don de tout ce que je peux en attendant une fois que cela sera opérationnel.
créer un environnement virtuel :
$ python -m venv env
En fonction de votre environnement, vous devrez peut-être remplacer python
dans la commande ci-dessus par python3
.
Sur les distributions basées sur Debian, vous devrez peut-être d'abord installer venv, s'il n'est pas déjà installé :
apt install python3.12-venv
activer l'environnement virtuel :
source env/bin/activate
. e nv S cripts a ctivate
Si cette commande ne fonctionne pas (par exemple, Activate.ps1 cannot be loaded because running scripts is disabled on this system
), vous devrez peut-être exécuter la commande suivante dans une session administrateur PowerShell :
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Il vous manque peut-être certaines dépendances CMAKE
sur Debian, vous pouvez exécuter ce qui suit
sudo apt-get install build-essential cmake
TODO : instructions pour d'autres systèmes d'exploitation courants
puis exécutez :
pip install -r requirements.txt
Si vous souhaitez également utiliser votre GPU (au lieu de simplement votre CPU), suivez ces instructions spécifiques à la plate-forme.
C'est la ressource que j'ai utilisée pour que les choses fonctionnent enfin : https://medium.com/@piyushbatra1999/installing-llama-cpp-python-with-nvidia-gpu-acceleration-on-windows-a-short-guide-0dfac475002d
En résumé :
Conditions préalables
Les étapes suivantes doivent être exécutées dans le même environnement virtuel que vous avez configuré ci-dessus. Vous verrez quelque chose comme (env) en bas à gauche de votre terminal (peut ne pas être vrai sur toutes les plates-formes dans tous les terminaux).
Cela remplacera le lama-cpp-python que vous avez installé via pip install -r requirements.txt
et lui demandera d'utiliser cuBLAS.
si vous utilisez l'invite de commande
set CMAKE_ARGS=-DLLAMA_CUBLAS=on
set FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
si vous utilisez Powershell
$env:CMAKE_ARGS = "-DLLAMA_CUBLAS=on"
$env:FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
lorsque vous exécuterez ensuite server.py
, vous verrez BLAS = 1
dans une collection de lignes qui ressemble à ceci :
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 |
Cela indique que server.py
peut accéder correctement à vos ressources GPU.
llama_cpp_python est initialisé comme ceci :
llm = Llama (
model_path = model_path ,
n_gpu_layers = - 1 ,
n_ctx = 8192 ,
chat_format = "llama-3"
)
n_gpu_layers
demande à Llama d'utiliser autant de ressources GPU que possible.
FAIRE
FAIRE
Vous aurez besoin d'un moyen de basculer entre les onglets du terminal (par exemple, tmux, onglets du terminal VS Code).
Lancez le relais, qui s'exécute sur http://localhost:5000 :
python relay.py
Ensuite, dans un onglet de terminal séparé, lancez le serveur, qui s'exécute sur http://localhost:3000 :
python server.py
REMARQUE : lors du premier lancement, ou si le fichier modèle n'est pas présent (actuellement uniquement Llama 7B Chat GGUF par TheBloke), le script téléchargera le modèle (environ 4 Go) et l'enregistrera dans le répertoire models/
de votre répertoire de projet sous le même nom de fichier. À l'avenir, cela sera contrôlé par l'interaction de l'utilisateur afin d'empêcher les téléchargements de fichiers volumineux sans le consentement de l'utilisateur. Finalement, vous parcourrez essentiellement les modèles et en choisirez un dans une liste.
relay.py
agit comme un proxy entre le client (y compris, mais sans s'y limiter, client.py
de ce dépôt) et server.py
, obscurcissant l'adresse IP publique de chacun, résolvant ainsi l'une des grandes limitations des réseaux P2P (par exemple pour .torrents). Dans une future version, relay.py
ne verra pas le contenu de la conversation entre serveur et client grâce au cryptage de bout en bout. N'importe qui peut créer ce projet et exécuter votre propre relais, dont le calcul est fourni par divers server.py
s'exécutant sur divers matériels grand public.
Vous pouvez tester des choses en utilisant le simple client de ligne de commande, client.py
:
python client.py
Tapez votre message lorsque vous y êtes invité et appuyez sur Entrée. Tout cela se produit désormais sur votre matériel local, grâce à llama_cpp_python
, une liaison pour llama.cpp.
Pour quitter, appuyez sur Ctrl+C/Cmd+C.
Alternativement, vous pouvez visiter http://localhost:5000 dans votre navigateur.
FAIRE