1. 설치된 패키지 확인하기
$pip3 freeze
설치된 패키지들 및 버전을 확인할 수 있다.
2. 도커 설치하기
나는 맥북을 사용중이라 아래 사이트에서 맥용 데스크탑 버전을 다운 받았다.
https://docs.docker.com/desktop/install/mac-install/
3. 도커 파일 만들기
매우 단순한 iris ML 모델을 아래와 같이 train.py 파일에 미리 저장 후, 도커로 빌드해주려고 한다.
train.py파일 내용은 아래 참고
<train.py파일 내용>
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# load data
iris = load_iris(as_frame=True)
X, y = iris['data'], iris['target']
X_train, X_valid, y_train, y_valid = train_test_split(X,y,test_size=0.3, random_state=2024)
# train data
clf = RandomForestClassifier(n_estimators=100, max_depth=5, random_state=2024)
clf.fit(X_train, y_train)
# evaluate data
y_pred = clf.predict(X_valid)
acc_score = accuracy_score(y_valid, y_pred)
print('Accuracy score is {:.4f}'.format(acc_score))
그리고 나서 VScode에서 파일명 'Dockerfile'로 아래 내용을 작성해주고 저장하였다.
이때 WORKDIR은 도커 파일을 저장하는 디렉토리에,
RUN의 python, scikit-learn, pandas의 버전은 1.에서 확인한 라이브러리 버전에 맞추어 기재한다.
<Dockerfile 내용>
FROM amd64/python:3.12.2-slim
WORKDIR /User/username/python-code
RUN pip install -U pip &&\
pip install scikit-learn==1.3.2 pandas==2.1.4
COPY train.py train.py
ENTRYPOINT '/bin/bash'
4. 도커 이미지 빌드하기
도커 파일을 만들어 주고 나면, 다시 터미널로 돌아와서 아래 명령어를 실행한다.
맨 마지막 .은 동일한 파일 경로 내에 있는 도커 파일을 실행한다는 뜻이고,
-t는 태그를 의미하는데, 딱히 지정해주지 않으면 가장 최신의 파일로 자동 실행한다.
$ docker build -t reproduce .
아래처럼 빌드 진행 및 완료된 것을 볼 수 있는데,
도커 파일에 명령했던 것과 동일하게 총 [4/4] 4가지의 명령어 실행됨.
[1/4] 베이스 이미지 가지고오기
[2/4] 디렉토리 설정
[3/4] 패키지 설치
[4/4] train.py 복사
제대로 생성되었는지 아래 명령으로 이미지 확인하기.
reproduce ~ 항목 생긴 것을 볼 수 있고, 위에 언급한 것처럼 TAG 지정 안해주어서 'latest'로 처리됨.
$ docker image ls
5. 도커 실행하기
$ docker run -it reproduce
도커가 실행되면 아래처럼 컨테이너 내부로 들어온 것을 확인 가능하고, (root@~)
train.py파일을 실행해 주었을때 정상 작동하여 ML 모델의 accuracy 값을 print한 것을 볼 수 있음.
* 프로그래머스의 마키나락스 MLOps 강의를 참고하여 작성한 내용임
'MLOps' 카테고리의 다른 글
[MLOps] 6. MLflow 로깅 방법 (1) | 2024.04.18 |
---|---|
[MLOps] 5. 도커 Compose로 MLflow 시작하기 (0) | 2024.04.17 |
[MLOps] 4. MLflow 시작하기 (feat.도커) (0) | 2024.04.17 |
[MLOps] 3. 실험 관리 (0) | 2024.04.17 |
[MLOps] 1. MLOps 개념 (0) | 2024.04.17 |