다음을 통해 공유


Azure에서 AI 워크로드 테스트 및 평가

이 문서에서는 모델 평가 및 전체 시스템 테스트의 두 가지 고유한 측면에 중점을 둡니다. 평가 및 테스트는 종종 서로 다른 용도로 사용되지만 고유한 데이터 세트를 사용하는 별도의 프로세스로 간주되어야 합니다.

평가 는 개발 단계에서 수행하는 반복 작업입니다. 적절한 수준의 튜닝으로 최상의 모델을 찾기 위한 실험에 중점을 둡니다. 그런 다음, 다양한 메트릭을 기반으로 모델을 평가합니다.

테스트 에는 튜닝된 모델 및 비 AI 구성 요소를 포함하여 변경이 도입될 때 전체 시스템 확인이 포함됩니다. 목표는 워크로드가 식별된 대상을 충족하고 사용자 기대치를 충족하는지 여부를 확인하는 것입니다. 또한 품질 회귀를 방지하는 협상 불가능한 변경 관리 전략이기도 합니다.

두 방법 모두 실제 구현에 결합됩니다. 전체 프로세스에는 모델에 요청을 보내고, 응답을 평가하고, 테스트 데이터를 기반으로 이동 또는 no-go 결정을 내리는 작업이 포함됩니다. 프로세스는 프로덕션 전에 협상할 수 없지만 실제 데이터와 합성 데이터를 혼합하여 프로덕션에서 프로세스를 수행하는 것이 좋습니다.

여기서 주요 초점은 생성 AI를 사용하여 빌드된 솔루션, 특히 기본 모델을 사용하는 시나리오에 있습니다. 모델 학습 및 미세 조정에 적용되는 지침은 모델 학습 및 미세 조정을 테스트하기 위한 지침으로 건너뜁니다.

모델 평가에 품질 메트릭 사용

비즈니스 목표에 맞는 메트릭을 사용하여 기준을 설정하고 모델 품질을 측정합니다.

메트릭 집합에 대해 사용자 환경의 결과를 평가하고 정량화하는 프로세스가 있습니다. 예를 들어 Groundedness는 생성 모델의 응답이 조작되지 않고 제공된 컨텍스트에서 지원되는지 여부를 평가합니다. 법률 회사가 법령을 인용하는 AI 도우미를 개발한다고 가정해 보겠습니다. 적절한 유효성 검사가 없으면 오래되거나 잘못 분류된 문서에서 파생되어 심각한 결과를 초래할 수 있습니다. 높은 접지 점수는 모델의 출력이 신뢰할 수 있는 원본 재질에 맞게 유지되도록 하는 데 도움이 됩니다.

특정 사용 사례에 따라 메트릭을 선택하고 우선 순위를 지정하고, 지속적으로 모니터링하고, 모델 튜닝 및 배포를 위한 의사 결정 게이트로 사용합니다. 단일 메트릭에 의존하지 말고 조합을 사용하여 다양한 차원의 품질을 캡처합니다. 예를 들어 모델이 강력한 접지성을 보여 주더라도 여전히 편향된 출력을 생성할 수 있습니다. 보다 균형 있고 책임감 있는 결과를 위해 공정성 평가를 통합합니다.

메트릭에 대한 자세한 내용은 평가 메트릭 설명 및 사용 사례 모니터링을 참조하세요.

평가에 적합한 데이터 사용

평가 데이터를 사용하여 반복 프로세스를 통해 모델을 구체화합니다. 골든 데이터 세트라고도 하는 이 데이터 세트 는 일반적으로 사람이 만들거나 유효성을 검사하는 신뢰할 수 있는 입력 출력 쌍으로 구성됩니다. 정의된 품질 메트릭에 대해 모델 성능을 평가하는 목표 벤치마크 역할을 합니다.

다양한 고품질 예제와 최소한의 노이즈를 사용하여 데이터 세트가 도메인 또는 작업을 대표하는지 확인합니다. 샘플 크기가 제한되면 평가 품질이 저하될 수 있으므로 샘플 데이터에 충분한 다양성 또는 범위가 부족하여 균형과 완전성을 향상시킬 수 없는 경우 합성 데이터를 생성하는 것이 좋습니다.

