기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 극단적인 경우 모델 추론 테스트 |
최소 기능 테스트의 일환으로 모델 테스트는 모델 승격 전에 특정 입력을 고려하여 극단적인 동작을 확인해야 합니다. 그러면 예상치 못한 동작을 방지하는 데 도움이 되는 추가 가드레일이 배치됩니다. |