728x90

비전 검사 AI를 처음 라인에 붙였을 때, 정확도가 아니라 다른 곳에서 발목을 잡혔습니다. 모델이 96%를 맞혔는데, 1분에 한 번씩 추론 서버가 2~3초 늦어지는 거예요. PLC는 "지금 답을 달라"는데 AI는 "잠시만요"라니 — 그 3초 동안 라인이 서서 기다렸습니다. AI를 현장에 붙인다는 건 모델을 잘 만드는 문제가 아니라, **확률적으로 늦는 서비스를 확정적으로 돌아가는 라인에 연결하는 문제**였습니다. 그때부터 제가 모든 AI 호출 앞뒤에 반드시 붙이는 3단계를 공유합니다.

 

## 1. AI 호출은 '기계 신호'처럼 다뤄라 — 타임아웃 명시

 

현장에서 센서 신호는 무응답이 없습니다. 들어오거나, 끊기거나, 둘 중 하나죠. 반면 AI API는 세 번째 상태인 "늦게 옴"을 가지고 있습니다. 이걸 라인에 그대로 붙이면 라인은 AI의 리듬에 끌려다닙니다.

 

원칙은 단순합니다. **모든 AI 호출에 하드 타임아웃을 선언**하세요. 검사 1사이클이 1.2초라면 AI 응답 대기 상한은 800ms 같은 식으로, 라인 사이클타임에서 역산한 숫자를 코드에 못 박습니다. 타임아웃에 걸리면 그건 '실패'입니다. "조금만 더 기다리자"는 허용하지 않습니다. 라인에서 시간은 정답보다 먼저 오는 제약이거든요.

 

## 2. 재시도는 '리듬'이 중요하다 — 백오프 + 상한

 

타임아웃이 걸렸다고 무작정 다시 던지면 안 됩니다. 서버가 버거운 타이밍에 재시도를 쏟아붓는 건, 막힌 도로에 차를 더 밀어넣는 것과 같습니다. 제가 쓰는 재시도 룰은 세 줄입니다.

 

- 즉시 재시도는 **1회만**. 첫 실패가 일시적 글리치인 경우가 의외로 많습니다.

- 두 번째부터는 **지수 백오프**(100ms → 400ms → 1.6s...). 서버가 숨 돌릴 틈을 줍니다.

- 재시도 총횟수에 **절대 상한**(예: 3회)을 둡니다. 무한 재시도는 라인 정지와 같습니다.

 

현장 경험상 대부분의 일시 장애는 2회 안에 복구됩니다. 3회를 넘어가면 "나중에 다시"가 아니라 "대체 경로로" 넘어가는 게 맞습니다.

 

## 3. 폴백은 '최악이 아니라 차악'을 설계하라 — 캐시·룰·수동

 

AI가 답을 못 줄 때 라인은 멈추지 않아야 합니다. 폴백은 화려할 필요가 없고, "일단 돌아가게"만 하면 됩니다. 제가 현장에서 쓰는 3단 폴백입니다.

 

1. **최근 정상값 재사용**: 직전 N회의 검사 결과가 정상이었다면, 같은 판정을 잠시 유지합니다. 불량 유출 리스크보다 라인 정지 비용이 큰 구간에서 씁니다.

2. **룰 기반 휴리스틱**: AI가 죽었을 때만 켜지는 단순 규칙(면적 임계값, 엣지 카운트 등). 정확도는 낮지만 결정은 빠릅니다.

3. **수동 전환 버튼**: 최후에는 현장 작업자가 한 번 눌러 AI 구간을 건너뛰게 합니다. 자동화의 마지막 안전장치는 언제나 사람입니다.

 

핵심은 폴백이 "언제 켜지는지"를 미리 정해두는 겁니다. 장애 나고 나서 회의로 정하면 이미 늦었습니다.

 

## 마무리 — 현장에서 정확도는 2순위다

 

AI 데모는 "맞히는 것"을 보여주고, 현장은 "안 멈추는 것"을 요구합니다. 제가 7년차에 와서야 정리한 한 줄은 이겁니다: **AI를 라인에 붙일 땐 정확도 개선보다 중단 없는 실패 설계를 먼저 하세요.** 타임아웃·재시도·폴백, 이 3단만 갖춰도 AI는 '가끔 멈추는 신기한 기술'에서 '현장에서 쓸 수 있는 설비'가 됩니다.

 

여러분의 라인에 붙은 AI는, 늦어질 때 어떻게 행동하나요? 댓글로 공유해 주세요.

728x90

+ Recent posts