Post

[Docker]컨테이너 내부에 GCMC 설치하기 + nvidia docker

현장실습에서 GCMC(Graph Convolutional Matrix Completion)를 R&D 주제로 선정해, 이를 docker 환경에서 실행하는 것을 목표로 한 적이 있다. 작업을 수행하기 위해서는 nvidia-docker로 GPU를 할당해야 했는데 그때의 수행 과정이다. 결국 내 개인 노트북으로 해봐도, 회사 노트북을 바꿔봐도 해결되지 않아 colab으로 분석을 수행했다….

컨테이너 생성 후 Jupyter 다운로드

컨테이너 내부에서 jupyter notebook 으로 작업을 수행하기 위해 jupyter를 설치해주었다.

  1. centos/python-36-centos7 이미지 설치 후 컨테이너 생성
  2. docker run -it -p 8888:8888 –name jp centos/python-36-centos7 bash
  3. pip install –upgrade pip
  4. pip install jupyter
  5. jupyter notebook –generate-config
  6. ipython>from notebook.auth import passwd>passwd()로 비밀번호 설정 후 나오는 값 복사해두고,

    https://growingdevl.tistory.com/4 https://sosomemo.tistory.com/57

    두 링크를 따라 설정하면 jupyter notebook 실행이 가능하다.

GCMC 다운로드

  1. Git 설치
    1
    2
    
      apt update
      apt install -y git
    
  2. container에서 root 권한으로 실행 (u 옵션 붙여 실행)
    1
    
    i.e. docker exec -itu 0 [컨테이너 이름] /bin/bash)
    
  3. pip 업그레이드
    1
    
      pip install --upgrade pip 
    
  4. git clone으로 gcmc clone (readme파일 참고)
  5. gcmc폴더에 접근하여 requirement 1 설치 (readme파일 참고)
  6. requirement2의 torch-scatter는 직접 설치해야 함 https://github.com/rusty1s/pytorch_scatter/releases/tag/1.1.1 에서 tar.gz 소스코드 다운 후 아래 코드 입력하여 로컬 파일을 컨테이너 내부에 저장
    1
    
      docker cp 저장할 파일 컨테이너명:저장할 경로 
    
  7. tar xvzf ~~.tar.gz(파일명) 으로 압축 해제 -여기 먼저 하고 requirments 3줄 복사하면 아래 과정 생략해도 됨.

  8. cd pytorch-scatter로 디렉토리 접근 후
    1
    2
    3
    4
    5
    6
    7
    8
    
    pip install pytest-runne
    python setup.py install 
    + gcc버전 업데이트 (아래 코드 한줄씩 수행, 컨테이너 실행 시-itu로 들어가야 함)
    yum install centos-release-scl
    yum install devtoolset-7-gcc*
    scl enable devtoolset-7 bash
    which gcc
    gcc --version
    

    이어서 requirement 2, 3 설치

https://github.com/hhh920406/gcmc-2/tree/master/docker dockfile을 이용한 설치 방법도 있으나 중간에서 막힘

Apt-get 설치

1
2
curl https://raw.githubusercontent.com/dvershinin/apt-get-centos/master/apt-get.sh -o /usr/local/bin/apt-get
chmod 0755 /usr/local/bin/apt-get

Nano 설치

1
2
apt-get update
apt-get install nano

NVIDIA docker (GPU 사용)

WLS2 설치 https://www.44bits.io/ko/post/wsl2-install-and-basic-usage#wsl2%EC%97%90%EC%84%9C-%EB%8F%84%EC%BB%A4-%EB%8D%B0%EC%8A%A4%ED%81%AC%ED%83%91docker-desktop-for-windows%EC%9C%BC%EB%A1%9C-%EC%84%9C%EB%B2%84-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0

1
2
3
4
5
6
docker run --name ms22 -it -p 8000:8888 --gpus all mstar228/mygcmc:version1


apt-get install -y nvidia-container-runtime

apt install nvidia-cuda-toolkit

참고 https://ykarma1996.tistory.com/92 https://linuxconfig.org/how-to-install-nvidia-cuda-toolkit-on-centos-7-linux -centos7 cuda-toolkit 설치

++ Conda 가상환경에서도 시도해 보았다.

anaconda 설치 후 anaconda 프롬프트 내에서 진행 (Link1,Link2) 로컬에 cuda, cudnn 설치 후 확인 (Link)

gcmc 설치

conda install git 으로 git 설치 후 git clone torch 1.0.0의 경우 pip install torch==1.0.0 torchvision==0.2.1 -f https://download.pytorch.org/whl/torch_stable.html 로 설치

공식문서(Link)

requirement2의 torch-scatter는 직접 설치해야 함 https://github.com/rusty1s/pytorch_scatter/releases/tag/1.1.1 에서 tar.gz 소스코드 다운 후 docker cp 저장할 파일 컨테이너명:저장할 경로 i.e. docker cp alldb.dmp oracle10g:/alldb.dm 입력하여 로컬 파일을 컨테이너 내부에 저장 후 tar xvzf ~~.tar.gz(파일명) 으로 압축 해제 cd pytorch-scatter~로 디렉토리 접근 후 pip install pytest-runner, python setup.py install

-> 다른 방법(Link)

다음과 같이 에러가 뜨는 경우 해당 링크에 접속해 C++ 관련 빌드 설치 error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”:

++ gcmc 컨테이너 이미지화 하기

1
2
3
4
5
6
pytorch 이미지 pull
컨테이너 생성(포트 연결)
apt-get update
apt-get install build-essential
apt-get install python-dev 

오류 모음

오류: The requested image’s platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested

해결: – platform linux/amd64 명령어 안에 넣어주기 https://github.com/google/cadvisor/issues/2763

오류: dkms, opencl-filesystem, ocl-icd가 없다.

해결: $ yum install epel-release https://wonjaek36.github.io/2021/01/18/Install-Cuda.html https://github.com/pyg-team/pytorch_geometric/issues/478 -> torch_scatter_cuda

진짜 어케 했냐 이거….. colab으로 수행했던 최종 결과는 추후에 정리해서 올릴 예정

This post is licensed under CC BY 4.0 by the author.