본문 바로가기
MLOps

딥러닝 모델 컨테이너 띄우기(wt. GPU)

by 볼록티 2022. 3. 31.
728x90
반응형

 

GPU를 활용해 학습을 하는 딥러닝 모델(BERT)을 컨테이너를 띄워 컨테이너 내에서 학습을 할 수 있는지 확인하는 것이 목표이다.

 

환경)

Ubuntu 20.04

nvidia driver: 470

docker: 20.10.14

nvidia-docker: 20.10.14

 

 

1. 베이스 이미지 불러오기

 

 아무것도 없는 컨테이너에서 pip, python, anaconda, pytorch ... 등등 모든 것을 새로 빌드하는건 많은 리소스를 요구한다. 

 도커 허브에서 이미지를 pull 하는 방법으로 과정을 대폭 간소화한다.

 

1. 별이 가장 많은 miniconda3 이미지를 불러온다.

docker pull continuumio/miniconda3

 편리하게도 위의 이미지에 컨테이너는 python은 물론 pip, git 등이 이미 설치되어 있다. 주피터 노트북 실행 명령어도 나와있다.

 

2. 불러온 이미지를 커스터마이징 할 새로운 이미지로 저장한다.

  * 불러온 이미지를 gpu 사용환경으로 이름이 kobert인 컨테이너로  띄운다.

docker run --name kobert --gpus all continuumio/miniconda3 nvidia-smi

 

3. kobert 컨테이너를 이미지로 변경한다.

 

   *kobert 컨테이너를 kobert라는 레포에 태그가 v1인 이미지를 생성하였다.

 

 

 

2. 이미지를 활용해 컨테이너 띄우기


 이제 kobert 레포지토리의 태그가 v1인 이미지를 가지고 학습환경을 구성해본다.

 

1.  아래의 명령어로 kobert 이미지를 실행한다.

docker run -itd -v /home/noomeong/kobert_env1:/kobert_env1 --name kobert_env1 --restart=no --gpus all kobert:v1 bash

-it => interactive, tty 로 터미널에 접속

-d => 백그라운드 실행

-v /home/noomeong/kobert_env1:/kobert_env1 => volumne 마운트 경로 설정

--name kobert_env1 => kobert env1 이름 지정

--restart=always => 컨테이너 자동으로 띄움.

--gpus all => GPU 사용 설정

kobert:v1 => kobet 레포지토리, v1 태그의 이미지 실행

bash => 터미널 bash입력창을 실행(아무 명령어도 입력하지 않으면 컨테이너가 종료되고 재시동 always옵션때문에 계속된 restarting 문제를 겪게됨.)

 

2. 컨테이너 kobert_env1에 진입하여 kobert 사용을 위한 환경을 구축한다.

 

docker attach kobert_env1

 

*원활히 진행하기 위해 아래의 명령어 먼저 설치한다.

 

apt-get update #패키지를 찾을 수 없는 경우 가장 먼저 이 명령어를 실행한다.

apt-get install gcc #kobert설치중 gluonnlp 패키지 설치시 gcc가 필요한데, 얘를 따로 설치해주면 편리하다.

*kobert git에 있는 패키지를 설치한다.

pip install git+https://git@github.com/SKTBrain/KoBERT.git@master

*설치가 모두 끝나면 파이썬에 들어가 kobert를 임포트 해본다.

$python

#python 접속 후.

import kobert

 

 

 

3. 컨테이너 내에서 학습 하기

 

 Kobert 분류기 학습에 필요한 파일은 컨테이너의 마운트 경로인  /home/noomeong/kobert_env1 에 수동으로 저장해주면 컨테이너의 kobert_env1에서도 볼 수 있다.

 

 학습데이터와 학습파일만 로컬 경로  /home/noomeong/kobert_env1 에 넣어준 후, 학습파일을 실행시켜 학습을 진행한 후 모델 파일을 산출해본다.

 

 Kobert 분류기 활용은 이 링크를 참조한다.

 

 

 

 

 

728x90
반응형

'MLOps' 카테고리의 다른 글

MLOps note(1)  (0) 2023.10.12
MLOps의 필요성..  (0) 2022.06.15
nvidia-docker 설치 및 컨테이너 띄우기 with GPU  (0) 2022.03.31
GPU 사용 환경 세팅  (0) 2022.03.26
MLOps를 위한 잡동사니  (0) 2022.03.26

댓글