#記事の内容
この記事はkaggleをローカル環境で行うための環境構築についての備忘録です。
ネットではgcpの記事が多いため、とりあえずローカルで試してみたい方に向けたものになります。
#この記事が参考になる方
- kaggleをローカル環境で行いたい方
- vscodeを用いて快適な環境を作りたい方
なおこの記事ではvscodeのremote containerを利用します。
gcpで行いたい方は他の記事を参考にしてください。
なお自身の環境はUbuntuの20.4です。
他環境でうまく動作するかは保証できませんが、マウントのやり方さえ気をつければ問題なくできるはずです。
windowsの場合はwslを入れておいてください。
参考:(https://qiita.com/matarillo/items/61a9ead4bfe2868a0b86)
#手順
- まずはvscodeをダウンロード
- この記事を参考にgit cloneし、buildします。
- vscodeのextentionからremote containerをインストールします。
- remote containerからopen folder in containerを選択し、Dockerを選択します。
- kaggle.jsonを
~/.kaggle/
に置きます。 - .devcontainer/devcontainer.jsonのマウント先を編集します。必要であればextentionsも編集します。
これで快適な環境が出来上がります。順に解説します。
###1. まずはvscodeをダウンロード
公式から各々のOSにあったものをダウンロードしてください。
###2. この記事を参考にgit cloneし、buildします。
記事の通りにbuildします。
1時間以上かかるので気長に待ってください。
gpuを使用しない場合は--gpuを変更してください。
###3. vscodeのextentionからremote containerをインストールします。
以下の画像のものをインストールしてください。
###4. remote containerからopen folder in containerを選択し、Dockerを選択します。
Remote Explorer(左のディスプレイのようなマーク)を選択し、CONTAINERの横にカーソルを持っていくと+マークが出ます。new containerをクリックするとopen folder in containerが選択でき、先程git cloneしたdockerフォルダーを選び、Dockerファイルを選択します。
左下の緑色のマークを選択しても同じように開くことができます。
###5. kaggle.jsonを~/.kaggle/
に置きます。
kaggle公式のprofileからedit profileを選択し、create New API Tokenを選択してkaggle.jsonをダウンロードします。
terminalからkaggleコマンドを使用している場合は~/.kaggleが作成されているため、cpコマンドなどを使用して~/.kaggleにkaggle.jsonを起きます。もし実行していない場合は自分でディレクトリを作っても問題ないです。
このままkaggleコマンドを打つとwarningが出ます。
kaggle.jsonの権限を変更する必要があります。
以下のコマンドを入力してください。
chmod 600 ~/.kaggle/kaggle.json
###6. .devcontainer/devcontainer.jsonのマウント先を編集します。必要であればextentionsも編集します。
この時点ではdockerを動かすことはできますが、docker-python下以外のローカルディレクトリにアクセスすることができません。
docker-pythonの中を作業ディレクトリにする方はいいですが、僕はkaggle用の作業ディレクトリを用意しているため、そこにアクセスできるようにします。
.devcontainer/devcontainer.jsonに以下のコードを各々の作業ディレクトリにあった場所に変更して記述してください。
"mounts": [ "source=/home/artela/works/kaggle,target=/root/kaggle/,type=bind" ,
"source=/home/artela/.kaggle/,target=/root/.kaggle/,type=bind"],
sourceがローカルディレクトリを指し、targetにはアクセス方法を記述します。
例えば下記のようにコマンドを叩くと/home/artela/works/kaggle
にアクセスできます。lsの結果が空なのは環境構築をやり直す際にすべて消えてしまったためであり、なにかおいてある場合はlsで表示されるはずです。
おすすめはしませんがsource=/home/user/,target=/root/
を追加しておけば、すべてのディレクトリにアクセスできるようになります。
#最後に
自身ができただけであるため、動作を保証するものではありません。なにかわかりにくい点や、間違えている点などがありましたらご指摘いただけると助かります。
最後にtwitterアカウントを貼っておきます。
よければフォローお願いします。
https://twitter.com/Artela_ML