Azure Machine Learning 스튜디오에서 프롬프트 흐름 컴퓨팅 세션 관리

프롬프트 흐름 컴퓨팅 세션은 필요한 모든 종속성 패키지가 포함된 Docker 이미지를 포함하여 애플리케이션을 실행하는 데 필요한 컴퓨팅 리소스를 제공합니다. 안정적이고 확장성 있는 이 환경에서는 프롬프트 흐름이 작업과 함수를 효율적으로 실행할 수 있어 원활한 사용자 환경이 보장됩니다.

컴퓨팅 세션 관리에 대한 권한 및 역할

역할을 할당하려면 리소스에 대한 owner 또는 Microsoft.Authorization/roleAssignments/write 권한이 있어야 합니다.

컴퓨팅 세션의 사용자의 경우 작업 영역에서 AzureML Data Scientist 역할을 할당합니다. 자세한 내용은 Azure Machine Learning 작업 영역에 대한 액세스 관리를 참조하세요.

역할 할당이 적용될 때까지 몇 분 정도 걸릴 수 있습니다.

스튜디오에서 컴퓨팅 세션 시작

Azure Machine Learning 스튜디오를 사용하여 컴퓨팅 세션을 시작하기 전에 다음을 확인합니다.

  • 작업 영역에 AzureML Data Scientist 역할이 있습니다.
  • 작업 영역의 기본 데이터 저장소(일반적으로 workspaceblobstore)가 Blob 형식입니다.
  • 작업 디렉터리(workspaceworkingdirectory)가 작업 영역에 있습니다.
  • 프롬프트 흐름에 가상 네트워크를 사용하는 경우 프롬프트 흐름에서 네트워크 격리의 고려 사항을 이해합니다.

흐름 페이지에서 컴퓨팅 세션 시작

하나의 흐름은 하나의 컴퓨팅 세션에 바인딩됩니다. 흐름 페이지에서 컴퓨팅 세션을 시작할 수 있습니다.

  • 시작을 선택합니다. 흐름 폴더의 flow.dag.yaml에 정의된 환경을 사용하여 컴퓨팅 세션을 시작합니다. 작업 영역에 할당량이 충분한 서버리스 컴퓨팅의 VM(가상 머신) 크기에서 실행됩니다.

    흐름 페이지에서 컴퓨팅 세션을 시작하기 위한 기본 설정이 있는 프롬프트 흐름의 스크린샷.

  • 고급 설정 시작을 선택합니다. 고급 설정에서 다음을 수행할 수 있습니다.

    • 컴퓨팅 유형을 선택합니다. 서버리스 컴퓨팅과 컴퓨팅 인스턴스 중에서 선택할 수 있습니다.
      • 서버리스 컴퓨팅을 선택하면 다음 설정을 지정할 수 있습니다.

        • 컴퓨팅 세션에서 사용하는 VM 크기를 사용자 지정합니다. VM 시리즈 D 이상을 선택합니다. 자세한 내용은 지원되는 VM 시리즈 및 크기 섹션을 참조하세요.
        • 잠시 사용하지 않는 경우 컴퓨팅 세션을 자동으로 삭제하는 유휴 시간을 사용자 지정합니다.
        • 사용자가 할당한 관리 ID를 설정합니다. 컴퓨팅 세션은 이 ID를 사용하여 기본 이미지를 가져오고 연결을 통해 인증하고 패키지를 설치합니다. 사용자가 할당한 관리 ID에 충분한 권한이 있는지 확인합니다. 이 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 Contributor

        참고 항목

        작업 제출자는 사용자가 할당한 관리 ID에 대한 assign 권한이 있어야 하며, 서버리스 컴퓨팅 세션을 만들 때마다 사용자가 할당한 관리 ID를 컴퓨팅에 할당하므로 Managed Identity Operator 역할을 할당할 수 있습니다.

      • 컴퓨팅 인스턴스를 컴퓨팅 유형으로 선택하면 유휴 종료 시간만 설정할 수 있습니다.

        • 기존 컴퓨팅 인스턴스에서 실행 중이므로 VM 크기가 고정되어 있고 세션 쪽에서는 변경할 수 없습니다.

        • 이 세션에 사용되는 ID는 컴퓨팅 인스턴스에도 정의되어 있으며 기본적으로 사용자 ID를 사용합니다. 컴퓨팅 인스턴스에 ID를 할당하는 방법에 대해 자세히 알아보기

        • 유휴 종료 시간은 컴퓨팅 세션의 수명 주기를 정의하는 데 사용되며, 설정한 시간 동안 세션이 유휴 상태이면 자동으로 삭제됩니다. 또한 컴퓨팅 인스턴스에서 유휴 종료를 사용하도록 설정하면 컴퓨팅 수준에서 적용됩니다.

          흐름 페이지에서 컴퓨팅 세션을 시작하기 위해 고급 설정으로 컴퓨팅 인스턴스를 사용하는 프롬프트 흐름의 스크린샷.

        • 컴퓨팅 인스턴스를 만들고 관리하는 방법 자세히 알아보기

