팀 과제 다섯 개로 이 프로그램을 「현장에 들일 수 있는가」의 관점에서 다시 봅니다. 모든 과제는 배포본을 고치지 않고 화면·API·파일만으로 할 수 있습니다. 끝에 이번 실행에서 확인한 제약을 개발 측에 전할 목록으로 정리했습니다.
과제#
3~4명이 한 팀을 이룹니다. 과제마다 「무엇을 바꿨고, 무엇을 쟀고, 무엇을 결론 냈는지」를 표 하나와 문단 하나로 정리해 제출합니다. 수치는 반드시 직접 실행한 값이어야 합니다.
과제 A. 학습 길이와 헛알람#
RTU를 「이력 초기화」하고 「운전 시작」을 누른 뒤 5분, 10분, 24분째에 각각 연결(또는 승인 재학습)합니다. 그다음 이상을 넣지 않은 정상 운전 10분 동안 「주의」「위험」이 몇 번 켜졌는지 셉니다.
- 「이상 알람」 메뉴를 2초마다 기록하거나, PDM의
/api/rtu/sync응답에서live.baseline_anomaly,live.process_anomaly를 셉니다. - 학습 길이(시점 수)를 가로축, 헛알람 비율을 세로축으로 그립니다. 5장의 두 점(학습 192시점 23%, 864시점 1.3%) 사이가 어떤 모양인지 확인합니다.
- 결론: 「이 RTU라면 최소 몇 분의 정상 이력이 필요한가」와 그 근거.
과제 B. 기존 방식이 놓치는 이상#
3장의 curl로 한 채널만 바꾸는 실험을 일곱 채널에 각각 진행합니다. 값은 정상 범위 밖으로 1.5배, 3배 벗어난 두 수준으로 넣습니다.
- 채널 × 수준마다 기존 방식과 PCA가 처음 이상이라고 한 시간과 60초 동안의 알람 비율을 표로 만듭니다.
- 기존 방식이 끝까지 못 잡은 채널을 고르고, 그 채널이 반응기에서 어떤 고장과 관련되는지(1장 표) 적습니다.
- 결론: 기존 방식(온도·압력)만 쓰는 현장이라면 어떤 이상을 놓치는가.
과제 C. 이상을 먼저 넣고 연결할 때의 경계#
5장에서 40초는 잡혔고 120초는 못 잡았습니다. 그 사이에서 경계가 어디인지 먼저 계산으로 예측하고 실험으로 확인합니다.
- 힌트: 연결 때 이력은 정상 320시점 + 이상 L시점입니다. 이상이 검증 구간(60~80% 사이)에 처음 걸치는 L은 얼마인가요?
- L을 예측값 앞뒤로 10초씩 바꾸어 연결하고, 이상 동안 「위험」이 나는지 봅니다.
- 결론: 「연결 전에 이상이 이 시간보다 길면 안 된다」는 규칙을 이력 길이로 일반화합니다.
과제 D. 승인 재학습 규칙 만들기#
이 프로그램에서 재학습하려면 사람이 버튼을 눌러야 합니다. 누를지 말지를 정하는 운전 규칙을 쓰고 시험합니다.
- 규칙 초안 예: 「최근 24분 안에 수동 이상·알람·정지가 없을 때만」, 「『수동 이상 0개』를 확인한 뒤」.
- 규칙을 어긴 재학습(5장)과 지킨 재학습을 한 번씩 하고, 그 뒤 같은 이상을 넣어 결과를 비교합니다.
- 현장에는
LABEL이 없습니다. 「수동 이상 0개」 대신 무엇을 보고 판단할지(운전 일지, 알람 이력, 운전 모드 태그)를 정합니다.
과제 E. 현장 PLC_DATA 준비 계획#
반응기 DT-100 하나를 대상으로, 현장에서 PLC_DATA를 받아 이 프로그램에 넣기까지의 계획을 씁니다.
- 어떤 태그를 넣을지(설비 필터로 걸리는지 포함), 기록 주기, 기간(몇 주), 빼야 할 구간(기동·정지·세정·품종 변경)
- 파일 앞쪽 80%를 정상으로 만드는 방법(6장)
- 성능을 잴 라벨: 과거 알람·정비 기록에서 무엇을 가져올지, 「몇 분 먼저 알았나」를 어떻게 잴지
- 현장 데이터의 외부 반출 금지 원칙을 어떻게 지킬지
평가 기준#
| 기준 | 비중 | 좋은 답 |
|---|---|---|
| 실행 근거 | 30% | 모든 수치가 직접 실행한 값이고, 다시 실행하는 방법(순서·시간·값)이 적혀 있습니다 |
| 원리 설명 | 25% | 결과를 창 20시점, 60·20·20 분할, 검증 99% 임계값, 입력 채널로 설명합니다 |
| 현장 판단 | 25% | 놓친 시간과 헛알람 수를 따로 재고, 어느 쪽이 더 큰 비용을 초래하는지 현장 관점에서 판단합니다 |
| 한계 인식 | 20% | 합성 데이터(잡음 없음)와 화면의 「멈춤」이 결과를 얼마나 쉽게 얻도록 했는지 짚습니다 |
개발 측에 전할 확인 사항#
다음은 이번 실행(2026-11-11, macOS, 배포본 v0.1.0 수정 없음)에서 확인한 사항입니다. 교육 진행이나 현장 적용 전에 개발 측과 함께 확인하면 좋습니다.
| 구분 | 내용 |
|---|---|
| 설치 | macOS·Linux에서 pip install -e ".[workflow,web]"가 pywin32 때문에 실패합니다. setup_windows.bat은 Python 위치(C:\projects\sdk\python-3.12)가 고정되어 있습니다. launcher.py는 Windows 전용입니다 |
| 화면 | 상태 줄 「마지막 데이터」에 시각 대신 날짜 조각(11.)이 나옵니다(한국어 브라우저). AutoML 후보 표는 세 줄만 보이고 표 안에서 아래로 스크롤해야 나머지가 보입니다 |
| 수동 이상 | 화면은 일곱 값을 모두 상수로 보내므로 「한 변수만」 실험이 되지 않습니다. 「멈춤」이 늘 섞입니다 |
| RTU 생성 | 「운전 정지」·「이력 초기화」 뒤 1초 안에 「운전 시작」이 오면 생성 작업이 두 개로 늘어나 1초에 두 시점씩 쌓입니다 |
| 학습 구간 | 학습 구간(정상 운전 기간)을 고르는 칸이 없습니다. 연결·재학습 때의 이력 전체를 60·20·20으로 나눕니다. 이상이 학습·검증 구간에 들어가면 헛알람이 크게 늘거나 아무것도 잡지 못합니다 |
| 첫 학습 길이 | RTU를 켜고 바로 연결하면 학습 192시점(약 3분)으로 학습해, 정상 운전 중 갱신의 20~26%에서 알람이 납니다 |
| AutoML | 고른 후보를 알람에 쓰지 않습니다. 알람은 늘 IF-100(온도·압력)과 PCA-95입니다 |
| 저장 | 모델을 파일로 저장하지 않습니다. PDM을 다시 켜면 다시 학습해야 합니다 |
| Zero-shot | 첫 채널(온도)만 예측합니다. 화면에서 가중치를 내려받을 수 없으며, 이탈 점수 기능도 없습니다 |
| 교육 자료 | PPT 10·17쪽의 실습 순서(이상 먼저 → 연결), 7쪽의 열 이름, 12쪽 「시간당 기울기」, 6·14쪽 「모델 저장」이 실제 동작과 다릅니다(시작하기 표) |
| 설비 필터 | PLC_LIST 없이 설비 필터를 쓰면 「해당하는 PLC_DATA가 없습니다」가 나옵니다. 순서를 화면에 안내하면 좋겠습니다 |
앞으로#
- 같은 반응기를 KANG 판처럼 고장 기록(
LABEL)과 함께 다루려면, 고장 분류와 라벨을 현장에서 먼저 정의해야 합니다. - 학습 구간을 고르고, 학습 전에 이상·정지 구간을 걸러 내고, 재학습 결과를 섀도로 비교한 뒤 바꾸는 운영 방식은 설비 예지보전 PBL의 3부(에이전트 운영)를 참고하세요.