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-05T14:30:10+00:00",
|
|
"source_file": "5-Data-Science-In-Cloud/19-Azure/README.md",
|
|
"language_code": "pl"
|
|
}
|
|
-->
|
|
# Data Science w Chmurze: Podejście "Azure ML SDK"
|
|
|
|
| ](../../sketchnotes/19-DataScience-Cloud.png)|
|
|
|:---:|
|
|
| Data Science w Chmurze: Azure ML SDK - _Sketchnote autorstwa [@nitya](https://twitter.com/nitya)_ |
|
|
|
|
Spis treści:
|
|
|
|
- [Data Science w Chmurze: Podejście "Azure ML SDK"](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [Quiz przed wykładem](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [1. Wprowadzenie](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [1.1 Co to jest Azure ML SDK?](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [1.2 Projekt przewidywania niewydolności serca i wprowadzenie do zbioru danych](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2. Trenowanie modelu za pomocą Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.1 Tworzenie przestrzeni roboczej Azure ML](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.2 Tworzenie instancji obliczeniowej](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.3 Ładowanie zbioru danych](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.4 Tworzenie Notatników](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.5 Trenowanie modelu](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.5.1 Konfiguracja przestrzeni roboczej, eksperymentu, klastra obliczeniowego i zbioru danych](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [2.5.2 Konfiguracja AutoML i trenowanie](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3. Wdrażanie modelu i korzystanie z punktu końcowego za pomocą Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3.1 Zapisywanie najlepszego modelu](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3.2 Wdrażanie modelu](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [3.3 Konsumpcja punktu końcowego](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [🚀 Wyzwanie](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [Quiz po wykładzie](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [Przegląd i samodzielna nauka](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
- [Zadanie domowe](../../../../5-Data-Science-In-Cloud/19-Azure)
|
|
|
|
## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ds/quiz/36)
|
|
|
|
## 1. Wprowadzenie
|
|
|
|
### 1.1 Co to jest Azure ML SDK?
|
|
|
|
Data Scientist i deweloperzy AI używają Azure Machine Learning SDK do budowania i uruchamiania przepływów pracy związanych z uczeniem maszynowym za pomocą usługi Azure Machine Learning. Możesz korzystać z tej usługi w dowolnym środowisku Python, w tym Jupyter Notebooks, Visual Studio Code lub ulubionym IDE dla Pythona.
|
|
|
|
Kluczowe obszary SDK obejmują:
|
|
|
|
- Eksplorację, przygotowanie i zarządzanie cyklem życia zbiorów danych używanych w eksperymentach uczenia maszynowego.
|
|
- Zarządzanie zasobami chmurowymi w celu monitorowania, logowania i organizowania eksperymentów uczenia maszynowego.
|
|
- Trenowanie modeli lokalnie lub z wykorzystaniem zasobów chmurowych, w tym przyspieszonego trenowania modeli na GPU.
|
|
- Korzystanie z automatycznego uczenia maszynowego, które przyjmuje parametry konfiguracji i dane treningowe. Automatycznie iteruje przez algorytmy i ustawienia hiperparametrów, aby znaleźć najlepszy model do przewidywań.
|
|
- Wdrażanie usług internetowych w celu przekształcenia wytrenowanych modeli w usługi RESTful, które mogą być używane w dowolnej aplikacji.
|
|
|
|
[Dowiedz się więcej o Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109)
|
|
|
|
W [poprzedniej lekcji](../18-Low-Code/README.md) zobaczyliśmy, jak trenować, wdrażać i korzystać z modelu w sposób Low code/No code. Użyliśmy zbioru danych dotyczących niewydolności serca, aby wygenerować model przewidywania niewydolności serca. W tej lekcji zrobimy dokładnie to samo, ale używając Azure Machine Learning SDK.
|
|
|
|

|
|
|
|
### 1.2 Projekt przewidywania niewydolności serca i wprowadzenie do zbioru danych
|
|
|
|
Sprawdź [tutaj](../18-Low-Code/README.md) wprowadzenie do projektu przewidywania niewydolności serca i zbioru danych.
|
|
|
|
## 2. Trenowanie modelu za pomocą Azure ML SDK
|
|
### 2.1 Tworzenie przestrzeni roboczej Azure ML
|
|
|
|
Dla uproszczenia będziemy pracować w notatniku Jupyter. Oznacza to, że masz już przestrzeń roboczą i instancję obliczeniową. Jeśli masz już przestrzeń roboczą, możesz przejść bezpośrednio do sekcji 2.3 Tworzenie notatnika.
|
|
|
|
Jeśli nie, postępuj zgodnie z instrukcjami w sekcji **2.1 Tworzenie przestrzeni roboczej Azure ML** w [poprzedniej lekcji](../18-Low-Code/README.md), aby utworzyć przestrzeń roboczą.
|
|
|
|
### 2.2 Tworzenie instancji obliczeniowej
|
|
|
|
W [przestrzeni roboczej Azure ML](https://ml.azure.com/), którą utworzyliśmy wcześniej, przejdź do menu obliczeń, gdzie zobaczysz różne dostępne zasoby obliczeniowe.
|
|
|
|

|
|
|
|
Stwórz instancję obliczeniową, aby uruchomić notatnik Jupyter.
|
|
1. Kliknij przycisk + Nowy.
|
|
2. Nadaj nazwę swojej instancji obliczeniowej.
|
|
3. Wybierz opcje: CPU lub GPU, rozmiar maszyny wirtualnej i liczbę rdzeni.
|
|
4. Kliknij przycisk Utwórz.
|
|
|
|
Gratulacje, właśnie stworzyłeś instancję obliczeniową! Użyjemy tej instancji do stworzenia notatnika w sekcji [Tworzenie Notatników](../../../../5-Data-Science-In-Cloud/19-Azure).
|
|
|
|
### 2.3 Ładowanie zbioru danych
|
|
Jeśli jeszcze nie załadowałeś zbioru danych, odwołaj się do sekcji **2.3 Ładowanie zbioru danych** w [poprzedniej lekcji](../18-Low-Code/README.md).
|
|
|
|
### 2.4 Tworzenie Notatników
|
|
|
|
> **_UWAGA:_** W następnym kroku możesz stworzyć nowy notatnik od podstaw lub załadować [notatnik, który stworzyliśmy](../../../../5-Data-Science-In-Cloud/19-Azure/notebook.ipynb) w Azure ML Studio. Aby go załadować, po prostu kliknij menu "Notebook" i załaduj notatnik.
|
|
|
|
Notatniki są bardzo ważnym elementem procesu data science. Mogą być używane do przeprowadzania eksploracyjnej analizy danych (EDA), wywoływania klastra obliczeniowego w celu trenowania modelu, wywoływania klastra inferencyjnego w celu wdrożenia punktu końcowego.
|
|
|
|
Aby stworzyć notatnik, potrzebujemy węzła obliczeniowego, który obsługuje instancję notatnika Jupyter. Wróć do [przestrzeni roboczej Azure ML](https://ml.azure.com/) i kliknij Instancje obliczeniowe. Na liście instancji obliczeniowych powinieneś zobaczyć [instancję obliczeniową, którą stworzyliśmy wcześniej](../../../../5-Data-Science-In-Cloud/19-Azure).
|
|
|
|
1. W sekcji Aplikacje kliknij opcję Jupyter.
|
|
2. Zaznacz pole "Tak, rozumiem" i kliknij przycisk Kontynuuj.
|
|

|
|
3. Powinno to otworzyć nową kartę przeglądarki z instancją notatnika Jupyter. Kliknij przycisk "Nowy", aby stworzyć notatnik.
|
|
|
|

|
|
|
|
Teraz, gdy mamy notatnik, możemy rozpocząć trenowanie modelu za pomocą Azure ML SDK.
|
|
|
|
### 2.5 Trenowanie modelu
|
|
|
|
Przede wszystkim, jeśli masz jakiekolwiek wątpliwości, odwołaj się do [dokumentacji Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Zawiera ona wszystkie niezbędne informacje, aby zrozumieć moduły, które zobaczymy w tej lekcji.
|
|
|
|
#### 2.5.1 Konfiguracja przestrzeni roboczej, eksperymentu, klastra obliczeniowego i zbioru danych
|
|
|
|
Musisz załadować `workspace` z pliku konfiguracyjnego za pomocą następującego kodu:
|
|
|
|
```python
|
|
from azureml.core import Workspace
|
|
ws = Workspace.from_config()
|
|
```
|
|
|
|
To zwraca obiekt typu `Workspace`, który reprezentuje przestrzeń roboczą. Następnie musisz stworzyć `experiment` za pomocą następującego kodu:
|
|
|
|
```python
|
|
from azureml.core import Experiment
|
|
experiment_name = 'aml-experiment'
|
|
experiment = Experiment(ws, experiment_name)
|
|
```
|
|
Aby uzyskać lub stworzyć eksperyment w przestrzeni roboczej, należy odwołać się do eksperymentu za pomocą jego nazwy. Nazwa eksperymentu musi mieć od 3 do 36 znaków, zaczynać się od litery lub cyfry i może zawierać tylko litery, cyfry, podkreślenia i myślniki. Jeśli eksperyment nie zostanie znaleziony w przestrzeni roboczej, zostanie utworzony nowy eksperyment.
|
|
|
|
Teraz musisz stworzyć klaster obliczeniowy do trenowania za pomocą następującego kodu. Zauważ, że ten krok może zająć kilka minut.
|
|
|
|
```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]
|
|
```
|
|
|
|
Możesz uzyskać zbiór danych z przestrzeni roboczej, używając nazwy zbioru danych w następujący sposób:
|
|
|
|
```python
|
|
dataset = ws.datasets['heart-failure-records']
|
|
df = dataset.to_pandas_dataframe()
|
|
df.describe()
|
|
```
|
|
#### 2.5.2 Konfiguracja AutoML i trenowanie
|
|
|
|
Aby skonfigurować AutoML, użyj klasy [AutoMLConfig](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109).
|
|
|
|
Jak opisano w dokumentacji, istnieje wiele parametrów, z którymi można eksperymentować. W tym projekcie użyjemy następujących parametrów:
|
|
|
|
- `experiment_timeout_minutes`: Maksymalny czas (w minutach), przez jaki eksperyment może być uruchamiany, zanim zostanie automatycznie zatrzymany, a wyniki automatycznie udostępnione.
|
|
- `max_concurrent_iterations`: Maksymalna liczba równoczesnych iteracji treningowych dozwolona dla eksperymentu.
|
|
- `primary_metric`: Główny wskaźnik używany do określenia statusu eksperymentu.
|
|
- `compute_target`: Cel obliczeniowy Azure Machine Learning, na którym ma być uruchomiony eksperyment AutoML.
|
|
- `task`: Typ zadania do wykonania. Wartości mogą być 'classification', 'regression' lub 'forecasting', w zależności od rodzaju problemu AutoML do rozwiązania.
|
|
- `training_data`: Dane treningowe używane w eksperymencie. Powinny zawierać zarówno cechy treningowe, jak i kolumnę etykiet (opcjonalnie kolumnę wag próbek).
|
|
- `label_column_name`: Nazwa kolumny etykiet.
|
|
- `path`: Pełna ścieżka do folderu projektu Azure Machine Learning.
|
|
- `enable_early_stopping`: Czy włączyć wczesne zakończenie, jeśli wynik nie poprawia się w krótkim okresie.
|
|
- `featurization`: Wskaźnik, czy krok featuryzacji powinien być wykonywany automatycznie, czy nie, lub czy powinna być używana niestandardowa featuryzacja.
|
|
- `debug_log`: Plik logów do zapisywania informacji debugowania.
|
|
|
|
```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
|
|
)
|
|
```
|
|
Teraz, gdy konfiguracja jest ustawiona, możesz wytrenować model za pomocą następującego kodu. Ten krok może zająć do godziny, w zależności od rozmiaru klastra.
|
|
|
|
```python
|
|
remote_run = experiment.submit(automl_config)
|
|
```
|
|
Możesz uruchomić widżet RunDetails, aby zobaczyć różne eksperymenty.
|
|
```python
|
|
from azureml.widgets import RunDetails
|
|
RunDetails(remote_run).show()
|
|
```
|
|
## 3. Wdrażanie modelu i korzystanie z punktu końcowego za pomocą Azure ML SDK
|
|
|
|
### 3.1 Zapisywanie najlepszego modelu
|
|
|
|
Obiekt `remote_run` jest typu [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Ten obiekt zawiera metodę `get_output()`, która zwraca najlepszy przebieg i odpowiadający mu wytrenowany model.
|
|
|
|
```python
|
|
best_run, fitted_model = remote_run.get_output()
|
|
```
|
|
Możesz zobaczyć parametry użyte dla najlepszego modelu, po prostu drukując `fitted_model`, oraz zobaczyć właściwości najlepszego modelu, używając metody [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()
|
|
```
|
|
|
|
Teraz zarejestruj model za pomocą metody [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 Wdrażanie modelu
|
|
|
|
Gdy najlepszy model zostanie zapisany, możemy go wdrożyć za pomocą klasy [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109). InferenceConfig reprezentuje ustawienia konfiguracji dla niestandardowego środowiska używanego do wdrożenia. Klasa [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) reprezentuje model uczenia maszynowego wdrożony jako punkt końcowy usługi internetowej na Azure Container Instances. Wdrożona usługa jest zrównoważonym obciążeniem, punktem końcowym HTTP z interfejsem REST API. Możesz wysyłać dane do tego API i otrzymywać przewidywania zwracane przez model.
|
|
|
|
Model jest wdrażany za pomocą metody [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)
|
|
```
|
|
Ten krok powinien zająć kilka minut.
|
|
|
|
### 3.3 Konsumpcja punktu końcowego
|
|
|
|
Możesz korzystać z punktu końcowego, tworząc przykładowe dane wejściowe:
|
|
|
|
```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))
|
|
```
|
|
A następnie możesz wysłać te dane wejściowe do swojego modelu w celu przewidywania:
|
|
```python
|
|
response = aci_service.run(input_data=test_sample)
|
|
response
|
|
```
|
|
Powinno to zwrócić `'{"result": [false]}'`. Oznacza to, że dane pacjenta, które wysłaliśmy do punktu końcowego, wygenerowały predykcję `false`, co oznacza, że ta osoba prawdopodobnie nie jest zagrożona zawałem serca.
|
|
|
|
Gratulacje! Właśnie skorzystałeś z modelu wdrożonego i wytrenowanego na Azure ML za pomocą Azure ML SDK!
|
|
|
|
> **_NOTE:_** Po zakończeniu projektu nie zapomnij usunąć wszystkich zasobów.
|
|
|
|
## 🚀 Wyzwanie
|
|
|
|
Jest wiele innych rzeczy, które możesz zrobić za pomocą SDK, niestety nie możemy omówić ich wszystkich w tej lekcji. Ale dobra wiadomość: nauczenie się, jak przeszukiwać dokumentację SDK, może zaprowadzić Cię daleko na własną rękę. Sprawdź dokumentację Azure ML SDK i znajdź klasę `Pipeline`, która pozwala tworzyć potoki. Potok to zbiór kroków, które można wykonać jako przepływ pracy.
|
|
|
|
**Wskazówka:** Przejdź do [dokumentacji SDK](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) i wpisz słowa kluczowe w pasku wyszukiwania, takie jak "Pipeline". Powinieneś znaleźć klasę `azureml.pipeline.core.Pipeline` w wynikach wyszukiwania.
|
|
|
|
## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ds/quiz/37)
|
|
|
|
## Przegląd i samodzielna nauka
|
|
|
|
W tej lekcji nauczyłeś się, jak wytrenować, wdrożyć i wykorzystać model do przewidywania ryzyka niewydolności serca za pomocą Azure ML SDK w chmurze. Sprawdź tę [dokumentację](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) dla dalszych informacji o Azure ML SDK. Spróbuj stworzyć własny model za pomocą Azure ML SDK.
|
|
|
|
## Zadanie
|
|
|
|
[Projekt Data Science z użyciem Azure ML SDK](assignment.md)
|
|
|
|
---
|
|
|
|
**Zastrzeżenie**:
|
|
Ten dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za źródło autorytatywne. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia. |