vllm이나 triton같이 pip로 설치를 하지만
내부에서 설치가 진행될 때 cmake 빌드도 같이 수행하는 라이브러리의 경우 wsl환경에서 그냥 설치하면 설치하다가 중간에 뻗어버리는 불상사가 가끔 발생한다
이럴때는 해당 wsl bash창에서 임시적으로 설치에 사용되는 자원을 제한알 필요성이 있다.
주로 컴파일에 참여하는 병렬 프로세스의 개수 제한
그리고 컴파일에 할당가능한 최대 캐시 메모리
두개를 제한을 건다
# Python 바인딩 컴파일에 참여하는 코어개수
export MAX_JOBS=16
# Cmake 빌드에 참여하는 코어 개수
export CMAKE_BUILD_PARALLEL_LEVEL=16
# Ninja 빌드 상태 표시
export NINJA_STATUS="[%f/%t] "
여기서 16
이라는 값은 통상 전체 CPU 논리 프로세스 개수의 1/2로하면 왠만해서는 문제가 안생긴다
필자는 32
개의 논리프로세스가 존재해서 절반으로 매겼다
사실 여기가 좀 더 중요하다
export CCACHE_DIR=/tmp/ccache
export CCACHE_MAXSIZE=8G # 캐시 크기
export CCACHE_COMPRESS=1 # 캐시 압축
사실 wsl환경에서 cmake가 포함된 파이썬 라이브러리를 설치할 때 제일 문제가 되는게 컴파일하면서 사용되는 메모리가 터지는 문제가 제일 큰데
이 값을 제한을 잘 해줘야 한다
즉 위 환경변수 값에서 8G
이거를 제한을 잘 해줘야 한다.
필자는 128GB를 설치한 메모리라도 wsl환경에서는 wsl 구동에 절반 떼먹히고 도커에 떼먹히고 이것저것 떼먹히는게 많아서
왠만해서는 16G
이상 올려서 작업하지는 않는다
위 두 환경변수를 설정하고
pip install -e . --verbose --no-build-isolation
이렇게 완전 풀 패키지로 설치하면 왠만해서는 문제가 생기지 않고 설치가 완료될 것이다.
우분투에서는 파이썬 라이브러리를 설치할 때 apt
, pip
를 주로 이용하는데 때에 따라서는 pip
로 설치한 라이브러리가 우분투를 구동하는데 필요한 시스템 패키지와 충돌나는 경우가 왕왕 있었다.
음.. 아마 우분투에서 이것저것 설치하다가 설치 뻑나면 우분투도 다시 갈아엎는 경험을 해본 사람들이라면 느낌적인 느낌으로 무슨 뜻인지 알것인데
이걸 막자고 Ubuntu 24.04버전 (정확히는 Python 3.11 버전)부터는 PEP 668에러를 띄우면서
pip
로 설치하는걸 제약을 걸어놨는데
필자의 경우 어차피 가상 OS인 WSL-Ubuntu를 사용하고 있고
메인 OS는 윈도우를 사용하는 입장이라
우분투 지우는게 속편하다
그래서 위 사진처럼 PEP 668 에러를 우회하기 위해 --break-system-packages
옵션을 추가로 입력하기 귀찮으면 환경변수로 등록해버리면 된다.
export PIP_BREAK_SYSTEM_PACKAGES=1
위 명령어를 .bashrc
에 아에 박아버리면 된다
기입 후에는 source ~/.bashrc
명령어를 쳐서 업데이트 해주자
이러면 pip
설치 시 귀찮은 문제가 없어질 것이다.