kaggle-environment について
Kaggleのホスト環境でノートブックを開発・実行する人向けのスキルです。パス、アクセラレーター、インターネット、依存関係、リソース制限に加え、再現性やシークレットの扱い、ローカル環境との差の調査方法を説明します。
主な機能
- 01Kaggleのファイルパスの説明
- 02アクセラレーターとネットワーク設定
- 03再現性のチェックリスト
- 04シークレットの取り扱い上の注意
- 05ローカル環境との差の調査
活用シーン
- 01提出物や成果物を適切な場所に保存
- 02学習時のアクセラレーターとリソース要件の確認
- 03Kaggle上でのノートブック実行失敗の調査
- 04ノートブックやアップロード物へのトークン埋め込み防止
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill kaggle-environmentインストール後、Claude Code で/kaggle-environmentを入力して読み込まれたか確認します。
詳細
Kaggle 環境
概要
Kaggle のホスト型ランタイムの動作(ファイルシステムのパス、アクセラレーター、インターネット接続、依存関係の差異、出力先、再現性、リソース制限)には、このスキルを使用してください。ローカル開発時の前提と Kaggle での実行時の前提を区別してください。
パスの規則
| パス | 用途 |
|---|---|
/kaggle/input | 読み取り専用でマウントされるデータセット、コンペティションデータ、モデル、ノートブックのソース |
/kaggle/working | 書き込み可能な作業ディレクトリ。提出物と成果物をここに保存します |
| ローカルプロジェクトフォルダー | CLI の push/pull で使用するソースとメタデータのフォルダー |
最終出力を /kaggle/input のみに保存しないでください。ここは読み取り専用です。提出物や成果物は /kaggle/working/<file> に書き込み、ノートブックの出力にファイルが表示されることを確認してください。
アクセラレーター ID
kaggle kernels push -p <folder> --accelerator <ID> でアクセラレーターをリクエストできます。有効な ID には、NvidiaTeslaP100、NvidiaTeslaT4、NvidiaTeslaT4Highmem、NvidiaTeslaA100、NvidiaL4、NvidiaL4X1、NvidiaH100、NvidiaRtxPro6000、TpuV38、Tpu1VmV38、TpuV5E8、TpuV6E8 があります。まず、用途に合った最小のアクセラレーターを選んでください。また、ハイエンド GPU/TPU と長いタイムアウトを組み合わせると、クォータを消費する可能性があることを警告してください。
ランタイムのチェックリスト
- 言語ランタイム、ライブラリ、データ分割器の乱数シードを設定します。
- 少量のサンプルと短いエポックで実行できるよう、
DEBUGフラグを用意します。 - 結果に影響する依存関係のバージョンを固定します。
- 時間のかかるトレーニングを開始する前に、入力パスの存在をアサートします。
- チェックポイント、提出物、ログを
/kaggle/workingに保存します。 - 大きな配列や GPU テンソルを使用する場合は、フォールド間またはモデルのステージ間でメモリを解放します。
- コンペティションの最終実行では、許可されており、かつ必要な場合を除き、インターネットを無効にします。
インターネットとシークレット
メタデータでは、enable_internet はデフォルトで false です。ワークフローとコンペティションのルールで許可されている場合にのみ有効にしてください。機密情報には、Kaggle の UI から Kaggle Secrets を使用するよう案内してください。トークンをノートブック、メタデータ、コマンド履歴、アップロードする成果物に埋め込まないでください。シークレット管理に公開 API が対応していると主張しないでください。
CLI から push したコミット済み実行
Kaggle CLI から push したコミット済み実行やバッチ実行で、UserSecretsClient().get_secret() が動作すると想定しないでください。Kaggle の UI でシークレットが存在し、アタッチされていても、HTTP 400 が返ることがあります。kernel-metadata.json には、サポート対象の secrets、environment、環境変数のフィールドはありません。存在しないフィールドを作り出さないでください。
シークレットを使わずに済むワークフローでは、認証を必要としない設計を優先してください。Kaggle から一時的な公開トンネルを使う場合は、Cloudflare TryCloudflare のクイックトンネルを使用すると、ngrok トークンを避けられます。
cloudflared tunnel --url http://127.0.0.1:11434
サービスを検証する際は、公開トンネルのホスト名ではなく、Kaggle 内から localhost にアクセスしてください。Kaggle のネットワークから Cloudflare のトンネルホスト名を名前解決できないことがあります。
curl -fsS http://127.0.0.1:11434
keepalive セルの実行中に kaggle kernels logs が空でも、外部ツールが kaggle kernels output で取得できるよう、検出した公開 URL を /kaggle/working/<name>.txt に書き込んでください。
Apt の信頼性
Kaggle のベースイメージには、DNS 解決に断続的に失敗し、apt-get update を妨げるサードパーティの PPA ソースが含まれている場合があります。パッケージをインストールする前に、PPA のソースファイルを無効にし、短いタイムアウトと再試行を使うことを検討してください。
sudo mkdir -p /etc/apt/sources.list.d/disabled
sudo find /etc/apt/sources.list.d -type f -name "*.list" -print -exec sudo mv {} /etc/apt/sources.list.d/disabled/ \;
sudo apt-get update \
-o Acquire::Retries=5 \
-o Acquire::http::Timeout=20 \
-o Acquire::https::Timeout=20
ノートブックの起動時にネットワークが不安定になることがあるため、パッケージのインストールは最小限にしてください。
ローカルと Kaggle の違い
ローカルでは動作するコードが Kaggle で失敗する場合は、マウントされたソース名、大文字と小文字の区別、パッケージバージョンの不足、書き込み先のパス、インターネット接続、アクセラレーターの利用可否、メモリを確認してください。実行の決定性を保てる場合にのみパス検出用のラッパーを追加し、モデリングのロジックを変更する、隠れた環境固有の分岐は避けてください。
サポート対象外の公開 API 領域
Docker イメージの選択、クォータ管理、スケジューラーの管理、コラボレーターの管理、セル単位の編集について、公開 API がサポートしていると主張しないでください。これらの作業が公開 CLI/API の対象外である場合は、UI を使用する際の注意点を案内してください。
Sources
- Kaggle notebooks docs: https://www.kaggle.com/docs/notebooks
- Kaggle kernels CLI: https://github.com/Kaggle/kaggle-api/blob/main/docs/kernels.md