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。
待辦事項