Sacred와 Omniboard를 활용한 실험 및 로그 모니터링



Omniboard

  • Omniboard는 머신러닝 실험 관리 도구인 Sacred를 위한 웹 대시보드
  • MongoDB에 연결해 Sacred의 실험, Metric, 로그를 시각화해줌
  • React, Node.js, Express와 Bootstrap을 사용해 만들어짐
  • 특징
    • Experiment management
      • 모든 실험을 Tabular 형태로 저장
      • 특정 컬럼을 show / hide 가능
      • Rolled up metric value를 컬럼으로 추가 가능(minimum validation loss, maximum training accuracy 등)
      • 각종 실험에 Tag나 Note를 작성할 수 있음
      • Metric column을 제외한 모든 컬럼으로 필터 가능
    • Experiment Drill Down
      • Metric Graph를 볼 수 있음
      • Console Output을 보여줌
      • 모든 런타임 라이브러리 dependencies를 보여줌
      • 소스 파일을 보거나 다운로드 가능
      • Artifacts(인공 산물? 파일물?)을 보거나 다운로드 가능
      • 호스트의 하드웨어 스펙을 볼 수 있음
      • Git hash/version control 정보를 볼 수 있음

스크린샷

  • Tabular 형태의 데이터
    • Tags, 메모, 각종 파라미터 저장됨
  • Metric Plot
  • Metric Column 관리
  • Output Log
  • Experiment Details
  • Host Info

설치

  • MongoDB 설치
    • Mac

        brew install mongodb
      
    • Linux(Ubuntu 16.04)

        sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
        echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
        sudo apt-get update
        sudo apt-get install -y mongodb-org
        echo "mongodb-org hold" | sudo dpkg --set-selections
        echo "mongodb-org-server hold" | sudo dpkg --set-selections
        echo "mongodb-org-shell hold" | sudo dpkg --set-selections
        echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
        echo "mongodb-org-tools hold" | sudo dpkg --set-selections
      
  • MongoDB 실행
    • Mac

        brew services start mongodb
      
    • Linux(Ubuntu 16.04)

        sudo service mongod start
      
  • pymongo 설치

      pip3 install pymongo
    
  • omniboard 설치
    • npm이 설치되어 있어야 함(Node.js v8 이후 버전)
      npm install -g omniboard
    
  • Docker나 Docker Composer를 사용하는 방법은 공식 문서 참조!

Omniboard 실행

  • omniboard -m hostname:port:database -u username:password:secret 로 실행

      omniboard -m localhost:27017:sacred
    
  • Advanced connection properties를 셋팅하려면 --mu 옵션을 사용하면 됨
      omniboard --mu "mongodb://<username>:<password>@<host>/<database>[?options]"
    
  • Omniboard 대시보드 실행
    • Omniboard is listening on port 9000! 라는 멘트가 나오면 웹브라우저에서 localhost:9000을 입력하면 대시보드가 실행됨
    • 처음엔 실험을 하지 않아서 아무 창이 뜨지 않으나, 실험을 하면 하나씩 추가됨

Sacred Experiment 실행

  • 머신러닝 실험을 도와줄 Python Sacred 소개의 예제에 있던 rf, svc 실험을 FileStorageObserver가 아닌 MongoObserver로 변경해 다시 실행함

      from sacred.observers import MongoObserver
    
      ex = Experiment('svc')
      ex.observers.append(MongoObserver.create(url='localhost:27017', db_name='sacred'))
    
  • 그 후 Metric Plot을 그리기 위해 Sacred Example Code Pytorch를 Clone 후 실행함

      git clone https://github.com/maartjeth/sacred-example-pytorch.git
      cd sacred-example-pytorch
      # train_nn.py의 DATABASE_NAME 변수를 sacred로 수정한 후 실행
      python3 train_nn.py
    
  • 대시보드로 이동(localhost:9000)
    • 실험 이름, Tags, 메모 등이 보임
      • Tags나 Notes는 그냥 입력하면 됨
    • 우측엔 Result나 각종 파라미터가 저장됨
      • 빈칸인 공간은 해당 실험이 그 파라미터를 사용하지 않아서!
  • 맨 좌측의 파란색 삼각형 클릭하면 자세한 정보가 나옴
    • Metrics Plot을 보면 Steps이 지나며 loss가 감소하는 것을 볼 수 있음
  • Captured Out
    • Print한 로그가 나타나는 공간
  • Experiment Details
    • 실험 디테일 정보가 저장되는 곳
  • Host Info
    • OS, CPU, Python version 등을 볼 수 있음
  • Config
    • Config 설정값을 볼 수 있음

활용 방안

  • 사용하고 있는 머신과 MongoDB를 연결해, 다양한 실험을 돌리고 Omniboard로 결과를 모니터링할 수 있음
  • 이 문서는 local에 설치했지만, Docker를 사용해 설치하면 더 편리할 것 같음

Reference


카일스쿨 유튜브 채널을 만들었습니다. 데이터 사이언스, 성장, 리더십, BigQuery 등을 이야기할 예정이니, 관심 있으시면 구독 부탁드립니다 :)

PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다

이 글이 도움이 되셨거나 다양한 의견이 있다면 댓글 부탁드립니다 :)

Buy me a coffeeBuy me a coffee





© 2017. by Seongyun Byeon

Powered by zzsza