KaggleでVSCodeを利用する方法

採用はこちら

KaggleでVSCodeを利用したい場合は、大きく分けて2つの方法があります。

1つ目は、ローカルPCのVSCodeからKaggle Jupyter Serverへ接続し、KaggleのCPUやGPUを利用してNotebookを実行する方法です。

2つ目は、VSCodeでローカル開発を行い、Kaggle CLIを使ってデータセットの取得やコンペティションへの提出を行う方法です。

KaggleとVSCodeを組み合わせることで、VSCodeのコード補完やGit連携などを活用しながら、Kaggleの計算環境やデータセットを利用できます。

ただし、VSCodeからKaggleへ接続する仕組みは、VSCodeのRemote SSHのようにKaggle環境全体を操作するものではありません。

基本的には、VSCodeのJupyter機能からKaggle Jupyter Serverへ接続して利用します。

目次

KaggleでVSCodeを使う主な方法

KaggleとVSCodeを組み合わせる方法は、用途によって使い分けると便利です。

VSCodeからKaggle Jupyter Serverへ接続する

Kaggleには、外部のNotebookエディターからKaggleのバックエンドへ接続できるKaggle Jupyter Serverがあります。

VSCodeのJupyter拡張機能を使えば、ローカルPC上のVSCodeからKaggle Jupyter Serverへ接続できます。

構成は次のようになります。

ローカルPC
  ↓
VSCode
  ↓
Jupyter拡張機能
  ↓
Kaggle Jupyter Server
  ↓
KaggleのCPU・GPUなど

VSCode自体がKaggle上で動作するわけではありません。

VSCodeはローカルPC上で動作し、NotebookのコードをKaggle側のJupyter Serverで実行する仕組みです。

VSCodeでローカル開発しKaggle CLIを利用する

もう1つは、VSCodeで通常のPython開発を行い、Kaggle CLIを利用してKaggleとデータをやり取りする方法です。

構成は次のようになります。

VSCode
  ↓
Python
  ↓
Kaggle CLI
  ↓
Kaggle

Kaggle CLIを利用すると、コンペティションデータのダウンロードやDatasetの取得、Submissionの提出などをターミナルから行えます。

ローカルPCに十分な計算性能がある場合や、Gitを使って本格的にソースコードを管理したい場合に便利です。

VSCodeからKaggle Jupyter Serverへ接続する方法

KaggleのGPUなどをVSCodeから利用したい場合は、Kaggle Jupyter Serverへの接続を利用します。

VSCodeをインストールする

最初にVisual Studio CodeをPCへインストールします。

すでにVSCodeを利用している場合は、新たにインストールする必要はありません。

PythonやJupyter Notebookを扱う場合は、VSCodeに次の拡張機能を入れておくと便利です。

Python
Jupyter

どちらもMicrosoftが提供している拡張機能です。

Jupyter拡張機能をインストールする

VSCode左側の「Extensions」を開きます。

Windowsでは、次のショートカットでも拡張機能画面を開けます。

Ctrl + Shift + X

検索欄に「Jupyter」と入力し、MicrosoftのJupyter拡張機能をインストールします。

Pythonコードも利用する場合は、Python拡張機能も合わせてインストールしておくとよいでしょう。

Kaggle Notebookを作成する

次に、Kaggle側でNotebookを作成します。

Kaggleにログインし、新しいNotebookを作成します。

Kaggle Notebookでは、ブラウザ上からPythonコードなどを実行できます。

NotebookのバックエンドにはKaggleの計算環境が使用されます。

Kaggleのセッションを開始する

作成したNotebookを開き、Kaggleの実行セッションを開始します。

Kaggle Jupyter Serverを利用するには、Kaggle側のNotebookセッションが起動している必要があります。

Notebook画面からKaggle Jupyter Serverに関する項目を開くと、外部エディターから接続するための情報を確認できます。

VS Code Compatible URLを取得する

Kaggle Jupyter Serverの接続画面には、VSCode向けの接続URLが表示されます。

通常は「VS Code Compatible URL」という名称で案内されています。

このURLをコピーして、VSCode側で利用します。

URLにはKaggleの実行環境へ接続するための情報が含まれているため、第三者へ公開しないよう注意してください。

VSCodeでJupyter Notebookを開く

VSCode側で.ipynb形式のJupyter Notebookを開きます。

既存のNotebookを開いても、新規作成しても構いません。

Notebookを開くと、画面右上付近にKernelを選択する項目が表示されます。

Existing Jupyter Serverを選択する

Kernel Pickerを開き、リモートのJupyter Serverを利用する項目を選択します。

