-
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: 137exit code 137은 OOM(Out Of Memory)가 발생했다는 뜻이며
종합해보면 poetry로 dependency를 install하는 과정에서 OOM이 발생했으며 nvidia관련 패키지를 설치하다 OOM이 발생한 것으로 추정된다.
nvidia 관련 패키지를 설치하는 이유는 pytorch hub에서 YOLOv5 모델을 load하는데 이때 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.