Docker + anaconda에서 tensorflow를 움직여보십시오.

소개



새롭게 PC를 구입했으므로 Docker를 사용하여 파이썬 환경 구축하고 CNN을 움직여 보았습니다.
Docker는 거의 초보자이므로 이것을 계기로 공부하고 싶습니다.

이번 흐름으로는
1. Docker에서 공식 anaconda3 이미지 얻기
2. anaconda3 이미지를 기반으로 컨테이너 만들기
3. anaconda3에 tensorflow 도입
4. 브라우저에서 JupyterNoteook 열기
5. Docker의 메모리 늘리기
6. tensorflow를 사용하여 CNN 구축
되어 있습니다.

환경


  • MacOS Catalina 버전 10.15.5
  • Docker 버전 19.03.8

  • 1. Docker에서 공식 anaconda3 이미지 얻기



    anaconda는 데이터 과학을 하는 분들에게 필수 패키지가 갖추어져 있는 오픈 소스 플랫폼입니다.
    이쪽은 공식에서 anaconda3의 이미지가 있으므로 고맙게 사용해 갑니다.

    htps : // 후 b. 도 c r. 코 m / r / 곤치 누우 미오 / 아나 콘다 3 /

    이제 Docker를 시작하고 Anaconda3의 이미지를 가져옵니다.
    % docker pull continuumio/anaconda3
    
    Using default tag: latest
    latest: Pulling from continuumio/anaconda3
    68ced04f60ab: Pull complete
    57047f2400d7: Pull complete
    8b26dd278326: Pull complete
    Digest: sha256:6502693fd278ba962af34c756ed9a9f0c3b6236a62f1e1fecb41f60c3f536d3c
    Status: Downloaded newer image for continuumio/anaconda3:latest
    docker.io/continuumio/anaconda3:latest
    
    
    pull는 Docker 이미지를 검색하는 명령입니다.

    2. anaconda3 이미지를 기반으로 컨테이너 만들기



    그런 다음 컨테이너를 만듭니다.
    % docker run --name anaconda -it -p 8888:8888 -v /Users/xxxx/docker/anaconda:/home continuumio/anaconda3 /bin/bash
    (base) root@xxxx:/# conda list
    

    각 명령, 옵션의 의미는 다음과 같습니다.
  • run : 컨테이너를 생성합니다.
  • --name [名前] : 컨테이너의 이름을 설정합니다.
  • -it : 컨테이너 내에서 작업할 수 있습니다.
  • -p [ホスト側のポート番号:コンテナのポート番号] : 컨테이너 포트를 호스트 측에 바인딩합니다.
  • -v [ホスト側のディレクトリ:コンテナ側のディレクトリ] : 호스트 측 디렉토리를 컨테이너에
    마운트합니다.

  • 3. anaconda3에 tensorflow 도입



    anaconda3에 사전부터 설치되어 있는 패키지를 확인해 보겠습니다.
    base) root@xxxx:/# conda list
    # packages in environment at /opt/conda:
    #
    # Name                    Version                   Build  Channel
    _ipyw_jlab_nb_ext_conf    0.1.0                    py37_0  
    _libgcc_mutex             0.1                        main  
    alabaster                 0.7.12                   py37_0  
    anaconda                  2020.02                  py37_0  
    anaconda-client           1.7.2                    py37_0  
    anaconda-navigator        1.9.12                   py37_0  
    anaconda-project          0.8.4                      py_0  
    argh                      0.26.2                   py37_0  
    asn1crypto                1.3.0                    py37_0  
    astroid                   2.3.3                    py37_0  
    astropy                   4.0              py37h7b6447c_0  
    atomicwrites              1.3.0                    py37_1  
    attrs                     19.3.0                     py_0  
    .
    .
    .
    yaml                      0.1.7                had09818_2  
    yapf                      0.28.0                     py_0  
    zeromq                    4.3.1                he6710b0_3  
    zict                      1.0.0                      py_0  
    zipp                      2.2.0                      py_0  
    zlib                      1.2.11               h7b6447c_3  
    zstd                      1.3.7                h0b5b093_0  
    

    anaconda3 컨테이너에 있기 때문에 docker 명령을 사용할 수 없습니다.
    anaconda terminal에서 사용할 수 있는 패키지conda list를 봅니다.

    anaconda3는 tensorflow가 처음부터 설치되지 않았기 때문에 conda installtensorflow 및 주변 패키지를 설치합니다.
    base) root@xxxx:/# conda install tensorflow
    

    4. JupyterNotebook을 브라우저에서 열기



    대학 시대에 애용했던 JupyterNotebook을 브라우저에서 열 수 있도록 합니다.
    base) root@xxxx:/# jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root
    .
    .
    .
    To access the notebook, open this file in a browser:
            file:///root/.local/share/jupyter/runtime/nbserver-12-open.html
        Or copy and paste one of these URLs:
            http://81127b992594:8888/?token=22ab4d7b42e6629eb76dad08af9c8e6b1d5b59e0f0050f73
         or http://127.0.0.1:8888/?token=22ab4d7b42e6629eb76dad08af9c8e6b1d5b59e0f0050f73
    

    후행 URL을 브라우저에 입력하면 JupyterNotebook이 시작됩니다.



    5. Docker의 메모리 늘리기



    CNN을 구축하기 전에 Docker는 기본적으로 메모리를 2G까지만 사용할 수 있으므로 CNN에서 학습하려고하면 오버플로합니다. 그래서 7G까지 사용할 수 있도록 설정을 변경합니다.

    1. 바탕 화면 상단의 Docker 아이콘을 클릭합니다.
    2. Preference를 클릭
    3. Resources 탭을 클릭
    4. Memory를 7G로 설정


    6. tensorflow를 사용하여 CNN 구축



    마지막으로 CNN을 구축하겠습니다. 데이터 세트는 클래식한 CIFAR10을 다운로드하고, 3층의 컨벌루션 레이어, 최적화는 adam법, 손실 함수는 크로스 엔트로피 오차를 사용하는 매우 간단한 구축으로 갑니다.


    tensorflow를 문제없이 가져올 수 있고, 메모리도 오버플로우하지 않았기 때문에 이것으로 환경 구축 종료입니다!

    끝에



    Docker를 가벼운 마음으로 만져 보았습니다만, 안쪽이 너무 깊어서 늪에 빠질 것 같았습니다 ...
    anaconda3에 tensorflow를 도입하고 JupyterNotebook을 여는, 아마도 Docker 경험자라면 간단하게 상당히 난항했습니다. Docker는 해 두고 손해가 없기 때문에 적극적으로 사용해 가고 싶습니다.
    우선 tensorflow를 움직일 수 있는 환경을 구축할 수 있었기 때문에, 앞으로 여러가지 심층 학습에 대해 이 환경에서 시험해 나갈 생각입니다.

    좋은 웹페이지 즐겨찾기