LoginSignup
5

More than 3 years have passed since last update.

Mac OS上にDockerを使ってkaggle kernelっぽい環境を構築

Posted at

はじめに

  • kaggleで使われるkernelと同じ環境を、local上に再現したい。
  • kaggle kernelはそれなりの性能をもったインスタンスだが、localマシンの方がより性能が良いので、 localマシン上で試行錯誤した後、kaggle kernel上にコードを持ってきてsubmitする と言った使い方がしたいからだ。
  • kaggle kernelの仕様はDockerイメージとして公開されているので、これをlocalで動かす事により、それが実現できる。

環境

  • MacOS

手順の概要

基本的に以下の2つの手順をやれば良い。

私は、 docker-compose を使うと管理が何かと楽なので、使う。

docker, docker-composeの確認

dockerの確認

$ docker --version
Docker version 19.03.4, build 9013bf5

docker-composeの確認

$ docker-compose --version
docker-compose version 1.24.1, build 4667896b

Dockerfileの作成

Dockerfile
FROM kaggle/python

WORKDIR /kaggle

COPY ./input /kaggle/input
COPY ./kernel /kaggle/kernel
  • とりあえずimageとして kaggle/python を指定する。
  • また、kaggle kernelでは、 /kaggle/input/*train.csvなどが置かれているケースが多い。
    • そこで、localの ./input/* をDockerコンテナ上にCOPYするようにした。
  • さらに、localの ./kernel/*もDockerコンテナ上にCOPYする。
    • ここに.py を置く事にする。

docker-compose.yamlの作成

とりあえず単にDockerfileを使って build を行う。
commandkernel/script.pyを実行させる。

docker-compose.yaml
kaggle-kernel:
  build: .
  command: python kernel/script.py

動かしてみる

build

$ docker-compose build kaggle-kernel

run

適当なスクリプト

kernel/script.py
import pandas as pd

train = pd.read_csv("/kaggle/input/nfl-big-data-bowl-2020/train.csv")
print(train.shape)
$ docker-compose run kaggle-kernel
(509762, 49)

動いた。
pandasが使えていることから各種packageについても Kaggle/docker-python に設定されているものが使えていることが分かる。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5