프롬프트 흐름과 Azure DevOps를 사용하는 GenAIOps
LLM이 주입된 애플리케이션에 대한 수요가 급증함에 따라 조직은 이러한 앱의 엔드투엔드 수명 주기를 관리하기 위해 응집력 있고 간소화된 프로세스가 필요합니다. LLMOps라고도 하는 GenAIOps(생성 인공 지능 작업)는 효율적인 프롬프트 엔지니어링 및 LLM이 주입된 애플리케이션 개발 및 배포의 초석입니다.
이 문서에서는 Azure Machine Learning을 사용하여 Azure DevOps와 통합하여 프롬프트 흐름으로 LLM이 주입된 애플리케이션 개발 수명 주기를 자동화하는 방법을 보여 줍니다. 프롬프트 흐름은 LLM이 주입된 애플리케이션을 개발하는 간소화되고 구조화된 접근 방식을 제공합니다. 잘 정의된 프로세스 및 수명 주기는 흐름을 빌드, 테스트, 최적화 및 배포하는 프로세스를 안내하며, 완벽하게 작동하는 LLM 주입 솔루션을 만드는 데 절정을 이릅니다.
GenAIOps 프롬프트 흐름 기능
프롬프트 흐름 이 있는 GenAIOps는 GenAIOps 템플릿 및 지침을 사용하여 프롬프트 흐름을 사용하여 LLM이 주입된 앱을 빌드하는 데 도움이 됩니다. 프롬프트 흐름이 있는 GenAIOps에는 단순하거나 복잡한 LLM이 주입된 앱에 대한 기능이 있으며 애플리케이션의 요구에 맞게 사용자 지정할 수 있습니다.
프롬프트 흐름 플랫폼이 있는 GenAIOps는 다음과 같은 기능을 제공합니다.
중앙 집중식 코드 호스팅. 리포지토리는 여러 프롬프트 흐름에 대한 호스팅 코드를 지원하여 모든 흐름에 단일 리포지토리를 제공합니다. 이 리포지토리는 흐름에 대한 라이브러리와 같으므로 다양한 프로젝트에서 쉽게 찾고, 액세스하고, 공동 작업할 수 있습니다.
수명 주기 관리. 각 흐름에는 고유한 수명 주기가 있으므로 로컬 실험에서 프로덕션 배포로 원활하게 전환할 수 있습니다.
변형 및 하이퍼 매개 변수 실험. 변형과 하이퍼 매개 변수는 조리법의 재료와 같습니다. 이 플랫폼을 사용하면 흐름의 여러 노드에서 다양한 변형 조합을 실험할 수 있습니다. 여러 변형 및 하이퍼 매개 변수를 실험하여 흐름 변형을 쉽게 평가할 수 있습니다.
여러 배포 대상. 이 플랫폼은 Docker를 지원하는 모든 대상 플랫폼 및 운영 체제에 배포하기 위한 흐름 및 컴퓨팅 세션이 주입된 Docker 이미지를 생성합니다. Azure 앱 Services, Kubernetes 및 Azure Managed Computes에 흐름을 배포하고 필요에 따라 크기를 조정하도록 구성할 수 있습니다.
A/B 배포. 프롬프트 흐름이 있는 GenAIOps는 A/B 배포를 원활하게 구현하여 다양한 흐름 버전을 쉽게 비교할 수 있습니다. 이 플랫폼은 기존 웹 사이트 A/B 테스트와 동일한 방식으로 프롬프트 흐름을 위한 A/B 배포를 용이하게 합니다. 실제 설정에서 다양한 흐름 버전을 쉽게 비교하여 어떤 버전이 가장 잘 수행되는지 확인할 수 있습니다.
다대다 데이터 세트를 통해 관계를 흐릅니다. 프롬프트 흐름이 있는 GenAIOps는 각 표준 및 평가 흐름에 대해 여러 데이터 세트를 수용하여 흐름 테스트 및 평가에서 다재다능함을 지원합니다.
조건부 데이터 및 모델 등록. 플랫폼은 Azure Machine Learning 데이터 자산에 대한 새 데이터 세트 버전을 등록하고 데이터 세트가 변경된 경우에만 모델 레지스트리의 흐름을 등록합니다.
포괄적인 보고. 프롬프트 흐름이 있는 GenAIOps는 각 변형 구성에 대한 자세한 보고서를 생성하여 정보에 입각한 결정을 내릴 수 있도록 합니다. 이 플랫폼은 모든 실행 및 실험에 대한 자세한 메트릭 수집, 실험 및 변형 대량 실행을 제공하여 CSV 및 HTML 파일 모두에 대해 데이터 기반 결정을 내릴 수 있도록 합니다.
프롬프트 흐름이 있는 GenAIOps는 사용자 지정을 위한 다음과 같은 다른 기능을 제공합니다.
- BYOF(Bring-your-own-flows) 는 LLM 주입 애플리케이션과 관련된 여러 사용 사례를 개발하기 위한 완벽한 플랫폼을 제공합니다.
- 구성 기반 개발 은 광범위한 상용구 코드를 작성할 필요가 없음을 의미합니다.
- 프롬프트 실험 및 평가 는 로컬 및 클라우드에서 실행됩니다.
- 로컬 프롬프트 평가를 위한 Notebook은 로컬 실험을 위한 함수 라이브러리를 제공합니다.
- 배포 후 파이프라인 내의 엔드포인트 테스트 는 엔드포인트 가용성 및 준비 상태를 확인합니다.
- 선택적 휴먼 인 루프 는 배포 전에 프롬프트 메트릭의 유효성을 검사합니다.
GenAIOps 단계
GenAIOps 수명 주기는 다음과 같은 네 가지 단계로 구성됩니다.
초기화. 비즈니스 목표를 명확하게 정의하고, 관련 데이터 샘플을 수집하고, 기본 프롬프트 구조를 설정하고, 기능을 향상시키는 흐름을 만듭니다.
실험. 샘플 데이터에 흐름을 적용하고, 프롬프트의 성능을 평가하고, 필요에 따라 흐름을 구체화합니다. 결과에 만족할 때까지 계속 반복합니다.
평가 및 구체화. 더 큰 데이터 세트를 사용하여 흐름의 성능을 벤치마킹하고, 프롬프트의 효과를 평가하고, 그에 따라 구체화합니다. 결과가 원하는 표준을 충족하는 경우 다음 단계로 진행합니다.
배포: 효율성과 효율성을 위해 흐름을 최적화하고, A/B 배포를 포함한 프로덕션 환경에 배포하고, 성능을 모니터링하고, 사용자 피드백을 수집하고, 이 정보를 사용하여 흐름을 더욱 향상시킵니다.
이러한 구조적 방법론을 준수하면 프롬프트 흐름을 통해 자신 있게 흐름을 개발하고, 엄격하게 테스트하고, 미세 조정하고, 배포할 수 있으므로 강력하고 정교한 AI 애플리케이션을 만들 수 있습니다.
GenAIOps 프롬프트 흐름 템플릿은 코드 우선 방법을 사용하여 이 구조적 방법론을 공식화하고 프롬프트 흐름 도구 및 프로세스 및 GenAIOps 프롬프트 흐름 기능을 사용하여 LLM이 주입된 앱을 빌드하는 데 도움이 됩니다. 이 템플릿은 프롬프트 흐름 템플릿을 사용하여 GenAIOps에서 사용할 수 있습니다.
GenAIOps 프로세스 흐름
- 초기화 단계에서는 흐름을 개발하고, 데이터를 준비 및 큐레이팅하고, GenAIOps 관련 구성 파일을 업데이트합니다.
- 프롬프트 흐름 확장과 함께 Visual Studio Code를 사용하여 로컬을 개발한 후 기능 분기 빌드 유효성 검사 파이프라인 및 실험 흐름을 실행하는 개발 분기로 끌어오기 요청(PR)을 발생합니다.
- PR이 수동으로 승인되고 코드가 개발 분기에 병합됩니다.
- PR이 개발 분기에 병합되면 개발 환경에 대한 CI(연속 통합) 파이프라인이 실행됩니다. CI 파이프라인은 실험 및 평가 흐름을 순서대로 실행하고 파이프라인의 다른 단계와는 별도로 Azure Machine Learning 레지스트리에 흐름을 등록합니다.
- CI 파이프라인 실행이 완료되면 CD(연속 배포) 트리거는 Azure Machine Learning 레지스트리의 표준 흐름을 Azure Machine Learning 온라인 엔드포인트로 배포하는 CD 파이프라인을 실행합니다. 그런 다음 파이프라인은 배포된 흐름에서 통합 및 스모크 테스트를 실행합니다.
- 릴리스 분기는 개발 분기에서 만들어지거나 PR이 개발 분기에서 릴리스 분기로 발생합니다.
- PR이 수동으로 승인되고 코드가 릴리스 분기에 병합됩니다. PR이 릴리스 분기에 병합되면 프로덕션 환경에 대한 CI 파이프라인이 실행됩니다. 파이프라인은 실험 및 평가 흐름을 순서대로 실행하고 파이프라인의 다른 단계와는 별도로 Azure Machine Learning 레지스트리에 흐름을 등록합니다.
- CI 파이프라인 실행이 완료되면 CD 트리거는 AZURE Machine Learning 레지스트리의 표준 흐름을 Azure Machine Learning 온라인 엔드포인트로 배포하는 CD 파이프라인을 실행합니다. 그런 다음 파이프라인은 배포된 흐름에서 통합 및 스모크 테스트를 실행합니다.
GenAIOps 프롬프트 흐름 만들기
이 문서의 나머지 부분에는 프롬프트 흐름 및 Azure DevOps를 사용하여 LLM이 주입된 애플리케이션을 빌드하는 데 도움이 되는 프롬프트 흐름 템플릿 리포지토리를 사용하여 GenAIOps의 엔드투엔드 샘플을 따라 프롬프트 흐름에서 GenAIOps를 사용하는 방법을 보여 줍니다. 주요 목표는 프롬프트 흐름 및 GenAIOps의 기능을 사용하여 이러한 애플리케이션 개발에 대한 지원을 제공하는 것입니다.
필수 조건
- 무료 또는 유료 버전의 Azure Machine Learning을 사용하는 Azure 구독입니다.
- Azure Machine Learning 작업 영역
- 로컬 컴퓨터에서 실행되는 Git 버전 2.27 이상
- 프로젝트, Azure Repos 소스 제어 리포지토리 및 Azure Pipelines 파이프라인을 만들 수 있는 Azure DevOps 조직입니다. Azure DevOps 조직은 작업, 코드 및 문제를 공동 작업, 계획 및 추적하고 CI 및 CD를 설정하는 데 도움이 됩니다.
- GenAIOps를 프롬프트 흐름과 통합하는 방법을 이해합니다.
참고 항목
Azure DevOps 및 Terraform을 사용하여 인프라를 가동하는 경우 Azure DevOps용 Terraform 확장이 설치되어 있어야 합니다.
프롬프트 흐름 연결 설정
프롬프트 흐름은 연결 리소스를 사용하여 Azure OpenAI, OpenAI 또는 Azure AI Search 엔드포인트에 연결합니다. 프롬프트 흐름 포털 UI를 통해 또는 REST API를 사용하여 연결을 만들 수 있습니다. 자세한 내용은 프롬프트 흐름의 연결을 참조 하세요.
연결을 만들려면 프롬프트 흐름에 대한 연결 설정의 지침을 따릅니다. 샘플 흐름은 호출 aoai
된 연결을 사용하므로 연결에 해당 이름을 지정합니다.
컴퓨팅 세션 설정
프롬프트 흐름은 컴퓨팅 세션을 사용하여 흐름을 실행합니다. 프롬프트 흐름을 실행하기 전에 컴퓨팅 세션을 만들고 시작합니다.
Azure 리포지토리 설정
Azure DevOps 조직에서 포크된 리포지토리를 만들려면 GitHub 리포지토리 설정의 지침을 따릅니다. 이 리포지토리는 코드 승격 및 development
파이프라인 실행에 대해 두 개의 분기 main
를 사용합니다.
새 로컬 리포지토리를 만들려면 리포지토리 복제의 지침을 따릅니다. 이 클론을 사용하면 개발 분기에서 새 기능 분기 만들고 변경 내용을 통합할 수 있습니다.
Azure 서비스 주체 설정
Azure 서비스 주체는 애플리케이션, 서비스 및 자동화 도구가 Azure 리소스에 액세스하는 데 사용하는 보안 ID입니다. 애플리케이션 또는 서비스는 사용자를 대신하여 리소스에 액세스하기 위해 Azure를 사용하여 인증합니다.
Azure 서비스 주체 만들기의 지침 에 따라 서비스 주체를 만듭니다. 이 서비스 주체를 사용하여 Azure DevOps Services 연결을 구성하고 Azure DevOps Services가 Azure 서비스를 인증하고 연결할 수 있도록 허용합니다. 프롬프트 흐름 실험 및 평가 작업은 모두 서비스 주체의 ID로 실행됩니다.
설치 프로그램은 서비스 주체 에게 소유자 권한을 제공하므로 CD 파이프라인은 연결 정보를 읽기 위해 새로 프로비전된 Azure Machine Learning 엔드포인트에 대한 액세스 권한을 Azure Machine Learning 작업 영역에 자동으로 제공할 수 있습니다. 또한 파이프라인은 Azure Machine Learning 작업 영역 및 list
비밀 권한과 연결된 키 자격 증명 모음 정책에 엔드포인트를 get
추가합니다. 파이프라인 YAML 코드를 변경하여 사용 권한과 관련된 단계를 제거하여 소유자 권한을 기여자 수준 권한으로 변경할 수 있습니다.
새 Azure DevOps 프로젝트 만들기
Azure DevOps UI에서 새 프로젝트를 만들려면 새 Azure DevOps 프로젝트 만들기의 지침을 따릅니다.
Azure DevOps와 Azure 간에 인증 설정
이 단계에서는 서비스 주체 정보를 저장하는 새 Azure DevOps 서비스 연결을 구성합니다. 프로젝트 파이프라인은 연결 이름을 사용하여 Azure에 자동으로 연결하여 연결 정보를 읽을 수 있습니다. 만든 서비스 주체를 사용하여 Azure DevOps와 Azure 서비스 간에 인증을 설정하려면 Azure 및 Azure DevOps로 인증 설정의 지침을 따릅니다.
Azure DevOps 변수 그룹 만들기
새 변수 그룹을 만들고 Azure DevOps 서비스 연결과 관련된 변수를 추가하려면 Azure DevOps 변수 그룹 만들기의 지침을 따릅니다. 그런 다음 서비스 주체 이름을 환경 변수로 파이프라인에 자동으로 사용할 수 있습니다.
Azure Repos 및 Azure Pipelines 구성
예제 리포지토리는 코드 승격 및 development
파이프라인 실행에 대해 두 개의 분기 main
를 사용합니다. 예제 리포지토리의 코드를 사용하도록 사용자 고유의 로컬 및 원격 리포지토리를 설정하려면 Azure DevOps 로컬 및 원격 리포지토리 구성의 지침을 따릅니다.
예제 리포지토리에서 분기와 development
분기를 모두 main
복제하고 코드를 연결하여 새 Azure Repos 리포지토리를 참조합니다. PR 및 개발 파이프라인은 PR 만들기 및 병합 트리거에 따라 자동으로 실행되도록 구성됩니다.
분기의 development
분기 정책은 기능 분기 개발 분기에서 발생한 PR에 대해 PR 파이프라인을 실행하도록 구성됩니다. 파이프라인은 dev
PR이 개발 분기에 병합되고 CI 및 CD 단계로 구성되는 경우 실행됩니다.
루프 의 휴먼도 파이프라인 내에서 구현됩니다. 파이프라인의 CI 단계가 dev
실행되면 Azure Pipelines 빌드 실행 UI에서 수동 승인이 제공된 후 CD 단계가 수행됩니다.
승인을 기다리는 기본 시간은 60분이며, 그 후에는 파이프라인이 거부되고 CD 단계가 실행되지 않습니다. 실행을 수동으로 승인하면 파이프라인의 CD 단계가 실행됩니다.
예제 파이프라인의 수동 승인은 알림을 보내도록 replace@youremail.com
구성됩니다. 자리 표시자를 적절한 전자 메일 주소로 바꿉니다.
파이프라인 테스트
파이프라인을 테스트하려면 파이프라인 테스트의 지침을 따릅니다. 전체 프로세스에는 다음 단계가 포함됩니다.
- 기능 분기 개발 분기로 PR을 발생합니다.
- PR 파이프라인은 분기 정책 구성으로 인해 자동으로 실행됩니다.
- PR이 개발 분기에 병합됩니다.
- 연결된
dev
파이프라인이 실행되어 전체 CI 및 CD 실행 및 Azure Machine Learning 엔드포인트의 프로비전 또는 업데이트가 발생합니다.
출력은 예제 프롬프트 실행, 평가 및 배포 시나리오의 예제와 유사해야 합니다.
로컬 실행 사용
로컬 실행 기능을 사용하려면 다음 단계를 수행합니다.
다음과 같이 리포지토리를 복제합니다.
git clone https://github.com/microsoft/genaiops-promptflow-template.git
최상위 폴더 수준에서 .env 파일을 만듭니다. 각 연결에 대한 줄을 추가하여 자리 표시자의 값을 업데이트합니다. 예제 리포지토리의 예제에서는 명명된
aoai
AzureOpenAI 연결 및 API 버전을2024-02-01
사용합니다.aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"} <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
로컬 conda 또는 가상 환경을 준비하여 종속성을 설치합니다.
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
새 흐름을 온보딩하는 방법의 지침 에 따라 흐름을 템플릿에 가져오거나 씁니다.
제공된 예제와 유사한 local_execution 폴더에 Python 스크립트를 작성합니다.