p2p 生成 AI プラットフォーム
世の中には、たくさんのコンピューティングがアイドル状態のままになっているパーソナル コンピューターやホームラボがたくさんあります。このプロジェクトは、コンピューティングに余裕のある人々とコンピューティングを必要とする人々のマーケットプレイスを作成することを目的としています。これは金融市場ではないことに注意してください。これは公共財であることを目的としています。それが軌道に乗るかどうかは誰にもわかりませんが、これが稼働し始めたら、それまでにできる限りのコンピューティングを寄付するつもりです。
仮想環境を作成します。
$ 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: 他の一般的な OS の手順
次に、次を実行します。
pip install -r requirements.txt
(CPU だけでなく) GPU も利用したい場合は、次のプラットフォーム固有の手順に従ってください。
これは、最終的に動作させるために使用したリソースです: 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
GPU リソースをできるだけ多く使用するように llama に指示します。
TODO
TODO
ターミナル タブ (tmux、VS Code ターミナル タブなど) を切り替える方法が必要になります。
http://localhost:5000 で実行されるリレーを起動します。
python relay.py
次に、別のターミナル タブで、http://localhost:3000 で実行されるサーバーを起動します。
python server.py
注: 最初に起動したとき、またはモデル ファイルが存在しない場合 (現在は TheBloke による Llama 7B Chat GGUF のみ)、スクリプトはモデル (約 4 GB) をダウンロードし、プロジェクト ディレクトリのmodels/
ディレクトリに保存します。同じファイル名です。将来的には、ユーザーの同意なしに大きなファイルがダウンロードされないように、ユーザーの操作によってこれが制限される予定です。最終的には、基本的にモデルを参照し、リストから 1 つを選択することになります。
relay.py
、クライアント (このリポジトリのclient.py
を含むがこれに限定されない) とserver.py
間のプロキシとして機能し、互いのパブリック IP を互いに難読化し、P2P ネットワークの大きな制限の 1 つ (たとえば、 .torrent)。将来のバージョンでは、エンドツーエンド暗号化のおかげで、 relay.py
サーバーとクライアント間の会話の内容を認識できなくなります。誰でもこのプロジェクトをフォークして独自のリレーを実行できます。リレーには、さまざまなコンシューマ ハードウェアで実行されるさまざまなserver.py
によって提供されるコンピューティングが含まれます。
シンプルなコマンドライン クライアントclient.py
使用してテストできます。
python client.py
プロンプトが表示されたらメッセージを入力し、Enter キーを押します。 llama.cpp のバインディングであるllama_cpp_python
のおかげで、これらすべてがローカル ハードウェア上で行われるようになりました。
終了するには、Ctrl+C/Cmd+C を押します。
あるいは、ブラウザで http://localhost:5000 にアクセスすることもできます。
TODO