Deepchecks

Deepchecks

Deepchecks는 AI와 ML 모델/데이터의 검증(Validation)을 위한 오픈소스 프레임워크예요. 연구 단계부터 프로덕션까지 데이터와 모델을 꼼꼼하게 테스트할 수 있도록 돕는 통합 솔루션이에요. 데이터 무결성(data integrity)부터 분포(distribution), 데이터 분할(split), 모델 비교, 성능 평가까지 폭넓게 지원하며, **체크(Check)**와 **스위트(Suite)**라는 개념을 중심으로 모델의 전체 개발 생애주기에 걸쳐 검증을 수행해요.

출처: 문서

본문

Deepchecks의 구성 요소 (Continuous Validation Components)

Deepchecks는 같은 체크를 모델 생애주기 전반에 걸쳐 재사용하는 "지속 검증(continuous validation)" 방식을 채택해요. 단계별로 각각의 인터페이스(시각화 출력, Python/JSON 결과, 알림 설정, 푸시 알림, RCA 등)를 제공해요.

  • Testing Docs: 연구 및 모델 개발 단계에서 수행하는 테스트
  • CI Docs: 모델을 프로덕션에 배포하기 전에 수행하는 테스트
  • Monitoring Docs: 프로덕션에서 수행하는 테스트 및 지속 모니터링

지원하는 데이터 유형은 크게 Tabular(표형), NLP(텍스트), Computer Vision(이미지, 베타) 세 가지예요. Tabular는 핵심 지원 대상이고, NLP는 텍스트 데이터용 서브패키지(deepchecks[nlp]), Vision은 PyTorch·TensorFlow·커스텀 프레임워크를 지원해요.

Checks & Suites (체크와 스위트)

Deepchecks는 작은 검증 단위인 Check와, 여러 체크를 묶은 Suite로 구성돼요. Suite는 몇 줄의 코드만으로 데이터와 모델을 한 번에 검증할 수 있게 해주는 기본 진입점이에요.

내장된 기본 스위트(Built-in Suites)는 다음과 같아요.

  • Full Suite: 전체적인 검증 시나리오
  • Model Evaluation Suite: 모델 성능 및 평가
  • Data Integrity Suite: 데이터 무결성 검증
  • Train-Test Validation Suite: 학습/테스트 데이터 분할 검증

일반적인 검증 시나리오로는 신규 데이터 단일 검증, 데이터 분할 후 Train-Test 검증, 모델 학습 후 분석·검증, 전체 스위트 실행 등이 있어요.

설치

Deepchecks는 Python 3을 요구하며 pip 또는 conda로 설치할 수 있어요. 가상 환경(virtual environment) 사용을 권장해요.

# pip 설치
pip install deepchecks --upgrade

# conda 설치
conda install -c conda-forge deepchecks

# 업데이트
conda update -c conda-forge deepchecks

# Jupyter Notebook 셀에서 설치
import sys
!{sys.executable} -m pip install deepchecks --quiet --upgrade # --user

데이터 유형별로 서브패키지를 명시해서 설치할 수 있어요.

# NLP용 (tabular + nlp 서브패키지 포함)
pip install "deepchecks[nlp]" --upgrade

# NLP 텍스트 속성(text properties) 계산용 추가 의존성
pip install "deepchecks[nlp-properties]" --upgrade

# Computer Vision용
pip install "deepchecks[vision]" --upgrade

패키지는 주기적으로 (주 단위로) 새 버전이 배포돼요. 최신 버전 여부가 기본적으로 확인되며, 비활성화하려면 환경 변수를 설정하면 돼요.

export DISABLE_LATEST_VERSION_CHECK=True

사용 예시 (Model Evaluation Suite)

와인 품질 데이터셋으로 회귀 모델을 만들고, Deepchecks의 모델 평가 스위트를 몇 줄의 코드로 실행하는 예시예요.

from deepchecks.tabular.datasets.regression import wine_quality
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from deepchecks.tabular import Dataset
from deepchecks.tabular.suites import model_evaluation

# 데이터 로드
data = wine_quality.load_data(data_format='Dataframe', as_train_test=False)

# 데이터 분할 및 모델 학습
X_train, X_test, y_train, y_test = train_test_split(
    data.iloc[:, :-1], data['quality'], test_size=0.2, random_state=42)
gbr = GradientBoostingRegressor()
gbr.fit(X_train, y_train)

# Deepchecks Dataset 객체 생성 (메타데이터: label, date, index 등 선언 가능)
train_ds = Dataset(X_train, label=y_train, cat_features=[])
test_ds = Dataset(X_test, label=y_test, cat_features=[])

# 모델 평가 스위트 실행
evaluation_suite = model_evaluation()
suite_result = evaluation_suite.run(train_ds, test_ds, gbr)
# 결과 저장: suite_result.save_as_html() 또는 suite_result.to_json()
suite_result.show()

개별 체크를 직접 실행할 수도 있어요. 예를 들어 과적합을 발견한 뒤 체크에 조건(condition)을 추가해 재실행할 수 있어요.

from deepchecks.tabular.checks import TrainTestPerformance

gbr = GradientBoostingRegressor(n_estimators=20)
gbr.fit(X_train, y_train)
check = TrainTestPerformance().add_condition_train_test_relative_degradation_less_than(0.3)
result = check.run(train_ds, test_ds, gbr)
result.show()

LLM 평가 (LLM Evaluation)

Deepchecks는 LLM 기반 애플리케이션 평가도 지원해요 (별도의 LLM 문서 llmdocs.deepchecks.com). LLM 출력을 다양한 **내장 속성(Built-in Properties)**으로 평가하며, 특히 환각(hallucination) 탐지에 강점이 있어요.

  • Grounded in Context: LLM 출력의 각 사실 주장(factual claim)이 제공된 컨텍스트(입력, 정보 검색, 프롬프트, 대화 기록)에 근거(entailment)하는지 검증하는 환각 탐지기예요. 점수는 0(근거 없음)~1(완전 근거)이며, 검출된 환각 부분을 텍스트에서 하이라이트해 줘요.
  • Retrieval Coverage: RAG에서 검색된 정보가 입력 질문을 충분히 커버하는지 평가해요.
  • Avoided Answer: LLM이 질문에 답을 회피했는지(모름/못함) 확률을 계산해요. RAG에서 관련 정보가 없을 때 모델이 회피하도록 설계한 케이스를 모니터링하는 데 유용해요.
  • Extraction Groundedness / Coverage: 추출(extraction) 출력이 입력에 충실한지, 프롬프트가 요구하는 정보를 모두 포함했는지 평가해요.

이러한 속성들은 LLM-as-a-judge 방식으로 평가되며, 낮은 점수일 때 추정된 원인과 개선 제안(저조한 세그먼트, Weak Segments 등)도 함께 제공돼요. 이외에도 결과를 HTML 리포트(save_as_html())나 JSON(to_json())으로 내보내고, GitHub Actions·Airflow·Pytest·HuggingFace 등과 통합할 수 있어요.

더 알아보기 (Learn more)