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
Если вы хотите также использовать свой графический процессор (а не только процессор), следуйте этим инструкциям для конкретной платформы.
Это ресурс, который я использовал, чтобы все наконец заработало: https://medium.com/@piyushbatra1999/installing-llama-cpp-python-with-nvidia-gpu-acceleration-on-windows-a-short-guide-0dfac475002d
Подведение итогов:
Предварительные условия
Следующие шаги необходимо выполнить в той же виртуальной среде, которую вы настроили выше. Вы увидите что-то вроде (env) в левом нижнем углу вашего терминала (это может быть не так на всех платформах и во всех терминалах).
Это заменит llama-cpp-python, который вы установили с помощью pip install -r requirements.txt
, и укажет ему использовать 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
может правильно получить доступ к ресурсам вашего графического процессора.
llama_cpp_python инициализируется следующим образом:
llm = Llama (
model_path = model_path ,
n_gpu_layers = - 1 ,
n_ctx = 8192 ,
chat_format = "llama-3"
)
n_gpu_layers
инструктирует ламу использовать как можно больше ресурсов вашего графического процессора.
TODO
TODO
Вам понадобится способ переключения между вкладками терминала (например, tmux, вкладками терминала VS Code).
Запустите реле, которое работает по адресу http://localhost:5000:
python relay.py
Затем в отдельной вкладке терминала запустите сервер, работающий по адресу http://localhost:3000:
python server.py
ПРИМЕЧАНИЕ. При первом запуске или если файл модели отсутствует (в настоящее время только Llama 7B Chat GGUF от TheBloke), сценарий загрузит модель (приблизительно 4 ГБ) и сохранит ее в каталоге models/
каталога вашего проекта в папке то же имя файла. В будущем это будет ограничиваться взаимодействием с пользователем, чтобы предотвратить загрузку больших файлов без согласия пользователя. В конце концов вы будете просматривать модели и выбирать одну из списка.
relay.py
действует как прокси-сервер между клиентом (включая, помимо прочего, client.py
этого репозитория) и server.py
, скрывая общедоступные IP-адреса друг друга, решая одно из больших ограничений P2P-сетей (например, для .торренты). В будущей версии relay.py
не будет видеть содержимое разговора между сервером и клиентом благодаря сквозному шифрованию. Любой может разветвить этот проект и запустить свой собственный ретранслятор, вычислительные ресурсы которого предоставляются различными файлами server.py
, работающими на различном потребительском оборудовании.
Вы можете протестировать ситуацию, используя простой клиент командной строки client.py
:
python client.py
Введите сообщение при появлении запроса и нажмите Enter. Все это теперь происходит на вашем локальном оборудовании благодаря llama_cpp_python
, привязке для llama.cpp.
Для выхода нажмите Ctrl+C/Cmd+C.
Альтернативно вы можете посетить http://localhost:5000 в своем браузере.
TODO