VSCodeやJupyter拡張機能のバージョンによって表示名は多少異なる場合がありますが、一般的には「Existing Jupyter Server」などの項目から設定できます。

その後、Jupyter ServerのURLを入力する画面が表示されます。

KaggleのURLを入力する

Kaggleで取得したVS Code Compatible URLを入力します。

正常に接続できると、Kaggle側のKernelをVSCodeから利用できるようになります。

例えば、VSCodeのNotebookに次のコードを書きます。

import pandas as pd
import numpy as np

print("Hello Kaggle")

このコードを実行した場合、Notebookを編集しているのはローカルPCのVSCodeですが、計算処理はKaggle側で行われます。

KaggleのGPUをVSCodeから利用する

機械学習やディープラーニングでは、GPUを利用したい場合があります。

その場合は、Kaggle Notebook側でAcceleratorをGPUに設定します。

GPUが認識されているか確認する

PyTorchを利用している場合は、次のコードでGPUが利用可能か確認できます。

import torch

print(torch.cuda.is_available())

GPUが正常に認識されている場合は、通常Trueが表示されます。

GPU名を確認したい場合は、次のように実行できます。

import torch

print(torch.cuda.get_device_name(0))

Kaggleで利用できるGPUの種類は、時期や割り当て状況によって異なる可能性があります。

そのため、特定のGPUが必ず割り当てられるとは限りません。

Kaggleの主なディレクトリ

Kaggleの実行環境では、ローカルPCとは異なるディレクトリ構成が使われています。

特に重要なのが/kaggle/inputと/kaggle/workingです。

/kaggle/input

/kaggle/inputには、Notebookへ追加したDatasetやCompetition dataなどが配置されます。

例えば、次のコードで内容を確認できます。

import os

print(os.listdir("/kaggle/input"))

データセットによっては、次のようなパスになります。

/kaggle/input/dataset-name/train.csv

データセット名やディレクトリ構成は、使用するデータによって異なります。

/kaggle/working

/kaggle/workingは、コードの実行結果や作成したファイルなどを保存するための作業用ディレクトリです。

例えば、PandasのDataFrameをCSVとして保存する場合は次のようにします。

df.to_csv("/kaggle/working/result.csv", index=False)

ただし、/kaggle/workingへ保存したからといって、すべてのファイルが永久に保存されるわけではありません。

必要な成果物は、NotebookのVersionやOutputなどを利用して適切に保存することが重要です。

VSCodeからKaggleへ接続する際の注意点

Kaggle Jupyter Serverを使う場合は、通常のVSCode Remote SSHとは仕組みが異なります。

Remote SSHとは異なる

VSCodeのRemote SSHでは、リモートサーバー上のフォルダを直接開き、VSCodeの拡張機能やターミナルなどをリモート環境で利用できます。

一方、Kaggle Jupyter Serverへの接続は基本的にJupyter Notebookの実行環境を利用する仕組みです。

イメージとしては次のようになります。

VSCode
  ↓
Jupyterプロトコル
  ↓
Kaggle Jupyter Server

そのため、Kaggle環境全体をVSCodeのRemote Workspaceとして自由に操作する仕組みではありません。

Kaggleのセッションが停止すると接続も切れる

VSCodeはKaggle Jupyter Serverへ接続して利用します。

そのため、Kaggle側のセッションが停止するとVSCodeからの接続も切断されます。

再び利用する場合は、Kaggle Jupyter Serverを起動し、Kaggle側に表示されているVS Code Compatible URLを使って再接続します。

ローカルファイルとKaggle Notebookは同一ではない

VSCodeからKaggle Jupyter Serverへ接続しても、ローカルのNotebookファイルとKaggle上のNotebookファイルが必ず自動同期されるわけではありません。

「リモートKernelへ接続すること」と「ファイルを同期すること」は別の仕組みです。

重要なNotebookやPythonファイルは、GitやGitHubなどを使って別途管理しておくと安全です。

Kaggle CLIをVSCodeで利用する方法

VSCodeでローカル開発を行いたい場合は、Kaggle CLIも便利です。

Kaggle CLIを使えば、VSCodeの統合ターミナルからKaggleを操作できます。

Kaggle CLIをインストールする

VSCodeの統合ターミナルを開きます。

Windowsでは、一般的に次のショートカットで開けます。

