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 종속성이 누락되었을 수 있습니다.
데비안에서는 다음을 실행할 수 있습니다
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 리소스를 최대한 많이 사용하도록 지시합니다.
TODO
TODO
터미널 탭(예: 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 네트워크의 큰 제한 사항 중 하나를 해결합니다(예: .토렌트). 향후 버전에서는 종단간 암호화 덕분에 relay.py
서버와 클라이언트 간의 대화 내용을 볼 수 없게 됩니다. 누구나 이 프로젝트를 포크하고 다양한 소비자 하드웨어에서 실행되는 다양한 server.py
가 제공하는 컴퓨팅을 갖춘 자신만의 릴레이를 실행할 수 있습니다.
간단한 명령줄 클라이언트인 client.py
사용하여 테스트할 수 있습니다.
python client.py
메시지가 나타나면 메시지를 입력하고 Enter를 누르세요. llama.cpp에 대한 바인딩인 llama_cpp_python
덕분에 이제 이 모든 작업이 로컬 하드웨어에서 발생합니다.
종료하려면 Ctrl+C/Cmd+C를 누르세요.
또는 브라우저에서 http://localhost:5000을 방문할 수 있습니다.
TODO