메인 내용으로 이동

INCL의 구성

warning

빠른 공유를 위한 번역 및 축약본입니다. 원본

INCL에서 실험 실행 워크플로우

INCL은 클라이언트, 백엔드, 작업 인스턴스로 구성된다. 클라이언트는 실험을 제출, 추적하고, 백엔드는 요청을 처리, 자원을 관리하며, 작업 인스턴스는 VM에서 실험을 실제로 수행한다. "실험"과 "작업"은 동의어로, 모델 훈련뿐 아니라 추론, 스크립트 실행도 포함한다.

INCL에서 실험 실행의 일반적인 워크플로우

  1. 작업 요청 — 사용자가 스크립트, 자원 요구 사항을 지정해 백엔드에 전송.
  2. 코드 업로드 — 작업 디렉터리가 객체 스토리지로 동기화.
  3. VM 프로비저닝 — 백엔드가 요구 자원에 맞춰 VM을 만들고 환경을 준비.
  4. 코드 다운로드 — VM이 객체 스토리지의 코드를 블록 스토리지로 복사.
  5. 모델 훈련/추론 — VM이 작업을 실행하고 학습 데이터는 파일 스토리지(NFS)에서 읽음.
  6. 결과 동기화 — 체크포인트, 출력을 객체 스토리지에 업로드.
  7. 종료 보고 — VM이 완료를 알리고 즉시 자원 해제.

INCL 아키텍처의 주요 구성요소

INCL 클라이언트

  • CLI — Python Click 기반, 터미널, 자동화 친화적.
  • 웹 UI — React, MobX, Material UI로 작성, 실시간 그래프 제공.
정보

2025년 이후로 shadcn 기반 Next App Router로 이동.

INCL 클라이언트와 백엔드 간의 상호작용

클라이언트는 REST API로 작업 제출, 상태 조회, 모델 관리 요청을 보낸다. API 서버는 객체 스토리지와 관계형 DB에 연결되고, 로깅 서버는 로그, 메트릭을 NoSQL DB에 저장한다.

INCL 백엔드

Kubernetes 클러스터에서 동작하며 다음 구성요소로 이루어진다.

  • API 서버 (Django REST) — 인증, 메타데이터 저장, 아티팩트 제공.
  • 스케줄러 — 작업 큐 관리, 전역, 사용자 할당량 적용, 온디맨드, 스팟 선택.
  • 작업 실행기 (Celery) — VM 생성, 코드 복사, 의존성 설치, 오류 처리.
  • 로깅 서버 (Gin) — 고동시성 로그, 메트릭 수집.

API 서버, 스케줄러, 작업 실행기 및 작업 인스턴스 간의 상호작용

API 서버가 작업을 큐에 넣으면 스케줄러가 자원을 확인해 실행기로 전달하고, 실행기가 VM에서 작업을 수행한다. 완료 시 VM이 실행기에 종료를 보고해 자원을 반환한다. 중지 요청은 API 서버→실행기→VM 순으로 전파된다.

INCL 실험의 수명주기

Gin 로깅 서버는 초당 수천 건의 로그, 메트릭을 처리해 실시간 모니터링을 지원한다. 로깅을 오프로딩함으로써 API 서버의 부하를 줄이고 확장성을 높였다.

작업 인스턴스

VM 내부에는 작업 실행기, INCL Python SDK, 로그, 메트릭 수집기가 포함된다. SDK로 구성, 메트릭, 아티팩트를 몇 줄의 코드로 기록할 수 있고, GPU 사용률이 임계값 아래로 떨어지면 VM이 자동 종료돼 낭비를 방지한다.

적절한 스토리지 선택

스토리지용도특성
객체코드, 모델 장기 저장저렴, 느림
블록실행 중 임시 데이터빠름, 단일 인스턴스 전용
파일(NFS)학습 데이터다중 인스턴스 동시 접근, 비쌈

INCL 아키텍처에서 사용되는 다양한 스토리지

코드는 실행 전에 블록 스토리지로 복사해 I/O 병목을 제거하고, 작업 완료 후 결과를 객체 스토리지로 이동해 비용을 절감한다. 학습 데이터는 파일 스토리지에 상주해 여러 VM이 동시에 접근할 수 있다.

이 문서를 언급한 문서들