다음을 통해 공유


LLM 기반 애플리케이션용 DevOps와 프롬프트 흐름 통합

Azure Machine Learning 프롬프트 흐름은 LLM(대규모 언어 모델) 기반 애플리케이션 개발을 위한 흐름을 개발하고 반복하는 개발자 친화적이고 사용하기 쉬운 코드 우선 방법입니다. 프롬프트 흐름은 SDK 및 CLI, Visual Studio Code 확장 및 흐름 작성 UI를 제공합니다. 이러한 도구는 로컬 흐름 개발, 로컬 흐름 실행 및 평가 실행 트리거 및 로컬 및 클라우드 작업 영역 환경 간의 흐름 전환을 용이하게 합니다.

프롬프트 흐름 환경 및 코드 기능을 개발자 작업(DevOps)과 결합하여 LLM 기반 애플리케이션 개발 워크플로를 향상시킬 수 있습니다. 이 문서에서는 Azure Machine Learning LLM 기반 애플리케이션에 대한 프롬프트 흐름 및 DevOps를 통합하는 데 중점을 둡니다.

다음 다이어그램은 DevOps와 로컬 및 클라우드 기반 프롬프트 흐름 개발의 상호 작용을 보여 줍니다.

흐름 만들기, 흐름 개발 및 테스트, 코드 리포지토리의 버전 관리, 클라우드에 실행 제출, 데뷔 및 반복 흐름을 보여 주는 다이어그램

필수 조건

  • Azure Machine Learning 작업 영역 만들려면 시작할 리소스 만들기를 참조하세요.

  • 시작의 지침에 따라 만든 Azure Machine Learning Python SDK v2가 설치된 로컬 Python 환경입니다.

    참고 항목

    이 환경은 컴퓨팅 세션이 흐름의 일부로 정의하는 흐름을 실행하는 데 사용하는 환경과는 별개입니다. 자세한 내용은 Azure Machine Learning 스튜디오 프롬프트 흐름 컴퓨팅 세션 관리를 참조하세요.

  • Python 및 프롬프트 흐름 확장이 설치된 Visual Studio Code

    Visual Studio Code의 Python 및 프롬프트 흐름 확장 스크린샷

프롬프트 흐름에서 코드 우선 환경 사용

LLM 기반 애플리케이션 개발은 일반적으로 소스 코드 리포지토리 및 CI/CD(지속적인 통합/지속적인 배포) 파이프라인을 포함하는 표준화된 애플리케이션 엔지니어링 프로세스를 따릅니다. 이 프로세스는 팀 구성원 간의 간소화된 개발, 버전 제어 및 공동 작업을 촉진합니다.

DevOps를 프롬프트 흐름 코드 환경과 통합하면 코드 개발자는 다음과 같은 주요 기능 및 이점을 통해 보다 효율적인 GenAIOps 또는 LLMOps 반복 프로세스를 제공합니다.

  • 코드 리포지토리의 흐름 버전 관리 YAML 형식으로 흐름 파일을 정의할 수 있으며 동일한 폴더 구조에서 참조된 원본 파일과 정렬된 상태를 유지합니다.

  • CI/CD 파이프라인과 흐름 실행 통합. 프롬프트 흐름 CLI 또는 SDK를 사용하여 흐름 실행을 자동으로 트리거하여 프롬프트 흐름을 CI/CD 파이프라인 및 배달 프로세스에 원활하게 통합할 수 있습니다.

  • 로컬과 클라우드 간 원활한 전환 버전 제어, 로컬 개발 및 공유를 위해 흐름 폴더를 로컬 또는 업스트림 코드 리포지토리로 쉽게 내보낼 수 있습니다. 클라우드 리소스를 사용하여 추가 작성, 테스트 및 배포를 위해 흐름 폴더를 Azure Machine Learning으로 쉽게 가져올 수도 있습니다.

액세스 프롬프트 흐름 코드

각 프롬프트 흐름에는 흐름을 정의하는 필수 코드 파일이 포함된 흐름 폴더 구조가 있습니다. 폴더 구조는 흐름을 구성하여 로컬과 클라우드 간의 원활한 전환을 용이하게 합니다.

Azure Machine Learning은 모든 작업 영역 사용자를 위한 공유 파일 시스템을 제공합니다. 흐름을 만들면 해당 흐름 폴더가 자동으로 생성되고 Users/username>/<promptflow 디렉터리에 저장됩니다.

