[Jupyter Notebook] 메모리 사용량 확인하는 방법 (jupyter-resource-usage, memory_profiler)

반응형

 

Jupyter Logo

Contents

    1. 배경

    주피터 노트북을 사용하다 보면, 특히 머신러닝/딥러닝을 하다 보면 크기가 매우 큰 데이터를 다루게 됩니다. 이때, 여러 노트북을 켜놓아서 여러 노트북들이 메모리를 총 얼마 정도 쓰고 있는지, 그리고 개별 노트북은 메모리를 얼마 정도 쓰고 있는지 알고 싶을 때가 있습니다. 그 방법을 알아보겠습니다.

     

    2. 전체 노트북 메모리

    1) 설치

    # pip를 이용한 설치
    pip install jupyter-resource-usage
    
    # 주피터 노트북에서 설치하는 경우 pip
    !pip install jupyter-resource-usage
    
    # conda를 이용한 설치
    conda install -c conda-forge jupyter-resource-usage

    주피터 노트북에서 설치하는 경우는 아래 사진처럼 앞에 느낌표를 붙이고 pip install을 하면 됩니다. 이렇게 설치한 뒤에, 주피터 노트북을 아예 종료했다가 재시작해야 적용됩니다.

    주피터 노트북에서 설치

     

    * 해당 라이브러리 깃허브

     

    GitHub - jupyter-server/jupyter-resource-usage: Jupyter Notebook Extension for monitoring your own Resource Usage

    Jupyter Notebook Extension for monitoring your own Resource Usage - GitHub - jupyter-server/jupyter-resource-usage: Jupyter Notebook Extension for monitoring your own Resource Usage

    github.com

     

    2) 결과 화면

    주피터 노트북을 껐다가 켜면, 현재 켜져 있는 모든 노트북이 사용하고 있는 메모리가 아래 빨간 박스에 나오게 됩니다.

    메모리 사용량 확인

     

    켜져 있는 모든 노트북 확인은 홈에서 Running에 들어가면 아래 사진처럼 나오게 됩니다. 메모리 사용을 줄이고 싶다면 필요 없는 노트북은 Shutdown 키를 누르면 됩니다.

    Running중 인 노트북 확인

     

    3. 개별 노트북 메모리

    전체 메모리 말고, 현재 노트북에서 사용하고 있는 메모리를 확인하는 방법도 있습니다. 

     

    1) 설치

    # pip 설치
    pip install memory_profiler
    
    # 주피터 노트북에서 pip 설치
    !pip install memory_profiler

    마찬가지로 주피터 노트북에서 설치하는 경우 !pip install을 이용하며 아래 사진과 같이 설치하면 됩니다.

    * 출력

    주피터 노트북에서 설치

     

    2) 결과 화면

    ① 매직 커맨드(%) 사용

    # 외장 모듈 호출
    %load_ext memory_profiler 
    
    # 매직 커맨드를 사용한 메모리 사용량 확인
    %memit

    %load_ext를 이용해 memory_profiler를 로드하고, %memit현재 노트북에서 사용 중인 메모리(peak memory)최근 증감률(increment)을 보여줍니다. 아래 사진에선 현재 노트북에 54.92 Mb(메가바이트)를 사용하며, 최근에 0.42 Mb의 메모리 사용이 증가되었다는 것을 의미합니다.

    * 출력

    매직 커맨드를 이용한 메모리 확인

     

    ② python 모듈 사용

    from memory_profiler import memory_usage
    print(f"{memory_usage()[0]:.2f} MiB")

    이번엔 Python 라이브러리를 import 하여 memory_usage() 메서드를 통해 출력하는 코드입니다. memory_usage()는 리스트 안에 메모리 사용량을 메가바이트로 반환합니다. 그래서 [0] 번째를 f-string을 이용해 소수 2자리까지(:.2f) 출력하는 코드를 같이 사용했습니다.

    ( f-string에 대한 개념 포스팅: [Python] f-string 포맷팅 ) 

    * 출력

    패키지를 이용한 메모리 확인

     

    4. 결론

    주피터 노트북으로 대용량의 데이터를 다룰 때, 데이터를 메모리에 올려놓고 사용하기 때문에 메모리 사용량을 모르고 데이터 분석을 하다 보면 주피터 노트북이 갑자기 뻗어버리는 경우가 생길 수 있습니다. 그러므로 현재 사용하고 있는 메모리의 양을 모니터링하면서 데이터 분석을 한다면 좀 더 안정적으로 하실 수 있습니다.

     

    읽어주셔서 감사합니다.

    다음에 더 재미있고 유익한 글로 찾아오겠습니다.

     

    * 위의 실습 코드 깃허브를 공유드립니다.

     

    GitHub - netsus/python_practice: basic python course

    basic python course. Contribute to netsus/python_practice development by creating an account on GitHub.

    github.com

     

    Reference)
    1. Jupyter Logo: https://www.dataquest.io/blog/jupyter-notebook-tutorial/
    2. jupyter-resource-usage: https://github.com/jupyter-server/jupyter-resource-usage
    3. memory_profiler: https://data-newbie.tistory.com/498
    반응형

    댓글

    Designed by JB FACTORY