프롬프트 흐름 및 GitHub를 사용하는 LLMOps

생성형 인공 지능 작업, 즉 GenAIOps(LLMOps라고도 함)는 효율적인 프롬프트 엔지니어링과 LLM을 활용한 애플리케이션 개발 및 배포의 초석이 되었습니다. LLM 기반 애플리케이션에 대한 수요가 계속 증가함에 따라, 조직은 엔드투엔드 수명 주기를 관리하기 위해 응집력 있고 간소화된 프로세스가 필요하다는 것을 알게 됩니다.

Azure Machine Learning을 사용하면 GitHub와 통합하여 LLM 기반 애플리케이션 개발 수명 주기를 프롬프트 흐름으로 자동화할 수 있습니다.

Azure Machine Learning 프롬프트 흐름은 LLM 기반 애플리케이션을 개발하기 위한 간소화되고 구조화된 접근 방식을 제공합니다. 잘 정의된 프로세스 및 수명 주기는 흐름을 빌드하고 테스트하고 최적화하고 배포하는 프로세스를 안내하며, 완벽하게 작동하는 LLM 기반 솔루션을 만드는 것으로 끝납니다.

GenAIOps 프롬프트 흐름 기능

프롬프트 흐름을 갖춘 GenAIOps는 프롬프트 흐름을 사용하여 LLM이 주입된 앱을 빌드하는 데 도움이 되는 "GenAIOps 템플릿 및 지침"입니다. 다음과 같은 기능을 제공합니다.

  • 중앙 집중식 코드 호스팅: 이 리포지토리는 프롬프트 흐름에 따라 여러 흐름에 대한 코드 호스팅을 지원하며 모든 흐름에 단일 리포지토리를 제공합니다. 이 플랫폼을 모든 프롬프트 흐름 코드가 있는 단일 리포지토리로 간주합니다. 흐름에 대한 라이브러리와 같으므로 다양한 프로젝트에서 쉽게 찾고, 액세스하고, 공동 작업할 수 있습니다.

  • 수명 주기 관리: 각 흐름은 고유한 수명 주기를 사용하므로 로컬 실험에서 프로덕션 배포로 원활하게 전환할 수 있습니다. 파이프라인 스크린샷.

  • 변형 및 하이퍼 매개 변수 실험: 여러 변형 및 하이퍼 매개 변수를 실험하여 흐름 변형을 간편하게 평가합니다. 변형과 하이퍼 매개 변수는 조리법의 재료와 같습니다. 이 플랫폼을 사용하면 흐름의 여러 노드에서 다양한 변형 조합을 실험할 수 있습니다.

  • 여러 배포 대상: 리포지토리는 필요에 따라 흐름의 크기를 조정할 수 있도록 구성을 통해 구동되는 Azure App Services, Kubernetes, Azure Managed Computes에 대한 흐름 배포를 지원합니다. 또한 흐름 컴퓨팅 세션이 포함된 Docker 이미지와 Docker를 지원하는 모든 대상 플랫폼 및 운영 체제로 배포를 위한 흐름을 생성합니다. 엔드포인트 스크린샷.

  • A/B 배포: A/B 배포를 원활하게 구현하여 다양한 흐름 버전을 쉽게 비교할 수 있습니다. 웹 사이트에 대한 기존 A/B 테스트와 마찬가지로 이 플랫폼은 프롬프트 흐름을 위해 A/B 배포를 용이하게 합니다. 즉, 실제 설정에서 다양한 흐름 버전을 손쉽게 비교하여 가장 적합한 흐름을 결정할 수 있습니다. 배포 스크린샷.

  • 다대다 데이터 세트/흐름 관계: 각 표준 및 평가 흐름에 대해 여러 데이터 세트를 제공하여 흐름 테스트 및 평가에서 다양성을 보장합니다. 플랫폼은 각 흐름에 대해 여러 데이터 세트를 제공하도록 설계되었습니다.

  • 조건부 데이터 및 모델 등록: 플랫폼은 Azure Machine Learning 데이터 자산의 데이터 세트와 모델 레지스트리의 흐름에 변경 사항이 있는 경우에만 이에 대한 새 버전을 만들고, 그렇지 않은 경우에는 만들지 않습니다.

  • 포괄적인 보고: 각 변형 구성에 대한 자세한 보고서를 생성하여 정보에 기반한 결정을 내릴 수 있습니다. 모든 실행 및 실험에 대한 자세한 메트릭 수집, 실험 및 변형 대량 실행을 제공하여 csv 및 HTML 파일에서 데이터 기반 결정을 내릴 수 있도록 합니다. 흐름 변형 보고서 스크린샷.메트릭 보고서 스크린샷.

