하나의 서버에서 다른 의존성을 가진 프로젝트를 생성하고 진행하기 위해, 혹은 cuda 버전이 다른 프로젝트를 효율적으로 진행하기 위해 Docker의 Container를 사용할 수 있음

Docker Container를 생성하기 위해 사용했던 코드 모음
사용하고 싶은 gpu와 컨테이너에 할당된 gpu가 일치 하는지, 제대로 할당되었는지 확인해볼 수 있는 코드
nvidia-smi --query-gpu=index,name,uuid --format=csv
내 서버 아이디로 로그인 하는 코드
sudo -i -u [서버아이디]
docker image를 통한 컨테이너 생성
docker run -it --gpus '"할당할 GPU 번호"' --name [컨테이너명] -v /home/je:/[마운트할경로] [도커 이미지 레포지토리:태그] /bin/bash
컨테이터 실행 시키는 코드
docker start -ai [컨테이너명]
현재 모든 컨테이너의 상태 확인 가능
docker ps -a
컨테이너에서 종료하지 않고 빠져나오기만 함
Ctrl + P, Ctrl + Q
위 처럼 빠져나오기만 했을 때 다시 접근하는 방법
docker attach [컨테이너명]
docker 컨테이너 생성 후 환경 설정
apt update && apt install -y python3 python3-pippip install --upgrade pippip install -r requirements.txt bash
python3
import torch
print(torch.__version__, torch.cuda.is_available())
-> torch 확인
import transformers
print(transformers.__version__)
-> transformer 확인
import deepspeed
print(deepspeed.__version__)
-> deepspeed 확인
pip list
-> pip list 전체 확인
pip check
-> pip 리스트 중 문제가 있는 라이브러리 확인
python3 -c "import torch; print(torch.__version__, torch.cuda.is_available(), torch.cuda.get_device_name(0))"
-> cuda가 잘 붙었는지 확인
Docker Hub로 Image push / pull
mv /home/je/MobileVLM/checkpoints/* /data/MobileVLM-V2/docker logindocker tag [이미지이름:태그] [도커허브ID/레포지토리:태그]docker tag [이미지이름:태그] [도커허브ID/레포지토리:태그]docker pull [도커허브ID/레포지토리:태그]docker run -it --gpus all [도커허브ID/레포지토리:태그] /bin/bash