새 흐름을 보여 주는 표준 흐름 만들기의 스크린샷

흐름 코드 파일 작업

Azure Machine Learning 스튜디오 흐름을 만든 후에는 흐름 작성 페이지의 파일 섹션에서 흐름 파일을 보고 편집하고 관리할 수 있습니다. 파일을 수정하면 파일 공유 스토리지에 직접 반영됩니다.

파일 창을 강조 표시하는 표준 흐름 작성 페이지의 스크린샷

LLM 기반 흐름에 대한 흐름 폴더에는 다음 키 파일이 포함되어 있습니다.

  • flow.dag.yaml 은 YAML 형식의 기본 흐름 정의 파일입니다. 이 파일은 프롬프트 흐름을 작성하고 정의하는 데 필수적입니다. 파일에는 흐름에서 사용하는 입력, 출력, 노드, 도구 및 변형에 대한 정보가 포함됩니다.

  • Python(.py) 또는 Jinja 2(.jinja2) 형식의 사용자 관리 소스 코드 파일은 흐름의 도구와 노드를 구성합니다. Python 도구는 Python 파일을 사용하여 사용자 지정 Python 논리를 정의합니다. 프롬프트 도구 및 LLM 도구는 Jinja 2 파일을 사용하여 프롬프트 컨텍스트를 정의합니다.

  • 유틸리티 및 데이터 파일과 같은 원본이 아닌 파일은 원본 파일과 함께 흐름 폴더에 포함할 수 있습니다.

파일 편집기에서 flow.dag.yaml 및 원본 파일의 원시 코드를 보고 편집하려면 원시 파일 모드를 설정합니다.

표준 흐름의 원시 파일 모드 스크린샷

또는 Azure Machine Learning 스튜디오 Notebook 페이지에서 모든 흐름 폴더 및 파일에 액세스하고 편집할 수 있습니다.

파일을 보여 주는 프롬프트 흐름 폴더가 있는 Azure Machine Learning의 Notebook 스크린샷

프롬프트 흐름 코드 다운로드 및 체크 인

코드 리포지토리로 흐름을 확인하려면 흐름 폴더를 Azure Machine Learning 스튜디오 로컬 컴퓨터로 내보냅니다. 흐름 작성 페이지의 파일 섹션에서 다운로드 아이콘을 선택하여 모든 흐름 파일이 포함된 ZIP 패키지를 다운로드합니다. 그런 다음 코드 리포지토리에 해당 파일을 확인하거나 압축을 풀어 로컬로 파일을 사용할 수 있습니다.

파일 탐색기의 다운로드 아이콘을 보여 주는 스크린샷

Azure Machine Learning과 DevOps 통합에 대한 자세한 내용은 Azure Machine Learning용 Git 통합을 참조 하세요.

로컬에서 개발 및 테스트

반복 개발 중에 흐름 또는 프롬프트를 구체화하고 미세 조정하면 코드 리포지토리 내에서 로컬로 여러 반복을 수행할 수 있습니다. VS Code 커뮤니티 버전, VS Code 프롬프트 흐름 확장 및 프롬프트 흐름 로컬 SDK 및 CLI는 Azure 바인딩 없이 순수 로컬 개발 및 테스트를 용이하게 합니다.

로컬로 작업하면 매번 주 코드 리포지토리를 업데이트하지 않고도 변경 내용을 신속하게 만들고 테스트할 수 있습니다. 로컬 버전 사용에 대한 자세한 내용 및 지침은 프롬프트 흐름 GitHub 커뮤니티를 참조하세요.

VS Code 프롬프트 흐름 확장 사용

프롬프트 흐름 VS Code 확장을 사용하면 클라우드와 비슷한 UI 환경을 사용하여 VS Code 편집기에서 로컬로 흐름을 쉽게 작성할 수 있습니다.