에이전트 워크플로 유효성 검사

아키텍처가 AI를 사용하도록 진화함에 따라 한때 결정적 코드로 처리되었던 기능이 이제 AI 에이전트에 오프로드됩니다. 이러한 에이전트는 동적 동작으로 종종 결정을 내립니다.

오케스트레이터 자체가 에이전트로 구현되는 에이전트 애플리케이션을 고려합니다. 기존 오케스트레이션과 달리 에이전트는 도구를 호출하고, 프롬프트를 해석하고, 다른 에이전트와 공동 작업하고, 실시간으로 적응하여 보다 유연하지만 유효성 검사를 어렵게 만들 수 있습니다.

이러한 유형의 아키텍처는 테스트 및 평가에 대한 새로운 과제를 소개합니다. 에이전트는 비결정적으로 작동하기 때문에 기존의 정적 테스트는 충분하지 않습니다. 테스트 전략은 접지 데이터 검색, 도구 호출 및 응답 생성을 포함하여 사용자 입력에서 최종 응답으로의 전체 흐름의 유효성을 검사해야 합니다. 예를 들면 다음과 같습니다.

  • 에이전트가 외부 도구, API 및 기타 에이전트를 올바르게 호출하고 있는지 확인합니다. 모의 종속성을 사용하여 데이터가 올바르게 전달되었는지 확인합니다. 도구 또는 에이전트 오류를 시뮬레이션하여 동작에서 안정성을 테스트합니다.

  • 미리 정의된 프롬프트 및 예상 출력을 사용하여 시나리오 기반 테스트를 디자인합니다. 출력은 다를 수 있으므로 다른 모델에서 자동화된 채점을 사용하여 결과를 평가합니다. 또한 특히 중요하거나 주관적인 작업에 대해 사람 기반 검토를 사용합니다.

  • 콘텐츠 안전 도구를 통합하여 유해하거나 편향되거나 부적절한 출력을 감지합니다. 예기치 않은 동작 또는 탈옥 취약성을 식별하는 빨간색 팀 연습을 포함합니다. 공정성, 투명성 및 윤리적 표준 준수를 모니터링합니다.

도구 관점에서 다음과 같은 검사를 지원하는 Azure AI 평가 SDK를 고려합니다.

  • 의도 해결: 에이전트/오케스트레이터가 사용자의 요청을 올바르게 이해하나요?
  • 도구 호출 정확도: 올바른 도구가 올바른 매개 변수를 사용하여 호출되는가?
  • 작업 준수: 최종 출력이 할당된 작업 및 이전 추론 단계에 부합하나요?

또한 정기적인 성능 및 부하 테스트를 수행합니다. 동시 요청에서 크기를 조정하고, 긴 실행 경로를 처리하고, 여러 에이전트에서 상호 작용을 관리하는 에이전트의 기능을 평가합니다. 시스템이 반복 릴리스를 통해 진화함에 따라 논리 및 성능 모두에서 회귀를 지속적으로 모니터링합니다.

보안 측면 테스트

액세스를 제어하고, 모든 입력의 유효성을 검사하고, 에이전트 동작을 모니터링하여 오용 또는 의도하지 않은 작업을 방지하여 에이전트 워크플로를 보호합니다.

  • 탈옥 테스트. 항상 탈옥 시도를 확인하고 테스트합니다. 공격자는 일반적으로 오케스트레이션 계층을 먼저 대상으로 지정하여 요청을 구문 분석하고 모델에 전달합니다. 악의적인 입력이 필터링되지 않으면 모델 동작이 손상될 수 있습니다.

  • 콘텐츠 안전성. 채팅 기반 애플리케이션에서 콘텐츠 안전 서비스를 통해 사용자 프롬프트와 접지 컨텍스트를 모두 실행합니다.

  • 엔드포인트 보안. RESTful 인터페이스의 경우 강력한 인증을 적용하고 보안 제어를 철저히 테스트하여 무단 액세스를 방지합니다.

