wsl에서 pip 설치 시 메모리 부족문제가 뜰 때

안상훈·2025년 8월 18일
0

WSL설정

목록 보기
10/19
post-thumbnail

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

이렇게 완전 풀 패키지로 설치하면 왠만해서는 문제가 생기지 않고 설치가 완료될 것이다.

추가사항 : PEP 668문제 해결방법

우분투에서는 파이썬 라이브러리를 설치할 때 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 설치 시 귀찮은 문제가 없어질 것이다.

profile
자율차 공부중

0개의 댓글