프롬프트 흐름 컴퓨팅 세션은 필요한 모든 종속성 패키지가 포함된 Docker 이미지를 포함하여 애플리케이션을 실행하는 데 필요한 컴퓨팅 리소스를 제공합니다. 이 안정적이고 확장 가능한 환경을 사용하면 프롬프트 흐름이 태스크 및 함수를 효율적으로 실행하여 원활한 사용자 환경을 보장할 수 있습니다.
컴퓨팅 세션 관리에 대한 권한 및 역할
역할을 할당하려면 리소스에 대한 권한이 필요하거나 Microsoft.Authorization/roleAssignments/write 권한이 필요합니다owner.
컴퓨팅 세션의 사용자의 경우 작업 영역에서 AzureML Data Scientist 역할을 할당합니다. 자세한 내용은 Azure Machine Learning 작업 영역에 대한 액세스 관리를 참조하세요.
역할 할당을 적용하는 데 몇 분 정도 걸릴 수 있습니다.
스튜디오에서 컴퓨팅 세션 시작
Azure Machine Learning Studio를 사용하여 컴퓨팅 세션을 시작하기 전에 다음을 확인합니다.
- 작업 영역에
AzureML Data Scientist역할이 있습니다. - 작업 영역의 기본 데이터 저장소(일반적으로
workspaceblobstore)는 Blob 형식입니다. - 작업 디렉터리(
workspaceworkingdirectory)가 작업 영역에 있습니다. - 프롬프트 흐름에 가상 네트워크를 사용하는 경우 프롬프트 흐름에서 네트워크 격리의 고려 사항을 이해합니다.
흐름 페이지에서 컴퓨팅 세션 시작
각 흐름은 단일 컴퓨팅 세션에 바인딩됩니다. 흐름 페이지에서 컴퓨팅 세션을 시작합니다.
시작을 선택합니다. 흐름 폴더에 정의된
flow.dag.yaml환경을 사용하여 컴퓨팅 세션을 시작합니다. 작업 영역에 충분한 할당량이 있는 경우 서버리스 컴퓨팅의 VM(가상 머신) 크기에서 실행됩니다.고급 설정 시작을 선택합니다. 고급 설정에서 다음을 수행할 수 있습니다.
- 컴퓨팅 유형을 선택합니다. 서버리스 컴퓨팅과 컴퓨팅 인스턴스 중에서 선택할 수 있습니다.
서버리스 컴퓨팅을 선택하면 다음 설정을 지정할 수 있습니다.
- 컴퓨팅 세션에서 사용하는 VM 크기를 사용자 지정합니다. VM 시리즈 D 이상을 선택합니다. 자세한 내용은 지원되는 VM 시리즈 및 크기 섹션을 참조하세요.
- 잠시 사용하지 않는 경우 컴퓨팅 세션을 자동으로 삭제하는 유휴 시간을 사용자 지정합니다.
- 사용자가 할당한 관리 ID를 설정합니다. 컴퓨팅 세션은 이 ID를 사용하여 기본 이미지를 가져오고 연결을 통해 인증하고 패키지를 설치합니다. 사용자 할당 관리 ID에 충분한 권한이 있는지 확인합니다. 이 ID를 설정하지 않으면 사용자 ID가 기본적으로 사용됩니다.
- 다음 CLI 명령을 사용하여 사용자가 할당한 관리 ID를 작업 영역에 할당할 수 있습니다. 작업 영역에 대한 사용자 할당 ID를 만들고 업데이트하는 방법에 대해 자세히 알아봅니다.
az ml workspace update -f workspace_update_with_multiple_UAIs.yml --subscription <subscription ID> --resource-group <resource group name> --name <workspace name>workspace_update_with_multiple_UAIs.yml의 콘텐츠는 다음과 같습니다.
identity: type: system_assigned, user_assigned user_assigned_identities: '/subscriptions/<subscription_id>/resourcegroups/<resource_group_name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<uai_name>': {} '<UAI resource ID 2>': {}팁
Azure Machine Learning 작업 영역에서 작업 영역 관련 리소스에 있는 데이터에 액세스하려면 사용자가 할당한 관리 ID에 다음 Azure RBAC 역할 할당이 필요합니다.
리소스 Permission Azure Machine Learning 작업 영역 참가자 Azure Storage 기여자(컨트롤 플레인) + Storage Blob 데이터 기여자 + 스토리지 파일 데이터 권한 있는 기여자(데이터 평면, 파일 공유의 흐름 초안 및 Blob의 데이터 사용) Azure Key Vault(액세스 정책 권한 모델을 사용하는 경우) 기여자 + 제거 작업 외에 모든 액세스 정책 권한은 연결된 Azure Key Vault의 기본 모드입니다. Azure Key Vault(RBAC 권한 모델을 사용하는 경우) 기여자(컨트롤 플레인) + Key Vault 관리자(데이터 평면) Azure Container Registry 참가자 Azure Application Insights 참가자 참고 항목
작업 제출자는 사용자 할당 관리 ID에 대한 권한이 필요합니다
assign.Managed Identity Operator서버리스 컴퓨팅 세션을 만들 때마다 사용자가 할당한 관리 ID가 컴퓨팅에 할당되므로 역할을 할당합니다.컴퓨팅 인스턴스를 컴퓨팅 유형으로 선택하면 유휴 종료 시간만 설정할 수 있습니다.
기존 컴퓨팅 인스턴스에서 실행되므로 VM 크기가 고정되어 세션 중에 변경할 수 없습니다.
이 세션에 사용되는 ID는 컴퓨팅 인스턴스에도 정의되어 있으며 기본적으로 사용자 ID를 사용합니다. 컴퓨팅 인스턴스에 ID를 할당하는 방법에 대해 자세히 알아보기
유휴 종료 시간은 컴퓨팅 세션의 수명 주기를 정의하는 데 사용되며, 설정한 시간 동안 세션이 유휴 상태이면 자동으로 삭제됩니다. 컴퓨팅 인스턴스에서 유휴 종료를 사용하도록 설정하면 컴퓨팅 수준에서 적용됩니다.
컴퓨팅 인스턴스를 만들고 관리하는 방법 자세히 알아보기
- 컴퓨팅 유형을 선택합니다. 서버리스 컴퓨팅과 컴퓨팅 인스턴스 중에서 선택할 수 있습니다.
컴퓨팅 세션을 사용하여 CLI/SDK에서 흐름 실행 제출
Studio를 사용하는 것 외에도 흐름 실행을 제출할 때 CLI 또는 SDK에서 컴퓨팅 세션을 지정합니다.
리소스 섹션에서 인스턴스 유형 또는 컴퓨팅 인스턴스 이름을 지정합니다. 인스턴스 유형 또는 컴퓨팅 인스턴스 이름이 지정되지 않은 경우 Azure Machine Learning은 할당량, 비용, 성능 및 디스크 크기와 같은 요인에 따라 인스턴스 유형(VM 크기)을 선택합니다. 서버리스 컴퓨팅에 대해 자세히 알아봅니다.
$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path_to_flow>
data: <path_to_flow>/data.jsonl
# specify identity used by serverless compute.
# default value
# identity:
# type: user_identity
# use workspace first UAI
# identity:
# type: managed
# use specified client_id's UAI
# identity:
# type: managed
# client_id: xxx
column_mapping:
url: ${data.url}
# define cloud resource
resources:
instance_type: <instance_type> # serverless compute type
# compute: <compute_instance_name> # use compute instance as compute type
CLI를 통해 이 실행을 제출합니다.
pfazure run create --file run.yml
참고 항목
CLI/SDK를 사용하여 흐름 실행을 제출하는 경우 유휴 종료는 1시간입니다. 컴퓨팅 페이지로 이동하여 컴퓨팅을 해제할 수 있습니다.
흐름 폴더 외부의 참조 파일
경우에 따라 흐름 폴더 외부에 있는 requirements.txt 파일을 참조할 수 있습니다. 예를 들어 여러 흐름을 포함하는 복잡한 프로젝트가 있을 수 있으며 동일한 requirements.txt 파일을 공유합니다. 이렇게 하려면 필드를 .에 additional_includes 추가합니다 flow.dag.yaml. 이 필드의 값은 흐름 폴더의 상대 파일/폴더 경로 목록입니다. 예를 들어 requirements.txt가 흐름 폴더의 부모 폴더에 있는 경우 ../requirements.txt를 additional_includes 필드에 추가할 수 있습니다.
inputs:
question:
type: string
outputs:
output:
type: string
reference: ${answer_the_question_with_context.output}
environment:
python_requirements_txt: requirements.txt
additional_includes:
- ../requirements.txt
...
파일은 requirements.txt 흐름 폴더에 복사되고 컴퓨팅 세션을 시작하는 데 사용됩니다.
스튜디오 흐름 페이지에서 컴퓨팅 세션 업데이트
흐름 페이지에서 다음 옵션을 사용하여 컴퓨팅 세션을 관리합니다.
- 컴퓨팅 세션 설정 변경: 서버리스 컴퓨팅에 대한 VM 크기 또는 사용자 할당 관리 ID와 같은 설정을 변경합니다. 컴퓨팅 인스턴스를 사용하는 경우 다른 인스턴스로 전환합니다.
- VM 크기를 변경하면 컴퓨팅 세션이 새 VM 크기로 다시 설정됩니다.
-
requirements.txt패키지 설치 : 프롬프트 흐름 UI에서 열고
requirements.txt패키지를 추가합니다. -
설치된 패키지 보기: 기본 이미지에 있고 흐름 폴더의 파일에 지정된 패키지를 포함하여 컴퓨팅 세션에
requirements.txt설치된 패키지를 표시합니다. - 컴퓨팅 세션 재설정은 현재 컴퓨팅 세션을 삭제하고 동일한 환경을 사용하여 새 컴퓨팅 세션을 만듭니다. 패키지 충돌 문제가 발생하는 경우 이 옵션을 사용해 볼 수 있습니다.
- 컴퓨팅 세션 중지는 현재 컴퓨팅 세션을 삭제합니다. 기본 컴퓨팅에 활성 컴퓨팅 세션이 없으면 서버리스 컴퓨팅 리소스도 삭제됩니다.
흐름 폴더의 requirements.txt 파일에 패키지를 추가하여 이 흐름을 실행하는 데 사용하는 환경을 사용자 지정할 수도 있습니다. 이 파일에 패키지를 더 추가한 후 다음 옵션 중 하나를 선택할 수 있습니다.
-
저장 및 설치 흐름 폴더의
pip install -r requirements.txt를 트리거합니다. 이 프로세스는 설치하는 패키지에 따라 몇 분 정도 걸릴 수 있습니다. -
저장만
requirements.txt파일을 저장하기만 합니다. 나중에 직접 패키지를 설치할 수 있습니다.
참고 항목
requirements.txt의 위치와 파일 이름도 변경할 수 있지만 흐름 폴더의 flow.dag.yaml 파일에서도 이러한 항목을 변경해야 합니다.
세션 기본 이미지에 requirements.txt 이미 포함되어 있으므로 버전을 promptflow-toolspromptflow 고정하지 마세요.
requirements.txt는 로컬 휠 파일을 지원하지 않습니다. 사용자의 이미지에서 빌드한 다음, 사용자 지정 기본 이미지를 flow.dag.yaml에 업데이트합니다.
사용자 지정 기본 이미지를 빌드하는 방법을 자세히 알아봅니다.
Azure DevOps의 프라이빗 피드에 패키지 추가
Azure DevOps에서 프라이빗 피드를 사용하려면 다음 단계를 수행합니다.
작업 영역 또는 컴퓨팅 인스턴스에 관리 ID를 할당합니다.
서버리스 컴퓨팅을 컴퓨팅 세션으로 사용하는 경우 사용자 할당 관리 ID를 작업 영역에 할당합니다.
사용자가 할당한 관리 ID를 만들고 Azure DevOps 조직에 추가합니다. 자세한 내용은 서비스 주체 및 관리 ID 사용을 참조하세요.
참고 항목
사용자 추가 단추가 표시되지 않으면 이 작업을 수행하는 데 필요한 권한이 없을 수 있습니다.
작업 영역에 사용자 할당 ID를 추가하거나 업데이트합니다.
참고 항목
사용자 할당 관리 ID의 작업 영역 연결된 KeyVault에
Microsoft.KeyVault/vaults/read가 있는지 확인합니다.
컴퓨팅 인스턴스를 컴퓨팅 세션으로 사용하는 경우 사용자가 할당한 관리 ID를 컴퓨팅 인스턴스에 할당합니다.
프라이빗 피드 URL에
{private}을 추가합니다. 예를 들어 Azure DevOps에서test_package의test_feed를 설치하려면-i https://{private}@{test_feed_url_in_azure_devops}에requirements.txt를 추가합니다.-i https://{private}@{test_feed_url_in_azure_devops} test_package컴퓨팅 세션 구성에서 사용자가 할당한 관리 ID를 사용하여 지정합니다.
참고 항목
이 방식은 주로 흐름 개발 단계의 빠른 테스트에 중점을 둡니다. 이 흐름을 엔드포인트로 배포하려면 이미지에 이 프라이빗 피드를 빌드하고 flow.dag.yaml에서 사용자 지정 기본 이미지를 업데이트합니다.
사용자 지정 기본 이미지 빌드 방법에 대해 자세히 알아봅니다.
컴퓨팅 세션의 기본 이미지 변경
기본적으로 최신 프롬프트 흐름 기본 이미지를 사용합니다. 다른 기본 이미지를 사용하려는 경우 사용자 지정 이미지를 빌드할 수 있습니다.
- 스튜디오에서는 컴퓨팅 세션 설정 아래의 기본 이미지 설정에서 기본 이미지를 변경할 수 있습니다.
흐름 폴더에 있는
environment파일의flow.dag.yaml아래에서 새 기본 이미지를 지정할 수도 있습니다.environment: image: <your-custom-image> python_requirements_txt: requirements.txt
새 기본 이미지를 사용하려면 컴퓨팅 세션을 다시 설정해야 합니다. 이 프로세스에서 새 기본 이미지를 끌어와 패키지를 다시 설치하는 데 몇 분 정도 걸립니다.
컴퓨팅 세션에서 사용하는 서버리스 인스턴스 관리
서버리스 컴퓨팅을 컴퓨팅 세션으로 사용하여 서버리스 인스턴스를 관리합니다. 컴퓨팅 페이지의 컴퓨팅 세션 목록 탭에서 서버리스 인스턴스를 확인합니다.
활성 흐름 및 실행 탭 아래의 컴퓨팅에서 흐름 및 실행 액세스 인스턴스를 삭제하면 흐름에 영향을 미치고 인스턴스에서 실행됩니다.
컴퓨팅 세션, 컴퓨팅 리소스, 흐름 및 사용자 간의 관계
- 단일 사용자는 여러 컴퓨팅 리소스(서버리스 또는 컴퓨팅 인스턴스)를 가질 수 있습니다. 예를 들어 사용자에게는 VM 크기가 다른 컴퓨팅 리소스 또는 사용자 할당 관리 ID가 있을 수 있습니다.
- 컴퓨팅 리소스는 단일 사용자만 사용할 수 있습니다. 해당 사용자의 프라이빗 개발 상자 역할을 합니다. 여러 사용자가 동일한 컴퓨팅 리소스를 공유할 수 없습니다.
- 컴퓨팅 리소스는 여러 컴퓨팅 세션을 호스트할 수 있습니다. 컴퓨팅 세션은 기본 컴퓨팅 리소스에서 실행되는 컨테이너입니다. 예를 들어 프롬프트 흐름 작성에는 많은 컴퓨팅 리소스가 필요하지 않으므로 단일 컴퓨팅 리소스는 동일한 사용자에 대해 여러 컴퓨팅 세션을 호스트할 수 있습니다.
- 컴퓨팅 세션은 한 번에 하나의 컴퓨팅 리소스에만 속합니다. 컴퓨팅 세션을 삭제하거나 중지하고 다른 컴퓨팅 리소스에 다시 할당할 수 있습니다.
- 흐름에는 하나의 컴퓨팅 세션만 있을 수 있습니다. 각 흐름은 자체 포함되며 컴퓨팅 세션에 대한 흐름 폴더의 기본 이미지 및 필수 Python 패키지를 정의합니다.
런타임을 컴퓨팅 세션으로 전환
컴퓨팅 세션은 컴퓨팅 인스턴스 런타임에 비해 다음과 같은 이점을 제공합니다.
- 세션 및 기본 컴퓨팅의 수명 주기를 자동으로 관리합니다. 더 이상 수동으로 만들거나 관리할 필요가 없습니다.
- 사용자 지정 환경을 만드는 대신 흐름 폴더의
requirements.txt파일에 패키지를 추가하여 패키지를 쉽게 사용자 지정합니다.
다음 단계를 사용하여 컴퓨팅 인스턴스 런타임을 컴퓨팅 세션으로 전환합니다.
-
requirements.txt흐름 폴더에서 파일을 준비합니다. 기본 이미지에 이미 포함되어 있으므로 버전을promptflowpromptflow-toolsrequirements.txt고정하지 마세요. 컴퓨팅 세션은 시작할 때 파일에 패키지를requirements.txt설치합니다. - 컴퓨팅 인스턴스 런타임에 대한 사용자 지정 환경을 만드는 경우 환경 세부 정보 페이지에서 이미지를 가져와 흐름 폴더의
flow.dag.yaml파일에 지정합니다. 자세한 내용은 컴퓨팅 세션 대한 기본 이미지 변경을 참조하세요. 사용자 또는 작업 영역acr pull의 관련 사용자 할당 관리 ID에 이미지에 대한 권한이 있는지 확인합니다.
- 컴퓨팅 리소스의 경우 기존 컴퓨팅 인스턴스를 계속 사용하여 수명 주기를 수동으로 관리하거나 시스템에서 관리하는 서버리스 컴퓨팅을 사용해 보세요.