본문 바로가기
C.W.K.
Stream
Lesson 05 of 12 · published

노트북 테스트

~9 min · jupyter, notebooks, papermill

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

노트북은 금방 상해

Jupyter 노트북은 머신러닝 저장소 어디에나 있지. 탐색 분석, 학습 스크립트, 데모 흐름, 튜토리얼 페이지까지 다 쓰인다. 근데 커밋하는 순간 상하기 시작해. 출력값은 낡아버리고, 의존성은 옮겨가고, '내 노트북에서는 잘 돼'라는 상태도 오래되거든.

노트북도 코드처럼 다뤄. CI에서 테스트해.

도구

  • papermill — 매개변수화된 입력으로 노트북을 엔드투엔드로 실행해. 모든 셀이 실행된 새 노트북을 출력하지.
  • pytest --nbmake — 노트북을 pytest 테스트로 실행해.
  • jupyter nbconvert --execute — 내장 도구라 단순해.
  • nbqa — 노트북에 ruff / black / mypy를 실행해.

검증할 것

  1. 노트북이 에러 없이 끝까지 실행되는지.
  2. 특정 셀이 기대한 출력값을 만드는지 (papermill + 작은 테스트 스크립트).
  3. 린트와 포맷이 깔끔한지 (nbqa + ruff).
  4. 커밋 전에 출력값을 제거(nbstripout 또는 pre-커밋 hook)해서 변경 사항을 읽기 쉽게 만드는지.

Code

노트북 테스트 작업·yaml
  notebooks:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: astral-sh/setup-uv@v3
      - run: uv sync --all-extras --dev
      - name: Lint notebooks
        run: uv run nbqa ruff notebooks/
      - name: Execute notebooks
        run: |
          for nb in notebooks/*.ipynb; do
            uv run papermill "$nb" "/tmp/$(basename $nb)" --no-progress-bar
          done

External links

Exercise

노트북이 있는 저장소에 nbstripout을 pre-커밋 hook으로 추가해. 각 노트북을 papermill로 엔드투엔드 실행하는 CI 작업도 추가해. 노트북이 버전을 올리는 동안 계속 통과하는지 확인해 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.