이제 유니콘 출현을 예측하는 유니콘 모델을 배포할 준비가 되었습니다. 배포 시 머신러닝 (ML) 파이프라인이 문제 없이 실행, 업데이트, 제공되어야 합니다. 모델을 배포하는 것이 큰 배포 버튼을 누르는 것만큼이나 쉬웠으면 좋겠네요. 안타깝게도 전체 머신러닝 시스템에는 다음에 관한 테스트가 필요합니다.
- 입력 데이터 검증
- 특성 추출 유효성 검사
- 새 모델 버전의 품질 검증
- 게재 인프라 검증
- 파이프라인 구성요소 간의 통합을 테스트합니다.
많은 소프트웨어 엔지니어는 테스트 기반 개발 (TDD)을 선호합니다. TDD에서 소프트웨어 엔지니어는 '실제' 소스 코드를 작성하기 전에 테스트를 작성합니다. 하지만 머신러닝에서는 TDD가 까다로울 수 있습니다. 예를 들어 모델을 학습하기 전에 손실을 검증하는 테스트를 작성할 수 없습니다. 대신 먼저 모델 개발 중에 달성 가능한 손실을 발견한 후에 달성 가능한 손실에 대해 새 모델 버전을 테스트해야 합니다.
유니콘 모델 정보
이 섹션에서는 유니콘 모델을 참조합니다. 다음 사항에 유의하시기 바랍니다.
머신러닝을 사용하여 유니콘 출현을 예측하는 분류 모델을 빌드하고 있습니다. 데이터 세트에는 유니콘이 등장한 10,000개와 등장하지 않은 10,000개가 자세히 설명되어 있습니다. 데이터 세트에는 위치, 시간, 고도, 온도, 습도, 나무 덮음, 무지개 유무, 기타 여러 지형지물이 포함됩니다.
재현 가능한 학습을 사용하여 모델 업데이트 테스트
유니콘 모델을 계속 개선하고 싶을 수 있습니다. 예를 들어 특정 기능에 추가 특성 추출을 수행한 후 더 나은 결과 (또는 적어도 동일한 결과)를 얻기 위해 모델을 재학습한다고 가정해 보겠습니다. 안타깝게도 모델 학습을 재현하기 어려운 경우가 있습니다. 재현성을 개선하려면 다음 권장사항을 따르세요.
랜덤 숫자 생성기에 결정론적 시드를 설정합니다. 자세한 내용은 데이터 생성의 무작위화를 참고하세요.
모델 구성요소가 매 실행마다 난수 생성기에서 동일한 난수를 가져오도록 고정된 순서로 모델 구성요소를 초기화합니다. ML 라이브러리는 일반적으로 이 요구사항을 자동으로 처리합니다.
모델을 여러 번 실행한 결과의 평균을 구합니다.
모델이나 파이프라인을 조사할 때 코드와 매개변수를 정확하게 파악할 수 있도록 사전 반복 시에도 버전 관리를 사용하세요.
이 가이드라인을 따르더라도 여전히 비결정론의 다른 소스가 존재할 수 있습니다.
머신러닝 API 호출 테스트
API 호출 업데이트를 테스트하려면 어떻게 해야 하나요? 모델을 재학습할 수도 있지만 시간이 많이 걸립니다. 대신 단위 테스트를 작성하여 무작위 입력 데이터를 생성하고 단일 단계의 경사 하강을 실행합니다. 이 단계가 오류 없이 완료되면 API 업데이트로 인해 모델이 손상되지 않은 것입니다.
파이프라인 구성요소의 통합 테스트 작성
ML 파이프라인에서 한 구성요소를 변경하면 다른 구성요소에 오류가 발생할 수 있습니다. 전체 파이프라인을 엔드 투 엔드 방식으로 실행하는 통합 테스트를 작성하여 구성요소가 함께 작동하는지 확인합니다.
통합 테스트를 지속적으로 실행하는 것 외에도 새 모델과 새 소프트웨어 버전을 푸시할 때 통합 테스트를 실행해야 합니다. 전체 파이프라인을 실행하는 속도가 느려 지속적 통합 테스트가 더 어려워집니다. 통합 테스트를 더 빠르게 실행하려면 데이터의 하위 집합을 사용하거나 더 간단한 모델을 사용하여 학습하세요. 세부정보는 모델과 데이터에 따라 다릅니다. 연속적인 적용 범위를 얻으려면 더 빠른 테스트가 모든 새 버전의 모델 또는 소프트웨어에서 실행되도록 조정합니다. 그동안 느린 테스트는 백그라운드에서 계속 실행됩니다.
모델 제공 전에 모델 품질 검증
새 모델 버전을 프로덕션으로 푸시하기 전에 다음 두 가지 유형의 품질 저하를 테스트합니다.
갑작스러운 성능 저하. 새 버전의 버그로 인해 품질이 크게 저하될 수 있습니다. 이전 버전과 비교하여 새 버전의 품질을 확인하여 유효성을 검사합니다.
느린 성능 저하 갑작스러운 성능 저하 테스트는 여러 버전에서 모델 품질이 느리게 저하되는 것을 감지하지 못할 수 있습니다. 대신 검증 데이터 세트에서 모델의 예측이 고정된 임곗값을 충족하는지 확인합니다. 검증 데이터 세트가 실시간 데이터와 다른 경우 검증 데이터 세트를 업데이트하고 모델이 여전히 동일한 품질 기준을 충족하는지 확인합니다.
제공하기 전에 모델-인프라 호환성 확인
모델이 서버보다 빠르게 업데이트되면 모델에 서버와 다른 소프트웨어 종속 항목이 있을 수 있으며, 이로 인해 비호환성이 발생할 수 있습니다. 서버의 샌드박스 버전에서 모델을 스테이징하여 모델에서 사용하는 작업이 서버에 있는지 확인합니다.