kaggleコンペ用のテンプレートレポジトリ
dockerで環境構築を行う。環境に応じてcompose.ymlは編集した上で以下を実行
docker compose up -d --buildあとはvscodeのdevcontainerでコンテナに入って作業する
uvを利用している。コンテナ起動時は仮想環境が作られていないためコンテナに入ったら以下を実行
uv syncpre-commitでformatter, linter, type checkerを適用している
以下を実行するとpre-commitが有効になる。必要に応じて.pre-commit-config.yamlを編集する
uv run pre-commit installターミナルで以下を実行
wandb loginauthorizeすることでwandbが利用可能になる
docker内だとkaggle APIが有効になっている
dataset一覧チェック
kaggle datasets list
datasetをdownload
cd input
kaggle datasets download <DATASET_NAME>解凍(同じ名前のディレクトリを作成してその中に解凍)
unzip <DATASET_NAME>.zip -d <DATASET_NAME>主要なもののみ記載
root
├── exp/ # 実験コードをここで管理する
├── input/ # コンペ用のデータセット置き場
├── notebook/ # EDAやdebug用のnotebookをおく
├── output/ # 特徴量やモデルなどの実験による出力を格納する
├── src # 実験に依存しないコードをここに置く(kaggle datasetへのuploadなど)
実験フォルダの構成は以下。コンペに応じて自由に変更する。
exp/exp001
├── config.yaml # 設定値ファイルを記述する
├── data_processor.py # データの前処理や特徴量生成などtrain/inferenceの前に実施しておくと良い処理を行う
├── inference.py # 推論コード
├── train.py # 学習コード
exp配下に新しい実験フォルダを作成して1実験1ディレクトリで実施する。
templateではhydraを使っており、config.yamlにパラメータ管理をしている。
TODO: yamlでパラメータを切り出さずpyファイルでdataclassとして扱った方が簡単で良いかもしれない。
uv run python exp/exp001/data_processor.py
uv run python exp/exp001/train.py
uv run python exp/exp001/inference.py繰り返し行うようなコマンドはjustfileに記載しタスク化している。
例えばkaggle datasetへのcodeやmodelのアップロードはsrc/tools配下のpythonファイルを編集した上で以下を実行する。
just upload