Scikit-learn, PyTorch의 torch.testing 모듈, 바이어스 및 공정성 테스트를 위한 FairML, 모델 평가를 위한 TensorFlow 모델 분석과 같은 다른 오픈 소스 라이브러리가 있습니다.

절충점. 이 코드를 테스트하는 데는 비용상의 고려가 필요합니다. 예를 들어 Azure OpenAI를 사용하여 유추 엔드포인트를 호스트하는 경우 스트레스 테스트는 시스템의 제한을 결정하는 데 도움이 되는 일반적인 방법입니다. 그러나 Azure OpenAI는 모든 호출에 대해 요금을 부과하므로 광범위한 스트레스 테스트 비용이 많이 들 수 있습니다. 요금을 최적화하는 한 가지 방법은 테스트 환경에서 사용되지 않는 Azure OpenAI의PTU를 사용하는 것입니다. 또는 개발자 프록시와 같은 도구를 사용하여 유추 엔드포인트를 시뮬레이션할 수 있습니다.

결정적 동작 테스트

일부 아키텍처에서는 결정적 논리를 사용하여 오케스트레이션을 사용하도록 설정할 수 있습니다. 예를 들어 비결정적 에이전트 오케스트레이터 대신 사용자 의도 해석, 데이터 접지 인덱스 쿼리 및 모델 유추 엔드포인트 호출과 같은 실행 흐름을 관리하는 정적 코드를 사용하는 오케스트레이터를 선택할 수 있습니다.

테스트 관점에서 이 코드는 특히 라우팅 논리에서 성능, 안정성 및 기능 테스트를 실행하는 중요한 시스템 구성 요소처럼 처리합니다. 특히 Microsoft의 의미 체계 커널 또는 LangChain과 같은 에이전트 프레임워크를 사용하는 경우 결정적 구성 요소에 단위 테스트를 적용합니다. 이러한 테스트는 런타임 가변성에서 격리된 프롬프트 템플릿, 도구 선택 논리, 데이터 서식 및 의사 결정 트리의 유효성을 검사합니다.

유추 엔드포인트 테스트

유추 엔드포인트는 REST API를 통해 생성 모델을 노출하며 모델 정확도 이상으로 테스트해야 합니다. PaaS 플랫폼 또는 자체 호스팅 서버를 사용하든 관계없이 다른 엔드포인트와 마찬가지로 엔드포인트를 테스트하여 안정성, 확장성 및 보안을 보장합니다.

  • 기능 및 통합 테스트. 요청 처리, 응답 구조 및 다른 구성 요소와의 통합의 유효성을 검사합니다.

  • 성능 및 부하 테스트. 실제 조건을 시뮬레이션하여 처리량, 대기 시간 및 리소스 사용량을 평가합니다. PaaS 유추 엔드포인트의 경우 REST API의 기존 요청 크기보다 더 의미 있는 토큰 수준 메트릭(토큰/초 또는 토큰/분)에 집중합니다.

  • 크기 조정 및 GPU 최적화. 다양한 부하에서 테스트하여 올바른 GPU SKU 또는 자동 크기 조정 구성을 확인합니다. 실제 GPU 사용량을 모니터링하여 과잉 프로비전을 방지합니다.

    트레이드 오프. GPU SKU는 비용이 많이 듭니다. 가능한 경우 GPU 리소스의 활용도를 지속적으로 확인하고 적절한 크기로 조정해야 합니다. 조정한 후 리소스 사용량을 테스트하여 비용 효율성과 성능 최적화 간의 균형을 유지합니다.

  • 오류 처리. HTTP 429 오류, 백엔드 시간 초과, 서비스 비가용성과 같은 상황을 시뮬레이션하여 제한을 설정합니다. 클라이언트가 재시도, 백오프 및 회로 중단을 적절하게 처리하는지 확인합니다.

  • 보안 및 콘텐츠 안전. 공용 또는 자체 호스팅 엔드포인트의 경우 침투 테스트를 수행하고 액세스 제어의 유효성을 검사합니다. Azure AI Content Safety와 같은 콘텐츠 조정 도구를 사용하여 안전하지 않은 입력/출력을 테스트하고 필터링합니다.