컴퓨팅 세션을 사용하여 CLI/SDK에서 흐름 실행 제출

스튜디오 외에도 흐름 실행을 제출할 때 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_includesflow.dag.yaml에 추가할 수 있습니다. 이 필드의 값은 흐름 폴더의 상대 파일/폴더 경로 목록입니다. 예를 들어 requirements.txt가 흐름 폴더의 부모 폴더에 있는 경우 ../requirements.txtadditional_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와 같은 컴퓨팅 설정을 변경합니다. 컴퓨팅 인스턴스를 사용하는 경우 다른 인스턴스를 사용하도록 변경할 수 있습니다. 다음 요소 또한 변경 가능
  • 서버리스 컴퓨팅에 대한 사용자가 할당한 관리 ID를 변경할 수도 있습니다. VM 크기를 변경하면 컴퓨팅 세션이 새 VM 크기로 다시 설정됩니다. Azure를 처음 사용하며
  • requirements.txt에서 패키지 설치 프롬프트 흐름 UI에서 requirements.txt를 열어 여기에 패키지를 추가할 수 있도록 합니다.
  • 설치된 패키지 보기는 컴퓨팅 세션에 설치된 패키지를 표시합니다. 여기에는 기본 이미지에 설치한 패키지와 흐름 폴더의 requirements.txt 파일에 지정된 패키지가 포함됩니다.
  • 컴퓨팅 세션 재설정은 현재 컴퓨팅 세션을 삭제하고 동일한 환경을 사용하여 새 컴퓨팅 세션을 만듭니다. 패키지 충돌 문제가 발생하는 경우 이 옵션을 사용해 볼 수 있습니다.
  • 컴퓨팅 세션 중지는 현재 컴퓨팅 세션을 삭제합니다. 기본 컴퓨팅에 활성 컴퓨팅 세션이 없으면 서버리스 컴퓨팅 리소스도 삭제됩니다.

흐름 페이지의 컴퓨팅 세션에 대한 작업의 스크린샷.

흐름 폴더의 requirements.txt 파일에 패키지를 추가하여 이 흐름을 실행하는 데 사용하는 환경을 사용자 지정할 수도 있습니다. 이 파일에 패키지를 더 추가한 후 다음 옵션 중 하나를 선택할 수 있습니다.

  • 저장 및 설치 흐름 폴더의 pip install -r requirements.txt를 트리거합니다. 이 프로세스는 설치하는 패키지에 따라 몇 분 정도 걸릴 수 있습니다.
  • 저장만 requirements.txt 파일을 저장하기만 합니다. 나중에 직접 패키지를 설치할 수 있습니다.

흐름 페이지에서 컴퓨팅 세션에 대한 패키지를 저장하고 설치하는 옵션의 스크린샷.

참고 항목

requirements.txt의 위치와 파일 이름도 변경할 수 있지만 흐름 폴더의 flow.dag.yaml 파일에서도 이러한 항목을 변경해야 합니다.

promptflowpromptflow-tools의 버전이 세션 기본 이미지에 이미 포함되어 있으므로 requirements.txt에 고정하지 마세요.

requirements.txt는 로컬 휠 파일을 지원하지 않습니다. 사용자의 이미지에서 빌드한 다음, 사용자 지정 기본 이미지를 flow.dag.yaml에 업데이트합니다. 사용자 지정 기본 이미지를 빌드하는 방법을 자세히 알아봅니다.

