Agentic Kaggle Skill
운영 루프
모든 대회를 먼저 검증 문제로, 그 다음에 모델링 문제로 취급합니다. 기본 대상 플랫폼은 Kaggle이므로, Kaggle 네이티브 노트북/스크립트, 데이터셋, 모델 아티팩트, 대회 제출물 및 점수 결과를 선호합니다. 코드 대회의 경우, 대회 문서에서 달리 증명하지 않는 한 최종 노트북/커널이 숨겨진 데이터에 대해 Kaggle에 의해 재실행된다고 가정합니다.
- 대회 페이지를 읽고, 제출 모드를 클래식 파일 제출 또는 코드/노트북 채점으로 분류한 다음, 규칙, 데이터 사용 약관, 공유 정책, 데이터 사전, 메트릭, 제출 형식, 훈련/테스트 구성 힌트 및 누출 경고를 검사합니다.
- 실시간 대회 인텔리전스 도구를 사용할 수 있는 경우, 주요 아키텍처 결정을 내리기 전에 상위 공개 오픈 노트북 솔루션 및 관련 토론 활동을 검사합니다. 이를 권위가 아닌 단서로 취급합니다.
- 작업 유형을 식별합니다: 이진, 다중 클래스, 다중 레이블, 회귀, 순위, 이미지, 세그멘테이션, 텍스트, 시계열, 그룹화된 엔티티 또는 하이브리드.
- 특성 엔지니어링 또는 모델링 전에 폴드를 설계합니다. 모든 실험이 동일한 비교 표면을 사용하도록 훈련 데이터에 저장된 폴드 열을 선호합니다.
- 가장 간단한 메트릭-정확한 베이스라인을 구축하고, 폴드 외부(OOF) 예측과 유효한 제출물을 생성합니다.
- 베이스라인이 신뢰할 수 있게 되면 더 강력한 아키텍처를 사전에 계획합니다: 다양한 모델군, 특성/임베딩 생성기, 증강/의사 레이블/증류 단계, 보정/후처리, 앙상블 또는 스태커.
- 검증 게이트를 통해 반복합니다: 가능하면 한 번에 하나의 의미 있는 변경을 테스트하지만, 서로 다른 아티팩트를 생성하여 OOF 점수 또는 앙상블 다양성으로 비교할 수 있는 경우 여러 독립적인 프로듀서 노트북을 병렬로 실행합니다.
- 로컬 컴퓨팅이 OOM이 발생하거나 너무 오래 걸릴 수 있는 경우, 무거운 훈련, 추론, 임베딩 생성, 이미지/텍스트 실험 또는 메모리 위험 작업을 Kaggle 노트북/스크립트로 오프로드합니다.
- 정교한 아키텍처의 경우, 작업을 소규모 Kaggle 파이프라인으로 분할합니다: 먼저 여러 독립적인 프로듀서 노트북/스크립트를 실행하고, 각 유용한 프로듀서 출력을 비공개 Kaggle 데이터셋으로 저장한 다음, 이러한 데이터셋을 첨부하고 최종 OOF/테스트/제출 출력을 생성하는 하나의 컨슈머 노트북/스크립트를 실행합니다. 프로듀서가 모델을 훈련하는 경우, 해당 체크포인트, 토크나이저/구성, 폴드 메타데이터, OOF/테스트 예측 및 매니페스트를 Kaggle 데이터셋으로 내보내야 합니다. 다운스트림 노트북은
/kaggle/input/...에서 모델을 로드합니다. - 최종 제출물 생성 아티팩트를 채점을 위해 Kaggle에 제출하고 결과 제출 상태/점수를 검색합니다.
- Kaggle이 코드 대회 오류 또는 모호한 채점 실패를 반환하는 경우, 디버깅 루프에 진입합니다: 사용 가능한 로그를 검색하고, 가능한 실패 모드를 분류하고, 방어적으로 패치하고, 최종 커널을 재실행하고, 재제출하며, 점수가 매겨지거나 구체적으로 차단될 때까지 반복합니다.
- 모든 실행에 대해 로컬 CV, 원격 Kaggle 실행 상태, Kaggle 제출 점수, 공개 LB, 비공개 위험 노트, 시드, 코드 버전, 데이터 버전 및 아티팩트 경로를 추적합니다.
- 폴드 내 누출 없이 생성된 OOF 예측으로만 앙상블합니다.
리소스 맵
- 스킬 뒤에 있는 중립적 워크플로 맵을 보려면
references/method-map.md를 읽으세요. - 활성 팀 또는 작업 공간 외부에 대회 코드, 노트북, 데이터셋, 모델, 아티팩트 또는 보고서를 게시하기 전에
references/information-sharing-policy.md를 읽으세요. - Kaggle 대회 슬러그, URL, 제목, 공개 리더보드 컨텍스트, 오픈 솔루션 또는 토론 활동이 접근 방식에 정보를 제공할 수 있는 경우
references/competition-intel.md를 읽으세요. - 폴드, 메트릭, 임계값 또는 누출 검사를 선택할 때
references/cross-validation-and-metrics.md를 읽으세요. - 범주형 변수, 특성 엔지니어링, 선택 및 하이퍼파라미터 튜닝에 대해서는
references/tabular-workflow.md를 읽으세요. - 이미지, 세그멘테이션 및 NLP 대회 접근 방식에 대해서는
references/image-text-workflow.md를 읽으세요. - 대상이 Kaggle 코드 대회, 숨겨진 재실행, 최종 노트북 채점 흐름 또는 프로듀서와 컨슈머 노트북 간의 모델 아티팩트 핸드오프인 경우
references/kaggle-code-competition-pipeline.md를 읽으세요. - 더 강력한 솔루션이 여러 모델군, 단계적 특성/임베딩/모델 프로듀서, 의사 레이블링, 증류, 후처리, 블렌딩, 스태킹 또는 병렬 Kaggle GPU 노트북을 필요로 할 수 있는 경우
references/advanced-notebook-architecture.md를 읽으세요. - 로컬 실행이 무겁거나, GPU가 유용하거나, Kaggle 데이터 접근이 필요하거나, 원격 노트북 결과를 수집해야 하는 경우
references/kaggle-offload.md를 읽으세요. - 여러 Kaggle 노트북, 중간 데이터셋, 노트북 출력 소스 또는
kagglehub를 사용하는 경우references/kaggle-pipeline-datasets.md를 읽으세요. - 작업을 중단하기 전에
references/submission-endgame.md를 읽으세요. 이 스킬은 Kaggle 채점이 시도되고 결과가 수집되었거나 구체적인 차단기가 문서화될 때까지 완료되지 않습니다. - Kaggle 코드 대회 제출이 실패하거나, 시간 초과되거나, OOM이 발생하거나, 점수가 생성되지 않거나, 모호한 숨겨진 실행/채점 오류를 보고하는 경우
references/code-competition-debugging.md를 읽으세요. - 프로젝트 레이아웃, OOF 아티팩트, 스태킹, 블렌딩 및 재현성을 위해
references/ensembling-and-reproducibility.md를 읽으세요. - 사용자가 이 저장소의 과거 사례 연구, Hermes 시대 패턴 또는 구체적인 대회 교훈을 요청하는 경우에만
references/research/또는examples/를 읽으세요. - 대회 작업 공간을 만들려면
scripts/scaffold_competition.py를 실행하세요. - 훈련 CSV에 폴드 열을 추가하려면
scripts/make_folds.py를 실행하세요. - 메타데이터와 검색 가능한 실험 로그가 있는 Kaggle 커널 폴더를 만들려면
scripts/prepare_kaggle_kernel.py를 실행하세요. - 버전이 지정된 중간 아티팩트 데이터셋에 대한 메타데이터와 명령을 만들려면
scripts/prepare_kaggle_dataset.py를 실행하세요.
기본 Kaggle 절차
메트릭과 검증으로 시작하세요:
- 클리핑, 변환, 평균화 모드, 임계값 및 샘플 가중치를 포함하여 로컬에서 대회 메트릭을 재현하세요.
- 팀 외부에 공유하기 전에 대회에서 공개 코드, 외부 데이터, 사전 훈련된 가중치, 생성된 아티팩트 및 공개 저장소를 허용하는지 확인하세요.
- 초기에 Kaggle 제출 경로를 분류하세요. 코드 대회 또는 노트북 채점 워크플로우인 경우, 처음부터 최종 컨슈머 노트북을 채점 아티팩트로 설계하세요.
- 사용 가능한 경우
kaggle-competition-intelMCP 도구를 사용하세요: 점수 순위 및 최신 높은 투표 노트북에 대한top_open_solutions, 비용이 많이 드는 베이스라인을 선택하기 전에 가장 많이 투표된 최근 활성 토론 주제에 대한competition_discussions. - 숨겨진 테스트 분포와 일치하도록 폴드를 선택하세요. 분류에는 층화, 회귀에는 구간별 층화, 반복 엔티티에는 그룹 분할, 시간적 데이터에는 시간 인식 분할, 레이블 공동 발생이 중요한 경우 다중 레이블 인식 분할을 사용하세요.
- 모든 모델에 대해 OOF 예측을 저장하세요. OOF 파일은 오류 분석, 임계값 튜닝, 블렌딩 및 스태킹의 통화입니다.
- 최상의 폴드만이 아닌 평균 폴드 점수와 폴드 분산을 비교하세요.
- CV와 일치하지 않는 공개 LB 점프를 모델링 승리로 취급하기 전에 검증 문제로 취급하세요.
그런 다음 다음 순서로 베이스라인을 구축하세요:
- 채점 및 제출 형식을 확인하기 위한 메트릭 전용 또는 상수 베이스라인.
- 빠른 고전적 베이스라인: 테이블형에는 LightGBM/CatBoost/XGBoost, 텍스트에는 TF-IDF + 선형 모델, 이미지에는 사전 훈련된 백본.
- 안정적인 폴드, 깨끗한 아티팩트 및 OOF 예측이 있는 강력한 베이스라인.
- 실행 로그와 하나의 기본 메트릭이 있는 특성/모델 실험.
- 여러 다양하고 개별적으로 검증된 모델이 존재한 후 앙상블링 또는 스태킹.
대회가 이를 정당화할 때 사용자가 명시적으로 정교함을 요청할 때까지 기다리지 마십시오. 안정적인 베이스라인 이후, 공개 솔루션, 토론 인텔, 데이터 모달리티, 메트릭 압력 또는 CV 정체가 단일 노트북/모델이 성능이 낮을 것임을 시사하는 경우 더 강력한 단계적 아키텍처를 제안하고 실행하세요. OOF 증거, 아티팩트 매니페스트 및 최종 Kaggle 채점에 의해 아키텍처가 게이트되도록 유지하세요.
실행이 로컬 RAM/VRAM을 초과할 가능성이 있거나, GPU/TPU가 필요하거나, Kaggle 전용 데이터 마운트가 필요한 경우, 로컬에서 강제로 실행하는 대신 Kaggle 커널 실행을 준비하세요. 원격 실행은 experiment_log.json, metrics.jsonl 및 아티팩트 매니페스트를 내보내 kaggle kernels output 후 결과를 검색하고 해석할 수 있도록 해야 합니다.
솔루션에 여러 무거운 단계가 있는 경우, 원격 그래프를 얕고 검사 가능하게 유지하세요:
- 웨이브당 5개 미만의 독립적인 프로듀서 노트북/스크립트를 사용하세요.
- 각 프로듀서에게 특성 생성, 임베딩 추출, 폴드 훈련, 체크포인트 훈련, 모델 증류 또는 추론과 같은 단일 책임을 부여하세요.
- 코드 대회의 경우, 모델/체크포인트를 훈련하고 비공개 Kaggle 데이터셋으로 내보내는 프로듀서 노트북을 선호하세요. 최종 컨슈머는 이러한 데이터셋을 첨부하고,
/kaggle/input/...에서 모델을 로드하며, 숨겨진 테스트에 안전한 추론을 수행해야 합니다. - 프로듀서 노트북 출력을 내구성 있는 재사용 및 다운스트림 노트북에 대한 안정적인 입력을 위해 버전이 지정된 비공개 Kaggle 데이터셋으로 저장하세요. 내구성/버전 관리가 필요하지 않은 수명이 짧은 체인에만 직접
kernel_sources를 사용하세요. - 생성된 데이터셋을 첨부하고, 해당 아티팩트를 읽고, 최종 OOF, 테스트 예측, 블렌드/스택 보고서 및 제출물을 작성한 다음, 해당 최종 아티팩트/커널을 채점을 위해 Kaggle에 제출하는 하나의 최종 컨슈머 노트북/스크립트를 실행하세요.
- 데이터셋, 대회 파일, 노트북 출력을 다운로드하거나 프로그래밍 방식으로 데이터셋 버전을 업로드하는 것이 더 편리한 경우 Python 내에서
kagglehub를 사용하세요.
완료 정의
계획, 스캐폴드, 훈련된 모델, 노트북 실행, 다운로드된 출력 또는 로컬 검증 점수에서 멈추지 마십시오. 다음 중 하나가 참이 될 때까지 계속하세요:
- 대회 제출물이 Kaggle로 전송되었고, Kaggle이 이를 처리했으며, 공개 점수 또는 제출 상태가 검색되어 기록되었습니다.
- 코드 대회 최종 노트북/커널이 필요한 모든 프로듀서 아티팩트를 소비했고, 해당 커널/버전 참조와 함께 제출되었으며, 결과 제출 상태/점수가 검색되어 기록되었습니다.
- 구체적인 외부 차단기가 채점을 방해합니다: 누락된 Kaggle 자격 증명, 규칙 미수락, 재시도 후 할당량 소진, 대회 종료, 채점 비활성화, 필요한 수동 UI 전용 작업, 사용할 수 없는 커널 버전 또는 Kaggle 서비스 장애. 정확한 차단기와 필요한 다음 명령/작업을 기록하세요.
검증 선택
이 빠른 매핑을 사용하세요:
- 균형 잡힌 분류:
StratifiedKFold. - 불균형 분류: 층화 폴드 + 메트릭 민감 임계값 또는 클래스 가중치.
- 회귀: 일반 대상에는
KFold, 왜곡되거나 다중 모드 대상에는 구간별 층화 폴드. - 동일한 사용자, 환자, 제품, 세션, 문서 또는 이미지 소스가 여러 번 나타납니다:
GroupKFold또는 층화 그룹 분할. - 정렬된 이벤트 또는 예측: 시간 분할, 확장 윈도우 검증 또는 대회별 기간 분할.
- 동일한 주제 또는 장면의 이미지: 증강 전에 주제 또는 장면별로 그룹화.
- 중복된 소스, 작성자, 질문, 제품 또는 프롬프트가 있는 텍스트: 소스 키별로 그룹화.
- 매우 작은 데이터: 반복 폴드 또는 더 많은 폴드, 하지만 최종 모델 선택 규율을 엄격하게 유지하세요.
모델링 우선 순위
- 테이블형 대회의 경우, 데이터가 대부분 희소 텍스트 또는 고카디널리티 범주형 상호 작용이 아닌 한 트리 부스팅을 먼저 선호하세요. 범주형 열이 핵심인 경우 CatBoost를 추가하세요.
- 선형 모델 및 신경망의 경우, 숫자 특성을 스케일링하고 범주형 변수를 신중하게 인코딩하세요.
- 트리 모델의 경우, 레이블/카운트/빈도 인코딩과 합리적인 결측값으로 시작하세요. 스케일링은 일반적으로 필요하지 않습니다.
- 대상 인코딩의 경우, 항상 폴드 외부에서, 평활화 및 검증 행 대상 가시성 없이 인코딩을 계산하세요.
- 이미지 작업의 경우, 아키텍처를 변경하기 전에 데이터셋, 변환, 레이블, 마스크 및 메트릭을 올바르게 설정하세요.
- 텍스트 작업의 경우, 트랜스포머를 사용하더라도 TF-IDF 베이스라인을 유지하세요. 빠르고 해석 가능하며 종종 잘 블렌딩됩니다.
- 하이퍼파라미터 검색의 경우, 폴드와 베이스라인이 신뢰할 수 있게 된 후에만 튜닝하세요. 조기 중단으로 학습률, 깊이/잎, 정규화, 샘플링 및 추정기 수를 검색하세요.
대회 위생
- 원시 데이터를 읽기 전용으로 유지하세요.
- 대회 데이터, 비공개 데이터셋, 모델 체크포인트, 다운로드된 출력, 제출물, 자격 증명 및 데이터 파생 아티팩트를 대회 규칙 및 아티팩트 라이선스가 명시적으로 공개 재배포를 허용하지 않는 한 공개 Git 저장소에 보관하지 마세요.
- 모든 실험 변경 값을 구성 또는 명령줄 인수에 넣으세요.
- 가능할 때 Python, NumPy, 프레임워크 및 모델 라이브러리에 시드를 지정하세요.
- 실행 ID와 함께 모델 파일, OOF 예측, 테스트 예측, 폴드 점수, 특성 목록 및 제출 파일을 저장하세요.
- Kaggle 오프로드 작업의 경우, 노트북 작업 디렉토리에 실행 ID, git 커밋, 구성, 폴드, 메트릭, 하드웨어, 경과 시간, OOM 노트 및 출력 파일 경로를 포함하여 검색 가능한 로그와 아티팩트를 작성하세요.
- 다중 노트북 파이프라인의 경우, 프로듀서 커널 참조, 생성된 데이터셋 참조, 데이터셋 버전, 아티팩트 스키마, 메트릭 및 최종 컨슈머 실행 ID가 포함된 파이프라인 매니페스트를 유지하세요.
- 프로듀서 데이터셋, 커널 및 모델 아티팩트를 기본적으로 비공개로 유지하세요. 대상 대회 규칙, 데이터 라이선스, 타사 IP 및 사용자 의도를 확인한 후에만 공개하세요.
- 제출 메시지, 제출 명령 또는 커널/버전, Kaggle 제출 타임스탬프, 상태, 사용 가능한 경우 공개 점수 및 Kaggle에서 반환된 모든 오류를 기록하세요.
- 모호한 코드 대회 실패의 경우, 관찰된 상태, 사용 가능한 로그, 의심되는 실패 클래스, 시도된 패치 및 다음 재시도 명령을 기록하세요.
- 샘플 내 기본 예측에 대해 스태커를 훈련하지 마세요.
- 폴드 경계 외부의 검증 대상을 사용하여 특성, 대상 인코더, 스케일러, 임계값 또는 증강을 선택하지 마세요.
- 반복 가능한 훈련에는 스크립트를, 탐색 및 플롯에는 노트북을 선호하세요.
유용한 명령
# 대회 작업 공간 스캐폴드
python scripts/scaffold_competition.py --competition <competition-slug> --workspace <path>
# 훈련 CSV에 폴드 추가
python scripts/make_folds.py --input train.csv --output train_with_folds.csv --folds 5 --type stratified
# Kaggle 커널 준비
python scripts/prepare_kaggle_kernel.py --competition <slug> --script train.py --kernel-name my-kernel
# Kaggle 데이터셋 준비
python scripts/prepare_kaggle_dataset.py --source-dir ./artifacts --dataset-name my-dataset
# 커널 실행 및 출력 가져오기
kaggle kernels push -k <kernel-folder>
kaggle kernels output <kernel-owner>/<kernel-name> -p ./output
# 제출
kaggle competitions submit -c <competition> -f submission.csv -m "message"
# 코드 대회: 커널 제출
kaggle kernels push -k <kernel-folder>
# 또는 커널 버전 생성 후 제출
kaggle kernels versions list <kernel-owner>/<kernel-name>
kaggle kernels output <kernel-owner>/<kernel-name>/v<version> -p ./output