Ubuntu + pytorch + cuda (선택 사항)
이 이미지를 사용하려면 Docker Engine이 설치되어 있어야합니다. Docker Engine 설정 지침은 Docker 웹 사이트에서 확인할 수 있습니다.
CUDA 호환 NVIDIA 그래픽 카드가있는 경우 CUDA 지원 버전의 Pytorch 이미지를 사용하여 하드웨어 가속을 활성화 할 수 있습니다. 우분투 리눅스에서만 테스트했습니다.
먼저 적절한 NVIDIA 드라이버를 설치해야합니다. 우분투에서, 나는 당신이 올바른 드라이버를 설정하는 가장 쉬운 방법은 공식 NVIDIA CUDA 다운로드 페이지를 통해 사용하려는 이미지만큼 CUDA 버전을 설치하는 것입니다. 예를 들어, cuda-10.1 이미지를 사용하려는 경우 CUDA 10.1 또는 CUDA 10.2를 설정하면 올바른 그래픽 드라이버가 있는지 확인해야합니다.
Docker 컨테이너 내에서 GPU 장치 액세스를 가능하게하려면 NVIDIA 컨테이너 툴킷을 설치해야합니다. 이것은 nvidia/nvidia-docker에서 찾을 수 있습니다.
미리 빌드 이미지는 Anibali/Pytorch라는 이름으로 Docker Hub에서 사용할 수 있습니다.
예를 들어, Pytorch 2.0.1 및 Cuda 11.8을 사용하여 이미지를 가져올 수 있습니다.
$ docker pull anibali/pytorch:2.0.1-cuda11.8 python3 명령을 사용하여 컨테이너 내부에서 Pytorch 프로그램을 실행할 수 있습니다. 예를 들어, EntryPoint main.py 가있는 Pytorch 프로젝트가 포함 된 디렉토리에있는 경우 다음 명령으로 실행할 수 있습니다.
docker run --rm -it --init
--gpus=all
--ipc=host
--user= " $( id -u ) : $( id -g ) "
--volume= " $PWD :/app "
anibali/pytorch python3 main.py다음은 위에 표시된 Docker 명령 줄 옵션에 대한 설명입니다.
--gpus=all : cuda를 사용하는 경우 필요합니다. 그렇지 않으면 선택 사항입니다. 그래픽 카드를 호스트에서 컨테이너로 전달합니다. 이 옵션을 사용하여 노출 된 그래픽 카드를보다 정확하게 제어 할 수 있습니다 (https://github.com/nvidia/nvidia-docker 문서 참조).--ipc=host : https://github.com/pytorch/pytorch#docker-image에 설명 된대로 멀티 프로세싱을 사용하는 경우 필요합니다.--user="$(id -u):$(id -g)" : 사용자를 컨테이너 내부에 설정하여 사용자 및 그룹 ID와 일치합니다. 선택 사항이지만 소유권이 올바른 파일을 작성하는 데 유용합니다.--volume="$PWD:/app" : 현재 작업 디렉토리를 컨테이너에 장착합니다. 컨테이너 내부의 기본 작업 디렉토리는 /app 입니다. 선택 과목.Linux 호스트에서 실행중인 경우 Docker 컨테이너 내부에서 코드를 실행하여 Host X Server를 사용하여 그래픽을 표시 할 수 있습니다 (예 : OpenCV의 Imshow를 사용할 수 있음). 여기서 우리는이 작업을 수행하는 빠른 (그러나 불안한) 방법을 설명합니다. GUIS 및 DOCKER에 대한보다 포괄적 인 가이드는 http://wiki.ros.org/docker/tutorials/gui를 확인하십시오.
호스트 실행에서 :
sudo xhost +local:root sudo xhost -local:root 로 나중에이 액세스 권한을 취소 할 수 있습니다. 이제 컨테이너를 실행하면 옵션 -e "DISPLAY" 및 --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" 추가하십시오. 이렇게하면 통신 용 X11 소켓과 디스플레이 ID가있는 컨테이너가 제공됩니다. 예는 다음과 같습니다.
docker run --rm -it --init
--gpus=all
-e " DISPLAY " --volume= " /tmp/.X11-unix:/tmp/.X11-unix:rw "
anibali/pytorch python3 -c " import tkinter; tkinter.Tk().mainloop() "이미지에 추가 종속성을 추가하는 권장되는 방법은이 프로젝트의 Pytorch 이미지 중 하나를 기본으로 사용하여 자신만의 dockerfile을 만드는 것입니다.
예를 들어, OpenCV가 필요하고 Pytorch 2.0.1과 함께 일하고 싶다고 가정 해 봅시다. anibali/pytorch:2.0.1-cuda11.8-ubuntu22.04 기본 이미지로 사용하여 자신만의 dockerfile을 만들 수 있으며 추가 빌드 단계를 사용하여 OpenCV를 설치할 수 있습니다.
FROM anibali/pytorch:2.0.1-cuda11.8-ubuntu22.04
# Set up time zone.
ENV TZ=UTC
RUN sudo ln -snf /usr/share/zoneinfo/$TZ /etc/localtime
# Install system libraries required by OpenCV.
RUN sudo apt-get update
&& sudo apt-get install -y libgl1-mesa-glx libgtk2.0-0 libsm6 libxext6
&& sudo rm -rf /var/lib/apt/lists/*
# Install OpenCV from PyPI.
RUN pip install opencv-python==4.5.1.48 dockerfiles/ directory의 dockerfiles는 manager.py 스크립트 images.yml 의해 자동으로 생성됩니다 templates/
다음은 새로운 Dockerfile을 만드는 방법을 보여주는 워크 플로입니다.
templates/ 기존 템플릿 파일이 적절하지 않은 경우.images.yml 에서 새 항목을 만듭니다 (예제는 기존 항목 참조).python manager.py 실행하여 Dockerfile을 생성하십시오. dockerfile이 포함 된 새로운 디렉토리가 dockerfiles/ 로 만들어집니다.