사용자 지정을 위한 기타 기능:

  • BYOF(Bring-Your-Own-Flows)를 제공합니다. LLM 기반 애플리케이션과 관련된 여러 사용 사례를 개발하기 위한 완전한 플랫폼.

  • 구성 기반 개발을 제공합니다. 광범위한 보일러 플레이트 코드를 작성할 필요가 없습니다.

  • 클라우드뿐만 아니라 로컬에서 프롬프트 실험 및 평가를 모두 실행할 수 있습니다.

  • 프롬프트의 로컬 평가용 Notebook을 제공합니다. 로컬 실험에 사용할 수 있는 함수 라이브러리를 제공합니다.

  • 배포 후 파이프라인 내에서 엔드포인트 테스트를 수행하여 가용성 및 준비 상태를 확인합니다.

  • 배포 전에 프롬프트 메트릭의 유효성을 검사하는 선택적 사용자 참여형을 제공합니다.

프롬프트 흐름이 있는 GenAIOps는 복잡한 형태뿐 아니라 간단한 LLM 기반 앱 모두에 대한 기능을 제공합니다. 애플리케이션의 요구에 맞게 사용자 지정할 수 있습니다.

GenAIOps 단계

수명 주기는 다음과 같은 네 가지 단계로 구성됩니다.

  • 초기화: 비즈니스 목표를 명확하게 정의하고, 관련 데이터 샘플을 수집하고, 기본 프롬프트 구조를 설정하고, 기능을 향상시키는 흐름을 만듭니다.

  • 실험: 샘플 데이터에 흐름을 적용하고, 프롬프트의 성능을 평가하고, 필요에 따라 흐름을 구체화합니다. 결과에 만족할 때까지 계속 반복합니다.

  • 평가 및 구체화: 더 큰 데이터 세트를 사용하여 흐름의 성능을 벤치마킹하고, 프롬프트의 효과를 평가하고, 그에 따라 구체화합니다. 결과가 원하는 표준을 충족하는 경우 다음 단계로 진행합니다.

  • 배포: 효율성과 유효성을 위해 흐름을 최적화하고, A/B 배포를 포함한 프로덕션 환경에 배포하고, 성능을 모니터링하고, 사용자 피드백을 수집하고, 이 정보를 사용하여 흐름을 더욱 향상시킵니다.

이러한 구조적 방법론을 준수하면 프롬프트 흐름을 통해 자신 있게 흐름을 개발하고, 엄격하게 테스트하고, 미세 조정하고, 배포할 수 있으므로 강력하고 정교한 AI 애플리케이션을 만들 수 있습니다.

GenAIOps 프롬프트 흐름 템플릿은 코드 우선 접근 방식을 사용하여 이 구조적 방법론을 공식화하므로 프롬프트 흐름과 관련된 도구 및 프로세스를 사용하는 프롬프트 흐름을 사용하여 LLM 기반 앱을 빌드하는 데 도움이 됩니다. 중앙 집중식 코드 호스팅, 수명 주기 관리, 변형 및 하이퍼 매개 변수 실험, A/B 배포, 모든 실행 및 실험에 대한 보고 등 다양한 기능을 제공합니다.

