DACON 코드 제출 대회 가이드

1. 대회 방식 소개

1.1 왜 코드 제출 방식인가요?

공정한 모델 평가 보장

기존 답안지 제출 방식에서는 참가자가 평가 데이터를 미리 확인할 수 있어 데이터에 특화된 편법이나 과적합 문제가 발생할 수 있습니다. 코드 제출 방식은 이러한 문제를 근본적으로 해결합니다:

  • 평가 데이터 X(입력)를 참가자에게 공개하지 않음
  • 서버 환경에서 직접 모델을 실행하여 객관적 평가
  • 참가자들은 실제 평가 데이터를 볼 수 없으니 치팅이 불가능하고, 우수 모델을 더욱 공정하게 선발할 수 있습니다

실무 환경을 고려한 종합 평가

실제 운영 환경에서는 모델의 정확도뿐만 아니라 처리 속도, 메모리 효율성, 안정성 등이 중요한 평가 요소입니다. 코드 제출 방식을 통해 이러한 다면적 성능을 종합적으로 평가할 수 있습니다.

  • 정확도, 추론 속도, 리소스 사용량을 동시에 측정
  • 실제 배포 환경과 유사한 조건에서의 모델 성능 검증

즉시 활용 가능한 실행 모델 확보

대회 종료 후 별도의 개발 과정 없이 바로 실무에 적용할 수 있는 완성된 모델을 확보할 수 있습니다.

  • 검증된 추론 파이프라인과 함께 제공되는 완전한 솔루션
  • 모델의 동작 방식과 성능이 이미 검증된 상태
  • 개발부터 배포까지의 시간과 비용 절감

1.2 대회 진행 과정

참가자 로컬 환경

  • 제공된 학습 데이터 또는 수집한 외부 데이터들로 모델 훈련
  • 모델 가중치 파일 생성 (예: model.pt, model.pkl 등)
  • 추론 코드 작성 및 테스트

평가 서버 환경

  • 참가자가 제출한 추론 코드 실행
  • 실제 평가 데이터에 대한 예측 수행
  • 최종 점수 산출

1.3 평가 데이터 구성

샘플 평가 데이터 (참가자에게 제공)

  • 폴더 구조와 파일 형식이 실제 평가 데이터와 동일
  • 소량의 더미 평가 샘플 데이터 포함
  • 로컬에서 추론 코드 개발 및 테스트 용도

실제 평가 데이터 (평가 시 자동 적용)

  • 동일한 폴더 구조와 파일 형식
  • 실제 평가에 사용될 전체 데이터셋

2. 제출 파일 구성

필수 디렉터리 구조
다음 구조를 엄격히 준수해야 합니다 (제출 파일명은 자유이며, 공백과 한글만 제외):
your_submission.zip  # 예시: submit.zip, model_v1.zip 등
├── model/              # 학습된 모델 가중치 저장
│   └── model.pt        # (예시) 실제 모델 파일명은 자유
├── script.py           # 추론 실행 코드 (필수)
└── requirements.txt    # 패키지(라이브러리) 의존성 (필수)

각 구성요소 설명

model/ 디렉터리

  • 로컬에서 훈련한 모델의 가중치 파일 저장
  • 파일명은 자유롭게 설정 가능
  • 여러 파일 저장 가능 (예: model.pt, tokenizer.json 등)

script.py 파일

  • 평가 서버에서 자동으로 실행되는 추론 전용 코드
  • 반드시 이 파일명을 사용해야 함
  • 학습 과정은 포함하지 않고, 추론만 수행
  • 데이터 로드 → 모델 로드 → 예측 → 결과 저장의 순서로 구성

requirements.txt 파일

  • 추론에 필요한 추가 패키지(라이브러리) 명시
  • pip install -r requirements.txt 형식으로 작성
  • 이미 평가 서버에 설치되어 있는 패키지(라이브러리)는 버전 호환이 이미 맞춰져 있으므로 가급적 포함하지 않을 것을 권장

3. 평가 서버 동작 과정

자동 실행 과정

평가 서버에서는 다음과 같은 순서로 자동 실행됩니다:

1

환경 구성

submit.zip (제출된 파일)
├── model/
├── script.py
├── requirements.txt
├── data/               # ← 서버에서 자동 추가
└── output/             # ← 서버에서 자동 추가
2

패키지(라이브러리) 설치

pip install -r requirements.txt
  • 제한시간: 각 대회 페이지 확인
  • 실패 시: 설치 오류 (제출 횟수 차감 없음)
3

추론 실행

python script.py
  • 제한시간: 각 대회 페이지 확인
  • 실패 시: 제출 오류 (제출 횟수 차감됨)
4

결과 확인

  • output/submission.csv 파일 생성 여부 확인
  • 파일 형식 및 내용 검증

서버 환경 사양

평가 서버의 하드웨어 사양은 대회마다 상이하므로, 해당 대회 페이지의 '평가' 탭에서 확인하시기 바랍니다.

기본 설치 패키지(라이브러리)

다음 패키지(라이브러리)들은 이미 평가 서버에 설치되어 있으므로 버전 호환이 이미 맞춰져 있습니다. 가급적 requirements.txt에 포함하지 않을 것을 권장합니다:

