用途:处理 Kaggle 托管运行时的行为差异,例如路径、加速器、联网、依赖漂移、输出位置、可复现性和资源限制,并区分本地开发假设与 Kaggle 执行假设。
路径约定:/kaggle/input 为只读挂载的数据集、竞赛数据、模型和 notebook 来源;/kaggle/working 为可写工作目录,用于保存提交和产物;本地项目文件夹供 CLI push/pull 使用。不要只把最终输出写到 /kaggle/input,应写到 /kaggle/working/<file> 并确认文件出现在 notebook 输出中。
加速器:可用 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 管理,不要将令牌嵌入 notebook、元数据、命令历史或上传产物。不要声称密钥管理有公开 API 支持。CLI 推送的已提交或批处理运行中,不要假定 UserSecretsClient().get_secret() 可用,它可能返回 HTTP 400。kernel-metadata.json 没有受支持的密钥、环境或环境变量字段,不要虚构。能避免密钥时优先零认证设计;如需临时公网隧道,可用 cloudflared tunnel --url http://127.0.0.1:11434 避免 ngrok 令牌。从 Kaggle 内部用 localhost 验证服务,而非公网隧道主机名:curl -fsS http://127.0.0.1:11434。发现的公网 URL 写入 /kaggle/working/<name>.txt。
apt 可靠性:基础镜像可能含第三方 PPA 源导致 DNS 解析失败并破坏 apt-get update。安装前可禁用 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。尽量少装包,因为 notebook 启动网络可能不稳定。
本地与 Kaggle 差异:本地正常而在 Kaggle 失败时,检查挂载源名称、大小写敏感、缺失包版本、写入路径、联网可用性、加速器可用性和内存。只在保持执行确定性时添加路径检测包装,避免改变建模逻辑的隐藏分支。
不支持领域:不要声称对 Docker 镜像选择、配额管理、调度器管理、协作者管理或单元格级编辑有公开 API 支持,这些超出公开 CLI/API 范围时应提供基于 UI 的说明。