1엣지 AI의 필요성

엣지 AI는 클라우드가 아닌 현장(Edge) 장치에서 AI 추론을 수행합니다. 제조 비전 검사에서 실시간성, 네트워크 독립성, 보안이 중요할 때 필수적입니다.

저지연

네트워크 왕복 없이
수 ms 내 응답

네트워크 독립

인터넷 연결 없이
오프라인 동작

데이터 보안

이미지가 외부로
전송되지 않음

비용 효율

클라우드 API 비용
절감

엣지 vs 클라우드: 라인당 1대의 카메라로 초당 10장 검사 시, 클라우드 추론은 네트워크 지연(50-200ms)과 API 비용이 발생합니다. 엣지 장치는 초기 투자 후 무제한 추론이 가능합니다.

구분클라우드 추론엣지 추론
지연 50-200ms (네트워크 포함) 5-50ms (로컬)
비용 구조 추론당 과금 장비 구매 (일회성)
네트워크 필수 (안정적) 불필요
확장성 무제한 장비 추가 필요
데이터 보안 전송 필요 로컬 처리

2NVIDIA Jetson 플랫폼

NVIDIA Jetson은 제조 AI 비전에서 가장 많이 사용되는 엣지 플랫폼입니다. CUDA 기반 GPU 가속으로 PyTorch/TensorFlow 모델을 그대로 배포할 수 있습니다.

모델GPU성능적합 용도
Jetson Nano 128 CUDA ~21 TOPS 경량 모델, PoC
Jetson Orin Nano 1024 CUDA ~40 TOPS 중형 모델, 단일 카메라
Jetson Orin NX 2048 CUDA ~100 TOPS 대형 모델, 다중 카메라
Jetson AGX Orin 2048 CUDA ~275 TOPS 복잡한 파이프라인
# TensorRT 추론 흐름 (수도코드) # 1. 모델 변환: PyTorch → ONNX → TensorRT torch.onnx.export(model, dummy_input, "model.onnx") trtexec --onnx=model.onnx --saveEngine=model.engine --fp16 # 2. Jetson에서 추론 실행 engine = load_tensorrt_engine("model.engine") context = engine.create_execution_context() while camera.is_open(): frame = camera.read() # 전처리: 리사이즈 → 정규화 → CHW 변환 input_tensor = preprocess(frame) # [1, 3, 640, 640] # GPU 추론 (5-20ms) output = context.execute(input_tensor) # 후처리 및 결과 표시 result = postprocess(output) display(frame, result) # OK/NG 표시

3Intel OpenVINO

OpenVINO는 Intel CPU/GPU/VPU에서 최적화된 추론을 제공합니다. NVIDIA GPU가 없는 환경에서 대안이 되며, 산업용 PC에서 많이 사용됩니다.

# OpenVINO 추론 흐름 (수도코드) # 1. 모델 변환 ovc model.onnx --output_dir ./ir_model --compress_to_fp16 # 2. 추론 실행 (Intel CPU/GPU/VPU) core = OpenVINO.Core() model = core.read_model("model.xml") compiled = core.compile_model(model, device="CPU") # 또는 "GPU", "MYRIAD" # 3. 검사 실행 input_tensor = preprocess(image) output = compiled.infer(input_tensor) result = postprocess(output)

4엣지 최적화 기법

엣지 장치에서 실시간 추론을 위해서는 모델 경량화와 추론 최적화가 필수입니다.

최적화 기법속도 향상정확도 손실적용 난이도
FP16 변환 ~2x 거의 없음 낮음
INT8 양자화 ~4x 1-3% 중간
TensorRT 최적화 ~3x 없음 낮음
모델 프루닝 ~2x 1-5% 높음
지식 증류 ~3x 2-5% 높음
# INT8 양자화 흐름 (수도코드) # 방법 1: Post-Training Quantization (PTQ) model.qconfig = get_default_qconfig('fbgemm') model_prepared = prepare(model) for images in calibration_data: # 캘리브레이션 (100~1000장) model_prepared(images) model_int8 = convert(model_prepared) # FP32 → INT8 # 방법 2: TensorRT INT8 trtexec --onnx=model.onnx --int8 --calib=calibration.cache

5엣지-클라우드 하이브리드

엣지에서 1차 검사를 수행하고, 불확실한 케이스만 클라우드로 전송하는 하이브리드 아키텍처가 비용과 정확도를 모두 만족시킵니다.

# 엣지-클라우드 하이브리드 검사 (수도코드) CONFIDENCE_THRESHOLD = 0.85 def hybrid_inspect(image): # 1단계: 엣지에서 1차 추론 (5-20ms) edge_result = edge_model.infer(image) # 2단계: 신뢰도 기반 분기 if edge_result.confidence >= CONFIDENCE_THRESHOLD: return edge_result # 엣지 결과 사용 (~90%) else: return cloud_api.infer(image) # 클라우드로 에스컬레이션 (~10%) # 결과: 클라우드 비용 90% 절감, 정확도 유지

네트워크 장애 대비: 클라우드 API 호출 실패 시 엣지 결과를 fallback으로 사용하거나, 이미지를 로컬에 저장 후 나중에 재처리하는 로직이 필요합니다.

6엣지 시스템 운영 가이드

산업 현장에서 안정적인 엣지 AI 운영을 위한 고려사항:

  • 온도 관리: GPU 과열 시 Throttling 발생 → 팬/방열판 설계, 주변 온도 모니터링
  • 전원 안정성: UPS 구비, 갑작스런 전원 차단 시 파일시스템 보호 (Read-only rootfs)
  • 원격 업데이트: OTA(Over-The-Air) 모델 업데이트 파이프라인 구축
  • 헬스체크: 추론 속도, GPU 메모리, 온도 모니터링 알림
  • 폴백 로직: AI 장애 시 룰 기반 검사 또는 수동 검사로 전환
# Jetson 헬스 모니터링 (수도코드) def get_system_stats(): stats = { 'cpu_temp': read_thermal_zone(0), # /sys/class/thermal/ 'gpu_temp': read_thermal_zone(1), 'mem_used': get_memory_usage(), 'gpu_util': run_tegrastats() } return stats def health_check(): stats = get_system_stats() if stats.gpu_temp > 75: send_alert("GPU 과열 경고") if stats.mem_used > 90%: send_alert("메모리 부족 경고") return stats # 주기적 실행: cron 또는 systemd timer로 등록