프롬프트 흐름 확장으로 VS Code에서 로컬로 파일을 편집하려면 다음을 수행합니다.

  1. 프롬프트 흐름 확장을 사용하도록 설정된 VS Code에서 프롬프트 흐름 폴더를 엽니다.

  2. flow.dag.yaml 파일을 열고 파일 맨 위에 있는 시각적 편집기 링크를 선택합니다.

    VS Code의 흐름 정의 파일 맨 위에 있는 시각적 편집기 링크의 스크린샷.

  3. 프롬프트 흐름 시각적 편집기를 사용하여 변형에서 프롬프트 튜닝 또는 노드 추가와 같은 흐름을 변경할 수 있습니다.

    VS Code의 시각적 프롬프트 흐름 편집기 스크린샷

  4. 흐름을 테스트하려면 시각적 편집기 맨 위에 있는 실행 아이콘을 선택하거나 노드를 테스트하려면 노드 맨 위에 있는 실행 아이콘을 선택합니다.

    시각적 편집기에서 흐름 또는 노드를 실행하는 것을 보여 주는 VS Code의 스크린샷

프롬프트 흐름 SDK 및 CLI 사용

코드에서 직접 작업하거나 Jupyter, PyCharm, Visual Studio 또는 다른 IDE(통합 개발 환경)를 사용하려는 경우 flow.dag.yaml 파일에서 YAML 코드를 직접 수정할 수 있습니다.

기본 입력 및 흐름 디렉터리를 강조 표시하는 VS Code의 YAML 파일 스크린샷

그런 다음 다음과 같이 터미널에서 프롬프트 흐름 CLI 또는 SDK를 사용하여 테스트를 위해 단일 흐름 실행을 트리거할 수 있습니다.

작업 디렉터리에서 실행을 트리거하려면 다음 코드를 실행합니다.

pf flow test --flow <directory-name>

반환 값은 테스트 로그 및 출력입니다.

PowerShell의 흐름 테스트 출력 스크린샷

로컬 리포지토리에서 클라우드로 실행 제출

로컬 테스트 결과에 만족하면 프롬프트 흐름 CLI 또는 SDK를 사용하여 로컬 리포지토리에서 클라우드로 실행을 제출할 수 있습니다. 다음 절차와 코드는 GitHub의 웹 분류 데모 프로젝트를 기반으로 합니다. 프로젝트 리포지토리를 복제하거나 프롬프트 흐름 코드를 로컬 컴퓨터에 다운로드할 수 있습니다.

프롬프트 흐름 SDK 설치

를 실행 pip install promptflow[azure] promptflow-tools하여 Azure 프롬프트 흐름 SDK/CLI를 설치합니다.

데모 프로젝트를 사용하는 경우 requirements.txt 설치하여 SDK 및 기타 필요한 패키지를 가져옵니다.
pip install -r <path>/requirements.txt.

Azure Machine Learning 작업 영역에 연결

az login

흐름 업로드 및 실행 만들기

run.yml 파일을 준비하여 클라우드에서 이 흐름 실행에 대한 구성을 정의합니다.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl

column_mapping:
  url: ${data.url}

# Define cloud compute resource

resources:
  instance_type: <compute-type>

# If using compute instance compute type, also specify instance name
#  compute: <compute-instance-name> 

# Specify connections

  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

연결이 필요한 흐름의 각 도구에 대한 연결 및 배포 이름을 지정할 수 있습니다. 연결 및 배포 이름을 지정하지 않으면 도구는 flow.dag.yaml 파일의 연결 및 배포를 사용합니다. 다음 코드를 사용하여 연결 서식을 지정합니다.

...
connections:
  <node-name>:
    connection: <connection-name>
      deployment_name: <deployment-name>
...

실행을 만듭니다.

pfazure run create --file run.yml

평가 흐름 실행 만들기

클라우드에서 실행되는 이 평가 흐름에 대한 구성을 정의하기 위해 run_evaluation.yml 파일을 준비합니다.

$schema: https://azuremlschemas.azureedge.net/promptflow/latest/Run.schema.json
flow: <path-to-flow>
data: <path-to-flow>/<data-file>.jsonl
run: <id-of-base-flow-run>
column_mapping:
  <input-name>: ${data.<column-from-test-dataset>}
  <input-name>: ${run.outputs.<column-from-run-output>}

resources:
  instance_type: <compute-type>
  compute: <compute_instance_name> 

connections:
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>
  <node-name>:
    connection: <connection-name>
    deployment_name: <deployment-name>

평가 실행을 만듭니다.

pfazure run create --file run_evaluation.yml

실행 결과 보기

