ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 환경에서 torch install시 process killed
    카테고리 없음 2024. 6. 15. 18:14

    YOLOv5와 FastAPI를 사용한 프로젝트를 Docker Image Build 도중 에러 발생

    에러 상황

    Cannot install nvidia-cufft-cu12.

    ERROR: failed to solve: process "/bin/sh -c pip install poetry==1.8.3 && poetry install" did not complete successfully: exit code: 137

     

    exit code 137은 OOM(Out Of Memory)가 발생했다는 뜻이며

     

    종합해보면 poetry로 dependency를 install하는 과정에서 OOM이 발생했으며 nvidia관련 패키지를 설치하다 OOM이 발생한 것으로 추정된다.

     

    nvidia 관련 패키지를 설치하는 이유는 pytorch hub에서 YOLOv5 모델을 load하는데 이때 torch 패키지에 종속되어있기 때문에 같이 설치된다.

     

    poetry로 본 torch 패키지 종속성

     

    해결

     

    구글링 해본결과 대부분 "Docker Desktop의 메모리 할당량을 올려라" 라는 답변이 많았지만 

    해당 경우 리눅스 환경에서 Image Build를 하고있었기때문에 관련이 없었다.

     

    그러던 와중  --no-cache 옵션을 추가해보라는 글을 보고 추가했더니 Image Build에 성공하였다.

     

    내 상식으로는 --no-cache를 붙이면

    모든 패키지를 새로 다운로드하기때문에 메모리를 더 사용할 것이라고 생각했는데

    그와 반대로 추가하니 잘돼서 원리는 아직 모르겠다.

     

    FROM python:3.9.10-slim
    
    ENV PYTHONUNBUFFERED 1 \
        PIP_ROOT_USER_ACTION=ignore \
        POETRY_VIRTUALENVS_CREATE=false
    
    EXPOSE 8000
    WORKDIR /app
    
    COPY poetry.lock pyproject.toml ./
    
    RUN pip install poetry==1.8
    
    # RUN poetry install
    RUN poetry install --no-cache
    
    COPY . ./
    
    CMD poetry run uvicorn --host=0.0.0.0 app.main:app

     

     

    이 문제와 관계는 없지만

    이렇게 만들어진 Docker Image가 8GB다..

    원래 Spring Web Application을 Docker Image로 구성하면 500mb정도 였던 것같은데...

     

    Image를 줄일 수 있는 방법이 필요해보인다

     

    Ref.

    https://github.com/pytorch/pytorch/issues/1022

Designed by Tistory.