# M4 Pipeline 失敗原因與解法

**作者**：M4  
**日期**：2026-05-07  

---

## 現象

Job 140 中 ASR + YOLO 失敗，原因記錄為「Worker restarted」。

## 根因分析

### 1. 記憶體壓力

M4 只有 16GB RAM，且 swap 已使用 2.76GB / 4GB（69%）。多個 processor 同時執行時：

| Processor | 約需 RAM |
|-----------|---------|
| ASR (faster-whisper) | 2-4GB |
| YOLO | 1-2GB |
| Face (swift_face) | ~500MB |
| OCR | ~500MB |
| Pose | ~500MB |
| **總計（max_concurrent=2）** | **~4-8GB** |

記憶體不足時，OS 可能 kill worker process，導致「Worker restarted」。

### 2. 非必要在 M4 執行

分工原則已確定：M5 負責重處理（48GB RAM, 18 cores），M4 負責輕服務 + 測試。

## 解法

| 方案 | 說明 | 難度 |
|------|------|------|
| **A. 降低 M4 concurrency** | `max_concurrent=1`，一次只跑一個 processor | 🟢 簡單 |
| **B. M4 只跑輕量 processor** | 跳過 ASR，只跑 cut/face/ocr/pose/yolo | 🟢 簡單 |
| **C. 接受分工** | M4 不做長片 pipeline，只做測試驗證 | 🟢 最佳 |

## 建議

採用 **方案 C** — M4 pipeline 失敗是預期行為，M4 完全不適合跑全片 ASR。M5 已正確執行 Job 255，完成後將結果 sync 回 M4 驗證即可。

若 M4 需要測試 pipeline，使用短影片（short_clip.mov, 5s）已有成功紀錄（Job 137 completed）。
