요약
GPU
를 통해서 학습을 시켜 모델링을 완료하여 모델 파일로 변환한 후, 그 모델을 API 서버로 만들어서 졸업 작품에 적용하려고 하였습니다.
문제는 졸업 작품에 환경이 Azure 클라우드 서비스를 기반으로 한 Kubernetes Cluster 환경이라는 것입니다.
단순히 로컬에서 동작하는 것이라면 호스트 OS의 GPU를 사용하면 됐지만, AKS(Azure Kubernetes Service)의 GPU 기능을 사용하자니 비용적으로 문제가 발생하였습니다.
이에, 데모 제품인만큼 “Tensorflow를 GPU
가 아닌 CPU
로 돌리면 어떨까?” 라는 생각이 들어 tensorflow-cpu 로 변경하여 해결하였습니다.
오류 문구는 다음과 같습니다.
2022-11-17 00:56:11.728793: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load d object file: No such file or directory
2022-11-17 00:56:11.728909: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerro
해결
아래와 같이 도커 파일을 설정한 후 빌드하면 됩니다.
기타 설정들도 섞여있을 수 있습니다. 핵심은 tensorflow-cpu 입니다.
FROM python:3.6-slim
COPY . /app
ENV JAVA_HOME /usr/lib/jvm/java-1.7-openjdk/jre
RUN apt-get update && apt-get install -y g++ default-jdk
RUN python3 -m pip install --upgrade pip
RUN pip3 install flask konlpy torch tensorflow-cpu lime
WORKDIR /app
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0"]