Azure DevOps의 프라이빗 피드에 패키지 추가

Azure DevOps에서 프라이빗 피드를 사용하려면 다음 단계를 수행합니다.

  1. 작업 영역 또는 컴퓨팅 인스턴스에 관리 ID를 할당합니다.

    1. 서버리스 컴퓨팅을 컴퓨팅 세션으로 사용하려면 사용자가 할당한 관리 ID를 작업 영역에 할당해야 합니다.

      1. 사용자가 할당한 관리 ID를 만들고 Azure DevOps 조직에서 이 ID를 추가합니다. 자세한 내용은 서비스 주체 및 관리 ID 사용을 참조하세요.

        참고 항목

        사용자 추가 단추가 표시되지 않으면 이 작업을 수행하는 데 필요한 권한이 없을 수 있습니다.

      2. 작업 영역에 사용자 할당 ID를 추가하거나 업데이트합니다.

        참고 항목

        사용자 할당 관리 ID의 작업 영역 연결된 KeyVault에 Microsoft.KeyVault/vaults/read가 있는지 확인합니다.

    2. 컴퓨팅 인스턴스를 컴퓨팅 세션으로 사용하려면 컴퓨팅 인스턴스에 사용자가 할당한 관리 ID를 할당해야 합니다.

  2. 프라이빗 피드 URL에 {private}을 추가합니다. 예를 들어 Azure DevOps에서 test_feedtest_package를 설치하려면 requirements.txt-i https://{private}@{test_feed_url_in_azure_devops}를 추가합니다.

    -i https://{private}@{test_feed_url_in_azure_devops}
    test_package
    
  3. 컴퓨팅 세션 구성에서 사용자가 할당한 관리 ID를 사용하여 지정합니다.

    1. 서버리스 컴퓨팅을 사용하는 경우 컴퓨팅 세션이 실행되고 있지 않으면 고급 설정으로 시작에서 사용자가 할당한 관리 ID를 지정하거나, 컴퓨팅 세션이 실행되고 있으면 컴퓨팅 세션 설정 변경 단추를 사용합니다.

      작업 영역 사용자 할당 관리 ID를 사용하기 위한 토글을 보여 주는 스크린샷.

    2. 컴퓨팅 인스턴스를 사용하는 경우 컴퓨팅 인스턴스에 할당한 사용자가 할당한 관리 ID를 사용합니다.

참고 항목

이 방식은 주로 흐름 개발 단계의 빠른 테스트에 중점을 둡니다. 이 흐름을 엔드포인트로 배포하려면 이미지에 이 프라이빗 피드를 빌드하고 flow.dag.yaml에서 사용자 지정 기본 이미지를 업데이트합니다. 사용자 지정 기본 이미지 빌드 방법에 대해 자세히 알아봅니다.

컴퓨팅 세션의 기본 이미지 변경

기본적으로 최신 프롬프트 흐름 기본 이미지를 사용합니다. 다른 기본 이미지를 사용하려는 경우 사용자 지정 이미지를 빌드할 수 있습니다.

  • 스튜디오에서는 컴퓨팅 세션 설정 아래의 기본 이미지 설정에서 기본 이미지를 변경할 수 있습니다.

흐름 페이지에서 컴퓨팅 세션의 기본 이미지를 변경하는 스크린샷.

  • 흐름 폴더에 있는 flow.dag.yaml 파일의 environment 아래에서 새 기본 이미지를 지정할 수도 있습니다.

    흐름 페이지에서 컴퓨팅 세션에 대한 기본 이미지를 사용자 지정하는 작업의 스크린샷.

    environment:
        image: <your-custom-image>
        python_requirements_txt: requirements.txt
    

새 기본 이미지를 사용하려면 컴퓨팅 세션을 다시 설정해야 합니다. 이 프로세스에서 새 기본 이미지를 끌어와 패키지를 다시 설치하는 데 몇 분 정도 걸립니다.

컴퓨팅 세션에서 사용하는 서버리스 인스턴스 관리

서버리스 컴퓨팅을 컴퓨팅 세션으로 사용할 때 서버리스 인스턴스를 관리할 수 있습니다. 컴퓨팅 페이지의 컴퓨팅 세션 목록 탭에서 서버리스 인스턴스를 확인합니다.