접지 데이터 워크플로 테스트

생성 AI 모델의 관련성은 접지 데이터의 품질과 무결성에 따라 달라집니다. 데이터 처리 파이프라인을 사용하여 접지 데이터를 모델에 시드할 수 있습니다. 이 데이터는 모델에 도달하기 전에 전처리, 청크 및 인덱싱됩니다. 모델은 사용자 상호 작용 중에 실시간으로 인덱스를 쿼리하여 인덱싱 성능과 정확도를 사용자 환경에 중요하게 만듭니다. 테스트를 조기에 통합하고 시스템 수명 주기 내내 유지 관리합니다.

테스트되지 않은 데이터 파이프라인은 일관되지 않은 결과와 보안 위반과 같은 교차 절단 문제로 이어질 수 있습니다. 고품질 환경을 보장하려면 원본 문서, 전처리, 오케스트레이션 논리 및 인덱스 자체를 포함하여 전체 데이터 흐름을 테스트합니다. 주요 테스트 고려 사항은 다음과 같습니다.

  • 기능 및 통합 테스트. 모든 데이터가 올바로 완전히 로드되었는지 확인합니다. 파이프라인이 누락되거나 비어 있거나 합성 데이터를 예상대로 처리하는지 확인합니다.

  • 인덱스 스키마 호환성 스키마 변경 내용을 테스트하여 이전 버전과의 호환성을 확인합니다. 필드 또는 문서 변경 내용은 이전 데이터 형식에 대한 지원을 유지해야 합니다.

  • 전처리 및 오케스트레이션 테스트. 기본 데이터 준비에는 전처리, 청크 분할 및 임베딩 계산이 포함되며, 이는 종종 Azure AI Search 기능 세트와 같은 도구에 의해 조율됩니다. 오케스트레이션 파이프라인을 테스트하여 모든 단계가 올바르게 실행되고 결과 데이터가 정확하고 관련성이 있는지 확인합니다.

  • 데이터 새로 고침 및 품질 검사 부실 데이터, 버전 관리 불일치, 가상 아티팩트 및 빈 테이블 또는 부분 테이블에 대한 테스트를 포함합니다. 가장 최신의 깨끗한 데이터를 반영하도록 필요에 따라 쿼리 또는 인덱스 설정을 업데이트합니다.

  • 인덱스 부하 테스트. 인덱스는 다양한 부하에서 다르게 동작할 수 있습니다. 실제 사용 시나리오에 대해 쿼리 성능을 테스트하여 크기 조정, 컴퓨팅 SKU 및 스토리지 요구 사항에 대한 결정을 알립니다.

  • 보안 테스트. 문서가 액세스 제어로 분할된 경우 해당 컨트롤을 엄격하게 테스트합니다. 각 사용자 또는 역할이 기밀성 및 규정 준수를 유지하기 위해 허용된 콘텐츠에만 액세스하는지 확인합니다.

모델 학습 및 미세 조정 테스트 지침

생성 AI 모델과 마찬가지로 개발 수명 주기의 여러 단계와 다양한 시스템 구성 요소 및 흐름에서 다양한 유형의 테스트를 사용합니다. 실제적인 만큼 테스트를 염두에 두고 워크로드 자산을 개발합니다. 예를 들어 기능 엔지니어링을 위해 데이터 조작을 수행하고 원본 데이터를 재구성하는 경우 좋은 코딩 방법을 준수하고 테스트를 지원하도록 코드를 구성해야 합니다.

모형 평가하기

