Day_35 [특강] 캐글 그랜드마스터의 노하우 대방출 - 김상훈
작성일
[특강] 캐글 그랜드마스터의 경진대회 노하우 대방출
캐글 소개
- 실력을 인정받을 수 있고 AI 개발자로 성장하기 좋은 캐글 플랫폼을 소개합니다.
캐글은?
- 2010년 설립된 세계에서 가장 유명한 인공지능 대회 플랫폼
- 2017년 3월 구글에 인수됨
- 194개국 600만명 이상의 회원 보유
-
캐글을 즐겨하는 사람을 Kaggler 라 함
국내 유명 경진대회 플랫폼
캐글을 왜 해야 할까요?
- 세계적으로 실력을 인정 받기 위해서 (취업 목적)
- 알만한 해외 회사에서 제안이 오기도 함
- 심지어 아이비리그에 속하는 대학교의 박사과정 제의까지!
- AI 개발자로 배우고 성장 하기 위해서 (개인 성장)
- 캐글은 특유의 공유문화가 있어서 배우기 좋은 수많은 코드, 토론 자료들이 있음
- 특히 캐글의 노트북은 버튼 몇 번 조작으로 빅데이터를 읽어서 학습 및 훈련까지 가능!
캐글에서 실력을 인정 받으려면?
- 랭킹 시스템 활용
- 경진대회에서 높은 순위에 들어 포인트를 획득
- 누적된 포인트로 순위가 매겨짐
- 티어 시스템 활용
- 경진대회에서 메달을 따게 되면 개수에 따라서 티어가 결정됨
- 총 4개 종목 중 가장 인기있고 어려운 티어인 컴피티션 그랜드 마스터 획득!
- 상위 랭커가 되려면?
- 혼자 경진대회에서 높은 등수를 획득
- 1등 약 64,000 포인트
- 2등 약 38,000 포인트
- 3등 약 28,000 포인트
- …
- 혼자 경진대회에서 높은 등수를 획득
- 그랜드 마스터가 되려면?
- 5개의 금메달 획득
- 이 중 1개는 솔로 금메달
캐글 시작해 보기
- 경진대회의 전 과정을 캐글을 통해 빠르게 경험해 봅니다.
1) 회원 가입
![](https://raki-1203.github.io/assets/images/boostcamp/ee1df753.png)
2) 참여할 대회 선택
![](https://raki-1203.github.io/assets/images/boostcamp/caf56043.png)
참고 - 대회 개최 목적
- Featured
- 상업적 목적의 예측 대회, 실제 기업에서 우승한 모델을 현업에 적용하기도 함
- Research
- 연구 목적의 대회, 연구 목적이라 상금이 낮은 편
- Getting Started & Playground
- 초심자를 위한 학습 목적의 대회. 예: 타이타닉 생존자 예측 대회
- 랭킹용 포인트나 메달을 얻을 수 없음
- Analytics
- 데이터 분석 목적의 대회. 데이터 탐색과 이를 시각화한 노트북을 제출하는 대회
- Recruitment
- 리크루팅 목적의 대회
참고 - 대회 제출 방식
- General Competitoin (리소스 제약 없음)
- submission.csv 파일만 Submit Predictions 메뉴에서 제출
- Code Competition (리소스 제약 있음)
- 캐글 노트북에서 코드를 실행시켜 submission.csv 파일을 생성해야 함
- submission.csv 을 생성할 때 리소스 제한(GPU, CPU, RAM, 실행시간)이 있음
-
캐글러들이 쓸모 있는 모델을 만들도록 강제함
2) 참여할 대회 선택 - 진행중 대회
![](https://raki-1203.github.io/assets/images/boostcamp/04648508.png)
![](https://raki-1203.github.io/assets/images/boostcamp/b9d386df.png)
![](https://raki-1203.github.io/assets/images/boostcamp/f95137c8.png)
![](https://raki-1203.github.io/assets/images/boostcamp/b6588e28.png)
3) 대회 데이터 다운로드
![](https://raki-1203.github.io/assets/images/boostcamp/8506e301.png)
![](https://raki-1203.github.io/assets/images/boostcamp/b26ec096.png)
4) 대회를 위한 파이프라인 구축
![](https://raki-1203.github.io/assets/images/boostcamp/fb064179.png)
5) 캐글로 파이프라인을 빠르게 경험해보기
![](https://raki-1203.github.io/assets/images/boostcamp/6b9094d0.png)
![](https://raki-1203.github.io/assets/images/boostcamp/531cc27c.png)
5) 캐글로 파이프라인을 빠르게 경험해보기 - 제출 준비
![](https://raki-1203.github.io/assets/images/boostcamp/28bb25bf.png)
![](https://raki-1203.github.io/assets/images/boostcamp/9a584485.png)
-
Save Version 을 클릭하고 좀 지나면 0 -> 1 로 바뀌는데 1 을 클릭하면
5) 캐글로 파이프라인을 빠르게 경험해보기 - 리더보드 제출
- 이 페이지로 오게 됨
-
내 계정으로 완전히 복사하게 됨
- Submit 버튼을 클릭하면 리더보드 제출까지 가능
캐글 노하우 대방출
- 경진대회에서 우승하기 위해 필요한 것들을 알아 봅니다.
우승하기 위해 필요한 것
1) 파이프라인의 (빠른/효율적) 반복
- GPU 장비
- 학습속도가 빠를 수록 파이프라인 반복 속도가 빨라짐
- 캐글에서 상위권에 들기 위해 필수
- Google Colab 등은 보조로 사용하면 좋음
- 추천 장비 1 (200만원)
- CPU : AMD 라이젠 3세대 3700 이상(8코어)
- RAM : 64GB 이상
- SSD : 1TB 이상
-
GPU : RTX2080Ti x 2대 (블로워 타입 중고로 구입)
- 추천 장비 2 (300~400만원)
- CPU : AMD 라이젠 3세대 3700 이상(8코어)
- RAM : 64GB 이상
- SSD : 1TB 이상
- GPU : RTX 3090 1대 (or RTX 3080 1대)
- 추천 장비 3
- CPU : AMD 라이젠 스레드리퍼
- RAM : 128GB 이상
- SSD : 1TB 이상
-
GPU : RTX 3090 2대 (or RTX 3080 2대 or RTX 2080Ti 4대)
- 시간 투자
- 수천팀이 참여하여 2 ~ 3 달 동안 많은 시간을 투자
- 경쟁자를 이기려면 역시 저희도 비슷한 시간의 투자가 필요
- 1달~2달 동안
- 평일 하루 평균 4시간 이상 투자
-
주말 하루 평균 8시간 이상 투자
- 본인만의 기본 코드
- 어떤 데이터를 다루는 대회든 기본 코드에서 일부만 수정하면 됨
- 빠르게 파이프라인을 구축할 수 있고 실수가 적어지게 됨
- 다른 사람의 코드를 참고하여 본인 것으로 소화한 코드를 만드는 것이 필요
- 참고: https://github.com/lime-robot/categories-prediction
-
이 코드를 바탕으로 최근 3개월 동안 3개의 금메달 획득!
2) 점수 개선 아이디어
- 캐글 Notebooks
- 다양한 아이디어나 얻을 수 있음. Best Score, Most Votes 정렬 기능 사용 추천
-
예: 어떤 딥러닝 아키텍처를 사용하면 좋을지, 이미지 오그멘테이션은 무엇이 좋을지 등
- Discussion 탭 참고
- 다양한 아이디어나 얻을 수 있음. Most Votes, Hotness 정렬 기능 사용 추천
-
비슷하거나 동일한 이전 대회, 참고할 논문, 현재 대회 Overview 등등
- 다른 경쟁자들의 글을 참고하며, 대회 마지막 제출 때까지 점수 개선 아이디어 고민
- 추신: 마지막까지 방심하시면 안 됨
3) (올바른 방향인지) 탄탄한 검증 전략
- 검증 전략이 필요한 이유
- 최종 순위 하락을 피하기 위해: Public LB 1등 $\rightarrow$ Private LB 70
-
리더보드 제출 횟수 제한이 있음: 보통 하루에 5회 제공
- Public LB 에 Overfitting 되는 경우가 있어서 필요함
- 좋은 모델 (일반화; Generalization 성능이 높은 모델)
-
Training set 에서 얻은 점수가 Test set 에서도 비슷하게 나오는 모델
-
- 검증 전략 (Validation Strategy) 이란?
- Test set 에서 얻은 점수와 Training set 에서 얻어진 점수 갭 0.03 을 줄이는 평가 방법
- 검증 전략 구축하기
-
캐글 데이터 구성
-
Training set 나누기 및 평가
-
Training set 나누기 및 평가 (이상적)
-
-
점수 갭을 줄이기 위한 k-fold 검증 전략 구축하기
-
참고 - Stratified k-fold
-
- 아무리 검증 전략을 잘 세워도 오버 피팅의 위험은 존재
- local CV 와 Public LB 가 함께 올라가는 방법을 선택
4) 기타 꿀팁
- 여러 모델의 예측 결과를 섞어서 예측 성능을 향상시킴
- 싱글 모델 보다 항상 더 좋은 성능을 얻을 수 있음
- 여러 방법이 있지만 아래처럼 정리되는 추세
- Stratified k-fold 앙상블
- 다양한 모델 앙상블
- 정형 데이터 : LightGBM XGBoost, Neural Networks (NNs) 등
- 이미지 데이터 : resnet, efficientnet, resnext 등
- 텍스트 데이터 : LSTM, BERT, GPT2, RoBert
- 대회에서 좋은 성적을 내려면 높은 점수의 싱글 모델이 필요
- 앙상블해도 싱글 모델의 점수에서 약간 개선이 있을 뿐임
- 근데 싱글 모델 점수를 몇 점까지 / 언제까지 개선해야 할까?
-
상위 랭커들이 discussion 에 언급한 자신의 싱글모델 점수 참고
-
대회 종료가 1 ~ 2주 정도 남았을 때 싱글 모델 점수로만 50등 내에 들면 좋음
-
- 팀을 맺을 때 주의해야 할 점
- 2달 동안의 여정은 힘들기 때문에 팀을 맺는 것도 추천
- 다만, 한번 팀을 맺으면 해체가 불가능
- 동료 후보가 현재 대회에서 높은 순위에 있는지 확인 필요
- 생각 외로 게으른 사람들이 많음
- 코드 관리
- v1, v2, v3, … 순서로 개별 폴더를 만들어 코드 관리
- 버전 별로 전처리 된 데이터, 모델 파일을 저장할 수 있는 장점
- 여러 버전의 모델을 앙상블 하기 위해 버전 별 폴더 추천
- github 같은 코드 버전 관리 툴도 사용해 봤으나 큰 파일(전처리 데이터/모델 파일), 잦은 롤백 등의 이유로 최종 버전을 보관하는 용도로만 사용
-
주피터에서 터미널을 열 수 있음
- 이 터미널은 크롬 창을 닫아도 살아있으므로 원격 학습 가능!
댓글남기기