【Kaggle API】Kaggle環境構築編
【Kaggel API】VSCodeでKaggleする の続きです。
kaggleの環境をDokcerで取得します。
公式リファレンス
5. Kaggle環境の構築
Dockerを使用して、ローカルにKaggleと同じ環境を構築する方法を解説します。
Docker Desktopが入っていない方はインストールしましょう。
方法は2つです。
- 自分でImageを作る(GPU)
- Imageをpullする(CPU)
自前のGPUを利用しない方は、余程のことがなければ2の方が楽だと思います。
5.1 自分でImageを作る場合
Kaggle公式からdockerfileを含むパッケージを取得します。
# パッケージの取得
$ git clone https://github.com/Kaggle/docker-python.git
$ cd docker-python
ビルドします。一時間ほどかかります。
$ ./build --gpu
・エラー時
Operation too slow. Less than 30 bytes/sec transferred the last 60 seconds
が出た時は、ネットワークの通信が遅いと言われているので、何度か再ビルドを試してみて下さい
E: You don't have enough free space
が出た時はDockerで使うことができるストレージの容量不足なので、Dockerデスクトップの歯車アイコンから「Resources」でVirtual disk limitを大きくします。自分のPCの残ストレージ容量を確認してから、Dockerストレージを増やして下さい。
イメージを実行します。
$ docker run --runtime nvidia --rm -it gcr.io/kaggle-gpu-images/python /bin/bash
5.2 Imageをpullする場合
Kaggleのdocker imageをpullします。
$ docker pull gcr.io/kaggle-gpu-images/python:latest
imageがダウンロードされたことを確認します。
$ docker images
imageをrunしてコンテナを実行します。
$ docker run -itd -p 8888:8080 -v "$(pwd)"/target:/home --name kaggle gcr.io/kaggle-images/python /bin/bash
- docker run: Docker コンテナを実行します。
- -itd: コンテナをインタラクティブモードでバックグラウンドで実行します。
- -p 8888:8080: ローカルマシンのポート8888をコンテナのポート8080にマッピングします。
- -v "$(pwd)"/target:/home: 現在のディレクトリのtargetサブディレクトリをコンテナの/homeディレクトリにマウントします。
- --name kaggle: コンテナにkaggleという名前を割り当てます。
- gcr.io/kaggle-images/python: 使用するDockerイメージ名です。
- /bin/bash: コンテナで実行するコマンドです(この場合、bash シェルを開始します)。
5.3 Attach
5.3.1 Attach
runによってコンテナが起動したことを確認します
# 起動しているコンテナを表示
$ docker ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# a5ec778a20dd gcr.io/kaggle-images/python "/entrypoint.sh /bin…" 3 minutes ago Up 3 minutes 0.0.0.0:8888->8080/tcp kaggle
次にVSCodeでCtrl + Shift + p
でコマンドパレットを開き、開発コンテナ:実行中のコンテナにアタッチ.../Dev Containers: Attach to Running Container...
を選択、先ほど起動したimageを選択します。
以下のコマンドでもAttachできると思います。
$ docker attach kaggle
これで、kaggleの環境に入ることができるはずです。
5.3.2 環境確認
Attachしたら、コマンドラインからOSを確認してみましょう。(Linuxだと思います)
root@:~ $ uname -a
# Linux ...
root@:~ $ lsb_release -a
# No LSB modules are available.
# Distributor ID: Ubuntu
# Description: Ubuntu 20.04.6 LTS
# Release: 20.04
# Codename: focal
次にpythonのversionを確認します。
$ python --version
# Python 3.10.13
versionを確認したら、拡張機能からpythonをjupyterをインストールし、VSCode右上のKernelから確認したversionと同じpythonを選択します。
これで準備は完了です!Ctrl + Shift + p
からCreate: New Jupyter Notebook
を選択し、簡単なコードを実行してみましょう。
※Kaggle APIを使用するには、以下のコマンドでkaggle.jsonファイルをDockerコンテナ上にコピーします。
今回のコンテナでは、/root/.kaggleディレクトリにkaggle.jsonを保存するように要求されます。
# ローカルマシン
# コンテナIDを調べる
docker ps
# kaggle.jsonをコピー
sudo docker cp etc/kaggle.json <コンテナID>:/root/.kaggle/kaggle.json
まとめ
今回はDockerを利用してローカルにkaggle環境を整える方法を紹介しました。
参考
How to use Kaggle API
Kaggle API GitHub
Kaggle環境の構築方法(GPUなし)
Discussion