원래는 데스크탑 내에서 아나콘다를 설치해서 그 아나콘다 안에서 가상환경을 만들어 환경을 구축하는 것이 일반적이다. 그러나 내가 데스크탑을 모두 컨트롤할 수 있는 권한이 없어서 이런저런 프로그램을 설치하는 게 힘들었다.
Docker라는 시스템을 이 때 이용하면 좋다는 것을 알게 되어서 환경 세팅하는 과정을 정리한다.
Docker에 관해서는 많은 유튜브 영상에서 소개된 바가 있다.
https://youtu.be/LXJhA3VWXFA?si=XaN2mk2GD-CxyaAg
https://youtu.be/pTFZFxd4hOI?si=dpdiY_ip3Vz7G5nd
물론 이런 영상을 보면서 차근차근 따라가는 게 좋긴 하지만 성질이 급한 사람들에게는 어쩔 수가 없다.
지금도 공부하면서 하는 중이지만 일단 업데이트하는 내용을 기반으로 작성한다.
0. Docker
WSL 시스템을 접해본 사람이라면 가상화에 대해서 어느정도 아는 상태일 것이다.
같은 컴퓨터 안에서 개발자들은 다양한 환경에서 서비스를 테스트해야 한다. 그렇다고 해서 컴퓨터를 여러 대 만들어서 테스트를 할 수 없으니 가상환경을 만들어서 사용하게 된다.
여기에서 가상환경을 효율적으로 구축할 수 있게 만든 시스템이 도커다.
도커는 이미지라는 개념이 있는데 쉽게 말하면 환경을 만들어 놓은 압축파일 같은 것이다. 이 압축파일을 다운받아서 사용할 수 있게 하는 것이 컨테이너다. 컨테이너 안에서 코드도 돌리고, 그 이미지 안에서 또 프로그램을 설치하면서 바꿀 수 있다. 그러나 컨테이너를 멈추면 안에서 테스트했던 것이 다 날아갈 수 있으므로 다시 이미지로 commit해서 사용하게 된다.
이런 방식을 활용하면 내가 세팅해놓은 환경을 지속적으로 사용하면서도 조금씩 바꿔쓸 수 있다. 또한 다른 사람에게 내 코드를 테스트하게 할 때도 환경을 복사해서 사용하는 것이므로 적어도 환경 때문에 오류가 날 가능성이 없어진다.
사람마다 docker를 활용하고자 하는 이유가 다를 것이다.
기본적으로 나는 딥러닝 환경 세팅을 목적으로 이 글을 작성한다. 특히나 나는 딥러닝 라이브러리 중에서도 JAX에 포커스를 맞춘다.
사용 컴퓨터 : Ubuntu 22.04, GPU 사용 가능
docker와 docker-nvidia를 설치를 미리 해놓아야 하는데 이에 대해 잘 써진 글이 많으므로 그걸 참고하면 될 것이다. (나는 내가 docker, docker-nvidia를 직접 설치할 수 없어서 부탁한 상태라 설치 과정은 모른다.)
1. Docker image 사용
보통은 docker를 시작할 때 어떻게 build를 하고 Dockerfile을 만드는 것부터 시작한다.
그러나 딥러닝 환경 세팅해본 사람이라면 알겠지만 NVIDIA graphic driver 부터 설치해야할 게 한두 개가 아니다. 그래서 나는 이미 google과 nvidia가 배포한 도커 이미지를 pull해서 사용하고 싶었다.
- google에서 배포한 환경은 다음과 같다.
https://cloud.google.com/deep-learning-containers/docs/choosing-container?hl=ko
- nvidia에서 JAX를 사용하기 위해 배포한 이미지
https://docs.nvidia.com/deeplearning/frameworks/jax-release-notes/running.html
- CUDA만 세팅된 이미지
다음과 같이 아예 세팅이 다 되어있는 환경이 필요할 수도 있지만, 본인은 CUDA 세팅만 필요하다 하는 분은 다음 링크를 참고하면 된다.
https://hub.docker.com/r/nvidia/cuda/tags
docker pull us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu124.py310
docker pull nvcr.io/nvidia/jax:24.10-py3
docker image ls
나는 기존에 다운받은 image들이 있어서 다음과 같이 여러 개의 이미지가 있지만 위와 같이 했으면
us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu124.py310
nvcr.io/nvidia/jax:24.10-py3
적어도 이 두 가지 항목이 있어야 한다.
2. Docker container 실행
실행 커맨드는 간단하지만 옵션이 많아서 나중에는 옵션에 대해서 자세히 공부를 해야한다.
docker run -it deeplearning-cu124-py310:0.1
여기서 나는 위의 us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu124.py310 이미지를 수정해서 commit함으로써 deeplearning-cu124-py310 (tag 0.1)를 만들었는데 위의 다운받은 이미지를 실행하려면 아래와 같이 작성한다.
sudo docker run --gpus all -it us-docker.pkg.dev/deeplearning-platform-release/gcr.io/base-cu124.py310
3. (Optional) VS Code 설정
비록 Optional이지만 나처럼 코드를 작성할 때 VSCODE를 사용하는 사람에게는 필요한 세팅이 있다.
다음과 같이 docker extension을 설치하면 vscode 왼쪽 바에 docker 아이콘이 생성되고 내가 가지고 있는 images와 containers를 확인할 수 있다. 여기서 containers 중에 마우스 우클릭을 하면 "Attach Visual Studio Code"가 있다. 이를 클릭하면 새로운 VSCODE 창이 뜨면서 내가 실행한 컨테이너 내부에서 편하게 작업할 수 있게 된다.
4. 이후 다룰 내용
- Anaconda 설치 및 yaml 파일로 환경 import하기
- 이를 commit하기
- 코드 작성해서 실행해보기
'프로그래밍 Programming' 카테고리의 다른 글
[에러기록] CUDA, cuDNN 인식이 안 되는 경우 (0) | 2025.01.20 |
---|---|
[Ubuntu] 유저 생성 - 원하는 UID, GID 지정 (0) | 2024.12.20 |
[도커] docker-nvidia 설치 확인 (0) | 2024.12.04 |
[에러기록] libcuda.so is not in found but libcuda.so.1 (0) | 2024.11.08 |
[WSL] WSL 2 설치 및 설정 (0) | 2024.09.03 |