5. 지속적 통합 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

5. 지속적 통합

ML 시스템은 테스트를 실행하여 시스템이 처음부터 끝까지 작동하는지 검증하고 장애 발생 가능성을 확인합니다. 커밋 시 테스트가 자동으로 실행되며, 더 긴 테스트는 고정된 일정에 따라 실행됩니다. 테스트는 단위 및 시스템 수준과 같은 기존 소프트웨어 엔지니어링 영역을 확인합니다. 또한 테스트는 데이터, 기능 및 모델을 확인하여 ML의 세부 정보를 캡처합니다.

5.1 로컬 코드 확인

중앙 집중식 코드 리포지토리에 코드를 커밋하기 전에 개발자는 기본 단위 테스트 및 정적 분석과 같은 검사를 로컬에서 실행합니다. 커밋하기 전에 이러한 검사를 실행하면 전체 코드 품질이 향상되고 버전 제어에 들어가기 전에 문제가 포착됩니다.

5.2 정적 코드 분석

중앙 코드 리포지토리에는 커밋 시 빠르게 실행되는 정적 코드 분석 도구가 있습니다. 이 도구는 코드 스타일과 형식을 개선해야 합니다. 또한 소스 및 인프라 코드 내의 일반적인 보안 취약성, 일반적인 버그 및 코드의 기타 약점을 확인해야 합니다.

5.3 데이터 품질 테스트

데이터 품질 테스트는 최소한 데이터가 고정 스키마를 위반하지 않았는지 확인해야 합니다. 보다 포괄적인 접근 방식은 수집 시 데이터 통계를 계산하고, 데이터에 대한 제약 조건을 설정하고, 이에 대한 테스트를 실행하는 것입니다.

데이터 품질 테스트를 독립적으로 또는 파이프라인의 일부로 설정할 수 있습니다. 통계 및 제약 조건은 모니터링에 재사용됩니다.

5.4 특성 테스트

전체 파이프라인의 일부로 기능 중요도가 생성됩니다. 특성 테스트는 특성의 중요성이나 특성 값을 어트리뷰션하는 모델의 방식이 변경되지 않는다고 주장합니다. 특성 테스트는 모델 입력의 위반을 경고하고 추적할 수 있으므로 모니터링에 제공할 수 있습니다.

5.5 단위 테스트

모델, 애플리케이션 및 인프라와 같은 모든 코드가 커밋 전 및 커밋 시 실행되는지 단위 테스트합니다. 각 단위 테스트는 중요한 코드에 대한 검사를 제공하여 코드가 예상대로 작동하는지 확인합니다. ML 코드의 경우 알고리즘 정확성에 대한 테스트를 실행할 수 있습니다.

5.6 통합 테스트

통합 테스트는 파이프라인에 연결된 인프라를 유지하는 등 파이프라인이 처음부터 끝까지 성공적으로 실행되는지 확인합니다. 이 테스트는 시스템이 예상대로 작동하고 로깅하고 있는지 확인합니다. 배포가 별도의 경우 배포가 작동하는지 확인하기 위해 이에 대한 end-to-end 테스트도 있어야 합니다.

5.7 연기 테스트

시스템에는 각 기능의 미니 회귀와 빠른 회귀로 실행되는 연기 테스트가 있습니다. 연기 테스트는 지속적인 통합의 일부이며, 컨테이너화된 환경에서 실행하여 클라우드 기능을 모방할 수 있습니다.

5.8 로드 테스트

온디맨드 로드 테스트가 마련되어 있습니다. 부하가 높거나 낮을 때 ML 시스템이 작동하는 방식을 캡처하는 것 외에도 로드 테스트는 시스템 전체의 처리량 또는 지연 시간에 대한 통계를 제공합니다. 로드 테스트를 통해 수집된 데이터는 리소스 크기 및 조정 정책에 대한 정보를 제공합니다.

5.9 모델 기능 테스트

모델 출력 및 입력은 자동화된 기능 테스트를 통해 실행됩니다. 기능 내의 동작을 확인하기 위해 모델의 출력과 입력은 기본 예제와 함께 실제 또는 가짜 데이터에서 테스트됩니다.

5.10 극단적인 경우를 사용한 모델 추론 테스트

최소 기능 테스트의 일환으로 모델 테스트는 모델 홍보 전에 특정 입력을 고려하여 극단적인 동작을 확인해야 합니다. 이렇게 하면 예상치 못한 동작을 방지하는 데 도움이 되는 추가 가드레일이 배치됩니다.