ICL 기반 설비·공구 상태·위험 분석
센서 데이터로 설비·공구의 현재 상태와 미래 위험을 분석하고, 결과를 점검 화면에 연결했습니다. 현재·미래 모델 12개를 함께 버전 관리해 추론 중 서로 다른 버전이 섞이지 않도록 했습니다. CNC·MCT 설비 44대에서 이상 탐지 F1 약 95%를 확인했습니다.
- 기간
- 2025.10 ~ 2026.09
- 담당
- TabFM 기반 ICL 추론, 모델 세대 관리, 데이터 수집·점검 업무 연동 구현
- 결과
- CNC·MCT 설비 44대 대상 이상 탐지 F1 약 95%, 현재·미래 모델 12개 세대 관리

과제와 구현 범위
설비·공구의 현재 상태와 미래 시점별 위험을 점검 이력과 함께 확인하는 흐름을 구현했습니다. 정형 센서 데이터에 Tabular LLM(TabFM) 기반 문맥 내 학습(ICL)을 적용하고, 현재·미래 건강도를 화면에 표시했습니다. CNC·MCT 설비 44대에 적용했고, 설비별 이상 탐지 F1은 대부분 약 95% 수준이었습니다. 건강도는 1에 가까울수록 정상 상태를 나타내도록 정의한 모델 출력입니다.
미래 위험은 정해진 시점별 건강도 추세로 계산했습니다. 관측값이 없거나 오래된 경우에는 보류 상태로 표시했습니다. 정기 공구 교체 일정은 모델이 계산한 위험과 별도로 관리했습니다.
설계 판단
설비 44대마다 모델을 다시 학습하고 배포하면 비용이 큽니다. 그래서 가중치는 고정하고 문맥 정보만 갱신하는 ICL을 선택했습니다.
현재·미래 모델 12개를 한 세대로 묶은 이유는 추론 중 서로 다른 버전이 섞이지 않게 하기 위해서입니다.
추론 시점과 모델 버전 관리
센서 데이터를 60분 단위로 집계하고 매 정시에 추론하도록 구성했습니다. 설비 단위 모델(MLM)과 공구 단위 모델(TLM)에 확률 보정과 시간 방향 단조 보정을 적용했습니다. 재학습 시에는 백본 가중치 대신 문맥 정보와 메타데이터를 갱신했습니다.
설비·공구 각각 현재 모델 1개와 미래 모델 5개, 총 12개를 한 세대로 묶었습니다. 필요한 모델 구성이 완료된 뒤 단일 트랜잭션으로 활성화하고, 추론을 시작할 때 사용할 세대를 고정했습니다.
추론 결과가 비어 있으면 마지막 유효값을 유지하되, 화면에서 값의 갱신 시점을 확인하도록 했습니다. 모델 버전과 관측 시점을 함께 관리해 오래된 결과를 새 결과로 오인하지 않도록 구성했습니다.
데이터 수집과 점검 화면 연결
MSSQL의 설비 이력을 증분 조회해 PostgreSQL·TimescaleDB에 저장했습니다. 워터마크와 중복 방지 키, 트랜잭션으로 다시 수집되는 데이터를 처리했습니다.
Django로 업무 API를, FastAPI로 AI 요청과 서버 전송 이벤트(SSE)를, Celery로 학습·추론 작업을 구성했습니다. React 화면에서 상태를 확인하고 점검을 등록·완료할 수 있도록 연결했습니다. 점검 완료 처리에는 행 잠금과 DB 제약을 적용했습니다.
상태와 위험을 확인하는 화면
현재 건강도, 미래 시점별 추세와 계산된 위험, 사용 중인 모델 세대와 재학습 상태를 함께 표시한 화면입니다.

논문과 특허
TabFM의 문맥 내 학습 기반 이상 탐지는 AISP 2026에서 「ICL 기반 공작기계 이상 탐지 실증연구」로 발표했습니다(제2저자). 건강도 산출 방법은 특허로 출원했습니다(출원번호 10-2026-0159698, 2026.08.25).