이 문서의 리포지토리는 프롬프트 흐름 템플릿이 포함된 GenAIOps에서 사용할 수 있습니다.

GenAIOps 프로세스 흐름

GenAIOps 프롬프트 흐름 프로세스의 스크린샷.

  1. 초기화 단계입니다. 여기서 흐름이 개발되고, 데이터가 준비되고 큐레이팅되며, GenAIOps 관련 구성 파일이 업데이트됩니다.
  2. 프롬프트 흐름 확장과 함께 Visual Studio Code를 사용하여 로컬 개발을 수행한 후에는 기능 분기에서 개발 분기로 끌어오기 요청이 발생합니다. 그러면 빌드 유효성 검사 파이프라인이 실행됩니다. 또한 실험 흐름을 실행합니다.
  3. PR이 수동으로 승인되고 코드가 개발 분기에 병합됩니다.
  4. PR이 개발 분기에 병합되면 개발 환경을 위한 CI 파이프라인이 실행됩니다. 실험 및 평가 흐름을 순서대로 실행하고 파이프라인의 다른 단계와는 별도로 Azure Machine Learning 레지스트리에 흐름을 등록합니다.
  5. CI 파이프라인 실행이 완료되면 CD 트리거는 Azure Machine Learning 레지스트리에서 표준 흐름을 Azure Machine Learning 온라인 엔드포인트로 배포하고 배포된 흐름에서 통합 및 스모크 테스트를 실행하는 CD 파이프라인의 실행을 보장합니다.
  6. 릴리스 분기는 개발 분기에서 만들어지거나 개발 분기에서 릴리스 분기로 끌어오기 요청이 발생합니다.
  7. PR이 수동으로 승인되고 코드가 릴리스 분기에 병합됩니다. PR이 릴리스 분기에 병합되면 prod 환경에 대한 CI 파이프라인이 실행됩니다. 실험 및 평가 흐름을 순서대로 실행하고 파이프라인의 다른 단계와는 별도로 Azure Machine Learning 레지스트리에 흐름을 등록합니다.
  8. CI 파이프라인 실행이 완료되면 CD 트리거는 Azure Machine Learning 레지스트리에서 표준 흐름을 Azure Machine Learning 온라인 엔드포인트로 배포하고 배포된 흐름에서 통합 및 스모크 테스트를 실행하는 CD 파이프라인의 실행을 보장합니다.

여기에서부터 프롬프트 흐름과 GitHub를 사용하여 LLM 기반 애플리케이션을 빌드하는 데 도움이 되는 엔드 투 엔드 샘플에 따라 프롬프트 흐름이 포함된 GenAIOps를 배울 수 있습니다. 주요 목표는 프롬프트 흐름 및 GenAIOps의 기능을 활용하여 이러한 애플리케이션 개발에 대한 지원을 제공하는 것입니다.

GenAIOps를 프롬프트 흐름과 통합하는 방법을 이해하는 것이 좋습니다.

Important

프롬프트 흐름은 현재 공개 미리 보기 상태입니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 사용하지 않는 것이 좋습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

필수 구성 요소

  • Azure 구독 Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다. Azure Machine Learning 평가판 또는 유료 버전을 사용해 보세요.
  • Azure Machine Learning 작업 영역
  • 로컬 머신에서 실행 중인 Git
  • 소스 제어 리포지토리로서의 GitHub

참고 항목

Git 버전 2.27 이상이 필요합니다. Git 설치 명령에 대해 자세히 알아보려면 https://git-scm.com/downloads에서 해당하는 운영 체제를 선택하세요.

Important

이 문서의 CLI 명령은 Bash를 사용하여 테스트되었습니다. 다른 셸을 사용하는 경우 오류가 발생할 수 있습니다.

프롬프트 흐름 설정

