今回の記事では、Kaggle Notebook をローカル環境で構築する手順と作成方法を解説します。
実現すること
/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
の値を変更してください。
僕の場合、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をローカル環境で構築する手順と作成方法を解説しました。
こちらのプロジェクトで実現できることは、
/working
ディレクトリを同期です。
参考になれば幸いです。