클라우드에 흐름 실행을 제출하면 실행의 클라우드 URL이 반환됩니다. URL을 열어 Azure Machine Learning 스튜디오 실행 결과를 볼 수 있습니다. 다음 CLI 또는 SDK 명령을 실행하여 실행 결과를 볼 수도 있습니다.

로그 스트리밍

pfazure run stream --name <run-name>

실행 출력 보기

pfazure run show-details --name <run-name>

평가 실행 메트릭 보기

pfazure run show-metrics --name <evaluation-run-name>

DevOps와 통합

로컬 개발 환경과 Git과 같은 버전 제어 시스템의 조합은 일반적으로 반복 개발에 가장 효과적입니다. 코드를 수정하고 로컬에서 테스트한 다음 Git에 변경 내용을 커밋할 수 있습니다. 이 프로세스는 변경 내용에 대한 지속적인 레코드를 만들고 필요한 경우 이전 버전으로 되돌릴 수 있는 기능을 제공합니다.

여러 환경에서 흐름을 공유해야 하는 경우 GitHub 또는 Azure Repos와 같은 클라우드 기반 코드 리포지토리에 푸시할 수 있습니다. 이 전략을 사용하면 모든 위치에서 최신 코드 버전에 액세스할 수 있으며 공동 작업 및 코드 관리를 위한 도구를 제공합니다.

이러한 사례를 따르면 팀은 프롬프트 흐름 개발을 위해 원활하고 효율적이며 생산적인 공동 작업 환경을 만들 수 있습니다.

예를 들어 웹 분류 흐름을 실행하는 엔드투엔드 LLMOps 파이프라인은 프롬프트 흐름 및 GitHub 및 GitHub 웹 분류 데모 프로젝트를 사용하여 엔드투엔드 GenAIOps 설정을 참조하세요.

CI 파이프라인에서 흐름 실행 트리거

흐름을 성공적으로 개발 및 테스트하고 초기 버전으로 체크 인하면 반복을 튜닝하고 테스트할 준비가 된 것입니다. 이 단계에서는 프롬프트 흐름 CLI를 사용하여 CI 파이프라인의 단계를 자동화하여 일괄 처리 테스트 및 평가 실행을 포함한 흐름 실행을 트리거할 수 있습니다.

흐름 반복의 수명 주기 내내 CLI를 사용하여 다음 작업을 자동화할 수 있습니다.

  • 끌어오기 요청 후 프롬프트 흐름 실행
  • 프롬프트 흐름 평가를 실행하여 결과가 고품질인지 확인
  • 프롬프트 흐름 모델 등록
  • 프롬프트 흐름 모델 배포

지속적인 개발을 위해 스튜디오 UI 사용

흐름 개발의 어느 시점에서든 Azure Machine Learning 스튜디오 UI로 돌아가 클라우드 리소스 및 환경을 사용하여 흐름을 변경할 수 있습니다.

흐름 파일의 최신 버전을 계속 개발하고 사용하려면 Notebook 페이지의 터미널에 액세스하고 리포지토리에서 최신 흐름 파일을 끌어올 수 있습니다. 또는 로컬 흐름 폴더를 새 초안 흐름으로 직접 가져와서 로컬 개발과 클라우드 개발 간에 원활하게 전환할 수 있습니다.

로컬에 업로드가 강조 표시된 새 흐름 만들기 화면의 스크린샷

흐름을 온라인 엔드포인트로 배포

프로덕션으로 이동하는 마지막 단계는 Azure Machine Learning에서 흐름을 온라인 엔드포인트로 배포하는 것입니다. 이 프로세스를 통해 흐름을 애플리케이션에 통합하고 사용할 수 있습니다. 흐름을 배포하는 방법에 대한 자세한 내용은 실시간 유추를 위해 Azure Machine Learning 관리형 온라인 엔드포인트에 흐름 배포를 참조하세요.

흐름 개발에 대한 공동 작업

프롬프트 흐름을 사용하여 LLM 기반 애플리케이션을 개발할 때 팀 구성원 간의 협업이 필수적일 수 있습니다. 팀 구성원은 동일한 흐름을 작성 및 테스트하거나, 흐름의 여러 측면을 작업하거나, 반복적인 변경 및 향상된 기능을 동시에 만들 수 있습니다. 이 협업을 위해서는 코드를 공유하고, 수정 내용을 추적하고, 버전을 관리하고, 변경 내용을 최종 프로젝트에 통합하는 효율적이고 간소화된 접근 방식이 필요합니다.