모델 학습 중에 기준선 전략을 적용하여 모델 품질을 측정하고 비교합니다. 잘 정의된 메트릭을 사용하여 모델, 매개 변수 및 기능의 다양한 조합의 성능을 평가합니다. 이러한 메트릭은 버전 및 구성 간에 반복적으로 비교하여 성능이 뛰어난 모델을 식별할 수 있는 객관적인 데이터 기반 점수를 제공합니다.

자세한 내용은 회귀/예측 메트릭을 참조하세요.

평가하고 테스트할 데이터

원본 데이터를 학습, 평가 및 테스트의 세 가지 고유 데이터 세트로 분할합니다. 학습 데이터 세트를 사용하여 모델을 빌드하고, 평가 데이터 세트를 튜닝하고, 테스트 데이터 세트를 사용하여 최종 성능의 유효성을 검사합니다.

노이즈를 줄이기 위해 각 데이터 세트에 고품질 데이터가 포함되어 있는지 확인합니다. 실제 사기 행위 인스턴스가 드물고 신뢰할 수 있는 모델을 학습시키기 위해 제한된 데이터를 제공하는 사기 행위 감지와 같은 도메인에서 실제 샘플이 제한될 때 데이터 파이프라인의 테스트 사례를 사용하여 품질을 적용하고 가상 데이터를 보완합니다.

객관성을 유지하고 예측에서 편향을 방지하기 위해 모든 데이터 세트를 분리하고 겹치지 않도록 유지합니다. 평가용으로 학습 데이터를 재사용하거나, 테스트용으로 평가 데이터를 사용하지 마세요.

학습 및 미세 조정 워크플로 테스트

  • 데이터 파이프라인 기술. 가상 데이터를 사용하여 기능, 부하 및 성능 테스트를 결합하여 확장성을 평가하고 크기 조정 또는 제품 적합성, 필수 SKU 및 시스템 통합에 대한 정보에 입각한 결정을 내립니다.

  • 수집 작업 흐름. ETL/ELT 파이프라인을 엔드투엔드 테스트하여 데이터를 안정적으로 수집하고 데이터의 품질이 높은지 확인합니다. 또한 연결된 모든 시스템과의 통합을 테스트하고 외부 종속성을 모니터링합니다. 가상 데이터를 사용하여 엔드 투 엔드 처리의 유효성을 검사합니다( 특히 복잡하거나 대용량 워크로드의 경우).

    예약된 작업을 테스트하여 수집 작업이 정시에 완료되었는지 확인하고 예상 볼륨을 반환합니다.

  • 데이터 수집 시의 품질. 데이터 정리 및 처리에 테스트가 포함되어 있는지 확인하여 데이터 조작이 의도한 대로 작동하는지 확인합니다. 완전성, 새로 고침, 스키마 일관성, 고유성 및 관련성에 대한 검사를 포함합니다. 또한 구조화된 데이터가 중복, 누락된 값 또는 잘못된 항목 없이 수집되는지 확인합니다.

  • 기능 및 레이블 무결성. 특히 복잡한 규칙을 사용하는 경우 기능이 올바르게 계산되고 레이블이 정확하게 할당되었는지 확인합니다. 향후 또는 레이블 파생 정보가 학습 데이터를 오염시키는 것을 방지하기 위해 데이터 유출을 확인합니다. 또한 미묘한 누출이라도 모델 성능에 해를 끼칠 수 있으므로 편향되거나 겹치는 샘플을 방지하기 위해 데이터 분할이 적절한지 확인합니다.

  • 하이퍼 매개 변수 테스트. 하이퍼 매개 변수 테스트는 워크로드의 사용 사례에 따라 정확도 목표를 충족하도록 모델 매개 변수를 조정하는 반복 프로세스입니다. 여기에는 선택한 데이터에 대해 반복적으로 학습하고 테스트 데이터를 평가하여 성능의 유효성을 검사하는 작업이 포함됩니다. 더 작은 데이터 세트로 시작하여 모델 동작을 빠르게 평가한 다음 테스트를 전체 집합으로 확장합니다. 모델 정확도와 반복 학습 및 평가에 필요한 계산 비용과 시간 간의 절충을 염두에 두어야 합니다.

  • 코드 품질. PyTorch 스크립트와 같은 사용자 지정 코드를 사용하여 모델을 학습하는 경우 디자인 단계에서 부하 테스트를 실행하여 컴퓨팅 요구 사항을 평가하고 적절한 SKU를 선택합니다. 단위 테스트를 사용하여 개발 중에 회귀를 포착하고 자동화가 불가능한 경우 수동 테스트에 의존합니다. 이러한 스크립트는 워크플로 내에서 실행되므로 통합 테스트를 추가하여 스크립트가 파이프라인 내에서 안정적으로 실행되는지 확인합니다.

  • 유추 엔드포인트입니다. 이 REST API는 예측을 위해 학습된 기계 학습 모델에 대한 액세스를 제공합니다. 모델은 실시간 또는 일괄 처리 입력 데이터를 수신하고, 처리하고, 예측을 반환할 수 있는 엔드포인트가 있는 환경에 배포됩니다. 다른 API와 마찬가지로 유추 엔드포인트가 기능, 성능 및 보안 테스트를 거치면 정확한 결과를 반환하고 예상 부하를 처리하며 오용에 대해 안전하게 유지되는지 확인합니다.

  • 라이브 사이트 테스트. 기능 테스트를 라이브 시스템으로 확장합니다. 예약된 테스트를 실행하여 데이터 볼륨의 유효성을 검사하고, 누락되거나 중복된 레코드를 검색하고, 데이터 새로 고침을 확인합니다. 가상 데이터를 사용하여 프로덕션 조건에서 엔드 투 엔드 변환 및 논리의 유효성을 안전하게 검사합니다. 전체 배포 전에 A/B 테스트를 통합하여 새 환경을 평가하고 품질 회귀를 방지합니다. 테스트가 실패할 때 즉각적인 조사를 트리거하도록 경고를 구성합니다.

