관련문서

재현성 보장을 위한 데이터 및 모델 등록 체크리스트

과학기술 분야에서 연구결과물 (데이터 및 모델)에 대한 재현성 보장은 연구에 사용된 데이터와 코드, 모델의 공개/제공 뿐만 아니라 모델의 학습과 실험에 사용된 환경과 절차를 포함하여 공개/제공함으로써 연구결과물을 제공 받은 다른 독립적인 연구자가 동일 혹은 유사한 결과를 얻을 수 있도록 보장하는 것을 의미하며, 과학기술 연구에 대한 신뢰성 향상과 나아가 지속 가능한 연구 생태계 형성에 있어서 매우 중요한 요소입니다. 이에, 인공지능 분야 연구결과물인 데이터와 모델의 공유와 확산을 목표로 하고 있는 AIDA에서는 데이터 및 모델을 등록할 때 본 체크리스트를 확인하도록 함으로써, AIDA를 통해 공유되는 연구 결과물에 대한 재현성을 높이고자 합니다.

본 체크리스트는 ‘데이터’, ‘모델’, ‘실험’의 세 가지 측면으로 구분하여, 재현성 보장을 높이기 위해 확인해야 할 항목들을 제시하고 있습니다.

데이터

항목체크
[원본/정제/전처리/분할 데이터 제공]
모델의 학습 및 평가에 사용된 데이터 (원본 데이터 및 정제/전처리/분할된 데이터) 파일들을 data 폴더에 제공하고 있습니까? 혹은 다운로드 가능한 링크를 제공하고 있습니까?
[원본/정제/전처리/분할 데이터 파일 설명]
모델의 학습 및 평가에 사용된 데이터 (원본 데이터 및 정제/전처리/분할된 데이터) 파일들에 대한 설명을 기술하고 있습니까?
[수집 절차 및 방법(소스코드/스크립트) 제공]
자체 수집 데이터를 사용한 경우, 데이터를 수집하는 절차를 설명하고, 방법(소스코드와 스크립트)을 함께 제공하고 있습니까?
[레이블링 부착 기준과 품질 제어 방법 설명]
자체 수집 데이터를 레이블링하여 사용한 경우, 데이터에 레이블링을 부착하는 기준과 레이블링의 품질을 제어하는 방법을 설명하고 있습니까?
[정제/전처리 소스코드/스크립트 제공]
원본 데이터에 정제 및 전처리를 수행한 경우, 정제 및 전처리를 위한 소스코드와 스크립트를 설명과 함께 제공하고 있습니까?
[정제/전처리 방법/절차 설명]
원본 데이터에 정제 및 전처리를 수행한 경우, 수행한 정제 및 전처리 방법과 절차를 설명하고 있습니까?
[분할 소스코드/스크립트 제공]
데이터를 모델의 학습용(train), 검증용(valid), 평가용(test)으로 분할(split)하는 소스코드와 스크립트를 설명과 함게 제공하고 있습니까?
[분할 기준/방법/절차 설명]
데이터를 모델의 학습용(train), 검증용(valid), 평가용(test)으로 분할(split)한 기준/방법과 절차를 설명하고 있습니까?
[데이터 특성]
데이터의 출처, 데이터가 속하는 분야, 데이터 값의 유형과 범위, 학습용/검증용/평가용 데이터의 샘플 수, 카테고리별 레이블 개수, 컬럼 이름들, 샘플의 길이 등 데이터를 이해하는 데 유용한 여러 가지 정보들을 설명하고 있습니까?

모델

항목체크
[모델 소스코드 제공]
모델의 토크나이저, 구조와 생성, 학습, 추론, 평가에 관련된 소스코드 파일들을 src 폴더에 제공하고 있습니까?
(모델 구조, 학습, 추론, 평가에서 사용되는 하이퍼 파라미터들(hyper-parameters)은 소스코드 내에 hard-coding하지 않도록 하며, 명령행 실행 시에 인자로 지정할 수 있도록 해야 합니다)
[모델 소스코드 파일 설명]
모델의 토크나이저, 구조와 생성, 학습, 추론, 평가에 관련된 소스코드 파일들 각각에 대한 설명을 기술하고 있습니까?
[학습된 모델 가중치 제공]
학습된 모델 가중치 파일을 model 폴더에 제공하고 있습니까?
[모델 구조 및 알고리즘 설명]
참조하는 모델이 무엇인지, 추가된 모델 구조 (계층, 뉴런 수, 활성화 함수, 연결 구조 등)와 알고리즘이 무엇인지 등에 대해 설명하고 있습니까?

실험

항목체크
[HW 환경 설명]
실험 (모델의 학습, 추론, 평가)에 사용된 HW 환경 (GPU, CPU, RAM 등)에 대해 설명하고 있습니까?
[SW 환경 설명]
실험 (데이터 정제/전처리, 모델의 학습, 추론, 평가)을 수행하기 위한 주요 SW 라이브러리 환경 (라이브러리의 이름과 버전 및 설치 방법)을 설명하고 있습니까?
[SW 환경 파일 제공]
실험 (데이터 정제/전처리, 모델의 학습, 추론, 평가)을 수행하는 데 사용된 SW 환경을 다른 연구자가 동일하게 구축할 수 있도록, 라이브러리-환경 파일 (environment.yaml 또는 requirements.txt)을 제공하고 있습니까?
[하이퍼-파라미터 설명]
모델의 학습에 사용된 하이퍼-파라미터(hyper-parameters) 목록을 제시하고 각 하이퍼-파라미터의 의미와 사용된 값을 기술하고 있습니까?
[하이퍼-파라미터 환경 제공]
모델의 학습에 사용된 하이퍼-파라미터들(hyper-parameters)의 값을 저장한 환경 파일 (eg. config.json)을 model 폴더에 제공하고 있습니까?
[하이퍼-파라미트 튜닝 설명]
하이퍼-파라미터 튜닝을 수행한 경우, 어떤 튜닝 라이브러리를 사용하였는지, 튜닝에 사용된 하이퍼-파라미터 값의 범위는 무엇인지를 기술하고 있습니까?
[모델의 비결정성 완화]
무작위 수(random number)에 의한 모델의 비결정성(non-determinism)을 줄이기 위해, 실험의 매 run을 시작할 때, 특정 seed 값으로 random number 생성기를 초기화하고 있습니까?
[모델의 학습 스크립트 제공]
모델을 학습하는 방법을 하나의 스크립트(eg., train.sh)로 scripts 폴더에 제공하고 설명하고 있습니까?
[모델의 평가 스크립트 제공]
모델을 평가하는 (모델의 성능을 측정하는) 방법을 하나의 스크립트(eg., test.sh)로 scripts 폴더에 제공하고 설명하고 있습니까?
[모델의 추론 스크립트 제공]
모델을 사용하여 추론하는 방법을 하나의 스크립트(eg., infer.sh)로 scripts 폴더에 제공하고 설명하고 있습니까?
[모델의 평가 메트릭 설명]
모델의 성능을 측정하는 데 사용된 메트릭(metrics) (eg., 정확도, 정밀도, 재현율, F1 등)을 설명하고 있습니까?
[모델의 학습 곡선 및 성능 설명]
모델의 학습 과정에서의 손실 및 성능 (train 손실/성능, valid 손실/성능) 변화, 최종 선정된 모델의 성능(평균과 분산), 학습 및 추론 소요시간(평균과 분산)을 표/차트와 함께 설명하고 있습니까? 아울러, 성능 평균치를 제시할 때 몇 회 run의 평균치인지 밝히고 있습니까?