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

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

5. 지속적 통합

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

5.1 로컬 코드 검사

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

5.2 정적 코드 분석

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

5.3 데이터 품질 테스트

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

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

5.4 기능 테스트

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

5.5 유닛 테스트

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

5.6 통합 테스트

통합 테스트에서는 파이프라인에 연결된 인프라를 설정하는 것을 포함하여 파이프라인이 처음부터 끝까지 성공적으로 실행되는지 확인합니다. 이 테스트는 시스템이 예상대로 작동하고 로깅되고 있는지 확인합니다. 배포가 별도로 수행되는 경우 배포가 작동하는지 확인하기 위해 이에 대한 포괄적인 테스트가 있어야 합니다.

5.7 스모크 테스트

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

5.8 로드 테스트

온디맨드 로드 테스트가 제공됩니다. 로드 테스트에서는 ML 시스템이 높은 로드와 낮은 로드에서 작동하는 방식을 캡처하는 것 외에도 시스템 전체의 처리량 또는 지연 시간에 대한 통계를 제공합니다. 로드 테스트를 통해 수집된 데이터는 리소스 크기 및 규모 조정 정책에 대한 정보를 제공합니다.

5.9 모델 기능 테스트

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

5.10 극단적인 경우 모델 추론 테스트

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