프롬프트 흐름 SDK/CLI 및 VS Code 프롬프트 흐름 확장은 소스 코드 리포지토리 내에서 코드 기반 흐름 개발에 대한 간편한 공동 작업을 용이하게 합니다. GitHub 또는 Azure Repos와 같은 클라우드 기반 소스 제어 시스템을 사용하여 변경 내용을 추적하고, 버전을 관리하고, 이러한 수정 내용을 최종 프로젝트에 통합할 수 있습니다.

공동 개발 모범 사례 따르기

  1. 중앙 집중식 코드 리포지토리를 설정합니다.

    공동 작업 프로세스의 첫 번째 단계에서는 프롬프트 흐름 코드를 포함하여 코드 리포지토리를 프로젝트 코드의 기반으로 설정하는 작업이 포함됩니다. 이 중앙 집중식 리포지토리를 사용하면 팀 구성원 간의 효율적인 조직, 변경 내용 추적 및 공동 작업을 수행할 수 있습니다.

  2. 프롬프트 흐름 확장을 사용하여 VS Code에서 흐름을 로컬로 작성하고 단일 테스트합니다.

    리포지토리가 설정되면 팀 구성원은 로컬 작성 및 흐름의 단일 입력 테스트를 위해 프롬프트 흐름 확장과 함께 VS Code를 사용할 수 있습니다. 표준화된 통합 개발 환경은 흐름의 다양한 측면을 작업하는 여러 멤버 간의 협업을 촉진합니다.

    로컬 개발 스크린샷

  3. pfazure CLI 또는 SDK를 사용하여 로컬 흐름에서 클라우드로 일괄 처리 실행 및 평가 실행을 제출합니다.

    로컬 개발 및 테스트 후 팀 구성원은 프롬프트 흐름 CLI/SDK를 사용하여 클라우드에 일괄 처리 및 평가 실행을 제출하고 평가할 수 있습니다. 이 프로세스를 통해 클라우드 컴퓨팅 사용, 영구 결과 스토리지, 배포를 위한 엔드포인트 만들기 및 스튜디오 UI에서 효율적인 관리를 수행할 수 있습니다.

    클라우드에 실행을 제출하는 pfazure 명령의 스크린샷

  4. Azure Machine Learning 스튜디오 작업 영역 UI에서 실행 결과를 보고 관리합니다.

    클라우드에 실행을 제출한 후 팀 구성원은 스튜디오 UI에 액세스하여 결과를 보고 실험을 효율적으로 관리할 수 있습니다. 클라우드 작업 영역은 실행 기록, 로그, 스냅샷, 포괄적인 결과, 인스턴스 수준 입력 및 출력을 수집하고 관리하기 위한 중앙 집중식 위치를 제공합니다.

    클라우드 실행 스냅샷의 스크린샷.

  5. 모든 실행 기록을 기록하는 실행 목록을 사용하여 다양한 실행의 결과를 쉽게 비교하여 품질 분석 및 필요한 조정을 지원합니다.

    작업 영역의 실행 목록 스크린샷

  6. 로컬 반복 개발을 계속 사용합니다.

    실험 결과를 분석한 후 팀 구성원은 더 많은 개발 및 미세 조정을 위해 로컬 환경 및 코드 리포지토리로 돌아가서 후속 실행을 클라우드에 반복적으로 제출할 수 있습니다. 이 반복적인 접근 방식은 팀이 프로덕션 품질에 만족할 때까지 일관된 향상을 보장합니다.

  7. 스튜디오에서 프로덕션에 1단계 배포를 사용합니다.

    팀이 흐름의 품질에 대해 완전히 확신하면 강력한 클라우드 환경에서 온라인 엔드포인트로 원활하게 배포할 수 있습니다. 온라인 엔드포인트로 배포는 실행 스냅샷을 기반으로 할 수 있으므로 안정적이고 안전한 서비스 제공, 추가 리소스 할당 및 사용량 추적, 클라우드에서 로그 모니터링이 가능합니다.

    실행 스냅샷에서 흐름을 배포하는 스크린샷

    Azure Machine Learning 스튜디오 배포 마법사를 사용하면 배포를 쉽게 구성할 수 있습니다.

    배포 마법사의 스크린샷