You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
312 lines
19 KiB
312 lines
19 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "472d3fab1c5be50f387336e7a686dbe1",
|
|
"translation_date": "2025-09-05T12:57:30+00:00",
|
|
"source_file": "5-Data-Science-In-Cloud/19-Azure/README.md",
|
|
"language_code": "ko"
|
|
}
|
|
-->
|
|
# 클라우드에서의 데이터 과학: "Azure ML SDK" 방식
|
|
|
|
| ](../../sketchnotes/19-DataScience-Cloud.png)|
|
|
|:---:|
|
|
| 클라우드에서의 데이터 과학: Azure ML SDK - _스케치노트 by [@nitya](https://twitter.com/nitya)_ |
|
|
|
|
목차:
|
|
|
|
- [클라우드에서의 데이터 과학: "Azure ML SDK" 방식](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [강의 전 퀴즈](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [1. 소개](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [1.1 Azure ML SDK란 무엇인가?](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [1.2 심부전 예측 프로젝트와 데이터셋 소개](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2. Azure ML SDK를 사용한 모델 학습](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.1 Azure ML 워크스페이스 생성](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.2 컴퓨트 인스턴스 생성](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.3 데이터셋 로드](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.4 노트북 생성](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.5 모델 학습](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.5.1 워크스페이스, 실험, 컴퓨트 클러스터 및 데이터셋 설정](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.5.2 AutoML 설정 및 학습](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3. Azure ML SDK를 사용한 모델 배포 및 엔드포인트 소비](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3.1 최적 모델 저장](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3.2 모델 배포](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3.3 엔드포인트 소비](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [🚀 도전 과제](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [강의 후 퀴즈](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [복습 및 자기 학습](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [과제](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
|
|
## [강의 전 퀴즈](https://ff-quizzes.netlify.app/en/ds/quiz/36)
|
|
|
|
## 1. 소개
|
|
|
|
### 1.1 Azure ML SDK란 무엇인가?
|
|
|
|
데이터 과학자와 AI 개발자는 Azure Machine Learning SDK를 사용하여 Azure Machine Learning 서비스를 통해 머신 러닝 워크플로를 구축하고 실행합니다. 이 SDK는 Jupyter Notebooks, Visual Studio Code 또는 선호하는 Python IDE를 포함한 모든 Python 환경에서 서비스를 상호작용할 수 있게 합니다.
|
|
|
|
SDK의 주요 기능은 다음과 같습니다:
|
|
|
|
- 머신 러닝 실험에 사용되는 데이터셋의 탐색, 준비 및 라이프사이클 관리.
|
|
- 머신 러닝 실험을 모니터링, 로깅 및 조직화하기 위한 클라우드 리소스 관리.
|
|
- 로컬 또는 GPU 가속 모델 학습을 포함한 클라우드 리소스를 사용하여 모델 학습.
|
|
- 자동화된 머신 러닝을 사용하여 구성 매개변수와 학습 데이터를 받아 알고리즘과 하이퍼파라미터 설정을 자동으로 반복하여 예측 실행에 가장 적합한 모델을 찾음.
|
|
- 학습된 모델을 RESTful 서비스로 변환하여 모든 애플리케이션에서 소비할 수 있는 웹 서비스를 배포.
|
|
|
|
[Azure Machine Learning SDK에 대해 더 알아보기](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
|
|
|
|
[이전 강의](../18-Low-Code/README.md)에서는 로우 코드/노 코드 방식으로 모델을 학습, 배포 및 소비하는 방법을 살펴보았습니다. 심부전 데이터셋을 사용하여 심부전 예측 모델을 생성했습니다. 이번 강의에서는 동일한 작업을 Azure Machine Learning SDK를 사용하여 수행할 것입니다.
|
|
|
|

|
|
|
|
### 1.2 심부전 예측 프로젝트와 데이터셋 소개
|
|
|
|
심부전 예측 프로젝트와 데이터셋 소개는 [여기](../18-Low-Code/README.md)를 참조하세요.
|
|
|
|
## 2. Azure ML SDK를 사용한 모델 학습
|
|
### 2.1 Azure ML 워크스페이스 생성
|
|
|
|
간단히 하기 위해 우리는 Jupyter Notebook에서 작업할 것입니다. 이는 이미 워크스페이스와 컴퓨트 인스턴스를 가지고 있음을 의미합니다. 이미 워크스페이스가 있다면, 바로 2.3 노트북 생성 섹션으로 이동할 수 있습니다.
|
|
|
|
워크스페이스가 없다면, [이전 강의](../18-Low-Code/README.md)의 **2.1 Azure ML 워크스페이스 생성** 섹션의 지침을 따라 워크스페이스를 생성하세요.
|
|
|
|
### 2.2 컴퓨트 인스턴스 생성
|
|
|
|
이전에 생성한 [Azure ML 워크스페이스](https://ml.azure.com/)로 이동하여 컴퓨트 메뉴를 클릭하면 사용 가능한 다양한 컴퓨트 리소스를 볼 수 있습니다.
|
|
|
|

|
|
|
|
Jupyter Notebook을 프로비저닝하기 위해 컴퓨트 인스턴스를 생성해봅시다.
|
|
1. + New 버튼을 클릭합니다.
|
|
2. 컴퓨트 인스턴스에 이름을 지정합니다.
|
|
3. CPU 또는 GPU, VM 크기 및 코어 수를 선택합니다.
|
|
4. Create 버튼을 클릭합니다.
|
|
|
|
축하합니다! 컴퓨트 인스턴스를 생성했습니다. 이 컴퓨트 인스턴스를 사용하여 [노트북 생성 섹션](../../../../5-Data-Science-In-Cloud/19-Azure)에서 노트북을 생성할 것입니다.
|
|
|
|
### 2.3 데이터셋 로드
|
|
아직 데이터셋을 업로드하지 않았다면 [이전 강의](../18-Low-Code/README.md)의 **2.3 데이터셋 로드** 섹션을 참조하세요.
|
|
|
|
### 2.4 노트북 생성
|
|
|
|
> **_참고:_** 다음 단계에서는 새 노트북을 처음부터 생성하거나 [우리가 생성한 노트북](../../../../5-Data-Science-In-Cloud/19-Azure/notebook.ipynb)을 Azure ML Studio에 업로드할 수 있습니다. 업로드하려면 "Notebook" 메뉴를 클릭하고 노트북을 업로드하세요.
|
|
|
|
노트북은 데이터 과학 과정에서 매우 중요한 역할을 합니다. 탐색적 데이터 분석(EDA)을 수행하거나 컴퓨트 클러스터를 호출하여 모델을 학습하거나 추론 클러스터를 호출하여 엔드포인트를 배포하는 데 사용할 수 있습니다.
|
|
|
|
노트북을 생성하려면 Jupyter Notebook 인스턴스를 제공하는 컴퓨트 노드가 필요합니다. [Azure ML 워크스페이스](https://ml.azure.com/)로 돌아가 컴퓨트 인스턴스를 클릭하세요. 컴퓨트 인스턴스 목록에서 [이전에 생성한 컴퓨트 인스턴스](../../../../5-Data-Science-In-Cloud/19-Azure)를 볼 수 있습니다.
|
|
|
|
1. Applications 섹션에서 Jupyter 옵션을 클릭합니다.
|
|
2. "Yes, I understand" 박스를 체크하고 Continue 버튼을 클릭합니다.
|
|

|
|
3. 새로운 브라우저 탭이 열리며 Jupyter Notebook 인스턴스가 표시됩니다. "New" 버튼을 클릭하여 노트북을 생성하세요.
|
|
|
|

|
|
|
|
이제 노트북이 준비되었으니 Azure ML SDK를 사용하여 모델 학습을 시작할 수 있습니다.
|
|
|
|
### 2.5 모델 학습
|
|
|
|
먼저, 의문이 생길 경우 [Azure ML SDK 문서](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)를 참조하세요. 이번 강의에서 다룰 모듈에 대한 모든 필요한 정보를 포함하고 있습니다.
|
|
|
|
#### 2.5.1 워크스페이스, 실험, 컴퓨트 클러스터 및 데이터셋 설정
|
|
|
|
다음 코드를 사용하여 구성 파일에서 `워크스페이스`를 로드해야 합니다:
|
|
|
|
```python
|
|
from azureml.core import Workspace
|
|
ws = Workspace.from_config()
|
|
```
|
|
|
|
이 코드는 워크스페이스를 나타내는 `Workspace` 유형의 객체를 반환합니다. 그런 다음 다음 코드를 사용하여 `실험`을 생성해야 합니다:
|
|
|
|
```python
|
|
from azureml.core import Experiment
|
|
experiment_name = 'aml-experiment'
|
|
experiment = Experiment(ws, experiment_name)
|
|
```
|
|
워크스페이스에서 실험을 가져오거나 생성하려면 실험 이름을 요청해야 합니다. 실험 이름은 3-36자 사이여야 하며, 문자 또는 숫자로 시작하고 문자, 숫자, 밑줄 및 대시만 포함할 수 있습니다. 워크스페이스에서 실험을 찾을 수 없는 경우 새 실험이 생성됩니다.
|
|
|
|
이제 다음 코드를 사용하여 학습을 위한 컴퓨트 클러스터를 생성해야 합니다. 이 단계는 몇 분이 걸릴 수 있습니다.
|
|
|
|
```python
|
|
from azureml.core.compute import AmlCompute
|
|
|
|
aml_name = "heart-f-cluster"
|
|
try:
|
|
aml_compute = AmlCompute(ws, aml_name)
|
|
print('Found existing AML compute context.')
|
|
except:
|
|
print('Creating new AML compute context.')
|
|
aml_config = AmlCompute.provisioning_configuration(vm_size = "Standard_D2_v2", min_nodes=1, max_nodes=3)
|
|
aml_compute = AmlCompute.create(ws, name = aml_name, provisioning_configuration = aml_config)
|
|
aml_compute.wait_for_completion(show_output = True)
|
|
|
|
cts = ws.compute_targets
|
|
compute_target = cts[aml_name]
|
|
```
|
|
|
|
워크스페이스에서 데이터셋 이름을 사용하여 데이터셋을 가져올 수 있습니다:
|
|
|
|
```python
|
|
dataset = ws.datasets['heart-failure-records']
|
|
df = dataset.to_pandas_dataframe()
|
|
df.describe()
|
|
```
|
|
#### 2.5.2 AutoML 설정 및 학습
|
|
|
|
AutoML 설정을 구성하려면 [AutoMLConfig 클래스](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)를 사용하세요.
|
|
|
|
문서에 설명된 대로 다양한 매개변수를 조정할 수 있습니다. 이번 프로젝트에서는 다음 매개변수를 사용할 것입니다:
|
|
|
|
- `experiment_timeout_minutes`: 실험이 자동으로 중지되고 결과가 자동으로 제공되기 전에 허용되는 최대 시간(분).
|
|
- `max_concurrent_iterations`: 실험에서 허용되는 최대 동시 학습 반복 횟수.
|
|
- `primary_metric`: 실험 상태를 결정하는 데 사용되는 주요 메트릭.
|
|
- `compute_target`: 자동화된 머신 러닝 실험을 실행할 Azure Machine Learning 컴퓨트 대상.
|
|
- `task`: 실행할 작업 유형. 'classification', 'regression', 'forecasting' 값 중 하나를 선택하여 해결할 자동화된 ML 문제 유형을 결정.
|
|
- `training_data`: 실험 내에서 사용될 학습 데이터. 학습 특징과 레이블 열(선택적으로 샘플 가중치 열)을 포함해야 함.
|
|
- `label_column_name`: 레이블 열 이름.
|
|
- `path`: Azure Machine Learning 프로젝트 폴더의 전체 경로.
|
|
- `enable_early_stopping`: 점수가 단기적으로 개선되지 않을 경우 조기 종료를 활성화할지 여부.
|
|
- `featurization`: 자동으로 특징화 단계를 수행할지 여부 또는 사용자 정의 특징화를 사용할지 여부.
|
|
- `debug_log`: 디버그 정보를 기록할 로그 파일.
|
|
|
|
```python
|
|
from azureml.train.automl import AutoMLConfig
|
|
|
|
project_folder = './aml-project'
|
|
|
|
automl_settings = {
|
|
"experiment_timeout_minutes": 20,
|
|
"max_concurrent_iterations": 3,
|
|
"primary_metric" : 'AUC_weighted'
|
|
}
|
|
|
|
automl_config = AutoMLConfig(compute_target=compute_target,
|
|
task = "classification",
|
|
training_data=dataset,
|
|
label_column_name="DEATH_EVENT",
|
|
path = project_folder,
|
|
enable_early_stopping= True,
|
|
featurization= 'auto',
|
|
debug_log = "automl_errors.log",
|
|
**automl_settings
|
|
)
|
|
```
|
|
구성이 완료되었으면 다음 코드를 사용하여 모델을 학습시킬 수 있습니다. 이 단계는 클러스터 크기에 따라 최대 한 시간이 걸릴 수 있습니다.
|
|
|
|
```python
|
|
remote_run = experiment.submit(automl_config)
|
|
```
|
|
RunDetails 위젯을 실행하여 다양한 실험을 표시할 수 있습니다.
|
|
```python
|
|
from azureml.widgets import RunDetails
|
|
RunDetails(remote_run).show()
|
|
```
|
|
## 3. Azure ML SDK를 사용한 모델 배포 및 엔드포인트 소비
|
|
|
|
### 3.1 최적 모델 저장
|
|
|
|
`remote_run`은 [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) 유형의 객체입니다. 이 객체는 `get_output()` 메서드를 포함하며, 최적 실행과 해당 학습된 모델을 반환합니다.
|
|
|
|
```python
|
|
best_run, fitted_model = remote_run.get_output()
|
|
```
|
|
최적 모델에 사용된 매개변수를 출력하여 확인할 수 있으며, [get_properties()](https://docs.microsoft.com/python/api/azureml-core/azureml.core.run(class)?view=azure-ml-py#azureml_core_Run_get_properties?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) 메서드를 사용하여 최적 모델의 속성을 확인할 수 있습니다.
|
|
|
|
```python
|
|
best_run.get_properties()
|
|
```
|
|
|
|
이제 [register_model](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?view=azure-ml-py#register-model-model-name-none--description-none--tags-none--iteration-none--metric-none-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) 메서드를 사용하여 모델을 등록하세요.
|
|
```python
|
|
model_name = best_run.properties['model_name']
|
|
script_file_name = 'inference/score.py'
|
|
best_run.download_file('outputs/scoring_file_v_1_0_0.py', 'inference/score.py')
|
|
description = "aml heart failure project sdk"
|
|
model = best_run.register_model(model_name = model_name,
|
|
model_path = './outputs/',
|
|
description = description,
|
|
tags = None)
|
|
```
|
|
### 3.2 모델 배포
|
|
|
|
최적 모델이 저장되면 [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109) 클래스를 사용하여 배포할 수 있습니다. InferenceConfig는 배포에 사용되는 사용자 정의 환경에 대한 구성 설정을 나타냅니다. [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) 클래스는 Azure Container Instances에서 웹 서비스 엔드포인트로 배포된 머신 러닝 모델을 나타냅니다. 배포된 서비스는 모델, 스크립트 및 관련 파일에서 생성됩니다. 결과 웹 서비스는 로드 밸런싱된 HTTP 엔드포인트로 REST API를 제공합니다. 이 API에 데이터를 보내고 모델이 반환한 예측을 받을 수 있습니다.
|
|
|
|
모델은 [deploy](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model(class)?view=azure-ml-py#deploy-workspace--name--models--inference-config-none--deployment-config-none--deployment-target-none--overwrite-false--show-output-false-?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) 메서드를 사용하여 배포됩니다.
|
|
|
|
```python
|
|
from azureml.core.model import InferenceConfig, Model
|
|
from azureml.core.webservice import AciWebservice
|
|
|
|
inference_config = InferenceConfig(entry_script=script_file_name, environment=best_run.get_environment())
|
|
|
|
aciconfig = AciWebservice.deploy_configuration(cpu_cores = 1,
|
|
memory_gb = 1,
|
|
tags = {'type': "automl-heart-failure-prediction"},
|
|
description = 'Sample service for AutoML Heart Failure Prediction')
|
|
|
|
aci_service_name = 'automl-hf-sdk'
|
|
aci_service = Model.deploy(ws, aci_service_name, [model], inference_config, aciconfig)
|
|
aci_service.wait_for_deployment(True)
|
|
print(aci_service.state)
|
|
```
|
|
이 단계는 몇 분이 걸릴 수 있습니다.
|
|
|
|
### 3.3 엔드포인트 소비
|
|
|
|
엔드포인트를 소비하려면 샘플 입력을 생성하세요:
|
|
|
|
```python
|
|
data = {
|
|
"data":
|
|
[
|
|
{
|
|
'age': "60",
|
|
'anaemia': "false",
|
|
'creatinine_phosphokinase': "500",
|
|
'diabetes': "false",
|
|
'ejection_fraction': "38",
|
|
'high_blood_pressure': "false",
|
|
'platelets': "260000",
|
|
'serum_creatinine': "1.40",
|
|
'serum_sodium': "137",
|
|
'sex': "false",
|
|
'smoking': "false",
|
|
'time': "130",
|
|
},
|
|
],
|
|
}
|
|
|
|
test_sample = str.encode(json.dumps(data))
|
|
```
|
|
그런 다음 이 입력을 모델에 보내 예측을 받을 수 있습니다:
|
|
```python
|
|
response = aci_service.run(input_data=test_sample)
|
|
response
|
|
```
|
|
이 코드는 `'{"result": [false]}'`를 출력해야 합니다. 이는 우리가 엔드포인트에 보낸 환자 입력 데이터가 `false`라는 예측을 생성했음을 의미하며, 이 사람은 심장마비를 겪을 가능성이 낮다는 뜻입니다.
|
|
|
|
축하합니다! Azure ML SDK를 사용하여 Azure ML에 배포되고 학습된 모델을 성공적으로 활용하셨습니다!
|
|
|
|
> **_NOTE:_** 프로젝트를 완료한 후에는 모든 리소스를 삭제하는 것을 잊지 마세요.
|
|
|
|
## 🚀 도전 과제
|
|
|
|
SDK를 통해 할 수 있는 많은 작업들이 있지만, 이 수업에서 모두 다룰 수는 없습니다. 하지만 좋은 소식은, SDK 문서를 빠르게 훑어보는 방법을 배우면 스스로 많은 것을 해낼 수 있다는 점입니다. Azure ML SDK 문서를 살펴보고, 파이프라인을 생성할 수 있는 `Pipeline` 클래스를 찾아보세요. 파이프라인은 워크플로우로 실행할 수 있는 단계들의 모음입니다.
|
|
|
|
**힌트:** [SDK 문서](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)에 접속하여 검색창에 "Pipeline"과 같은 키워드를 입력해보세요. 검색 결과에서 `azureml.pipeline.core.Pipeline` 클래스를 찾을 수 있을 것입니다.
|
|
|
|
## [강의 후 퀴즈](https://ff-quizzes.netlify.app/en/ds/quiz/37)
|
|
|
|
## 복습 및 자기 학습
|
|
|
|
이번 강의에서는 Azure ML SDK를 사용하여 클라우드에서 심부전 위험을 예측하는 모델을 학습, 배포, 활용하는 방법을 배웠습니다. Azure ML SDK에 대한 추가 정보를 보려면 이 [문서](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)를 확인하세요. Azure ML SDK를 사용하여 직접 모델을 만들어 보세요.
|
|
|
|
## 과제
|
|
|
|
[Azure ML SDK를 활용한 데이터 과학 프로젝트](assignment.md)
|
|
|
|
---
|
|
|
|
**면책 조항**:
|
|
이 문서는 AI 번역 서비스 [Co-op Translator](https://github.com/Azure/co-op-translator)를 사용하여 번역되었습니다. 정확성을 위해 최선을 다하고 있지만, 자동 번역에는 오류나 부정확성이 포함될 수 있습니다. 원본 문서의 원어 버전을 신뢰할 수 있는 권위 있는 자료로 간주해야 합니다. 중요한 정보의 경우, 전문적인 인간 번역을 권장합니다. 이 번역 사용으로 인해 발생하는 오해나 잘못된 해석에 대해 책임을 지지 않습니다. |