Colaboratory

ローカル ランタイム

Colaboratory では、Jupyter を使用してローカル ランタイムに接続することで、ローカル ハードウェアでコードを実行したり、ローカル ファイル システムにアクセスしたりできます。

セキュリティ上の考慮事項

ノートブックを実行する前に、その作成者を信頼できるかどうかをご確認ください。ローカル接続でコードを実行すると、コンピュータ内のファイルの読み取り、書き込み、削除が発生する場合があります。

ローカルマシン上の Jupyter ノートブック サーバーに接続することには多くのメリットがありますが、それと同時に大きなリスクを抱えることにもなります。ローカル ランタイムに接続すると、ローカルマシンのリソースを使用してノートブック内のコードを実行することを Colaboratory フロントエンドに許可することになります。 そのため、ノートブックに以下のようなリスクが含まれている可能性を考慮する必要があります。

ローカル ランタイムに接続する前に、ノートブックの作成者を信頼できるかどうかを確認し、どのようなコードが実行されるかを把握してください。Jupyter ノートブック サーバーのセキュリティ モデルについて詳しくは、Jupyter のドキュメントをご覧ください。

設定の手順

ローカルで実行している Jupyter サーバーへの接続を Colaboratory に許可する手順は次のとおりです。

手順 1: Jupyter をインストールする

ローカルマシンに Jupyter をインストールします。

手順 2: Jupyter 拡張機能 jupyter_http_over_ws をインストールして有効にする(1 回のみ)

jupyter_http_over_ws は Colaboratory チームが作成した拡張機能で、GitHub から入手できます。

pip install jupyter_http_over_ws
jupyter serverextension enable --py jupyter_http_over_ws

手順 3: サーバーを起動して認証する

新しいノートブック サーバーを通常どおり起動します。ただし、Colaboratory フロントエンドからの WebSocket 接続を明示的に信頼するフラグを設定する必要があります。

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

Jupyter ノートブック サーバーの起動に使用したポートは、次の手順で使用しますのでメモしておいてください。

手順 4: ローカル ランタイムに接続する

--no-browser フラグを指定して Jupyter ノートブック サーバーを起動した場合は、Colab からの接続の前に、コンソールに表示された URL へのアクセスが必要になることがあります。この URL は、ブラウザと Jupyter ノートブック サーバーとの間での認証に使用されるブラウザの Cookie を設定します。

Colaboratory で、[接続] ボタンをクリックして [ローカル ランタイムに接続] を選択します。表示されたダイアログに、前の手順でメモしておいたポートを入力して [接続] ボタンをクリックします。これで、ローカル ランタイムに接続されます。

ブラウザ別の設定

注: Mozilla Firefox をご利用の場合は、Firefox の設定エディタnetwork.websocket.allowInsecureFromHTTPS を設定する必要があります。Colaboratory では、WebSocket を使用してローカル カーネルに接続します。Firefox の場合、標準の WebSocket を使用した HTTPS ドメインからの接続はデフォルトでは許可されていません。

共有

ノートブックを他のユーザーと共有しても、ローカルマシン上のランタイムは共有されません。共有したノートブックを開いたユーザーはデフォルトでは標準のクラウド ランタイムに接続されます。

デフォルトでは、コードセルの出力はすべて Google ドライブに保存されます。ローカル接続で機密性の高いデータにアクセスする場合に、コードセルの出力を除外するには、[編集] > [ノートブックの設定] > [このノートブックを保存する際にコードセルの出力を除外する] を選択します。

Google Compute Engine インスタンス上でランタイムに接続する

接続先となる Jupyter ノートブック サーバーが別のマシン(例: Google Compute Engine インスタンス)で実行されている場合は、SSH ローカルポート転送を設定することで Colaboratory から接続させることができます。

注: Google Cloud Platform では、Colaboratory のローカル バックエンド サポートが事前設定されたディープラーニングの VM イメージを提供しています。入門ガイドに沿って、Google Compute Engine インスタンスにローカル SSH ポート転送を設定してください。このイメージを使用する場合は、「手順 4: ローカル ランタイムに接続する」(ポート 8888 を使用)に直接進んでください。

まず、上記の手順に沿って Jupyter ノートブック サーバーを設定します。

次に、ローカルマシンからリモート インスタンス(例: Google Compute Engine インスタンス)への SSH 接続を、「-L」フラグを指定して確立します。たとえば、ローカルマシンのポート 8888 を Google Compute Engine インスタンスのポート 8888 に転送する場合は、次のコマンドを実行します。

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

最後に、Colaboratory で転送ポートへの接続を確立します(「手順 4: ローカル ランタイムに接続する」と同じ手順です)。