【Kaggle】Kaggle Notebook を Docker を用いてローカル環境で構築する手順と作成方法

今回の記事では、Kaggle Notebook をローカル環境で構築する手順と作成方法を解説します。

実現すること

  • kaggle API を使用可能に(notebook やデータセットのダウンロードなど)
  • 起動後すぐに Jupyter を使用可能
  • ローカルとコンテナ間で/workingディレクトリを同期
目次

ディレクトリ構成

kaggle/
├── Dockerfile
├── docker-compose.yml
├── kaggle.json              # Kaggle API Key(手動で配置)
├── requirements.txt         # 必要なパッケージを記載
├── working/                 # Kaggleプロジェクト作業ディレクトリ
└── input/                   # コンペデータ配置用(自動でコンテナ内にマウント)

手順

1. ディレクトリを作成

mkdir kaggle
cd kaggle

touch Dockerfile docker-compose.yml
mkdir working input

2. kaggle API Key を取得

Kaggle サイトにアクセスして、API Key を取得してください。.jsonファイルがダウンロードされるので、名前をkaggle.jsonに変更して、kaggleディレクトリに配置してください。

3. requirements.txt を作成

必要なパッケージを記載してください。

numpy
pandas
matplotlib
scikit-learn
seaborn

4. Dockerfile を作成

FROM gcr.io/kaggle-gpu-images/python:latest

# Kaggle CLI用APIキーを配置
COPY kaggle.json /root/.kaggle/kaggle.json
RUN chmod 600 /root/.kaggle/kaggle.json

# requirements.txt のコピーとインストール
COPY requirements.txt /kaggle/requirements.txt
RUN pip install --no-cache-dir -r /kaggle/requirements.txt

# Jupyter用のカーネルをインストール
RUN pip install ipykernel
RUN python -m ipykernel install --user --name kaggle-env --display-name "Python (Kaggle)"

# デフォルトディレクトリの作成
RUN mkdir -p /kaggle/input /kaggle/working

# 作業ディレクトリを設定(docker exec -it kaggle bash をした際に、このディレクトリが開かれる)
WORKDIR /kaggle/working

# Jupyterを起動できるようにポートを空けておく
EXPOSE 8888

# 起動時にJupyterを自動起動
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--allow-root", "--NotebookApp.token=''", "--NotebookApp.password=''"]

5. docker-compose.yml を作成

version: "3.9"

services:
  kaggle:
    platform: linux/amd64 # Apple Siliconで起動する際に必要
    build: .
    container_name: kaggle
    ports:
      - "8888:8888"
    volumes:
      - ./working:/kaggle/working
      - ./input:/kaggle/input
    tty: true
    stdin_open: true

6. コンテナを起動

ここで注意が必要です。

最初に Docker デスクトップを起動し、歯車アイコンをクリック。Resourcesタブをクリックし、Virtual Machinesの値を変更してください。

docker-setting

僕の場合、136 にしました。参考までに。

docker compose up -d

コマンドが終了するまで、結構時間がかかりますので、気長に待ちましょう。

7. コンテナに接続

docker exec -it kaggle bash
jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root --NotebookApp.token=''
# --ip=0.0.0.0 : すべてのIPからのアクセスを許可
# --port=8888 : ポート番号を指定
# --allow-root : ルートユーザーでの起動を許可(Dockerでは必要)
# --NotebookApp.token='' : 認証トークンなしでアクセス可(セキュリティ注意)

/kaggle/workingディレクトリが開かれます。こちらで、jupyter notebook を作成することができます!

Kaggle API のコマンド

以下に、Kaggle API のコマンドをまとめました。
詳しい情報は公式ドキュメントを参照してください。

コンペデータのダウンロード

kaggle competitions download -c <コンペ名> -p <保存先パス>
kaggle competitions download -c titanic -p /kaggle/input/titanic
unzip ファイル名.zip -d 解凍先パス

コンペに提出

kaggle competitions submit -c <コンペ名> -f <提出ファイル> -m "<コメント>"
kaggle competitions submit -c titanic -f submission.csv -m "1st submission"

提出履歴

kaggle competitions submissions -c <コンペ名>

ノートブックの取得コマンド

kaggle kernels pull <username>/<notebook-name>

まとめ

Kaggle Notebook をローカル環境で構築する手順と作成方法を解説しました。
こちらのプロジェクトで実現できることは、

  • kaggle API を使用可能に(notebook やデータセットのダウンロードなど)
  • 起動後すぐに Jupyter を使用可能
  • ローカルとコンテナ間で/workingディレクトリを同期

です。

参考になれば幸いです。

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

この記事を書いた人

はじめまして、「知識を愛する者」愛知郎です。

五反田でエンジニアとして活動してます。

こちらでは、私が最近学んだこと発信しています。

目次