# 문제 해결

이 페이지에는 Batch Processing에 대한 알려진 문제, 제한 사항 및 해결 방법이 나와 있습니다. 여기에 나열되지 않은 문제가 발생하면 다음을 통해 보고해 주세요. [지원 채널](https://github.com/roboflow/inference/issues).

## 알려진 제한 사항

* 환경 변수와 로컬 스토리지에 대한 접근이 필요한 일부 Workflow 블록(File Sink 및 Environment Secret Store 등)은 차단되며 실행되지 않습니다.
* 이 서비스는 다음을 정의하는 Workflows에서만 작동합니다. **단일** 입력 이미지 파라미터.

## 기술 세부 정보

* 데이터는 다음과 함께 Data Staging에 저장됩니다. **7일 만료**.
* 각 batch processing 작업에는 여러 단계가 포함됩니다(일반적으로 `processing` 및 `export`). 각 단계는 출력 batch를 생성합니다. 다음을 사용하는 것을 권장합니다. `export` stage outputs는 효율적인 전송을 위해 압축되기 때문입니다.
* 실행 중인 작업은 `processing` stage에서 UI와 CLI 모두를 사용해 중단할 수 있습니다.
* 중단되었거나 실패한 작업은 다시 시작할 수 있습니다.
* 이 서비스는 데이터를 자동으로 shard로 분할하고 병렬로 처리합니다:
  * 머신 수는 데이터 حجم에 따라 자동으로 확장됩니다(일부 워크로드에서는 처리량이 시간당 50만\~100만 이미지에 이를 수 있습니다).
  * 각 머신은 데이터 청크를 처리하는 여러 worker를 실행합니다. 이는 구성 가능하며 속도와 비용의 균형을 맞추도록 조정해야 합니다.

## 작업 시간 초과

### 문제

batch 작업은 다음 경우 조기에 종료됩니다. **Processing Timeout Hours** 가 작업 크기나 복잡성에 비해 너무 낮게 설정된 경우.

<figure><img src="https://media.roboflow.com/inference/batch-processing/batch-processing-timeout.png" alt=""><figcaption><p>UI의 Processing Timeout 설정</p></figcaption></figure>

### 세부 정보

타임아웃 설정(UI) 또는 `--max-runtime-seconds` (CLI)는 다음을 정의합니다. **모든 병렬 worker에 걸친 최대 누적 머신 실행 시간**.

* **총 컴퓨팅 시간:** 제한이 2시간이고 작업이 2대의 머신을 생성하면 각 머신은 최대 1시간 동안 실행될 수 있습니다(2대 x 1시간 = 총 2시간).
* **청크별로 분할:** 병렬 처리를 위해 작업은 processing 청크로 분할됩니다. 타임아웃은 청크에 걸쳐 나뉘므로, 타임아웃이 짧고 청크가 많으면 청크당 시간이 너무 적어질 수 있습니다.
* **머신 유형이 중요합니다:** CPU에서 복잡한 Workflows를 실행하면 처리 시간이 크게 증가합니다. 적절한 경우 GPU를 사용하세요.

### 권장 사항

* 대용량 데이터셋이나 다단계 Workflows에는 넉넉한 타임아웃(예: 4\~6시간)으로 시작하세요.
* 향후 타임아웃 설정에 반영할 수 있도록 실제 작업 실행 시간을 모니터링하세요.
* 더 빠른 처리를 위해 청크 수를 줄이거나 비디오 프레임 서브샘플링 사용을 고려하세요.

## SAHI가 포함된 Workflow가 너무 오래 실행됨

### 문제

SAHI를 사용하는 작업은 특히 고해상도 입력과 instance segmentation이 함께 사용될 때 예상보다 훨씬 오래 걸릴 수 있습니다.

### 원인 및 권장 사항

**slice 수가 너무 많음:** SAHI는 탐지를 위해 이미지를 더 작은 slice로 분할합니다. 기본 설정과 고해상도 입력에서는 이미지당 수십 또는 수백 번의 추론이 발생할 수 있습니다.

* Image Slicer 블록 구성을 확인하세요. Workflow 앞부분에 Resize Image 블록을 사용하여 slice 수를 줄이거나 입력을 축소하세요.

**SAHI 대신 더 큰 model input size를 고려하세요:** 더 큰 입력 크기로 모델을 학습하면 SAHI가 아예 필요 없어질 수 있습니다. 먼저 작은 샘플로 테스트하세요.

**instance segmentation 병목:** SAHI를 instance segmentation과 함께 사용하면 Detections Stitch 블록(특히 NMS 포함)이 주요 병목이 될 수 있습니다. 단일 프레임을 스티칭하는 데 수십 초가 걸릴 수 있습니다.

**SAHI가 포함된 비디오 작업:** FPS 서브샘플링을 사용해 프레임을 건너뛰세요:

* UI에서 다음을 사용하세요. **Video FPS sub-sampling** 드롭다운.
* CLI에서는 다음을 사용하세요. `--max-video-fps` 플래그.

<figure><img src="https://media.roboflow.com/inference/batch-processing/limiting-video-fps.png" alt=""><figcaption><p>UI의 FPS sub-sampling 설정</p></figcaption></figure>

## 메모리 부족(OOM) 오류

### 문제

Workflow가 사용 가능한 RAM 또는 VRAM보다 더 많은 메모리를 사용하면 OOM 오류로 작업이 실패합니다.

### 일반적인 원인

* **SAHI + Instance Segmentation:** 이 조합은 메모리를 매우 많이 사용합니다. SAHI는 추론 호출 수를 늘리고, instance segmentation은 큰 출력(마스크, 점수)을 생성하므로, 종종 충돌로 이어집니다.
* **머신당 worker 수가 너무 많음:** 여러 worker는 경량 Workflows의 비용과 속도를 최적화하지만, 무거운 Workflows(여러 개의 큰 모델, 복잡한 후처리)는 사용 가능한 메모리를 초과합니다.

### 권장 사항

* 큰 모델, SAHI 또는 고해상도 입력이 있는 Workflows에서는 머신당 worker 수를 더 적게(예: 1 또는 2) 사용하세요.
* 다음을 줄이세요. **Workers Per Machine** 고급 옵션에서 값을 낮추세요.
* 모델에 더 높은 메모리 처리량이 필요하면 CPU에서 GPU로 전환하세요.
* 대규모 batch를 실행하기 전에 작은 데이터셋으로 Workflow를 테스트하세요.
* 입력 해상도를 낮추거나 불필요한 블록을 제거하여 Workflow를 단순화하세요.

<figure><img src="https://media.roboflow.com/inference/batch-processing/workers-number-adjustment.png" alt=""><figcaption><p>UI의 머신당 worker 수 설정</p></figcaption></figure>
