p2p生成式人工智能平台
有大量的个人电脑和家庭实验室,其中有大量计算资源处于闲置状态。该项目旨在创建一个由拥有闲置计算资源的人和有计算需求的人组成的市场。请注意,这不是一个金融市场——它的目的是成为一种公共产品。任何人都在猜测它是否会成功,但一旦它启动并运行,我将捐赠我能提供的所有计算资源。
创建虚拟环境:
$ python -m venv env
根据您的环境,您可能需要将上述命令中的python
替换为python3
。
在基于 Debian 的发行版上,如果尚未安装,您可能还需要先安装 venv:
apt install python3.12-venv
激活虚拟环境:
source env/bin/activate
. e nv S cripts a ctivate
如果此命令不起作用(例如, Activate.ps1 cannot be loaded because running scripts is disabled on this system
),您可能必须在管理员 PowerShell 会话中运行以下命令:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
您可能缺少一些 CMAKE 依赖项
在 Debian 上,您可以运行以下命令
sudo apt-get install build-essential cmake
TODO:其他常见操作系统的说明
然后,运行:
pip install -r requirements.txt
如果您还想利用 GPU(而不仅仅是 CPU),请遵循这些特定于平台的说明。
这是我用来让事情最终正常工作的资源:https://medium.com/@piyushbatra1999/installing-llama-cpp-python-with-nvidia-gpu-acceleration-on-windows-a-short-guide-0dfac475002d
总结:
先决条件
接下来的步骤需要在您上面设置的同一虚拟环境中执行。您将在终端左下角看到类似 (env) 的内容(可能并非在所有终端的所有平台上都是如此)。
这将替换您通过pip install -r requirements.txt
安装的 llama-cpp-python 并指示它使用 cuBLAS。
如果您使用命令提示符
set CMAKE_ARGS=-DLLAMA_CUBLAS=on
set FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
如果您使用的是 Powershell
$env:CMAKE_ARGS = "-DLLAMA_CUBLAS=on"
$env:FORCE_CMAKE=1
pip install llama-cpp-python --force-reinstall --upgrade --no-cache-dir --verbose
接下来运行server.py
时,您将在一组行中看到BLAS = 1
,如下所示:
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 |
这表明server.py
可以正确访问您的GPU资源。
llama_cpp_python 的初始化如下:
llm = Llama (
model_path = model_path ,
n_gpu_layers = - 1 ,
n_ctx = 8192 ,
chat_format = "llama-3"
)
n_gpu_layers
指示 llama 使用尽可能多的 GPU 资源。
待办事项
待办事项
您需要一种在终端选项卡之间切换的方法(例如 tmux、VS Code 终端选项卡)。
启动在 http://localhost:5000 上运行的中继:
python relay.py
然后,在单独的终端选项卡中启动在 http://localhost:3000 上运行的服务器:
python server.py
注意:首次启动时,或者如果模型文件不存在(目前只有 TheBloke 的 Llama 7B Chat GGUF),脚本将下载模型(大约 4GB)并将其保存在项目目录下的models/
目录中相同的文件名。将来这将通过用户交互进行控制,以防止未经用户同意而下载大文件。最终,您基本上会浏览模型并从列表中选择一个。
relay.py
充当客户端(包括但不限于本存储库的client.py
)和server.py
之间的代理,混淆彼此的公共 IP,解决了 P2P 网络的一大限制(例如.torrents)。在未来的版本中,由于端到端加密, relay.py
将看不到服务器和客户端之间的对话内容。任何人都可以分叉这个项目并运行自己的中继,该中继具有由运行在各种消费者硬件上的各种server.py
提供的计算。
您可以使用简单的命令行客户端client.py
进行测试:
python client.py
出现提示时输入消息并按 Enter。由于llama_cpp_python
llama.cpp 的绑定),所有这些现在都发生在您的本地硬件上。
要退出,请按 Ctrl+C/Cmd+C。
或者,您可以在浏览器中访问 http://localhost:5000。
待办事项