Ctrl + `

Python環境で次のコマンドを実行します。

pip install kaggle

インストール後、次のコマンドを実行します。

kaggle --help

Kaggle CLIのヘルプが表示されれば、インストールは完了しています。

現在のKaggle CLIを利用する場合は、対応しているPythonバージョンも事前に確認しておくとよいでしょう。

Kaggle CLIで認証する

Kaggle CLIを利用するには、Kaggleアカウントの認証が必要です。

OAuthでログインする

現在のKaggle CLIでは、次のコマンドでログインできます。

kaggle auth login

ブラウザが開き、Kaggleアカウントで認証できます。

ブラウザを自動起動したくない場合は、次の方法も利用できます。

kaggle auth login --no-launch-browser

APIトークンを利用する

自動化やCI/CDなどでは、APIトークンを利用する方法もあります。

Kaggleでは環境変数などを利用した認証にも対応しています。

例えば、APIトークンを環境変数として設定して利用できます。

認証情報はGitHubなどへ公開しないよう注意してください。

kaggle.jsonを利用する

従来から利用されているkaggle.jsonによる認証も利用できます。

Windowsでは一般的に次のような場所に配置します。

C:\Users\ユーザー名\.kaggle\kaggle.json

LinuxやmacOSでは次の場所です。

~/.kaggle/kaggle.json

ただし、現在はOAuthやAPIトークンなどの認証方法も用意されています。

新しく環境を構築する場合は、利用しているKaggle CLIの最新ドキュメントを確認して認証方法を選ぶとよいでしょう。

Kaggle Datasetをダウンロードする

Kaggle CLIを使うと、DatasetをVSCodeの統合ターミナルからダウンロードできます。

基本的な形式は次のとおりです。

kaggle datasets download -d owner/dataset-name

owner/dataset-nameの部分は、対象のDatasetに合わせて変更します。

ダウンロードしたファイルはZIP形式になっていることがあります。

展開後は、例えば次のようなプロジェクト構成にすると管理しやすくなります。

project/
├─ data/
├─ notebooks/
├─ src/
└─ README.md

Kaggle Competitionのデータを取得する

CompetitionのデータもKaggle CLIから取得できます。

基本的なコマンドは次のとおりです。

kaggle competitions download -c competition-name

competition-nameは対象Competitionの識別名へ変更します。

例えば、次のような構成で管理できます。

project/
├─ data/
│ ├─ train.csv
│ └─ test.csv
├─ notebooks/
│ └─ analysis.ipynb
├─ src/
│ └─ train.py
└─ submission.csv

Competitionによっては、データを取得する前にKaggleのWebサイトでCompetition Rulesへの同意が必要です。

認証できていてもダウンロードできない場合は、Competitionへの参加手続きやRulesへの同意状況を確認しましょう。

VSCodeからKaggle Competitionへ提出する

モデルを作成してsubmission.csvを生成したら、Kaggle CLIから提出できます。

基本的なコマンドは次のとおりです。

kaggle competitions submit \
  -c competition-name \
  -f submission.csv \
  -m "first submission"

WindowsのPowerShellなどでは、改行方法が異なる場合があります。

必要に応じて1行で実行しても問題ありません。

kaggle competitions submit -c competition-name -f submission.csv -m "first submission"

VSCodeとKaggleを組み合わせるおすすめ構成

VSCodeとKaggleは、目的によって使い方を変えると効率的です。

KaggleのGPUを利用したい場合

ローカルPCに高性能GPUがない場合は、Kaggle Jupyter Serverを利用する方法が便利です。

VSCode
  ↓
Jupyter拡張機能
  ↓
Kaggle Jupyter Server
  ↓
KaggleのGPU

PyTorchやTensorFlowを使ったディープラーニングなど、計算負荷の高い処理に向いています。

ローカルで本格的に開発したい場合

Gitやテストツールなどを利用して、本格的に開発する場合はローカル環境を中心にすると便利です。

VSCode
  ↓
Python・venv・condaなど
  ↓
Kaggle CLI

VSCodeでは、Git、Lint、Formatter、テストツールなど多くの開発機能を利用できます。

Kaggleとローカル開発を組み合わせる

実際のKaggle開発では、両方を組み合わせる方法も便利です。

VSCode
├─ ソースコード編集
├─ Git管理
├─ Kaggle CLI
└─ Jupyter
      ↓
Kaggle Jupyter Server
      ↓
GPUによる学習

普段はローカルのVSCodeでコードを書き、重い処理を実行するときだけKaggleのGPUを利用する方法です。

.ipynbと.pyの使い分け

VSCodeでKaggleを利用する場合は、.ipynbと.pyを使い分けると効率的です。

.ipynbが向いている用途

Jupyter Notebook形式は、試行錯誤しながらコードを実行する用途に向いています。

例えば、次のような作業です。

  • EDA
  • グラフの作成
  • データの確認
  • 特徴量の検証
  • モデルの試作
  • 学習結果の確認

Kaggle Jupyter Serverへの接続も、基本的には.ipynbを利用したNotebook開発が中心です。

.pyが向いている用途

Pythonファイルは、コードを整理して再利用したい場合に向いています。

例えば、次のような用途です。

  • 前処理の共通化
  • 特徴量生成
  • モデル定義
  • 学習処理
  • 関数やクラスの管理
  • Gitによる差分管理
  • テスト

プロジェクトが大きくなった場合は、次のように整理すると管理しやすくなります。

project/
├─ notebooks/
│ └─ analysis.ipynb
├─ src/
│ ├─ preprocessing.py
│ ├─ features.py
│ ├─ model.py
│ └─ train.py
├─ data/
└─ requirements.txt

KaggleでVSCodeを利用するメリット

Kaggle標準のNotebook Editorだけでも開発できますが、VSCodeを利用すると開発環境としての自由度が高くなります。

コード補完を利用できる

VSCodeのPython拡張機能を利用すると、コード補完や型情報の表示などを利用できます。

コード量が増えてくるほど便利になります。

Gitと連携しやすい

VSCodeはGitとの連携機能が充実しています。

例えば、次のような一般的な開発フローを利用できます。

git add .
git commit -m "Add feature engineering"
git push

Notebookだけでなく、Pythonファイルや設定ファイルなどもまとめて管理できます。

Kaggleの計算環境を利用できる

Kaggle Jupyter Serverを利用すれば、ローカルPCに高性能なGPUがなくてもKaggle側の計算環境を利用できます。

ノートPCなどで機械学習を行う場合にも便利です。

KaggleでVSCodeを利用する際のデメリット

便利な一方で、いくつか注意点もあります。

Kaggle Jupyter Serverは実験的機能

Kaggle Jupyter Serverは、Kaggleの公式機能として提供されていますが、実験的な機能として扱われる場合があります。

そのため、画面構成や接続方法などが将来的に変更される可能性があります。

実際に利用する際は、最新のKaggle公式ドキュメントも確認すると安心です。

完全なリモート開発環境ではない

Kaggle Jupyter Serverへの接続は、VSCode Remote SSHのような完全なリモート開発環境ではありません。

基本的にはJupyter NotebookをKaggleのバックエンドで実行するための接続方法です。

そのため、Remote SSHと同じ操作感を想定すると違いを感じる可能性があります。

セッションに制限がある

Kaggleは常時稼働するクラウドサーバーではありません。

Notebookの実行時間やGPUなどの利用には制限があります。

利用可能な時間やリソースは変更される可能性があるため、最新のKaggle公式情報を確認することが重要です。

初心者におすすめの利用方法

初めてKaggleとVSCodeを組み合わせる場合は、最初からすべての機能を利用する必要はありません。

まずは次の構成から始めると分かりやすいでしょう。

VSCode
+
Python
+
Jupyter

その後、必要に応じてKaggle Jupyter Serverへの接続を利用します。

さらに、Competitionへの提出やDataset管理を効率化したくなったらKaggle CLIを導入します。

流れとしては次のようになります。

VSCodeをインストール
↓
Python拡張機能をインストール
↓
Jupyter拡張機能をインストール
↓
Kaggle Notebookを作成
↓
Kaggle Jupyter Serverを起動
↓
VS Code Compatible URLを取得
↓
VSCodeから接続
↓
必要に応じてGPUを利用
↓
慣れてきたらKaggle CLIを導入

まとめ

KaggleでVSCodeを利用する場合は、主に「VSCodeからKaggle Jupyter Serverへ接続する方法」と「VSCodeでローカル開発しKaggle CLIを利用する方法」があります。

Kaggle Jupyter Serverを利用すれば、ローカルPCのVSCodeでNotebookを編集しながら、実際の計算処理をKaggle側で実行できます。

一方、Kaggle CLIを利用すれば、DatasetやCompetition dataの取得、Submissionの提出などをVSCodeの統合ターミナルから行えます。

特に注意したいのは、VSCodeからKaggleへ接続する仕組みがRemote SSHとは異なる点です。

VSCodeでKaggle環境全体を直接操作するのではなく、基本的にはJupyter Serverを介してKaggleの実行環境を利用します。

Kaggleを本格的に利用する場合は、VSCodeでコードを編集し、Gitで管理し、必要に応じてKaggle CLIやKaggle Jupyter Serverを組み合わせることで、効率的な開発環境を構築できます。

以上、KaggleでVSCodeを利用する方法についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次