Colaboratory

로컬 런타임

Colab을 사용하면 로컬 런타임에 연결할 수 있습니다. 이렇게 하면 로컬 하드웨어에서 코드를 실행할 수 있습니다.

보안 고려사항

실행하기 전에 신뢰하는 사람이 만든 노트인지 확인하세요. 로컬 연결을 사용하면 실행한 코드가 컴퓨터의 파일을 읽고, 쓰고, 삭제할 수 있습니다.

로컬 머신의 런타임에 연결하면 여러 가지 장점이 있지만, 그만큼 심각한 잠재적인 위험이 따릅니다. 로컬 런타임에 연결하면 Colab 프런트엔드가 머신의 로컬 리소스를 사용하여 노트북의 코드를 실행할 수 있게 됩니다. 따라서 노트가 다음 작업을 실행할 수 있습니다.

로컬 런타임에 연결하기 전에 노트 작성자를 신뢰할 수 있는지, 어떤 코드가 실행되고 있는지 확인하세요. Jupyter 문서에서 Jupyter 노트 서버의 보안 모델에 관해 자세히 알아볼 수 있습니다.

설정 안내

1단계: 런타임 시작

Jupyter를 직접 실행하거나 Colab의 Docker 이미지를 사용할 수 있습니다. Docker 이미지는 Google의 호스팅된 런타임 환경(https://colab.research.google.com)에 있는 패키지를 포함하며 디버깅, 리소스 사용률 모니터링 등 일부 UI 기능을 지원합니다. 하지만 로컬 머신에 설치된 패키지(일반적으로 파일)는 기본적으로 사용할 수 없습니다. Docker 이미지는 linux/amd64 플랫폼용으로 제공됩니다.

옵션 1. Colab Docker 런타임 이미지

로컬 머신에 Docker를 설치합니다. europe-docker.pkg.devasia-docker.pkg.dev는 아래의 us-docker.pkg.dev를 대신하는 미러링입니다. 해당 대륙 사용자의 다운로드 속도가 더 빨라집니다. 이미지는 동일합니다. 다음 런타임을 시작합니다.

        docker run -p 127.0.0.1:9000:8080 us-docker.pkg.dev/colab-images/public/runtime
      

GPU를 지원하려면 NVIDIA 드라이버NVIDIA Container Toolkit이 설치된 상태에서 다음을 사용하세요.

        docker run --gpus=all -p 127.0.0.1:9000:8080 us-docker.pkg.dev/colab-images/public/runtime
      

이미지가 NVIDIA T4, L4, A100 GPU로 테스트되었습니다.

컨테이너가 시작되면 인증에 사용된 초기 백엔드 URL과 함께 'http://127.0.0.1:9000/?token=...' 형식으로 메시지가 인쇄됩니다. 아래 2단계에서 이 URL을 입력해야 하므로 이 URL을 복사해 두세요.

옵션 2. Jupyter 런타임

로컬 머신에 Jupyter를 설치합니다. 새로운 노트 서버가 정상적으로 시작됩니다. 하지만 Colab 프런트엔드의 WebSocket 연결을 명시적으로 신뢰하려면 플래그를 설정해야 합니다.

  jupyter notebook \
    --NotebookApp.allow_origin='https://colab.research.google.com' \
    --port=8888 \
    --NotebookApp.port_retries=0
    

서버가 시작되면 인증에 사용된 초기 백엔드 URL과 함께 메시지가 인쇄됩니다. 아래 2단계에서 이 URL을 제공해야 하므로 이 URL을 복사해 두세요.

2단계: 로컬 런타임에 연결

Colab에서 '연결' 버튼을 클릭하고 '로컬 런타임에 연결...'을 선택합니다. 대화상자가 표시되면 이전 단계에서 저장한 URL을 입력하고 '연결' 버튼을 클릭합니다. 그러면 로컬 런타임에 연결됩니다.

브라우저별 설정

참고: Mozilla Firefox를 사용 중이라면 Firefox 구성 편집자에서 network.websocket.allowInsecureFromHTTPS 환경설정을 지정해야 합니다. Colab은 WebSocket을 사용하여 로컬 커널에 연결합니다. Firefox는 기본적으로 표준 WebSocket을 사용한 HTTPS 도메인의 연결을 허용하지 않습니다.

공유

다른 사용자와 노트를 공유해도 로컬 머신의 런타임은 공유되지 않습니다. 다른 사용자가 공유된 노트를 열면 기본적으로 표준 Colab 런타임에 연결됩니다.

기본적으로 모든 코드 셀 출력은 Google Drive에 저장됩니다. 로컬 연결에서 민감한 정보에 액세스할 때 코드 셀 출력을 생략하려면 수정 > 노트 설정 > 이 노트를 저장할 때 코드 셀 출력 생략을 선택하세요.

다른 머신의 런타임에 연결

연결하려는 런타임이 다른 머신(예: Google Compute Engine 인스턴스)에서 실행 중인 경우 Colab에서 이 서버에 연결하도록 SSH 로컬 포트 전달을 설정할 수 있습니다.

먼저 위의 안내에 따라 런타임을 설정합니다.

그런 다음 로컬 머신에서 원격 인스턴스(예: Google Compute Engine 인스턴스)로 SSH 연결을 구성하고 '-L' 플래그를 지정합니다. 예를 들어 로컬 머신의 포트 8888을 Google Compute Engine 인스턴스의 포트 8888로 전달하려면 다음을 실행하세요.

gcloud compute ssh --zone YOUR_ZONE YOUR_INSTANCE_NAME -- -L 8888:localhost:8888
    

마지막으로, 전달된 포트에 연결하여 Colab 내에서 연결을 설정합니다('2단계: 로컬 런타임에 연결'의 동일한 안내 참고).