본문 바로가기

분류 전체보기418

logging config 사용하기 python에서는 log config를 활용해서 코드 상에서의 로그 설정 없이 로그를 설정 할 수가 있다. 우선 아래와 같은 로그 파일을 생성한다. [loggers] keys=root,test1Logger,test2Logger [handlers] keys=streamHandler,fileHandler, rotatingFileHandler [formatters] keys=simpleFormatter,complexFormatter [formatter_simpleFormatter] format=[%(name)s] %(message)s [formatter_complexFormatter] format=%(asctime)s %(levelname)s [%(name)s] [%(filename)s:%(lineno)d] .. 2023. 1. 9.
dockerfile에 pythonpath를 환경 변수로 잡기 ENV PYTHONPATH "${PYTHONPATH}:[추가할 경로]" 2023. 1. 7.
우분투에 python3.10 설치하기 ubuntu docker image를 다운 받아서 해당 이미지에 python3.10을 설치하려고 한다. 아래는 python3.10을 설치하는 docker file FROM ubuntu:18.04 RUN mkdir -p /app WORKDIR /app RUN apt-get update RUN apt-get install -y git build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev wget libbz2-dev liblzma-dev # python 설치 RUN wget https://www.python.org/ftp/python/3.10.9/Py.. 2023. 1. 6.
Bad Substitution $> ./test.sh alpine으로 만든 docker 컨테이너 내에서 위와 같이 실행하면 bad substitution이란 에러가 발생하며 실행이 안된다. bad substitution의 경우 shell이 다른 경우에서 호환성 문제로 발생하는 에러 메시지로 위의 경우는 아래와 같이 bash shell로 실행해주면 정상적으로 동작한다. $> bash test.sh 2023. 1. 5.
dockerfile로 container 생성 시 container를 계속 띄우기 dockerfile로 image를 만들고 생성된 image를 컨테이너로 만드는 과정에서 컨테이너 내에 직접 들어가서 디버깅을 해야 하는 경우가 종종 발생한다. 하지만 이렇게 컨테이너에 접속하기 위해서는 컨테이너가 종료하지 않고 계속 떠 있어야 하는데 dockerfile 에서 cmd 명령을 아래와 같이 주면 컨테이너가 종료하지 않고 계속 떠 있는 상태를 만들 수 있다. FROM python:3.8-slim CMD ["tail", "-f", "/dev/null"] /dev/null은 리눅스의 null device로써 입력되는 모든 데이터를 EOF로 보내는 역할을 한다. 해당 null device 파일을 계속 tail을 검으로써 해당 container가 종료되지 않고 계속 살아있게 둘 수 있다. 이 외에서 무.. 2023. 1. 4.
docker file 내에서 git 특정 branch 클론하고 싶을 때 docker file 작성 중 github으로부터 특정 소스를 클론해야 하는 작업이 필요했다. 그래서 아래와 같이 작성. FROM python:3.7-slim RUN mkdir -p /app WORKDIR /app RUN apt-get update RUN apt-get -y install git RUN git clone https://github.com/test.git WORKDIR /app/test RUN git checkout feature_1 RUN pip install --upgrade pip RUN pip install -r requirements.txt CMD [ "python", "test.py"] 하지만 위와 같이 실행시키니깐 git checkout 하는 부분에서 아래와 같은 에러가 발생한.. 2023. 1. 3.
kubeflow pvc에 있는 모델 inference하기 이번에는 pvc에 있는 model을 kubeflow inference service를 이용하여 serving을 진행해보도록 하자. kubeflow ui에서 왼쪽 models 메뉴를 클릭한 후 NEW MODEL SERVER를 클릭하자. 클릭하면 빈 화면이 나타나는데 해당 화면에 inference service에서 사용할 yaml 값을 기입하자. inference.yaml apiVersion: "serving.kubeflow.org/v1beta1" kind: "InferenceService" metadata: name: “iris" spec: predictor: sklearn: Image: sklearn-server:v0.6.1 storageUri: "pvc://test/model” 위의 yaml 값을 입력.. 2022. 12. 30.
Kubeflow pipeline 작성 및 pvc에 저장하기 kubeflow를 통해 모델 생성을 위한 pipeline을 작성하고 작성된 모델을 kfserving을 통해 serving을 해볼 수가 있다. 오늘은 그 작업을 해보려고 한다. 우선 pipeline을 작업하기 위해서는 아래와 같은 requirements 가 필요하다. kfp == 1.8.9 scikit-learn == 1.0.1 dill == 0.3.4 numpy kfserving 위 python package를 설치했다면 이제 pipeline을 위한 코드를 작성해보자. pipeline.py import kfp from kfp import onprem from kfp import dsl def preprocess_op(): return dsl.ContainerOp( name='Preprocess Data'.. 2022. 12. 29.
동적으로 module import 하기 파이썬에서 정적으로 module을 import를 하려고 하면 아래와 같이 사용하면 된다. import xxxx 그렇다면 동적으로 import는 어떻게 해야 할까?? 여기서는 손쉽게 import 할 수 있도록 importlib를 이용한 방법을 소개한다. 예를 들어 lib폴더에 module.py라는 함수가 있다고 가정하자. module.py def print(): print('module') 아래와 같이 사용함으로써 lib의 module.py package를 가져올 수가 있다. import os import sys sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__)))) import importlib pkg = importlib.. 2022. 10. 1.