AI 서비스 품질 운영¶
운영 중인 AI 서비스에서 high_risk 예측 비율이 갑자기 증가했습니다. API는 정상적으로 응답하고 있지만, 아직 원인은 알 수 없습니다.
입력 데이터가 달라졌을 수도 있습니다. 실행 환경이나 배포 상태에 문제가 생겼을 수도 있고, 기존 모델이 새로운 데이터 특성을 충분히 처리하지 못했을 수도 있습니다.
이 문제를 확인하기 위해 Candidate A와 Candidate B가 준비되어 있습니다. 배포 판단에 참여하는 담당자는 두 후보 가운데 어떤 모델이 정해 둔 기준을 만족하는지 평가하고, 모델을 변경한다면 추가로 무엇을 확인해야 하는지 결정해야 합니다.
후보 모델의 비교에는 PhysioNet Challenge 2012 Set A를 사용합니다.
이 과정에서는 하나의 이상 징후에서 출발해 다음 질문을 차례로 확인합니다.
- 데이터에 문제가 있는가?
- 모델의 품질 기준은 충족되는가?
- 실제 서비스에는 어떤 모델이 배포되어 있는가?
- 운영 환경에서 이상 징후를 설명할 근거가 있는가?
- 현재 근거만으로 어떤 판단까지 내릴 수 있는가?
문제의 시작¶
운영 서비스에서 요청 100건 가운데 high_risk로 분류된 요청이 이전보다 증가했습니다.
| 항목 | 비교 전 | 비교 후 | 확인된 사실 |
|---|---|---|---|
| 고위험 예측 | 100건 중 3건 | 100건 중 6건 | 고위험 예측 비율의 증가 |
| 상위 5% 점수 | 0.3859 | 0.5133 | 높은 점수 구간의 상승 |
| 정답 | 없음 | 없음 | 정밀도와 재현율의 재계산 불가 |
| 사용 모델 | 기준 모델, 판정 기준 0.5 | 동일 | 모델 변경 원인의 근거 없음 |
수치의 출처
아래 경로는 수업을 위해 준비한 고정 자료입니다.
docs/evidence/incident/initial-signal.json
현재 확인할 수 있는 사실은 고위험 예측 비율과 점수 분포가 달라졌다는 것입니다.
이 숫자는 내 공개 API를 한 번 호출해서 나온 값이 아닙니다. 출처 파일은 수업을 위해 준비한 고정 자료이며, 실시간 Grafana 수집이 아닙니다.
내 공개 Risk API로는 지금 기준 모델이 응답하는지를 확인합니다. 강사가 안내한 공개 HTTPS 베이스 뒤에 /docs, /v1/predict 경로를 붙이는 방법은 실습 환경 준비에 있습니다. 공개 베이스와 로컬 실행 주소를 섞지 않으며, 한 건의 예측 점수는 아래 비교 표의 원인이 아닙니다.
이것만으로 모델의 성능이 저하되었다고 판단할 수는 없습니다. 운영 요청에는 정답이 없으므로 정밀도와 재현율을 다시 계산할 수도 없습니다.
지금 필요한 것은 바로 모델을 교체하는 것이 아니라, 무엇이 달라졌는지 확인할 수 있는 근거를 하나씩 확보하는 것입니다.
아직 모르는 것¶
현재 숫자만으로는 다음 세 가지를 구분할 수 없습니다.
첫째, 입력 데이터가 달라졌을 수 있습니다. 입력 구성이나 값의 분포가 이전과 달라졌다면 모델이 동일하더라도 예측 결과는 달라질 수 있습니다.
둘째, 실행 환경이나 배포 상태가 달라졌을 수 있습니다. 모델 파일, 전처리, 설정값 또는 실행 환경이 변경되었다면 예상하지 못한 결과가 나타날 수 있습니다.
셋째, 기준 모델의 한계가 드러났을 수 있습니다. 입력과 실행 환경에 특별한 변화가 없더라도, 기존 모델이 현재 데이터에서 충분한 품질을 보장하지 못할 가능성이 있습니다.
아직 어느 경우인지 알 수 없으므로 하나를 원인으로 단정하지 않습니다.
Candidate A와 Candidate B 가운데 어느 쪽이 더 적절한지도 현재 운영 숫자만으로는 알 수 없습니다. 후보 모델은 정답이 있는 평가 데이터에서 같은 조건으로 비교해야 합니다.
후보 모델의 평가 결과와 실제 서비스의 배포 상태는 서로 다른 문제입니다. 평가에서 좋은 모델과 현재 API가 실행하고 있는 모델은 반드시 같은 모델이라고 볼 수 없습니다. 이 구분은 이후 실습에서 계속 사용합니다.
확인 순서¶
이번 과정에서는 다음 순서로 문제를 좁혀 갑니다.
| 단계 | 확인할 것 | 아직 답하지 않는 것 |
|---|---|---|
| 사건 | 고위험 예측과 점수 분포의 변화 | 변화의 원인 |
| 데이터 | 평가 자료의 출처와 분할 조건 | 배포할 후보 |
| 후보 평가 | 같은 조건에서 기준을 통과한 모델 | 실제 서비스의 배포 모델 |
| API | API와 배포 설정이 가리키는 모델 | 운영 이상의 원인 |
| 운영 기록 | 같은 시간대의 로그, 지표, 추적 기록 | 확인하지 않은 환경의 원인 |
| 판단 | 현재 근거로 권고할 수 있는 조치 | 근거 없는 영역의 추정 |
하나의 숫자로 여러 질문에 동시에 답하지 않습니다. 예를 들어 high_risk 예측이 3건에서 6건으로 증가했다는 사실만으로는 다음을 알 수 없습니다.
- 모델의 정확도가 떨어졌는지
- Candidate A와 Candidate B 중 어느 모델이 더 좋은지
- 현재 API에 어떤 모델이 배포되어 있는지
- 실행 환경에 문제가 발생했는지
각 질문에는 서로 다른 근거가 필요합니다.
각 단계가 어느 교시에서 다뤄지는지는 강의 순서에서 확인합니다. 평가 결과와 실제 배포 상태는 서로 다른 판단입니다.
교육용 데이터 안내
이 과정의 생체신호 데이터는 분류 모델과 AI 서비스 품질 운영을 설명하기 위한 교육용 예제입니다. In-hospital_death는 실습에서 사용하는 정답 데이터이며, 실제 의료 판단이나 의료 조언에는 사용하지 않습니다.
교재의 근거 범위
교재와 실습은 현재 tta-aiqa 저장소의 코드와 근거 자료를 기준으로 진행합니다. 직접 실행하거나 제공된 근거를 통해 확인한 결과와 아직 확인하지 않은 결과를 구분합니다. 이전 실행 결과나 다른 환경에서 얻은 값을 현재 환경에서 확인한 사실처럼 사용하지 않습니다.
수업에서 보는 순서¶
이 과정은 하나의 문제를 이틀 동안 단계적으로 확인하는 흐름입니다. 첫째 날에는 데이터와 모델의 품질을 확인하는 방법을 다룹니다. 둘째 날에는 모델이 실제 서비스에서 어떻게 실행되고 관찰되는지를 확인합니다.
| 시간 블록 | 수업에서 다루는 내용 | 시작 링크 |
|---|---|---|
| 1일차 오전 | AI 품질과 이상 신호, 데이터의 네 가지 역할, 원시 측정값과 데이터 오류 | 1일차 오전 1~3교시 |
| 1일차 오후 | 데이터 검증 자동화, 분류 지표와 곡선, 승인 조건과 후보 비교, 실험과 버전 연결 | 1일차 오후 4~7교시 |
| 2일차 오전 | 컨테이너와 예측 API, 실행 모델 확인, Kubernetes 배포 구조 | 2일차 오전 1~3교시 |
| 2일차 오후 | GitOps와 배포 상태, 운영 품질과 관측 신호, 요청 단위 원인 조사, 운영 판단과 회고 | 2일차 오후 4~7교시 |
수업 중에는 강의 순서에서 현재 교시를 찾아 진행합니다. 혼자 학습할 때에는 상단의 1일차 데이터와 모델 품질과 2일차 서빙과 운영 판단을 연 뒤, 왼쪽 목차 순서대로 진행합니다.
각 교시가 끝날 때에는 확인한 사실과 아직 모르는 것을 구분해서 기록합니다.
기초 개념이 필요한 경우에는 해당 교시에 연결된 보충 문서를 확인한 뒤 다시 실습으로 돌아옵니다.
- AI 품질과 이상 신호: 1일차 1교시
- 분류 지표와 곡선: 1일차 5교시
- 실행 환경과 운영 기록: 2일차 오전
실습 환경은 실습 환경 준비에서 강사가 안내한 수업용 공개 HTTPS 베이스로 확인합니다. Kubernetes나 Grafana Cloud가 없어도 로컬 실행 환경과 준비된 결과를 이용해 Lab을 진행할 수 있습니다. 직접 실행하거나 제공된 근거로 확인하지 않은 결과는 확인한 사실로 기록하지 않습니다.