1. 로컬에서 MLflow 시작하기
1) 터미널에 아래 코드로 설치함
pip3 install mlflow
2) 호스트에 자기 자신의 IP를 할당하라고 명령
$ mlflow server --host 0.0.0.0
혹시 나처럼 'ModuleNotFoundError: No module named 'pkg_resources'
에러가 나는 경우에는 setuptools를 설치해주고 그 다음 mlflow 설치 해주면 된다.
pip3 install setuptools
pip3 install mlflow
실행이 되면 아래 화면과 같이 작동하고,
두번째 줄의 주소 http://0.0.0.0:5000 를 통해 MLflow를 실행할 수 있다.
3) 주소로 웹페이지 실행 (http://0.0.0.0:5000)
주소 실행하면 mlflow 페이지 접속된 화면 확인 가능하다.
2. 도커에서 MLflow 시작하기
1) MLflow Dockerfile 작성
이제 MLflow 서버 띄울 수 있는 도커 이미지를 빌드해볼건데, 우선 도커 파일부터 작성해야 한다.
이때 다른 도커파일이 있는 폴더 경로 말고 새로운 경로에 작성해야 한다.
나는 mkdir로 'mlflow' 폴더를 만들고 그안에 파일을 작성 및 저장했다.
<Dockerfile 내용>
FROM amd64/python:3.12.2-slim
RUN pip install -U pip &&\
pip install mlflow
CMD ["mlflow","server","--host","0.0.0.0"]
2) MLflow 서버의 도커 이미지 빌드
그리고 나서 다시 터미널로 돌아와, 도커 파일이 있는 폴더 안으로 위치 지정 후, 아래 코드 작성한다.
$ docker build -t mlflow-server .
실행 완료된 모습을 확인할 수 있다.
3) 도커 실행하여 MLflow 서버 실행하기?
마지막으로 도커를 실행하면, 두번째 줄에 위의 1.-2) 에서 봤던 그대로 mlflow 에 접속 가능한 주소를 확인 가능하다.
$ docker run mlflow-server
그러나 이 경우에는, 서버에 연결이 되지 않고 '사이트에 연결할 수 없음'이 뜬다.
왜냐하면 컨테이너의 네트워크가 데스크탑의 네트워크가 서로 분리되어있기 때문이다.
4) 컨테이너 포트포워딩 (==포트 매핑) ***
따라서 컨테이너의 특성상 컨테이너의 포트에 접근하여 mlflow 서버에 접속하기 위해서는,
컨테이너의 네트워크 - 데스크탑의 네트워크를 서로 연결해주는 작업이 필요하다.
아래 코드에서, 5001은 데스크탑이 사용할 포트, 5000은 컨테이너가 사용할 포트임.
$ docker run -p 5001:5000 mlflow-server
5) 데스크탑 포트 주소로 MLflow 실행
위처럼 실행이 완료되고 나서, 이번에는 데스크탑 포트 주소인 'http://0.0.0.0:5001' 을 실행하면
아래와 같이 MLflow 페이지가 실행되는 것을 볼 수 있다!
* 프로그래머스의 마키나락스 MLOPS 강의를 참고하여 작성함
* 추가 자료
- 컨테이너 포트포워딩 개념 상세 설명 https://tttsss77.tistory.com/155
'MLOps' 카테고리의 다른 글
[MLOps] 6. MLflow 로깅 방법 (1) | 2024.04.18 |
---|---|
[MLOps] 5. 도커 Compose로 MLflow 시작하기 (0) | 2024.04.17 |
[MLOps] 3. 실험 관리 (0) | 2024.04.17 |
[MLOps] 2. 도커 사용 실습 - 이미지 build 및 .py파일 재현 (1) | 2024.04.17 |
[MLOps] 1. MLOps 개념 (0) | 2024.04.17 |