Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

학습된 모델 노드의 배치 및 스트리밍 실행

Trained model 노드는 Foundry 안팎에서 학습한 사용자 정의 ML 모델을 파이프라인에서 실행합니다. 모델의 API 스키마에 입력과 출력 열을 매핑하고 결과를 후속 변환이나 출력에 연결합니다.

지원하는 모델과 실행 방식

모델 API는 표 입력 하나와 표 출력 하나여야 하며 필수 입력 열이 하나 이상 있어야 합니다. 모델이 반환하는 열은 API에 정의된 이름과 맞아야 합니다. 추가 열은 버려지고 필요한 열이 빠지면 빌드 오류가 날 수 있습니다.

실행 방식지원
Standard 배치(Spark)지원합니다. Warm pool은 꺼야 합니다.
스트리밍지원합니다. 파티션 키와 window를 구성해야 합니다.
Faster(Lightweight/DataFusion)현재 지원하지 않습니다. 지원은 예정되어 있습니다.
미리보기배치에서 지원합니다. 스트리밍 모델 미리보기는 사용할 수 없습니다.

입출력 열은 다음 유형을 지원합니다.

  • 기본형은 string, boolean, integer, long, float, double, date, timestamp입니다.
  • 복합형은 array, map, struct이며 중첩 필드도 지원합니다.
  • 미디어는 mediaReference를 지원하여 모델이 추론 중 참조한 미디어 항목을 읽을 수 있습니다.

objectSet 같은 비지원 유형은 검증 단계에서 거부됩니다.

모델 가져오기와 노드 생성

배치는 Spark 모드와 Warm pool=OFF를 확인합니다. 기존 파이프라인이 다른 모드라면 Spark 배치 파이프라인을 새로 만듭니다.

스트리밍은 기존 스트리밍 파이프라인을 열거나 새로 만듭니다.

Reusables > Trained Models에서 자산 가져오기 절차로 모델을 추가합니다.

입력 노드를 선택하고 Trained model을 누릅니다. 이 메뉴는 모델을 하나 이상 가져온 뒤에만 나타납니다.

입출력 매핑

입력 열은 직접 열 참조뿐 아니라 표현식도 사용할 수 있습니다. 필요한 Cast나 변환을 적용한 값을 모델에 전달할 수 있습니다. 출력은 alias를 지정하여 모델 자체를 바꾸지 않고 결과 데이터셋의 열 이름을 바꿀 수 있습니다.

모델 노드를 출력에 연결하고 Save, Deploy, Deploy pipeline 순서로 반영합니다. 스트리밍은 배포 전에 다음 설정까지 완료해야 합니다.

스트리밍의 키와 window

모델 노드의 Streaming configuration에서 함께 처리할 레코드를 정합니다.

  1. 파티션 키 열을 선택합니다. 시계열별로 나눌 때는 series ID를 사용하며, 모델 노드 앞에서 이미 지정한 파티션 키를 사용할 수도 있습니다.
  2. Window 유형과 크기를 지정합니다. 모델에 필요한 레코드 수, 메모리와 출력 지연 시간을 함께 고려합니다.
  3. Event-time window라면 모델 앞에 Assign timestamps and watermarks를 추가하고 Timestamp expression에 실제 사건 시각을 나타내는 열이나 표현식을 지정합니다.

모델은 키별 window에 모인 행들로 추론합니다. Window 완료를 기다리는 시간과 추론 실행 시간이 모두 출력 지연에 반영됩니다. 큰 window는 결과를 기다리는 시간과 한 번의 추론 작업량을 늘릴 수 있습니다.

배포 후 window가 완료되고 추론이 끝나면 출력 스트림에서 결과를 볼 수 있습니다. 이벤트 시각과 watermark의 진행, 늦은 레코드와 유휴 입력 조건도 적용됩니다.

시계열 모델

시계열 모델은 스트리밍에서만 지원합니다. 각 시계열을 구분하는 파티션 키, 관측 시각의 timestamp와 watermark, 모델에 필요한 시간 구간을 덮는 event-time window를 구성합니다. 관측 시각, 측정값과 그 밖의 필수 열을 API 입력에 매핑합니다.