특히 코드 변경 또는 파이프라인 업데이트 중에 단위 및 기능 테스트를 자동화하여 CI/CD 파이프라인에 데이터 테스트를 통합합니다. 재학습 전에 품질 검사를 추가하고 병렬 배포를 사용하여 프로덕션 환경에서 안전하게 테스트합니다. 테스트 실패 또는 수집 변칙에 대한 경고를 설정합니다.

참고

테스트 및 모니터링은 다양한 용도로 사용됩니다. 일반적으로 변경 내용을 구현하기 전에 테스트를 수행하여 시스템에 대한 잠재적인 변경 내용을 평가합니다. 지속적으로 모니터링을 수행하여 시스템의 전반적인 상태를 평가합니다.

모델 성능 저하 테스트

워크로드의 내부 및 외부 변경으로 인해 시간이 지남에 따라 모든 모델이 저하됩니다. 모델 감쇠라고 하는 모델 품질 감소는 다음 두 가지 방법으로 발생할 수 있습니다.

  • 데이터 드리프트 는 입력 데이터가 변경되어 모델이 오래되었습니다. 예를 들어, 선거구 변경 후 인구 통계학적 변화로 인해 투표 패턴을 예측하는 모델은 관련이 없습니다.

  • 개념 드리프트 는 외부 조건이 변경되면 발생하므로 모델의 예측이 더 이상 현실을 반영하지 않습니다. 예를 들어 경쟁업체가 새 제품을 출시한 후 소비자 동작이 변경되어 판매 추세를 예측하는 모델은 관련이 없습니다.

감쇠를 감지하려면 자동화된 테스트를 사용하여 실제 결과와 예측을 비교하고 통계 메트릭을 사용하여 드리프트를 모니터링합니다. 예를 들어 엄지손가락을 위로/아래로 사용하는 사용자 피드백은 문제를 식별하는 데 중요한 신호이기도 합니다. 잠재적인 감쇠가 감지되면 운영 팀은 데이터 과학자에게 근본 원인과 다음 단계를 조사하고 결정하도록 경고해야 합니다.

테스트 도구

다음 Azure 리소스를 고려합니다.

다음 단계