papermill과 commuter로 JupyterNotebook 중심의 워크플로우 실현

소개


  • JupyterNotebook만으로 전처리도 모델 개발도 전부 하고 싶다-(특히 PoC 페이즈라고), 하지만 관리 어떻게 할까-라고 생각하고 있던 곳에 아래 기사(및 그 관련 기사)를 읽고,papermill와 commuter 라는 좋은 느낌의 OSS를 알았으므로 사용해 보았습니다.
    Beyond Interactive: Notebook Innovation at Netflix

  • 실현할 수 있는 일



  • 각 데이터 사이언티스트/엔지니어가 각자의 로컬 환경에서 JupyterNotebook에서 전처리나 모델 개발 노트북을 만들어 실행하지만, 실행 결과의 공유·관리가 귀찮다
  • -> papermill에서 실행 결과를 토한 노트북을 S3에 그대로 들 수 있습니다.


  • 검증의 노트북을, 파라미터를 여러가지 바꾸어 실행하고 싶지만, 시리얼로 실행해 가는 것은 귀찮아(노트북 복제해 단번에 흘려도 좋지만 번잡해진다)
  • -> papermill에서 노트북을 외부에서 매개 변수를 제공하여 병렬로 실행할 수 있습니다.


  • papermill에 의해 S3에 노트북이 모여 있지만 확인하고 싶을 때 일부러 다운로드하는 것은 귀찮습니다.
  • -> commuter에서 S3의 노트북을 브라우저에서 직접 확인할 수 있습니다


  • 참고 링크



    papermill

    papermill is a tool for parameterizing, executing, and analyzing Jupyter Notebooks.

    커뮤터

    commuter reads notebooks from a local directory or Amazon S3

    이용 절차



    평소대로 노트북으로 코딩


  • 평소대로 노트북으로 코딩



  • papermill로 노트북 실행


  • papermill 설치

  • 설치 명령
    $ pip install papermill
    
  • 외부로부터 파라미터를 주어 실행하고 싶은 경우는, 그 파라미터를 쓰고 있는 셀에, "parameters"태그를 친다

  • 화면 조작
    View -> Cell Toorbar -> Tags -> "parameters"
    


  • papermill을 사용하여 외부에서 노트북을 실행합니다.

    노트북 실행 명령
    papermill sample01.ipynb s3://sagemaker-bucket001/outputs/sample01.ipynb -k python3 -p a 4
    



    commuter로 노트북 확인


  • commuter 환경을 docker로 구축

  • Dockerfile
    FROM node:latest
    
    # run installation/ build commands.
    RUN npm -g config set user root & npm i --quiet --no-progress --unsafe-perm -g @nteract/commuter
    
    ENV HOST=0.0.0.0
    ENV PORT=4000
    
    EXPOSE 4000
    
    CMD npm run start
    

    docker-compose.yml
    version: '3'
    services:
      commuter:
        build:
          context: '.'
          dockerfile: 'Dockerfile'
        ports:
          - "14000:4000"
        network_mode: "bridge"
        environment:
          - NODE_ENV=production
          - HOST=0.0.0.0
          - COMMUTER_STORAGE_BACKEND=s3
          - COMMUTER_DISCOVERY_BACKEND=none
          - COMMUTER_PORT=4000
          # - COMMUTER_LOCAL_STORAGE_BASEDIRECTORY=/app
          # - COMMUTER_ES_HOST
          - COMMUTER_S3_BASE_PREFIX=outputs
          - COMMUTER_S3_PATH_DELIMITER="/"
          - COMMUTER_BUCKET=sagemaker-bucket001
          - COMMUTER_S3_KEY=<aws_access_key_id>
          - COMMUTER_S3_SECRET=<aws_secret_access_key>
          # - COMMUTER_S3_ENDPOINT
    #    volumes: 
    #      - /opt/commuter:/app/commuter
        restart: always
        command: commuter
    

    시작 명령
    $ docker-compose up
    
  • S3의 노트북에 브라우저에서 액세스





  • 결론


  • 이것으로 최소한, S3에 노트북 실행 결과가 모이므로, 나중에 쫓을 수 있게 될까.
  • 좋은 웹페이지 즐겨찾기