주피터 노트북은 인터렉티브한 코딩 환경을 제공한다.
이게 무슨 뜻이냐 하면 코드를 작성하고 한 줄, 한 셀 또는 내가 필요한 부분만 선택적으로 실행해볼 수 있다.
주피터 노트북은 주로 데이터 과학, AI 쪽에서 많이 사용되는데 인터렉티브한 코딩 환경이 이에 적합하기 떄문이다.
AI 언어 모델을 학습을 시켜야하는 상황이라고 가정해보면 코드만 작성했을 때, 실제로 이 언어 모델이 내가 넣은 문서를 잘 받아먹었는지, 받아 먹었다면 어떤식으로 문서가 들어갔는지를 알아야 한다. 일반적인 개발 환경에서는 코드가 한번에 실행되다보니 이를 확인하기 어렵지만 인터렉티브한 코딩 환경에서는 한 줄씩 실행하면서 이 모든걸 내 눈으로 지켜볼 수 있다.
따라서 내가 원하는대로 교육이나 실험이 되지 않는다면 어느 부분에서 잘못되었는지 파악도 빠르게 할 수 있기 때문에, 데이터를 다루는 분야나 AI쪽에서 많이 사용하는 것이다.
이 외에 주피터 노트북은 데이터를 시각화하는 데 최적화 되어있어서, 다양한 시각화 라이브러리를 사용해 그래프, 차트 등을 그릴 수 있다고 하는데.. 아직 사용안해봐서 어떤지 잘 모르겠다.
구글 코랩은 구글에서 제공하는 클라우드 기반의 주피터 노트북 환경이다.
주피터 노트북처럼 필요한 셀만큼 실행이 가능한데, 주피터 노트북과 가장 큰 차이점은 클라우드 기반이라는 점이다.
인터넷 환경에서 실행하기 때문에 설치를 하지 않아도 된다.
큰 데이터를 다루는 작업을 해야한다면 CPU나 GPU의 성능이 매우 좋아야 한다.
주피터 노트북은 로컬 환경에서 작업하기 때문에 내 컴퓨터의 성능이 중요하다.
하지만 구글 코랩은 무료로 GPU와 TPU를 제공해준다. 이는 구글 코랩의 아주 큰 장점이다.
(물론 일부 GPU/TPU는 유료이고, 사용자가 많아지면 렉이 걸릴 수 있다..)
구글 코랩(Google Colab)이나 주피터 노트북(Jupyter Notebook)에서 코드를 작성하는 파일의 확장자는 .ipynb다.
이 확장자는 IPython Notebook의 줄임말로, 주피터 노트북이 원래 IPython이라는 프로젝트에서 시작되었기 때문이다.
.ipynb파일은 텍스트를 넣을 수 있는 셀과 코드를 입력할 수 있는 셀이 구분되어있다.
텍스트를 넣는 부분은 마크다운을 지원하며, 설명이나 주석을 넣을 수 있다.
주피터 노트북이나 코랩에서는 실행한 순서가 매우 중요하다.
첫 번째 셀에서 어떠한 변수를 저장하고,
두 번째 셀에서 그 변수에대한 내용을 출력하는 코드가 있다고 가정해보자.
만약에 첫 번째 셀을 실행하지 않고, 두 번째 셀을 실행한다면 name 변수가 정의되어있지 않기 때문에 오류가 발생한다.
하지만 첫 번째 셀을 한 번 실행해 놓으면 그 변수는 현재 커널에 저장된다. 즉, 주피터 노트북이나 코랩에서 해당 변수가 메모리에 저장되어 계속 유지되므로 이후에는 계속 두 번째 코드만 따로 실행해도 전혀 문제가 없다.