Azure AI 스튜디오에서 평가 흐름 개발
Important
이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
평가 흐름은 실행의 출력이 특정 기준 및 목표와 얼마나 잘 일치하는지 평가하는 특별한 형식의 흐름입니다.
프롬프트 흐름에서 작업 및 목표에 맞는 고유한 평가 흐름을 사용자 지정하거나 만든 다음, 이를 사용하여 다른 흐름을 평가할 수 있습니다. 이 문서에서는 다음 내용을 학습합니다.
- 평가 방법을 개발하는 방법.
- 프롬프트 흐름 평가를 위한 입력, 출력 및 로깅 메트릭을 이해합니다.
평가 메서드 개발 시작
고유의 평가 메서드를 개발하는 방법에는 두 가지가 있습니다.
기본 제공 평가 흐름 사용자 지정: 기본 제공 평가 흐름을 수정합니다.
- 도구에서 프롬프트 흐름을 선택합니다.
- 만들기를 선택하여 흐름 만들기 마법사를 엽니다.
- 갤러리 탐색 아래의 흐름 갤러리에서 평가 흐름을 선택하여 해당 형식으로 필터링합니다. 샘플을 선택하고 복제를 선택하여 사용자 지정합니다.
처음부터 새로운 평가 흐름 만들기: 처음부터 완전히 새로운 평가 메서드를 개발합니다.
- 도구에서 프롬프트 흐름을 선택합니다.
- 만들기를 선택하여 흐름 만들기 마법사를 엽니다.
- "평가 흐름" 상자의 형식별 만들기 아래 흐름 갤러리에서 만들기를 선택하면 평가 흐름 템플릿을 볼 수 있습니다.
프롬프트 흐름의 평가 이해
프롬프트 흐름에서 흐름은 입력을 처리하고 출력을 생성하는 일련의 노드입니다. 또한 평가 흐름은 필수 입력을 받아 해당 출력을 생성합니다.
평가 메서드의 몇 가지 특별한 기능은 다음과 같습니다.
- 일반적으로 테스트할 실행 후에 실행되고 해당 실행에서 출력을 받습니다.
- 테스트할 실행의 출력 외에도 필요에 따라 해당 기본 진리를 포함할 수 있는 다른 데이터 세트를 받을 수 있습니다.
- 개별 점수를 기반으로 테스트 중인 흐름의 전체 성능을 계산하는 집계 노드가 있을 수 있습니다.
log_metric()
함수를 사용하여 메트릭을 기록할 수 있습니다.
평가 방법 개발에서 입력 및 출력을 정의하는 방법을 소개합니다.
입력
평가는 다른 실행 후에 실행되어 해당 실행의 결과가 특정 기준 및 목표와 얼마나 잘 일치하는지 평가합니다. 따라서 평가에서는 해당 실행에서 생성된 출력을 받습니다.
데이터 세트에서 나올 수 있는 참조 자료와 같은 다른 입력도 필요할 수 있습니다. 기본적으로 평가에서는 테스트 실행에 제공된 테스트 데이터 세트와 동일한 데이터 세트를 사용합니다. 그러나 해당 레이블이나 대상 참조 자료 값이 다른 데이터 세트에 있는 경우 해당 데이터 세트로 쉽게 전환할 수 있습니다.
따라서 평가를 실행하려면 이러한 필수 입력의 원본을 표시해야 합니다. 이렇게 하려면 평가를 제출할 때 "입력 매핑" 섹션이 표시됩니다.
- 데이터 원본의 출처가 실행 출력인 경우 원본은
${run.output.[OutputName]}
으로 표시됩니다. - 데이터 원본의 출처가 테스트 데이터 세트인 경우 원본은
${data.[ColumnName]}
으로 표시됩니다.
참고 항목
평가에 데이터 세트의 데이터가 필요하지 않은 경우 입력 매핑 섹션에서 데이터 세트 열을 참조할 필요가 없습니다. 이는 데이터 세트 선택이 선택적 구성임을 나타냅니다. 데이터 세트 선택은 평가 결과에 영향을 미치지 않습니다.
입력 설명
메트릭을 계산하는 데 필요한 입력을 상기시키기 위해 각 필수 입력에 대한 설명을 추가할 수 있습니다. 일괄 처리 실행 제출에서 원본을 매핑할 때 설명이 표시됩니다.
각 입력에 대한 설명을 추가하려면 평가 메서드를 개발할 때 입력 섹션에서 설명 표시를 선택합니다. 그리고 "설명 숨기기"를 선택하여 설명을 숨길 수 있습니다.
그러면 일괄 처리 실행 제출에서 이 평가 메서드를 사용할 때 이 설명이 표시됩니다.
출력 및 메트릭
평가의 출력은 테스트 중인 흐름의 성능을 측정하는 결과입니다. 출력에는 일반적으로 점수와 같은 메트릭이 포함되며 추론 및 제안을 위한 텍스트도 포함될 수 있습니다.
인스턴스 수준 점수 출력
프롬프트 흐름에서 흐름은 각 샘플 데이터 세트를 한 번에 하나씩 처리하고 출력 레코드를 생성합니다. 마찬가지로 대부분의 평가 사례에는 각 출력에 대한 메트릭이 있으므로 각 개별 데이터에서 흐름이 어떻게 수행되는지 확인할 수 있습니다.
각 데이터 샘플의 점수를 기록하려면 각 출력의 점수를 계산하고 점수를 출력 섹션에 설정하여 흐름 출력으로 기록합니다. 이 작성 환경은 표준 흐름 출력을 정의하는 것과 동일합니다.
이 점수는 line_process
노드에서 계산되며 형식별로 만들 때 처음부터 만들고 편집할 수 있습니다. 이 Python 노드를 LLM 노드로 바꿔 LLM을 사용하여 점수를 계산할 수도 있습니다.
이 평가 방법을 사용하여 다른 흐름을 평가하는 경우 개요>출력 탭에서 인스턴스 수준 점수를 볼 수 있습니다.
메트릭 로깅 및 집계 노드
또한, 실행에 대한 전체 점수를 제공하는 것도 중요합니다. 평가 흐름에서 Python 노드의 "집계로 설정"을 확인하여 이를 "축소" 노드로 전환하면 노드가 입력을 목록으로 가져와 일괄 처리할 수 있습니다.
이러한 방식으로 각 흐름 출력의 모든 점수를 컴퓨팅 및 처리하고 각 변형에 대한 전체 결과를 계산할 수 있습니다.
Prompt flow_sdk.log_metrics()를 사용하여 집계 노드에 메트릭을 기록할 수 있습니다. 메트릭은 숫자(float/int)여야 합니다. 문자열 형식 메트릭 로깅은 지원되지 않습니다.
형식별로 만들 때 처음부터 만들고 편집할 수 있는 aggregate
노드에서 이 점수를 계산합니다. 이 Python 노드를 LLM 노드로 바꿔서 LLM을 사용하여 점수를 계산할 수도 있습니다. 평가 흐름에서 log_metric
API를 사용하려면 다음 예제를 참조하세요.
from typing import List
from promptflow import tool, log_metric
@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
aggregate_grades = {}
for index in range(len(grades)):
grade = grades[index]
variant_id = variant_ids[index]
if variant_id not in aggregate_grades.keys():
aggregate_grades[variant_id] = []
aggregate_grades[variant_id].append(grade)
# calculate accuracy for each variant
for name, values in aggregate_grades.items():
accuracy = round((values.count("Correct") / len(values)), 2)
log_metric("accuracy", accuracy, variant_id=name)
return aggregate_grades
Python 노드에서 이 함수를 호출하면 다른 곳에 할당할 필요가 없으며 나중에 메트릭을 볼 수 있습니다. 이 평가 메서드를 일괄 처리 실행에 사용하면 인스턴스 수준 점수를 개요->메트릭 탭에서 볼 수 있습니다.