This template can be used for both Azure AI Studio and Azure Machine Learning.
It can be used for both AZURE and LOCAL execution.
It supports all types of flow - python Class flows, Function flows and YAML flows.
It supports Github, Azure DevOps and Jenkins CI/CD orchestration.
It supports pure python based Evaluation as well using promptflow-evals package.
It should be used for INNER-LOOP Experimentation and Evaluation.
It should be used for OUTER-LOOP Deployment and Inferencing.
NOTE: A new FAQ section is added to help Engineers, Data Scientist and developers find answers to general questions on configuring and using this template.
자주 묻는 질문은 여기
대규모 언어 모델 운영(LLMOps)은 효율적인 프롬프트 엔지니어링과 LLM 기반 애플리케이션 개발 및 배포의 초석이 되었습니다. LLM 기반 애플리케이션에 대한 수요가 계속해서 급증함에 따라 조직은 엔드투엔드 라이프사이클을 관리하기 위해 응집력 있고 간소화된 프로세스가 필요하다는 것을 알게 되었습니다.
AI와 LLM(대형 언어 모델)의 등장으로 다양한 산업이 변화하여 인간과 같은 텍스트 이해 및 생성 기능을 갖춘 혁신적인 애플리케이션 개발이 가능해졌습니다. 이러한 혁명은 고객 서비스, 콘텐츠 제작, 데이터 분석 등 분야 전반에 걸쳐 새로운 가능성을 열어주었습니다.
LLM이 빠르게 발전함에 따라 프롬프트 엔지니어링의 중요성이 점점 더 분명해지고 있습니다. 프롬프트 엔지니어링은 특정 비즈니스 시나리오에 맞는 효과적인 프롬프트를 생성하여 LLM의 잠재력을 최대한 활용하는 데 중요한 역할을 합니다. 이 프로세스를 통해 개발자는 맞춤형 AI 솔루션을 만들어 더 많은 사람들이 AI에 더 쉽게 접근하고 유용하게 사용할 수 있습니다.
Prompt Flow를 위한 실험 및 평가 프레임워크입니다. 프롬프트 흐름을 지원하기는 하지만 이는 프롬프트 흐름용 CI/CD 파이프라인이 아닙니다. 프롬프트 흐름의 실험, 평가, 배포 및 모니터링을 위한 풍부한 기능 세트가 있습니다. Prompt Flow 운영화를 위한 완벽한 엔드투엔드 솔루션입니다.
템플릿은 Azure AI Studio와 Azure Machine Learning을 모두 지원합니다. 구성에 따라 템플릿은 Azure AI Studio와 Azure Machine Learning 모두에 사용될 수 있습니다. 서비스 전반에 걸쳐 Prompt Flow의 실험, 평가 및 배포를 위한 원활한 마이그레이션 환경을 제공합니다.
이 템플릿은 다양한 유형의 흐름을 지원하므로 특정 요구 사항에 따라 워크플로를 정의하고 실행할 수 있습니다. 지원되는 두 가지 주요 흐름 유형은 다음과 같습니다.
유연한 흐름
방향성 비순환 그래프(DAG) 흐름
이 프로젝트의 강력한 기능 중 하나는 흐름 유형을 자동으로 감지하고 그에 따라 흐름을 실행하는 기능입니다. 이를 통해 다양한 흐름 유형을 실험하고 필요에 가장 적합한 유형을 선택할 수 있습니다.
이 템플릿은 다음을 지원합니다.
로컬 실험부터 프로덕션 배포까지 대규모 언어 기반 흐름을 관리하는 것은 결코 간단하지 않으며 모든 경우에 적용되는 일률적인 작업도 아닙니다.
각 흐름에는 초기 실험부터 배포까지 고유한 수명 주기가 있으며 각 단계에는 고유한 과제가 있습니다.
조직에서는 각각의 목표, 요구 사항 및 복잡성이 있는 여러 흐름을 동시에 처리하는 경우가 많습니다. 적절한 관리 도구가 없으면 이는 금방 부담스러워질 수 있습니다.
여기에는 여러 흐름, 고유한 수명 주기 처리, 다양한 구성 실험, 원활한 배포 보장이 포함됩니다.
프롬프트 흐름이 포함된 LLMOps가 등장하는 곳입니다. 프롬프트 흐름이 포함된 LLMOps는 프롬프트 흐름을 사용하여 LLM 주입 앱을 구축하는 데 도움이 되는 "LLMOps 템플릿 및 지침"입니다. 다음과 같은 기능을 제공합니다:
중앙 집중식 코드 호스팅: 이 저장소는 프롬프트 흐름을 기반으로 여러 흐름에 대한 호스팅 코드를 지원하여 모든 흐름에 대한 단일 저장소를 제공합니다. 이 플랫폼을 모든 프롬프트 흐름 코드가 있는 단일 저장소로 생각하십시오. 흐름을 위한 라이브러리와 같아서 다양한 프로젝트를 쉽게 찾고, 액세스하고, 공동 작업할 수 있습니다.
수명 주기 관리: 각 흐름은 자체 수명 주기를 누리므로 로컬 실험에서 프로덕션 배포로 원활하게 전환할 수 있습니다.
변형 및 초매개변수 실험: 여러 변형 및 초매개변수를 실험하여 흐름 변형을 쉽게 평가합니다. 변형과 초매개변수는 레시피의 재료와 같습니다. 이 플랫폼을 사용하면 흐름의 여러 노드에서 다양한 변형 조합을 실험할 수 있습니다.
A/B 배포: A/B 배포를 원활하게 구현하여 다양한 흐름 버전을 쉽게 비교할 수 있습니다. 웹사이트에 대한 기존 A/B 테스트와 마찬가지로 이 플랫폼은 신속한 흐름 흐름을 위해 A/B 배포를 촉진합니다. 즉, 실제 환경에서 다양한 버전의 흐름을 쉽게 비교하여 어떤 버전이 가장 잘 작동하는지 확인할 수 있습니다.
다대다 데이터 세트/흐름 관계: 각 표준 및 평가 흐름에 대해 여러 데이터 세트를 수용하여 흐름 테스트 및 평가의 다양성을 보장합니다. 플랫폼은 각 흐름에 대해 여러 데이터 세트를 수용하도록 설계되었습니다.
다중 배포 대상: 리포지토리는 흐름이 필요에 따라 확장될 수 있도록 구성을 통해 구동되는 Kubernetes 및 Azure 관리형 컴퓨팅에 대한 흐름 배포를 지원합니다.
포괄적인 보고: 각 변형 구성에 대한 자세한 보고서를 생성하여 정보에 입각한 결정을 내릴 수 있습니다. 모든 변형 대량 실행 및 실험에 대한 자세한 지표 수집을 제공하여 HTML 파일뿐만 아니라 CSV에서도 데이터 기반 결정을 내릴 수 있습니다.
BYOF(Bring Your Own Flow)를 제공합니다. LLM 주입 애플리케이션과 관련된 다양한 사용 사례를 개발하기 위한 완벽한 플랫폼입니다 .
구성 기반 개발을 제공합니다. 광범위한 상용구 코드를 작성할 필요가 없습니다.
클라우드에서도 로컬로 즉각적인 실험과 평가를 모두 실행할 수 있습니다.
프롬프트의 로컬 평가를 위한 노트북을 제공합니다. 로컬 실험을 위한 함수 라이브러리를 제공합니다.
가용성과 준비 상태를 확인하기 위해 배포 후 파이프라인 내에서 엔드포인트 테스트를 수행합니다.
배포 전에 프롬프트 지표를 검증하기 위한 선택적인 인간 참여 루프(Human-in-loop)를 제공합니다.
프롬프트 흐름이 포함된 LLMOps는 간단한 LLM 주입 앱과 복잡한 LLM 주입 앱 모두에 대한 기능을 제공합니다. 이는 애플리케이션의 요구 사항에 맞게 완벽하게 사용자 정의할 수 있습니다.
각 사용 사례(프롬프트 흐름 표준 및 평가 흐름 집합)는 다음과 같은 폴더 구조를 따라야 합니다.
또한 사용 사례를 구성하는 experiment.yaml
파일이 있습니다(자세한 내용은 파일 설명 및 사양 참조). 배포 후 엔드포인트를 테스트하기 위한 테스트 데이터가 포함된 Sample-request.json 파일도 있습니다.
'.azure-pipelines' 폴더에는 플랫폼에 대한 일반적인 Azure DevOps 파이프라인이 포함되어 있으며 이에 대한 변경 사항은 모든 흐름의 실행에 영향을 미칩니다.
'.github' 폴더에는 플랫폼과 사용 사례에 대한 Github 워크플로가 포함되어 있습니다. 모든 Github 워크플로가 실행을 위해 이 단일 폴더 내에 있어야 하기 때문에 이는 Azure DevOps와 약간 다릅니다.
'.jenkins' 폴더에는 플랫폼뿐만 아니라 사용 사례 및 개별 작업에 대한 Jenkins 선언적 파이프라인이 포함되어 있습니다.
'docs' 폴더에는 Azure DevOps, Github 워크플로 및 Jenkins 관련 구성에 대한 단계별 가이드에 대한 문서가 포함되어 있습니다.
'llmops' 폴더에는 흐름 실행, 평가, 배포와 관련된 모든 코드가 포함되어 있습니다.
'dataops' 폴더에는 데이터 파이프라인 배포와 관련된 모든 코드가 포함되어 있습니다.
'local_execution' 폴더에는 표준 및 평가 흐름을 로컬로 실행하기 위한 Python 스크립트가 포함되어 있습니다.
이 프로젝트에는 다양한 시나리오를 보여주는 6가지 예가 포함되어 있습니다.
위치: ./web_classification 중요성: 다양한 변형으로 웹사이트 콘텐츠 요약을 보여주고 템플릿에서 사용할 수 있는 유연성과 사용자 정의 옵션을 보여줍니다.
위치: ./named_entity_recognition 중요도: 텍스트에서 명명된 엔터티를 추출하는 방법을 보여줍니다. 이는 다양한 자연어 처리 작업 및 정보 추출에 유용합니다.
위치: ./math_coding 중요성: 수학적 계산을 수행하고 코드 조각을 생성하는 기능을 보여 주며 계산 작업을 처리하는 데 있어 템플릿의 다양성을 강조합니다.
위치: ./chat_with_pdf 중요: 정확하고 관련성 있는 응답을 제공하기 위해 RAG(검색 증강 생성) 기능을 활용하여 PDF 문서와 상호 작용하기 위한 대화형 인터페이스를 보여줍니다.
위치: ./function_flows 중요성: 사용자 프롬프트를 기반으로 코드 조각 생성을 보여 주고 코드 생성 작업을 자동화할 수 있는 가능성을 보여줍니다.
위치: ./class_flows 중요성: 클래스 기반 흐름을 사용하여 구축된 채팅 애플리케이션을 보여주며 보다 복잡한 대화 인터페이스의 구조 및 구성을 보여줍니다.
리포지토리는 AzureML 관리형 컴퓨팅을 위한 A/B 배포 와 함께 Kubernetes, Kubernetes ARC, Azure Web Apps 및 AzureML 관리형 컴퓨팅 에 배포하는 데 도움이 됩니다.
파이프라인 실행은 여러 단계와 각 단계의 작업으로 구성됩니다.
저장소는 여러 보고서를 생성합니다(실험 실행 및 측정항목 예시가 표시됨).
로컬 실행 기능을 활용하려면 다음 설치 단계를 따르세요.
git clone https://github.com/microsoft/llmops-promptflow-template.git
aoai
라는 AzureOpenAI 연결을 사용합니다. api_key 및 api_base에 대해 업데이트된 값을 포함하는 aoai={"api_key": "","api_base": "","api_type": "azure","api_version": "2023-03-15-preview"}
줄을 추가합니다. 흐름에 다른 이름을 가진 추가 연결이 사용되는 경우 그에 따라 추가해야 합니다. 현재 지원되는 대로 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 " }
python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
여기에 있는 문서를 기반으로 템플릿에 흐름을 가져오거나 작성하세요.
local_execution 폴더에 제공된 예제와 유사한 Python 스크립트를 작성합니다.
DataOps는 DevOps, 민첩한 방법론, 데이터 관리 방식의 측면을 결합하여 데이터 수집, 처리 및 분석 프로세스를 간소화합니다. DataOps는 LLM 앱 개발에 필요한 데이터 세트(교육, 실험, 평가 등)를 구축하는 데 있어 규율을 적용하는 데 도움이 될 수 있습니다.
데이터 파이프라인은 즉각적인 엔지니어링 흐름과 별도로 유지됩니다. 데이터 파이프라인은 데이터 세트를 생성하고 데이터 세트는 흐름이 사용할 수 있도록 Azure ML에 데이터 자산으로 등록됩니다. 이 접근 방식은 시스템의 여러 부분을 독립적으로 확장하고 문제를 해결하는 데 도움이 됩니다.
DataOps를 시작하는 방법에 대한 자세한 내용은 DataOps 구성 방법 문서를 참조하세요.
이 프로젝트는 기여와 제안을 환영합니다. 대부분의 기여는 귀하가 귀하의 기여를 사용할 권리가 있고 실제로 그렇게 할 권리가 있음을 선언하는 기여자 라이센스 계약(CLA)에 동의해야 합니다. 자세한 내용을 보려면 https://cla.opensource.microsoft.com을 방문하세요.
끌어오기 요청을 제출하면 CLA 봇이 자동으로 CLA 제공이 필요한지 여부를 결정하고 PR을 적절하게 장식합니다(예: 상태 확인, 댓글). 봇이 제공하는 지침을 따르기만 하면 됩니다. CLA를 사용하여 모든 저장소에서 이 작업을 한 번만 수행하면 됩니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있는 경우 [email protected]으로 문의하세요.
이 프로젝트에는 프로젝트, 제품 또는 서비스에 대한 상표나 로고가 포함될 수 있습니다. Microsoft 상표 또는 로고의 승인된 사용에는 Microsoft의 상표 및 브랜드 지침이 적용되며 이를 따라야 합니다. 이 프로젝트의 수정된 버전에 Microsoft 상표 또는 로고를 사용하면 혼동을 일으키거나 Microsoft 후원을 암시해서는 안 됩니다. 제3자 상표 또는 로고의 사용에는 해당 제3자의 정책이 적용됩니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 행동 강령 FAQ를 참조하거나 추가 질문이나 의견이 있는 경우 [email protected]으로 문의하세요.
저작권 (c) 마이크로소프트 주식회사. 모든 권리 보유.
MIT 라이센스에 따라 라이센스가 부여되었습니다.