torch==2.7.1+cu128
torchaudio==2.7.1+cu128
torchvision==0.22.1+cu128
tensorflow==2.19.0
numpy==1.26.4
pandas==2.0.3
PyMuPDF==1.24.11
transformers==4.46.3
langchain==0.1.6
accelerate==1.9.0
bitsandbytes==0.46.1
faiss-gpu-cu12==1.11.0
scikit-learn==1.7.1
ultralytics==8.3.170
pytesseract==0.3.13
pillow==11.0.0
python-pptx==0.6.23
pdfminer.six==20221105
opencv-python==4.9.0.80
pdf2image==1.17.0
sentencepiece==0.1.99
regex==2023.12.25
easyocr==1.7.1
layoutparser==0.3.4
tqdm==4.66.4
loguru==0.7.2
pyyaml==6.0.1
rich==13.7.1
albumentations==1.4.3

4. 추론 코드 작성 가이드

권장 구조

다음은 script.py 작성을 위한 권장 구조입니다:

import os
import pandas as pd
# 기타 필요한 패키지(라이브러리)

def load_model():
    """모델 로드 함수"""
    # model/ 디렉터리에서 모델 가중치 로드
    model_path = os.path.join('model', 'your_model.pt')
    # 모델 로드 코드
    return model

def load_data():
    """평가 데이터 로드 함수"""
    # data/ 디렉터리에서 평가 데이터 로드 (예시 파일명)
    data_path = os.path.join('data', 'test.csv')
    # 실제 데이터 로드 코드
    return data

def predict(model, data):
    """추론 수행 함수"""
    # 실제 추론 로직
    predictions = model.predict(data)
    return predictions

def save_results(predictions):
    """결과 저장 함수"""
    # output/submission.csv로 저장 (필수)
    os.makedirs('output', exist_ok=True)
    submission = pd.DataFrame({'prediction': predictions})
    submission.to_csv('output/submission.csv', index=False)

if __name__ == "__main__":
    # 메인 실행 코드
    model = load_model()
    data = load_data()
    predictions = predict(model, data)
    save_results(predictions)
    print("추론 완료!")

오프라인 환경 제약사항

패키지(라이브러리) 설치 과정을 제외하고는 완전한 오프라인 환경에서 실행됩니다.

불가능한 작업들

  • model.from_pretrained() 등을 통한 온라인 모델 다운로드
  • 외부 API 호출 (OpenAI, HuggingFace Hub 등)
  • 인터넷을 통한 파일 다운로드
  • 원격 데이터베이스 접근

올바른 접근 방법

  • 필요한 모든 모델 파일을 model/ 디렉터리에 미리 저장
  • 토크나이저, 설정 파일 등도 로컬 파일로 준비
  • 코드에서는 로컬 파일 경로로만 접근

코드 예시

❌ 잘못된 예시 - 온라인 다운로드 시도
model = AutoModel.from_pretrained("bert-base-uncased")  # 실패!

✅ 올바른 예시 - 로컬 파일 사용
model_path = os.path.join('model', 'bert-base-uncased')
model = AutoModel.from_pretrained(model_path)  # 성공!

필수 준수사항

  • 반드시 output/submission.csv 파일 생성
  • 상대 경로 사용 권장
  • 대회에서 제한하는 추론 시간 내 완료
  • 예외 처리 코드 포함 권장

5. 제출 오류 유형 및 해결방법

설치 오류 (제출 횟수 차감 없음)

발생 원인

  • 제출 파일 구조 불일치
  • requirements.txt 패키지(라이브러리) 설치 실패
  • 대회에서 규정하는 패키지(라이브러리) 설치 시간 초과

해결 방법

  • 파일 구조 재확인
  • 패키지(라이브러리) 버전 호환성 확인
  • 불필요한 패키지(라이브러리) 제거

제출 오류 (제출 횟수 차감됨)

발생 원인

  • script.py 실행 중 에러
  • submission.csv 파일 미생성
  • 대회에서 규정하는 추론 시간 초과

해결 방법

  • 로컬에서 철저한 테스트
  • 예외 처리 코드 추가
  • 효율적인 추론 알고리즘 사용

6. 제출 전 최종 점검

파일 구조 점검

  • 제출 파일 최상위에 model/, script.py, requirements.txt 존재
  • 추가 폴더나 파일 없음
  • 파일명 정확히 일치

코드 검증

  • 로컬 환경에서 script.py 정상 실행 확인
  • output/submission.csv 파일 생성 확인
  • 예상 결과 형식과 일치 확인

패키지(라이브러리) 검증

  • requirements.txt에 필요한 패키지(라이브러리)만 포함
  • 기본 설치 패키지(라이브러리) 중복 제거
  • 패키지(라이브러리) 버전 호환성 확인
  • 오프라인 환경에서 실행 가능한 패키지(라이브러리)만 사용

오프라인 환경 준비

  • 모든 필요 파일을 제출 압축 파일에 포함
  • 온라인 의존성 제거: 외부 다운로드 코드 모두 제거
  • 파일 경로 상대경로로 설정
  • 예외 상황 처리 코드 포함

7. 성공적인 제출을 위한 팁

로컬 테스트 환경 구축

제출 전 반드시 로컬에서 전체 파이프라인 테스트

샘플 데이터 활용

제공된 더미 파일로 구성된 샘플 테스트 데이터로 충분한 추론 코드 테스트 수행

오프라인 환경 대비

모든 필요한 파일을 미리 다운로드하여 제출 압축 파일에 포함

효율적인 추론

시간 제한을 고려한 최적화된 추론 코드 작성

예외 처리

다양한 오류 상황에 대한 예외 처리 코드 포함

버전 호환성 관리

패키지(라이브러리) 버전 호환성을 잘 고려하여 안정적인 환경 구성

8. 문의사항

제출 과정에서 문제가 발생하거나 가이드에 대한 추가 질문이 있으시면 다음 경로로 문의해 주세요:

데이콘 공식 메일

[email protected]

토크 탭

대회 페이지 내 토크 탭을 통해 문의