실시간 유추를 위해 관리형 온라인 엔드포인트로 흐름 배포
흐름을 빌드하고 적절하게 테스트한 후에는 실시간 유추를 위해 엔드포인트를 호출할 수 있도록 엔드포인트로 흐름을 배포할 수 있습니다.
이 문서에서는 실시간 유추를 위한 관리되는 온라인 엔드포인트로 흐름을 배포하는 방법을 알아봅니다. 수행할 단계는 다음과 같습니다.
Important
이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 미리 보기 버전은 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
필수 조건
프롬프트 흐름에서 흐름을 빌드하고 테스트하는 방법을 알아봅니다.
관리형 온라인 엔드포인트에 대한 기본적인 이해가 있어야 합니다. 관리되는 온라인 엔드포인트는 기본 배포 인프라를 설정하고 관리하는 오버헤드에서 벗어나 확장 가능한 완전 관리되는 방식으로 Azure의 강력한 CPU 및 GPU 컴퓨터와 함께 작동합니다. 관리형 온라인 엔드포인트에 대한 자세한 내용은 실시간 유추를 위한 온라인 엔드포인트 및 배포를 참조하세요.
Azure RBAC(Azure 역할 기반 액세스 제어)는 Azure Machine Learning의 작업에 대한 액세스 권한을 부여하는 데 사용됩니다. 프롬프트 흐름에서 엔드포인트를 배포하려면 사용자 계정에 AzureML 데이터 과학자 또는 Azure Machine Learning 작업 영역에 대해 더 많은 권한이 있는 역할을 할당해야 합니다.
관리 ID에 대한 기본적인 이해가 있어야 합니다. 관리 ID에 대해 자세히 알아봅니다.
참고 항목
관리형 온라인 엔드포인트는 관리되는 가상 네트워크만 지원합니다. 작업 영역이 사용자 지정 vnet에 있는 경우 CLI/SDK를 사용하여 Kubernetes 온라인 엔드포인트에 배포하거나 Docker와 같은 다른 플랫폼에 배포하는 등 다른 배포 옵션을 시도해야 합니다.
흐름을 빌드하고 배포 준비
이미 시작 자습서를 완료했다면 일괄 처리 실행을 제출하고 결과를 평가함으로써 이미 흐름을 올바르게 테스트한 것입니다.
자습서를 완료하지 않은 경우 흐름을 빌드해야 합니다. 배포 전에 일괄 처리 실행 및 평가를 통해 흐름을 적절하게 테스트하는 것이 권장되는 모범 사례입니다.
흐름 배포 방법을 보여 주기 위해 샘플 흐름 웹 분류를 예로 사용할 예정입니다. 이 샘플 흐름은 표준 흐름입니다. 채팅 흐름 배포도 비슷합니다. 평가 흐름은 배포를 지원하지 않습니다.
배포에서 사용하는 환경 정의
UI에서 관리형 온라인 엔드포인트에 프롬프트 흐름을 배포하는 경우 기본적으로 배포는 흐름의 requirements.txt
에 지정된 최신 프롬프트 흐름 이미지 및 종속성을 기반으로 만든 환경을 사용합니다. requirements.txt
에서 필요한 추가 패키지를 지정할 수 있습니다. 흐름 폴더의 루트 폴더에서 requirements.txt
을 찾을 수 있습니다.
참고 항목
Azure DevOps에서 프라이빗 피드를 사용하는 경우, 먼저 프라이빗 피드로 이미지를 빌드하고 UI에 배포할 사용자 지정 환경을 선택할 수 있습니다.
온라인 배포 만들기
이제 흐름을 빌드하고 적절하게 테스트했으므로 실시간 유추를 위한 온라인 엔드포인트를 만들 차례입니다.
프롬프트 흐름은 흐름에서 엔드포인트를 배포하거나 일괄 처리 실행을 지원합니다. 배포하기 전에 흐름을 테스트하는 것이 권장되는 모범 사례입니다.
흐름 작성 페이지 또는 실행 세부 정보 페이지에서 배포를 선택합니다.
흐름 작성 페이지:
실행 세부 정보 페이지:
엔드포인트를 구성하는 마법사가 나타나고 다음 단계가 포함됩니다.
기본 설정
이 단계에서는 배포의 기본 설정을 구성할 수 있습니다.
속성 | 설명 |
---|---|
엔드포인트 | 새 엔드포인트를 배포할지 아니면 기존 엔드포인트를 업데이트할지 선택할 수 있습니다. 새로 만들기를 선택하려는 경우 엔드포인트 이름을 지정해야 합니다. |
배포 이름 | - 동일한 엔드포인트 내에서 배포 이름은 고유해야 합니다. - 기존 엔드포인트를 선택하고 기존 배포 이름을 입력하면 해당 배포가 새 구성으로 덮어쓰여집니다. |
가상 머신 | 배포에 사용할 VM 크기입니다. 지원되는 크기 목록은 관리되는 온라인 엔드포인트 SKU 목록을 참조하세요. |
인스턴트 수 | 배포에 사용할 인스턴스 수입니다. 예상되는 워크로드 값을 지정합니다. 고가용성을 위해 값을 3 이상으로 설정하는 것이 좋습니다. 업그레이드 수행을 위해 추가 20%를 예약합니다. 자세한 내용은 관리되는 온라인 엔드포인트 할당량을 참조하세요. |
유추 데이터 수집 | 이를 사용하도록 설정하면 흐름 입력 및 출력이 Azure Machine Learning 데이터 자산에서 자동으로 수집되며 나중에 모니터링하는 데 사용할 수 있습니다. 자세한 내용은 생성 Ai 애플리케이션을 모니터링하는 방법을 참조하세요. |
기본 설정을 완료한 후, 바로 검토+만들기를 사용하여 만들기를 완료하거나 다음을 선택하여 고급 설정을 구성할 수 있습니다.
고급 설정 - 엔드포인트
엔드포인트에 대해 다음 설정을 지정할 수 있습니다.
Authentication type
엔드포인트에 대한 인증 방법입니다. 키 기반 인증은 만료되지 않는 기본 및 보조 키를 제공합니다. Azure Machine Learning 토큰 기반 인증은 주기적으로 자동으로 새로 고쳐지는 토큰을 제공합니다. 인증에 대한 자세한 내용은 온라인 엔드포인트에 대한 인증을 참조하세요.
ID 형식
엔드포인트는 유추를 위해 Azure Container Registry 또는 작업 영역 연결과 같은 Azure 리소스에 액세스해야 합니다. 관리 ID에 권한을 부여하여 엔드포인트 권한이 Azure 리소스에 액세스하도록 허용할 수 있습니다.
시스템 할당 ID는 엔드포인트가 만들어진 후 자동 만들어지는 반면, 사용자 할당 ID는 사용자가 만듭니다. 관리 ID에 대해 자세히 알아봅니다.
시스템 할당
연결 비밀에 대한 액세스 적용(미리 보기) 여부를 설정할 수 있는 옵션이 있습니다. 흐름에서 연결을 사용하는 경우 엔드포인트는 유추를 수행하기 위해 연결에 액세스해야 합니다. 이 옵션은 기본적으로 사용하도록 설정되며, 연결 비밀 판독기 권한이 있는 경우 자동으로 연결에 액세스하기 위해 엔드포인트에 Azure Machine Learning 작업 영역 연결 비밀 읽기 권한자 역할을 부여해야 합니다. 이 옵션을 사용하지 않도록 설정하는 경우 이 역할을 시스템 할당 ID에 직접 수동으로 부여하거나 관리자에게 도움을 요청해야 합니다. 엔드포인트 ID에 권한을 부여하는 방법에 대해 자세히 알아봅니다.
사용자 할당
배포를 만들 때 Azure는 ACR(Azure Container Registry) 작업 영역에서 사용자 컨테이너 이미지를 가져오고 작업 영역 스토리지 계정에서 사용자 모델 및 코드 아티팩트를 사용자 컨테이너에 탑재하려고 합니다.
사용자 할당 ID와 연결된 엔드포인트를 만든 경우, 배포를 만들기 전에 다음 역할을 부여해야 합니다. 그렇지 않은 경우 배포 만들기가 실패합니다.
범위 | 역할 | 필요한 이유 |
---|---|---|
Azure Machine Learning 작업 영역 | Azure Machine Learning 작업 영역 연결 비밀 읽기 역할 또는 "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action"을 포함하는 사용자 지정 역할 | 작업 영역 연결 가져오기 |
작업 영역 컨테이너 레지스트리 | ACR 끌어오기 | 컨테이너 이미지 끌어오기 |
작업 영역 기본 스토리지 | Storage Blob 데이터 읽기 권한자 | 스토리지에서 모델 로드 |
(선택 사항) Azure Machine Learning 작업 영역 | 작업 영역 메트릭 작성기 | 엔드포인트를 배포한 후 CPU/GPU/디스크/메모리 사용률과 같은 엔드포인트 관련 메트릭을 모니터링하려면 ID에 이 권한을 부여해야 합니다. |
엔드포인트에 권한 부여에서 엔드포인트 ID에 권한을 부여하는 방법에 대한 자세한 지침을 참조하세요.
Important
흐름에서 Microsoft Entra ID 기반 인증 연결을 사용하는 경우 시스템 할당 ID 또는 사용자 할당 ID를 사용하더라도 해당 리소스에 대한 API 호출을 수행할 수 있도록 항상 관리 ID에 해당 리소스의 적절한 역할을 부여해야 합니다. 예를 들어, Azure OpenAI 연결이 Microsoft Entra ID 기반 인증을 사용하는 경우 해당 Azure OpenAI 리소스의 엔드포인트 관리 ID Cognitive Services OpenAI 사용자 또는 Cognitive Services OpenAI 기여자 역할을 부여해야 합니다.
고급 설정 - 배포
이 단계에서는 태그를 제외하고 배포에서 사용하는 환경을 지정할 수도 있습니다.
현재 흐름 정의의 환경 사용
기본적으로 배포에서는 flow.dag.yaml
에 지정된 베이스 이미지와 requirements.txt
에 지정된 종속성을 기반으로 만든 환경을 사용합니다.
흐름의
Raw file mode
를 선택하여flow.dag.yaml
에서 베이스 이미지를 지정할 수 있습니다. 지정된 이미지가 없으면 기본 베이스 이미지는 최신 프롬프트 흐름 베이스 이미지입니다.흐름 폴더의 루트 폴더에서
requirements.txt
찾을 수 있으며 안에 종속성을 추가할 수 있습니다.
사용자 지정된 환경 사용
사용자 지정된 환경을 만들고 배포에 사용할 수도 있습니다.
참고 항목
사용자 지정 환경은 다음 요구 사항을 충족해야 합니다.
- Docker 이미지는 프롬프트 흐름 베이스 이미지
mcr.microsoft.com/azureml/promptflow/promptflow-runtime-stable:<newest_version>
를 기반으로 만들어야 합니다. 최신 버전은 여기에서 찾을 수 있습니다. - 환경 정의에는
inference_config
이 포함되어야 합니다.
다음은 사용자 지정된 환경 정의의 예입니다.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
path: ./image_build
dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
liveness_route:
port: 8080
path: /health
readiness_route:
port: 8080
path: /health
scoring_route:
port: 8080
path: /score
Application Insights 진단(미리 보기)을 켜서 추적 사용
이 기능을 사용하도록 설정하면 유추 시간(예: 토큰 수, 흐름 대기 시간, 흐름 요청 등) 동안의 추적 데이터 및 시스템 메트릭이 Application Insights에 연결된 작업 영역에 수집됩니다. 자세한 내용은 추적 데이터 및 메트릭을 제공하는 프롬프트 흐름을 참조하세요.
연결된 작업 영역이 아닌 다른 Application Insights를 지정하려면 CLI로 구성할 수 있습니다.
고급 설정 - 출력 및 연결
이 단계에서는 모든 흐름 출력을 보고 배포하는 엔드포인트의 응답에 포함될 출력을 지정할 수 있습니다. 기본적으로 모든 흐름 출력이 선택됩니다.
또한 유추를 수행할 때 엔드포인트에서 사용하는 연결을 지정할 수 있습니다. 기본적으로 흐름에서 상속됩니다.
위의 모든 단계를 구성하고 검토한 후에는 검토+만들기를 선택하여 만들기를 완료할 수 있습니다.
참고 항목
엔드포인트 만들기, 모델 등록, 배포 만들기 등의 여러 단계가 포함되어 있으므로 엔드포인트를 만드는 데 약 15분이 걸릴 것으로 예상합니다.
엔드포인트에 권한 부여
Important
권한 부여(역할 할당 추가)는 특정 Azure 리소스의 소유자에게만 사용하도록 설정됩니다. IT 관리자에게 도움을 요청해야 할 수도 있습니다. 배포 만들기 전에 사용자가 할당한 ID 에 역할을 부여하는 것이 좋습니다. 부여된 권한이 적용되는 데 15분 이상 걸릴 수 있습니다.
다음 단계에 따라 Azure Portal UI에서 모든 권한을 부여할 수도 있습니다.
Azure Portal에서 Azure Machine Learning 작업 영역 개요 페이지로 이동합니다.
Azure Machine Learning 작업 영역 연결 비밀 읽기 권한자를 선택하고 다음로 이동합니다.
참고 항목
Azure Machine Learning 작업 영역 연결 비밀 읽기 권한자는 작업 영역 연결을 가져올 수 있는 권한이 있는 기본 제공 역할입니다.
사용자 지정된 역할을 사용하려면 사용자 지정된 역할에 "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action" 권한이 있는지 확인합니다. 사용자 지정 역할을 만드는 방법에 대해 자세히 알아봅니다.
관리 ID를 선택하고 멤버를 선택합니다.
시스템 할당 ID의 경우 시스템 할당 관리 ID에서 기계 학습 온라인 엔드포인트를 선택하고 엔드포인트 이름으로 검색합니다.
사용자 할당 ID의 경우 사용자 할당 관리 ID를 선택하고 ID 이름으로 검색합니다.
사용자가 할당한 ID의 경우, 작업 영역 컨테이너 레지스트리에도 권한을 부여해야 합니다. Azure Portal의 작업 영역 개요 페이지에서 컨테이너 레지스트리 및 스토리지 계정을 찾을 수 있습니다.
작업 영역 컨테이너 레지스트리 개요 페이지로 이동하여 액세스 제어를 선택하고 역할 할당 추가를 선택한 다음 ACR pull |Pull 컨테이너 이미지를 엔드포인트 ID에 할당합니다.
작업 영역 기본 스토리지 개요 페이지로 이동하고, 액세스 제어를 선택하고 역할 할당 추가를 선택한 후 Storage Blob 데이터 읽기 권한자를 엔트포인트 ID에 지정합니다.
(선택 사항) 사용자가 할당한 ID의 경우, CPU/GPU/디스크/메모리 활용과 같은 엔드포인트 관련 메트릭을 모니터링하려면 작업 영역의 작업 영역 메트릭 작성자 역할을 ID에도 부여해야 합니다.
클러스터의 상태를 확인합니다.
배포 마법사를 완료하면 알림이 표시됩니다. 엔드포인트와 배포가 성공적으로 만들어지면 엔드포인트 세부 정보 페이지에 대한 알림에서 배포 세부 정보를 선택할 수 있습니다.
스튜디오의 엔드포인트 페이지로 직접 이동하여 배포한 엔드포인트의 상태를 확인할 수도 있습니다.
샘플 데이터로 엔드포인트 테스트
엔드포인트 세부 정보 페이지에서 테스트 탭으로 전환합니다.
값을 입력하고 테스트 단추를 선택할 수 있습니다.
테스트 결과는 다음과 같습니다.
채팅 흐름에서 배포된 엔드포인트 테스트
채팅 흐름에서 배포된 엔드포인트의 경우 몰입형 채팅 창에서 테스트할 수 있습니다.
chat_input
는 채팅 흐름 개발 중에 설정되었습니다. 입력창에 chat_input
메시지를 입력할 수 있습니다. 오른쪽에 있는 입력 패널에서는 chat_input
이외의 다른 입력에 대한 값을 지정할 수 있습니다. 채팅 흐름을 개발하는 방법에 대해 자세히 알아봅니다.
엔드포인트 사용
엔드포인트 세부 정보 페이지에서 소비 탭으로 전환합니다. 엔드포인트를 사용할 REST 엔드포인트와 키/토큰을 찾을 수 있습니다. 다양한 언어로 엔드포인트를 사용할 수 있는 샘플 코드도 있습니다.
흐름 입력에 따라 데이터 값을 채워야 합니다. 이 문서 웹 분류에 사용된 샘플 흐름을 예로 들면, data = {"url": "<the_url_to_be_classified>"}
를 지정하고 샘플 사용량 코드에 키 또는 토큰을 채워야 합니다.
엔드포인트 모니터링
Azure Monitor를 사용하여 관리형 온라인 엔드포인트 일반 메트릭 보기(선택 사항)
스튜디오에 있는 엔드포인트의 세부 정보 페이지에 있는 링크를 따라 가면 온라인 엔드포인트 및 해당 배포에 대한 다양한 메트릭(요청 수, 요청 대기 시간, 네트워크 바이트, CPU/GPU/디스크/메모리 활용도 등)을 볼 수 있습니다. 이러한 링크를 사용하면 Azure Portal에서 정확한 엔드포인트 또는 배포 메트릭 페이지로 이동합니다.
참고 항목
엔드포인트에 대해 사용자 할당 ID를 할당하는 경우 Azure Machine Learning 작업 영역의 작업 영역 메트릭 작성기를 사용자 할당 ID에 할당했는지 확인합니다. 그렇지 않으면 엔드포인트가 메트릭을 기록할 수 없습니다.
온라인 엔드포인트 메트릭을 보는 방법에 대한 자세한 내용은 온라인 엔드포인트 모니터링을 참조하세요.
프롬프트 흐름 엔드포인트별 메트릭 및 추적 데이터 보기(선택 사항)
UI 배포 마법사에서 Application Insights 진단을 사용하도록 설정하면 추적 데이터 및 프롬프트 흐름 관련 메트릭이 작업 영역에 연결된 Application Insights에 수집됩니다. 배포 추적 사용에 관한 세부 정보를 확인하세요.
프롬프트 흐름에서 배포된 엔드포인트 문제 해결
"Microsoft.MachineLearningService/workspaces/datastores/read" 작업을 수행할 수 있는 권한이 부족합니다.
흐름에 인덱스 조회 도구가 포함된 경우 흐름을 배포한 후 엔드포인트는 청크 및 포함이 포함된 MLIndex yaml 파일 또는 FAISS 폴더를 읽으려면 작업 영역 데이터 저장소에 액세스해야 합니다. 따라서 이를 수행하려면 엔드포인트 ID 권한을 수동으로 부여해야 합니다.
작업 영역 범위에 대해 엔드포인트 ID AzureML 데이터 과학자를 부여하거나 "MachineLearningService/workspace/datastore/reader" 작업이 포함된 사용자 지정 역할을 부여할 수 있습니다.
MissingDriverProgram 오류
사용자 지정 환경을 사용하여 흐름을 배포한 후 다음 오류가 발생하는 경우 사용자 지정 환경 정의에서 inference_config
를 구성하지 않았기 때문일 수 있습니다.
'error':
{
'code': 'BadRequest',
'message': 'The request is invalid.',
'details':
{'code': 'MissingDriverProgram',
'message': 'Could not find driver program in the request.',
'details': [],
'additionalInfo': []
}
}
이 오류를 해결하는 방법에는 2가지가 있습니다.
(권장) 사용자 지정 환경 세부 정보 페이지에서 컨테이너 이미지 URI를 찾아 flow.dag.yaml 파일의 흐름 베이스 이미지로 설정할 수 있습니다. UI에서 흐름을 배포하는 경우 현재 흐름 정의 환경 사용을 선택하면 벡 엔드 서비스에서 해당 베이스 이미지를 기반으로 배포에 적합한 사용자 지정된 환경과
requirement.txt
을 만듭니다. Learn more about 흐름 정의에 지정된 환경에 대해 자세히 알아봅니다.사용자 지정 환경 정의에
inference_config
를 추가하여 오류를 해결할 수 있습니다. 사용자 지정 환경을 사용하는 방법에 대해 자세히 알아봅니다.다음은 사용자 지정된 환경 정의의 예입니다.
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
path: ./image_build
dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
liveness_route:
port: 8080
path: /health
readiness_route:
port: 8080
path: /health
scoring_route:
port: 8080
path: /score
모델 응답이 너무 오래 걸립니다
경우에 따라 배포가 응답하는 데 너무 오래 걸리는 것을 알 수 있습니다. 이 문제가 발생할 수 있는 몇 가지 잠재적인 요인이 있습니다.
- 모델이 충분히 강력하지 않습니다(예: text-ada에 gpt 사용)
- 인덱스 쿼리가 최적화되지 않아 시간이 너무 오래 걸립니다.
- 흐름에 처리해야 할 단계가 많습니다.
위의 고려 사항으로 엔드포인트를 최적화하여 모델의 성능을 향상시키는 것이 좋습니다.
배포 스키마를 가져올 수 없습니다.
엔드포인트를 배포하고 엔드포인트 세부 정보 페이지의 테스트 탭에서 이를 테스트하려는 경우, 테스트 탭에 다음과 같이 배포 스키마를 가져올 수 없습니다가 표시되는 경우 , 다음 두 가지 방법을 시도하여 이 문제를 완화할 수 있습니다.
- 엔드포인트 ID에 올바른 권한을 부여했는지 확인합니다. 엔드포인트 ID에 권한을 부여하는 방법에 대해 자세히 알아봅니다.
작업 영역 비밀을 나열하기 위한 액세스가 거부되었습니다.
"작업 영역 비밀을 나열하기 위한 액세스가 거부되었습니다."와 같은 오류가 발생하는 경우 엔드포인트 ID에 올바른 권한을 부여했는지 확인합니다. 엔드포인트 ID에 권한을 부여하는 방법에 대해 자세히 알아봅니다.
리소스 정리
이 자습서를 완료한 후 엔드포인트를 사용하지 않으려면 엔드포인트를 삭제해야 합니다.
참고 항목
전체 삭제에는 약 20분 정도 걸릴 수 있습니다.