서버리스 인스턴스 목록의 스크린샷.

또한 컴퓨터에서 실행되는 활성 흐름 및 실행 탭 아래에서 흐름 및 실행에 액세스할 수 있습니다. 삭제하면 인스턴스가 흐름에 영향을 미치고 실행됩니다.

서버리스 인스턴스의 컴퓨팅 세부 정보 페이지의 스크린샷.

컴퓨팅 세션, 컴퓨팅 리소스, 흐름 및 사용자 간의 관계

  • 한 명의 사용자가 여러 컴퓨팅 리소스(서버리스 또는 컴퓨팅 인스턴스)를 유지할 수 있습니다. 다양한 요구 사항이 필요할 수 있으므로 단일 사용자가 여러 컴퓨팅 리소스를 가질 수 있습니다. 예를 들어 한 명의 사용자가 VM 크기가 다르거나 사용자가 할당한 관리 ID가 다른 여러 컴퓨팅 리소스를 가질 수 있습니다.
  • 하나의 컴퓨팅 리소스는 단일 사용자만 사용할 수 있습니다. 컴퓨팅 리소스는 단일 사용자의 프라이빗 개발 상자로 사용됩니다. 여러 사용자가 동일한 컴퓨팅 리소스를 공유할 수 없습니다.
  • 하나의 컴퓨팅 리소스는 여러 컴퓨팅 세션을 호스트할 수 있습니다. 컴퓨팅 세션은 기본 컴퓨팅 리소스에서 실행되는 컨테이너입니다. 예를 들어 프롬프트 흐름을 작성하는 데는 컴퓨팅 리소스가 너무 많이 필요하지 않으므로 단일 컴퓨팅 리소스가 동일한 사용자의 여러 컴퓨팅 세션을 호스트할 수 있습니다.
  • 하나의 컴퓨팅 세션은 한 번에 하나의 컴퓨팅 리소스에만 속합니다. 하지만 컴퓨팅 세션을 삭제하거나 중지하고 다른 컴퓨팅 리소스에 다시 할당할 수 있습니다.
  • 하나의 흐름은 하나의 컴퓨팅 세션만 가질 수 있습니다. 각 흐름은 독립적이며 컴퓨팅 세션에 대한 흐름 폴더의 기본 이미지와 필수 Python 패키지를 정의합니다.

런타임을 컴퓨팅 세션으로 전환

컴퓨팅 세션은 컴퓨팅 인스턴스 런타임에 비해 다음과 같은 이점이 있습니다.

  • 세션 및 기본 컴퓨팅의 수명 주기를 자동으로 관리합니다. 더 이상 수동으로 만들고 관리할 필요가 없습니다.
  • 사용자 지정 환경을 만드는 대신 흐름 폴더의 requirements.txt 파일에 패키지를 추가하여 패키지를 쉽게 사용자 지정합니다.

다음 단계를 사용하여 컴퓨팅 인스턴스 런타임을 컴퓨팅 세션으로 전환합니다.

  • 흐름 폴더에서 requirements.txt 파일을 준비합니다. promptflowpromptflow-tools의 버전이 기본 이미지에 이미 포함되어 있으므로 requirements.txt에 고정하지 않아야 합니다. 컴퓨팅 세션은 시작할 때 requirements.txt 파일에 패키지를 설치합니다.
  • 컴퓨팅 인스턴스 런타임을 만들기 위한 사용자 지정 환경을 만드는 경우 환경 세부 정보 페이지에서 이미지를 가져와 흐름 폴더의 flow.dag.yaml 파일에서 이를 지정할 수 있습니다. 자세한 내용은 컴퓨팅 세션 대한 기본 이미지 변경을 참조하세요. 사용자 또는 작업 영역의 관련 사용자가 할당한 관리 ID에 이미지에 대한 acr pull 권한이 있는지 확인합니다.

환경 세부 정보 페이지에서 이미지를 찾는 스크린샷.

  • 컴퓨팅 리소스의 경우 수명 주기를 수동으로 관리하려면 기존 컴퓨팅 인스턴스를 계속 사용하거나 수명 주기가 시스템에서 관리되는 서버리스 컴퓨팅을 사용해 볼 수 있습니다.

다음 단계