超個人的! Kaggle 開発環境の構築!

開発環境の構築は、プログラミング学習特に初心者の学習において課題となりやすい部分です。ライブラリ間の依存関係やバージョンの違いが原因で、環境が不安定になったり、異なるプロジェクト間で環境を使い分けるのが難しくなったりします。

この記事では、私が実際に活用している、Dockerを利用して、プロジェクトごとに独立し、ホストPC環境を汚染しない開発環境を構築する手順を解説します。Kaggle公式のDockerイメージをベースとすることで、必要なツールやライブラリがインストールされた環境を手軽に用意できます。

Dockerの基本的な考え方

Dockerは、アプリケーションとその実行に必要な環境(コード、ライブラリ、設定ファイルなど)をコンテナという独立した単位にまとめて実行する技術です。

  • Docker Image: コンテナを作成するための読み取り専用のテンプレートです。OSの基本部分、インストールされているソフトウェア、設定などがパッケージ化されています。
  • Docker Container: Docker Imageを基に作成され、実際にアプリケーションが実行される分離された環境です。コンテナは軽量で、ホストPCのOSとは隔離されて動作します。

Dockerを使う最大の利点は、環境の分離再現性です。コンテナごとに異なる環境を持てるため、ホストPCや他のコンテナの環境に影響を与えることなく、特定のプロジェクトに最適な環境を用意できます。また、同じImageを使えば、常に同じ環境を起動できます。

ローカルディレクトリとの連携(マウント機能)

Dockerを利用した開発において重要なのが、ホストPC上のディレクトリとコンテナ内のディレクトリを連結するマウント機能です。通常、コンテナ内のファイルシステムへの変更はコンテナが削除されると失われますが、マウント機能を使うことでホストPC上の特定のディレクトリにコンテナ内のディレクトリを永続化・同期させることができます。

今回の構築方法では、ホストPC上のプロジェクトディレクトリをコンテナ内の作業ディレクトリ(慣例として/workspace)にマウントします。これにより、ホストPC上で使い慣れたエディタ(例: VS Code)でコードを編集し、そのコードをコンテナ内の環境で実行するというワークフローが可能になります。コードや生成されたファイルはホストPC上に保持されるため、コンテナはあくまで実行環境として活用できます。

構築手順

以下に、Kaggle公式のDockerイメージをベースにした開発環境の構築手順を示します。

事前準備

  • DockerがホストPCにインストールされていること(Docker Desktop推奨)。
  • GitがホストPCにインストールされていること。
  • VS CodeおよびRemote Development拡張機能(Remote - Containersを含む)がインストールされていること(推奨)。

手順1: Kaggle公式のDockerリポジトリを取得

Kaggleが公開しているDockerイメージの定義が格納されたGitHubリポジトリをクローンします。

# リポジトリをクローンする
git clone [https://github.com/Kaggle/docker-python.git](https://github.com/Kaggle/docker-python.git)

# クローンしたディレクトリに移動する
cd docker-python

手順2: Docker Imageをビルドする

取得したファイルを使用して、Docker Imageをビルドします。このImageには、データサイエンスに必要な多くのライブラリ(Python本体、pandas, numpy, scikit-learn, TensorFlow, PyTorchなど)が含まれます。

GPUを使用したい場合は--gpuオプションを付けてbuildスクリプトを実行します。CPUのみの場合はオプションなしで実行します。

# GPUを使用する場合 (NVIDIA GPU搭載PCで、必要なドライバや設定が済んでいること)
./build --gpu

# CPUのみを使用する場合
./build

注意:

./build --gpuは、NVIDIA GPUと互換性のあるドライバ、およびDocker環境でのGPU利用設定が必要です。 このビルドプロセスには時間がかかります。ネットワーク速度やPC性能によりますが、数十分から1時間以上かかることがあります。 完成したImageは40GB以上のディスク容量を使用します。ビルド開始前に十分なストレージ空き容量を確認してください。 ビルドが完了すると、docker imagesコマンドでgcr.io/kaggle-gpu-images/pythonまたはgcr.io/kaggle-cpu-images/pythonという名前のImageを確認できます。

手順3: Docker Containerを起動し、ローカルディレクトリをマウントする

ビルドしたImageからDockerコンテナを起動します。ここでマウント設定を行います。以下のコマンドを実行してください。/path/to/your/local/projectは自分のマウントしたいパスを指定してください。

docker run -it --name your-container-name -v "/path/to/your/local/project":/workspace gcr.io/kaggle-gpu-images/python bash

手順4: VS Codeから実行中のコンテナに接続する

コンテナが起動したら、VS CodeのRemote Development機能を使ってコンテナに接続し、開発を行います。

  1. VS Codeを開きます。
  2. コマンドパレット(Ctrl + Shift + PまたはCmd + Shift + P)を開きます。
  3. 「Remote-Containers: Attach to Running Container…」を選択します。
  4. 実行中のDockerコンテナのリストが表示されるので、手順3で指定したコンテナ名を選択します。
  5. 新しいVS Codeウィンドウが開かれ、コンテナに接続されます。
  6. 接続されたVS Codeウィンドウで、「ファイル」>「フォルダを開く…」を選択し、コンテナ内の/workspaceディレクトリを開きます。

まとめ

DockerとKaggle公式Imageを活用することで、いい感じのkaggle開発に必要な環境をホストPC環境を汚染せず構築できます。

重要な注意点として、Imageサイズが大きいためストレージ容量には注意が必要です。 不要になったImageやコンテナは適宜削除することをお勧めします。