MLflow 및 Azure Machine Learning
적용 대상:Azure CLI ml 확장 v2(현재)Python SDK azure-ai-ml v2(현재)
MLflow는 전체 기계 학습 수명 주기를 관리하도록 설계된 오픈소스 프레임워크입니다. 다양한 플랫폼에서 모델을 학습하고 제공할 수 있기 때문에 로컬 컴퓨터, 원격 컴퓨팅 대상, 가상 머신 또는 Azure Machine Learning 컴퓨팅 인스턴스 등 실험이 실행되는 위치에 관계없이 일관된 도구 세트를 사용할 수 있습니다.
Azure Machine Learning 작업 영역은 MLflow와 호환됩니다. 즉, MLflow 서버를 사용할 때와 동일한 방식으로 Azure Machine Learning 작업 영역을 사용할 수 있습니다. 이 호환성의 이점은 다음과 같습니다.
- Azure Machine Learning은 내부적으로 MLflow 서버 인스턴스를 호스팅하지 않습니다. 오히려 작업 영역은 MLflow API 언어를 사용할 수 있습니다.
- Azure Machine Learning에서 실행되는지 여부에 관계없이 Azure Machine Learning 작업 영역을 MLflow 코드에 대한 추적 서버로 사용할 수 있습니다. 추적해야 할 작업 영역을 가리키도록 MLflow만 구성하면 됩니다.
- 변경 없이 Azure Machine Learning에서 MLflow를 사용하는 모든 학습 루틴을 실행할 수 있습니다.
팁
Azure Machine Learning SDK v1과 달리 SDK v2에는 로깅 기능이 없습니다. 학습 루틴이 클라우드에 독립적으로 이식 가능하도록 로깅에 MLflow를 사용하는 것이 좋습니다. 즉, Azure Machine Learning에 대한 코드의 종속성을 제거합니다.
MLflow를 통해 추적
Azure Machine Learning은 MLflow 추적을 사용하여 메트릭을 기록하고 실험에 대한 아티팩트를 저장합니다. Azure Machine Learning에 연결되면 MLflow를 사용하여 수행된 모든 추적이 작업 중인 작업 영역에서 구체화됩니다. 실험 및 학습 루틴 추적을 위해 MLflow를 사용하도록 실험을 설정하는 방법에 대해 자세히 알아보려면 MLflow를 사용하여 메트릭, 매개 변수 및 파일 기록을 참조하세요. MLflow를 사용하여 실험 및 실행을 쿼리하고 비교할 수도 있습니다.
Azure Machine Learning의 MLflow는 추적을 중앙 집중화하는 방법을 제공합니다. 로컬로 작업하거나 다른 클라우드에서 작업하는 경우에도 MLflow를 Azure Machine Learning 작업 영역에 연결할 수 있습니다. 작업 영역이 학습 메트릭 및 모델을 저장할 중앙 집중화된 안전하고 확장성 있는 위치를 제공합니다.
Azure Machine Learning에서 MLflow를 사용하면 다음과 같은 기능이 포함됩니다.
- 로컬 또는 클라우드에서 실행되는 기계 학습 실험 및 모델을 추적합니다.
- Azure Databricks 기계 학습 실험을 추적합니다.
- Azure Synapse Analytics 기계 학습 실험을 추적합니다.
예제 Notebook
- MLflow로 XGBoost 분류자 학습 및 추적: MLflow를 사용하여 실험을 추적하고 모델을 기록하고 여러 버전을 파이프라인으로 결합하는 방법을 보여 줍니다.
- 서비스 주체 인증을 사용하여 MLflow에서 XGBoost 분류자 학습 및 추적: Azure Machine Learning 외부에서 실행되는 컴퓨팅에서 MLflow를 사용하여 실험을 추적하는 방법을 보여 줍니다. 이 예에서는 서비스 주체를 사용하여 Azure Machine Learning Services에 대해 인증하는 방법을 보여 줍니다.
- MLflow에서 Hyperopt 및 중첩 실행을 사용한 하이퍼 파라미터 최적화: MLflow에서 자식 실행을 통해 인기 라이브러리
Hyperopt
를 사용하여 모델에 대해 하이퍼 매개 변수 최적화를 수행하는 방법을 설명합니다. 이 예에서는 자식 실행에서 부모 실행으로 메트릭, 매개 변수 및 아티팩트를 전송하는 방법을 보여 줍니다. - MLflow를 사용하여 모델 로깅: MLflow에서 아티팩트 대신 모델 개념을 사용하는 방법을 보여 줍니다. 이 예에서는 사용자 지정 모델을 구성하는 방법도 보여 줍니다.
- MLflow로 실행 및 실험 관리: MLflow를 사용하여 Azure Machine Learning에서 실험, 실행, 메트릭, 매개 변수 및 아티팩트를 쿼리하는 방법을 보여 줍니다.
R에서 MLflow를 사용하여 추적
R의 MLflow 지원에는 다음과 같은 제한 사항이 있습니다.
- MLflow 추적은 Azure Machine Learning 작업에 대한 실험 메트릭, 매개 변수 및 모델을 추적하는 것으로 제한됩니다.
- R 커널을 사용하는 RStudio, Posit(이전의 RStudio Workbench) 또는 Jupyter Notebook에 대한 대화형 학습은 지원되지 않습니다.
- MLflow R SDK를 사용한 모델 관리 및 등록은 지원되지 않습니다. 대신 모델 등록 및 관리를 위해 Azure Machine Learning CLI 또는 Azure Machine Learning 스튜디오를 사용합니다.
Azure Machine Learning과 함께 MLflow 추적 클라이언트를 사용하는 방법을 알아보려면 Azure Machine Learning CLI(v2)를 사용하여 R 모델 학습의 예를 확인합니다.
Java에서 MLflow를 사용하여 추적
Java의 MLflow 지원에는 다음과 같은 제한 사항이 있습니다.
- MLflow 추적은 Azure Machine Learning 작업에 대한 실험 메트릭 및 매개 변수를 추적하는 것으로 제한됩니다.
- MLflow Java SDK를 사용해서는 아티팩트 및 모델을 추적할 수 없습니다. 대신 작업에서
mlflow.save_model
메서드와 함께Outputs
폴더를 사용하여 캡처하려는 모델(또는 아티팩트)을 저장합니다.
Azure Machine Learning에서 MLflow 추적 클라이언트를 사용하는 방법을 알아보려면 Azure Machine Learning에서 MLflow 추적 클라이언트를 사용하는 Java 예를 참조하세요.
MLflow를 사용하는 모델 레지스트리
Azure Machine Learning은 모델 관리를 위해 MLflow를 지원합니다. 이 지원은 MLflow 클라이언트에 익숙한 사용자를 위해 전체 모델 수명 주기를 지원하는 편리한 방법을 나타냅니다.
Azure Machine Learning에서 MLflow API를 사용하여 모델을 관리하는 방법에 대해 자세히 알아보려면 Azure Machine Learning에서 MLflow를 사용하여 모델 레지스트리 관리를 참조하세요.
예제 Notebook
- MLflow로 모델 레지스트리 관리: MLflow를 사용하여 레지스트리에서 모델을 관리하는 방법을 보여 줍니다.
MLflow를 사용하여 모델 배포
MLflow 모델을 Azure Machine Learning에 배포하고 MLflow 모델을 사용할 때 개선된 환경을 활용할 수 있습니다. Azure Machine Learning은 환경이나 채점 스크립트를 지정하지 않고도 실시간 및 일괄 처리 엔드포인트 모두에 MLflow 모델 배포를 지원합니다. MLflow SDK, Azure Machine Learning CLI, Python용 Azure Machine Learning SDK 또는 Azure Machine Learning 스튜디오를 사용하여 배포가 지원됩니다.
실시간 및 일괄 처리 유추를 위해 Azure Machine Learning에 MLflow 모델을 배포하는 방법에 대해 자세히 알아보려면 MLflow 모델 배포 지침을 참조하세요.
예제 Notebook
- 온라인 엔드포인트에 MLflow 배포: MLflow SDK를 사용하여 MLflow 형식의 모델을 온라인 엔드포인트에 배포하는 방법을 보여 줍니다.
- 안전한 출시를 통해 온라인 엔드포인트에 MLflow 배포: 모델의 점진적 출시와 함께 MLflow SDK를 사용하여 MLflow 형식의 모델을 온라인 엔드포인트에 배포하는 방법을 보여 줍니다. 또한 이 예에서는 동일한 엔드포인트에 여러 버전의 모델을 배포하는 방법도 보여 줍니다.
- MLflow를 웹 서비스(V1)에 배포: MLflow SDK를 사용하여 MLflow 형식의 모델을 웹 서비스(ACI/AKS v1)에 배포하는 방법을 보여 줍니다.
- MLflow를 사용하여 Azure Databricks에서 학습된 모델을 Azure Machine Learning에 배포: Azure Databricks에서 모델을 학습하고 Azure Machine Learning에 배포하는 방법을 보여 줍니다. 또한 이 예에서는 Azure Databricks에서 MLflow 인스턴스를 사용하여 실험을 추적하려는 경우를 처리하는 방법도 다룹니다.
MLflow 프로젝트를 사용한 학습(미리 보기)
Important
이 문서에 표시된 항목(미리 보기)은 현재 퍼블릭 미리 보기에서 확인할 수 있습니다. 미리 보기 버전은 서비스 수준 계약 없이 제공되며 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
MLflow 프로젝트(미리 보기)를 사용하여 Azure Machine Learning에 학습 작업을 제출할 수 있습니다. Azure Machine Learning 추적을 사용하여 로컬로 작업을 제출하거나 Azure Machine Learning 컴퓨팅을 통해 작업을 클라우드로 마이그레이션할 수 있습니다.
추적을 위해 Azure Machine Learning 작업 영역을 사용하는 MLflow 프로젝트로 학습 작업을 제출하는 방법을 알아보려면 MLflow 프로젝트 및 Azure Machine Learning을 사용하여 기계 학습 모델 학습을 참조하세요.
예제 Notebook
- Azure Machine Learning 작업 영역에서 MLflow 프로젝트를 추적합니다.
- Azure Machine Learning 작업에서 MLflow 프로젝트를 학습하고 실행합니다.
MLflow SDK, Azure Machine Learning v2 및 Azure Machine Learning 스튜디오 기능
다음 표에서는 기계 학습 수명 주기에서 사용 가능한 각 클라이언트 도구를 사용하여 가능한 작업을 보여 줍니다.
기능 | MLflow SDK | Azure Machine Learning CLI/SDK | Azure Machine Learning Studio |
---|---|---|---|
메트릭, 매개 변수 및 모델 추적 및 로그 | ✓ | ||
메트릭, 매개 변수 및 모델 검색 | ✓ | 1 | ✓ |
학습 작업 제출 | ✓2 | ✓ | ✓ |
Azure Machine Learning 데이터 자산을 사용하여 학습 작업 제출 | ✓ | ✓ | |
기계 학습 파이프라인을 사용하여 학습 작업 제출 | ✓ | ✓ | |
실험 및 실행 관리 | ✓ | ✓ | ✓ |
MLflow 모델 관리 | ✓3 | ✓ | ✓ |
비MLflow 모델 관리 | ✓ | ✓ | |
Azure Machine Learning에 MLflow 모델 배포(온라인 및 배치) | ✓4 | ✓ | ✓ |
Azure Machine Learning에 비MLflow 모델 배포 | ✓ | ✓ |
참고 항목
- 1 아티팩트 및 모델만 다운로드할 수 있습니다.
- 2 MLflow 프로젝트(미리 보기)를 사용하면 가능합니다.
- 3 일부 작업은 지원되지 않을 수 있습니다. 자세한 내용은 MLflow를 사용하여 Azure Machine Learning에서 모델 레지스트리 관리를 참조하세요.
- 4 MLflow SDK를 사용하여 일괄 처리 유추에 대한 MLflow 모델을 배포하는 것은 현재 불가능합니다. 대안으로 Spark 작업에서 MLflow 모델 배포 및 실행을 참조하세요.