Window와 watermark는 행을 정렬하지 않습니다. 순서 있는 시퀀스를 요구하는 모델은 추론 전에 모델 내부에서 관측 timestamp를 기준으로 입력 행을 정렬해야 합니다.

Sidecar 자원과 비용

모델은 일반 변환 프로세스와 분리된 sidecar에서 실행합니다. 배치와 스트리밍의 기본 할당은 모델 sidecar마다 다음과 같습니다.

자원기본값
CPU1 core
Memory8 GB
GPU없음

실행이 느리면 파이프라인의 컴퓨팅 프로필, 모델에 할당한 자원 또는 둘 모두를 늘리는 방법을 검토합니다. Reusables > Trained models의 모델 가져오기 창에서 Configure resources를 선택합니다.

CPU, 메모리와 GPU를 지정하고 Advanced configuration에서 시작 timeout을 설정할 수 있습니다.

자원 구성은 모델 노드별이 아니라 파이프라인의 해당 모델별입니다. 같은 모델을 쓰는 모든 노드는 같은 구성을 공유합니다. 스트리밍에서는 자원 변경을 반영하려면 재배포해야 합니다.

배치에서는 사용한 모델마다 각 Spark 실행기와 드라이버에 sidecar가 생성됩니다. 스트리밍에서는 모델마다 각 Flink task manager에 생성됩니다.

스트리밍 task manager와 sidecar는 레코드나 window 완료를 기다리는 동안에도 파이프라인이 켜져 있으면 할당 자원을 계속 소비합니다. 작업자 병렬도, 모델 자원과 실행 시간을 함께 계산해야 합니다. 모델을 가져오기만 하고 노드에서 사용하지 않으면 sidecar를 만들지 않으며 해당 추가 비용도 없습니다.

모델 버전과 브랜치

빌드는 해당 브랜치에서 사용 가능한 모델의 최신 버전을 선택합니다. 예를 들어 master의 빌드는 master에 발행된 최신 모델을 사용합니다. 해당 브랜치에 버전이 없으면 설정한 fallback 브랜치를 순서대로 사용합니다.

특정 모델 버전을 노드에 고정하는 기능은 현재 지원하지 않으며 향후 기능으로 예정되어 있습니다. 새 모델을 발행하면 이후 빌드가 최신 버전을 선택하므로 모델 변경의 하위 영향을 고려해야 합니다.

이미 실행 중인 스트리밍 파이프라인은 로드한 모델 버전을 계속 사용합니다. 최신 버전으로 바꾸려면 재시작하거나 재배포합니다.

Marketplace 배포

배치 파이프라인의 모델 노드는 사용한 모델을 Include with content로 자동 포함하므로 설치자가 파이프라인과 모델을 함께 받습니다.

또는 DevOps에서 모델을 product input으로 구성하여 설치자가 자기 인스턴스의 기존 모델을 선택하게 할 수 있습니다. 스트리밍의 학습된 모델 노드는 Marketplace로 배포하지 못합니다. 다른 패키징 조건은 Marketplace 구성을 따릅니다.

시작 timeout과 추론 시간

모델 sidecar는 실행 전에 모델을 내려받아 로드해야 합니다. 기본 준비 시간 한도는 10분입니다. 그 안에 준비되지 않으면 timeout으로 실패합니다. 모델이 계속 로드 중인 경우뿐 아니라 OOM 등으로 sidecar가 종료된 경우도 이 오류가 나타날 수 있습니다.

모델 구성의 Advanced configuration > Model startup timeout override에 초 단위 값을 넣으면 더 길거나 짧게 지정할 수 있습니다. 비워 두면 기본값을 사용합니다. 설정은 파이프라인의 모델별로 적용되며 해당 모델의 모든 배치 또는 스트리밍 sidecar에 동일하게 적용됩니다.

배치에서는 sidecar가 준비된 후 개별 추론 요청에 timeout 제한을 두지 않습니다. 스트리밍의 오래 걸리는 추론은 해당 window의 출력을 지연시킵니다. 시작 timeout은 모델 로딩에 대한 설정이며 개별 추론의 실행 기간을 제한하는 값이 아닙니다.