프롬프트 흐름은 연결 리소스를 사용하여 Azure OpenAI, OpenAI 또는 Azure AI 검색과 같은 엔드포인트에 연결하고 흐름 실행에 컴퓨팅 세션을 사용합니다. 이러한 리소스는 프롬프트 흐름에서 흐름을 실행하기 전에 만들어야 합니다.

프롬프트 흐름에 대한 연결 설정

연결은 프롬프트 흐름 포털 UI를 통해 또는 REST API를 사용하여 만들어질 수 있습니다. 프롬프트 흐름에 사용할 연결을 만들려면 지침을 따르세요.

연결에 대한 자세한 내용을 보려면 링크를 선택하세요.

참고 항목

샘플 흐름은 'aoai' 연결을 사용하고 이를 실행하려면 'aoai'라는 연결을 만들어야 합니다.

GitHub 리포지토리 설정

GitHub 리포지토리를 사용하여 GenAIOps 프로세스를 설정하기 위해 수행해야 하는 여러 단계가 있습니다.

리포지토리 포크 및 구성

GitHub 조직에서 포크된 리포지토리를 만들려면 지침을 따르세요. 이 리포지토리는 코드 변경 대신 코드 승격 및 파이프라인 실행에 maindevelopment을 사용합니다.

GitHub와 Azure 간에 인증 설정

먼저 만들어진 서비스 주체를 사용하여 GitHub 리포지토리와 Azure Services 간에 인증을 설정하려면 지침을 따르세요.

이 단계에서는 서비스 주체 정보를 저장하는 GitHub 비밀을 구성합니다. 리포지토리의 워크플로는 비밀 이름을 사용하여 연결 정보를 읽을 수 있습니다. 그러면 GitHub 워크플로 단계를 구성하여 Azure에 자동으로 연결하는 데 도움이 됩니다.

리포지토리 복제

지침에 따라 새 로컬 리포지토리를 만듭니다.

그러면 개발 분기에서 새 기능 분기를 만들고 변경 내용을 통합하는 데 도움이 됩니다.

파이프라인 테스트

파이프라인을 테스트하려면 지침을 따르세요. 단계는 다음과 같습니다.

  1. 기능 분기에서 개발 분기로 PR(끌어오기 요청)을 생성합니다.
  2. PR 파이프라인은 분기 정책 구성의 결과로 자동으로 실행되어야 합니다.
  3. 그런 다음 PR이 개발 분기에 병합됩니다.
  4. 연결된 'dev' 파이프라인이 실행됩니다. 이로 인해 전체 CI 및 CD가 실행되고 기존 Azure Machine Learning 엔드포인트가 프로비전되거나 업데이트됩니다.

테스트 출력은 여기에 표시된 내용과 비슷해야 합니다.

로컬 실행

로컬 실행의 기능을 활용하려면 다음 설치 단계를 수행합니다.

  1. 리포지토리 복제: GitHub 리포지토리 템플릿의 리포지토리를 복제하여 시작합니다.
git clone https://github.com/microsoft/llmops-promptflow-template.git
  1. env 파일 설정: 최상위 폴더 수준에서 .env 파일을 만들고 언급된 항목에 대한 정보를 제공합니다. 필요한 만큼 연결 이름을 추가합니다. 이 모든 흐름 예제에서는 aoai라는 AzureOpenAI 연결을 사용합니다. api_key 및 api_base에 대해 업데이트한 값으로 줄 aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2024-02-01"}을 추가합니다. 흐름에서 서로 다른 이름을 가진 추가 연결이 사용되는 경우 그에 따라 추가해야 합니다. 현재 AzureOpenAI를 공급자로 포함하는 흐름이 지원됩니다.
experiment_name=
connection_name_1={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
connection_name_2={ "api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
  1. 로컬 conda 또는 가상 환경을 준비하여 종속성을 설치합니다.
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
  1. 여기에 있는 문서를 기반으로 하여 흐름을 템플릿에 가져오거나 씁니다.

  2. 제공된 예제와 유사한 python 스크립트를 local_execution 폴더에 작성합니다.

다음 단계