# Podatkovna znanost v oblaku: Način "Azure ML SDK" |![ Sketchnote avtorja [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/19-DataScience-Cloud.png)| |:---:| | Podatkovna znanost v oblaku: Azure ML SDK - _Sketchnote avtorja [@nitya](https://twitter.com/nitya)_ | Kazalo: - [Podatkovna znanost v oblaku: Način "Azure ML SDK"](../../../../5-Data-Science-In-Cloud/19-Azure) - [Predhodni kviz](../../../../5-Data-Science-In-Cloud/19-Azure) - [1. Uvod](../../../../5-Data-Science-In-Cloud/19-Azure) - [1.1 Kaj je Azure ML SDK?](../../../../5-Data-Science-In-Cloud/19-Azure) - [1.2 Predstavitev projekta in podatkovne zbirke za napovedovanje srčnega popuščanja](../../../../5-Data-Science-In-Cloud/19-Azure) - [2. Učenje modela z Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) - [2.1 Ustvarjanje delovnega prostora Azure ML](../../../../5-Data-Science-In-Cloud/19-Azure) - [2.2 Ustvarjanje računalniškega primerka](../../../../5-Data-Science-In-Cloud/19-Azure) - [2.3 Nalaganje podatkovne zbirke](../../../../5-Data-Science-In-Cloud/19-Azure) - [2.4 Ustvarjanje beležk](../../../../5-Data-Science-In-Cloud/19-Azure) - [2.5 Učenje modela](../../../../5-Data-Science-In-Cloud/19-Azure) - [2.5.1 Nastavitev delovnega prostora, eksperimenta, računalniškega grozda in podatkovne zbirke](../../../../5-Data-Science-In-Cloud/19-Azure) - [2.5.2 Konfiguracija AutoML in učenje](../../../../5-Data-Science-In-Cloud/19-Azure) - [3. Implementacija modela in uporaba končne točke z Azure ML SDK](../../../../5-Data-Science-In-Cloud/19-Azure) - [3.1 Shranjevanje najboljšega modela](../../../../5-Data-Science-In-Cloud/19-Azure) - [3.2 Implementacija modela](../../../../5-Data-Science-In-Cloud/19-Azure) - [3.3 Uporaba končne točke](../../../../5-Data-Science-In-Cloud/19-Azure) - [🚀 Izziv](../../../../5-Data-Science-In-Cloud/19-Azure) - [Zaključni kviz](../../../../5-Data-Science-In-Cloud/19-Azure) - [Pregled in samostojno učenje](../../../../5-Data-Science-In-Cloud/19-Azure) - [Naloga](../../../../5-Data-Science-In-Cloud/19-Azure) ## [Predhodni kviz](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/36) ## 1. Uvod ### 1.1 Kaj je Azure ML SDK? Podatkovni znanstveniki in razvijalci umetne inteligence uporabljajo Azure Machine Learning SDK za gradnjo in izvajanje delovnih tokov strojnega učenja z uporabo storitve Azure Machine Learning. S storitvijo lahko komunicirate v katerem koli okolju Python, vključno z Jupyter Notebooks, Visual Studio Code ali vašim najljubšim IDE za Python. Ključna področja SDK vključujejo: - Raziskovanje, pripravo in upravljanje življenjskega cikla podatkovnih zbirk, uporabljenih v eksperimentih strojnega učenja. - Upravljanje oblačnih virov za spremljanje, beleženje in organizacijo eksperimentov strojnega učenja. - Učenje modelov lokalno ali z uporabo oblačnih virov, vključno z GPU-pospešenim učenjem modelov. - Uporabo avtomatiziranega strojnega učenja, ki sprejema konfiguracijske parametre in podatke za učenje. Samodejno preizkuša algoritme in nastavitve hiperparametrov, da najde najboljši model za napovedovanje. - Implementacijo spletnih storitev za pretvorbo naučenih modelov v RESTful storitve, ki jih je mogoče uporabiti v katerikoli aplikaciji. [Več o Azure Machine Learning SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) V [prejšnji lekciji](../18-Low-Code/README.md) smo videli, kako naučiti, implementirati in uporabiti model na način z malo ali brez kode. Uporabili smo podatkovno zbirko o srčnem popuščanju za ustvarjanje modela za napovedovanje srčnega popuščanja. V tej lekciji bomo naredili enako, vendar z uporabo Azure Machine Learning SDK. ![shema-projekta](../../../../translated_images/project-schema.420e56d495624541eaecf2b737f138c86fb7d8162bb1c0bf8783c350872ffc4d.sl.png) ### 1.2 Predstavitev projekta in podatkovne zbirke za napovedovanje srčnega popuščanja Oglejte si [tukaj](../18-Low-Code/README.md) predstavitev projekta in podatkovne zbirke za napovedovanje srčnega popuščanja. ## 2. Učenje modela z Azure ML SDK ### 2.1 Ustvarjanje delovnega prostora Azure ML Za enostavnost bomo delali v Jupyter Notebooku. To pomeni, da že imate delovni prostor in računalniški primerek. Če že imate delovni prostor, lahko neposredno preskočite na razdelek 2.3 Ustvarjanje beležk. Če ne, sledite navodilom v razdelku **2.1 Ustvarjanje delovnega prostora Azure ML** v [prejšnji lekciji](../18-Low-Code/README.md) za ustvarjanje delovnega prostora. ### 2.2 Ustvarjanje računalniškega primerka V [delovnem prostoru Azure ML](https://ml.azure.com/), ki smo ga ustvarili prej, pojdite v meni za računalniške vire, kjer boste videli različne razpoložljive računalniške vire. ![računalniški-primer-1](../../../../translated_images/compute-instance-1.dba347cb199ca4996b3e3d649295ed95626ba481479d3986557b9b98e76d8816.sl.png) Ustvarimo računalniški primerek za zagotavljanje Jupyter Notebooka. 1. Kliknite na gumb + New. 2. Dajte ime svojemu računalniškemu primerku. 3. Izberite možnosti: CPU ali GPU, velikost VM in število jeder. 4. Kliknite na gumb Create. Čestitamo, pravkar ste ustvarili računalniški primerek! Ta primerek bomo uporabili za ustvarjanje beležke v razdelku [Ustvarjanje beležk](../../../../5-Data-Science-In-Cloud/19-Azure). ### 2.3 Nalaganje podatkovne zbirke Če še niste naložili podatkovne zbirke, si oglejte razdelek **2.3 Nalaganje podatkovne zbirke** v [prejšnji lekciji](../18-Low-Code/README.md). ### 2.4 Ustvarjanje beležk > **_OPOMBA:_** Za naslednji korak lahko ustvarite novo beležko iz nič ali pa naložite [beležko, ki smo jo ustvarili](notebook.ipynb) v Azure ML Studio. Za nalaganje preprosto kliknite na meni "Notebook" in naložite beležko. Beležke so zelo pomemben del procesa podatkovne znanosti. Uporabljajo se lahko za izvedbo raziskovalne analize podatkov (EDA), klicanje računalniškega grozda za učenje modela ali klicanje grozda za sklepanje za implementacijo končne točke. Za ustvarjanje beležke potrebujemo računalniško vozlišče, ki zagotavlja instanco Jupyter Notebooka. Vrnite se v [delovni prostor Azure ML](https://ml.azure.com/) in kliknite na Računalniški primerki. Na seznamu računalniških primerkov bi morali videti [računalniški primerek, ki smo ga ustvarili prej](../../../../5-Data-Science-In-Cloud/19-Azure). 1. V razdelku Aplikacije kliknite na možnost Jupyter. 2. Označite polje "Yes, I understand" in kliknite na gumb Continue. ![beležka-1](../../../../translated_images/notebook-1.12998af7b02c83f536c11b3aeba561be16e0f05e94146600728ec64270ce1105.sl.png) 3. To bi moralo odpreti nov zavihek brskalnika z vašo instanco Jupyter Notebooka, kot je prikazano spodaj. Kliknite na gumb "New" za ustvarjanje beležke. ![beležka-2](../../../../translated_images/notebook-2.9a657c037e34f1cf26c0212f5ee9e2da8545b3e107c7682c55114e494167a8aa.sl.png) Zdaj, ko imamo beležko, lahko začnemo z učenjem modela z Azure ML SDK. ### 2.5 Učenje modela Najprej, če imate kakršen koli dvom, si oglejte [dokumentacijo Azure ML SDK](https://docs.microsoft.com/python/api/overview/azure/ml?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Vsebuje vse potrebne informacije za razumevanje modulov, ki jih bomo obravnavali v tej lekciji. #### 2.5.1 Nastavitev delovnega prostora, eksperimenta, računalniškega grozda in podatkovne zbirke Delovni prostor naložite iz konfiguracijske datoteke z naslednjo kodo: ```python from azureml.core import Workspace ws = Workspace.from_config() ``` To vrne objekt tipa `Workspace`, ki predstavlja delovni prostor. Nato morate ustvariti `eksperiment` z naslednjo kodo: ```python from azureml.core import Experiment experiment_name = 'aml-experiment' experiment = Experiment(ws, experiment_name) ``` Za pridobitev ali ustvarjanje eksperimenta iz delovnega prostora zahtevate eksperiment z imenom eksperimenta. Ime eksperimenta mora imeti od 3 do 36 znakov, se začeti s črko ali številko in lahko vsebuje le črke, številke, podčrtaje in vezaje. Če eksperiment ni najden v delovnem prostoru, se ustvari nov eksperiment. Zdaj morate ustvariti računalniški grozd za učenje z naslednjo kodo. Upoštevajte, da lahko ta korak traja nekaj 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] ``` Podatkovno zbirko lahko pridobite iz delovnega prostora z uporabo imena podatkovne zbirke na naslednji način: ```python dataset = ws.datasets['heart-failure-records'] df = dataset.to_pandas_dataframe() df.describe() ``` #### 2.5.2 Konfiguracija AutoML in učenje Za nastavitev konfiguracije AutoML uporabite [razred AutoMLConfig](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.automlconfig(class)?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Kot je opisano v dokumentaciji, je na voljo veliko parametrov, s katerimi se lahko igrate. Za ta projekt bomo uporabili naslednje parametre: - `experiment_timeout_minutes`: Najdaljši čas (v minutah), ki je dovoljen za izvajanje eksperimenta, preden se samodejno ustavi in rezultati postanejo na voljo. - `max_concurrent_iterations`: Največje število hkratnih iteracij učenja, dovoljenih za eksperiment. - `primary_metric`: Primarna metrika, ki se uporablja za določanje statusa eksperimenta. - `compute_target`: Ciljni računalniški vir Azure Machine Learning za izvajanje eksperimenta avtomatiziranega strojnega učenja. - `task`: Vrsta naloge, ki jo je treba izvesti. Vrednosti so lahko 'classification', 'regression' ali 'forecasting', odvisno od vrste problema avtomatiziranega strojnega učenja. - `training_data`: Podatki za učenje, ki se uporabljajo v eksperimentu. Vsebujejo tako značilnosti za učenje kot stolpec z oznakami (po želji tudi stolpec z utežmi vzorcev). - `label_column_name`: Ime stolpca z oznakami. - `path`: Celotna pot do mape projekta Azure Machine Learning. - `enable_early_stopping`: Ali omogočiti zgodnjo zaustavitev, če se rezultat kratkoročno ne izboljšuje. - `featurization`: Indikator, ali naj se korak featurizacije izvede samodejno ali ne, ali naj se uporabi prilagojena featurizacija. - `debug_log`: Dnevniška datoteka za zapisovanje informacij za odpravljanje napak. ```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 ) ``` Zdaj, ko imate konfiguracijo nastavljeno, lahko model naučite z naslednjo kodo. Ta korak lahko traja do ene ure, odvisno od velikosti vašega grozda. ```python remote_run = experiment.submit(automl_config) ``` Za prikaz različnih eksperimentov lahko zaženete pripomoček RunDetails. ```python from azureml.widgets import RunDetails RunDetails(remote_run).show() ``` ## 3. Implementacija modela in uporaba končne točke z Azure ML SDK ### 3.1 Shranjevanje najboljšega modela `remote_run` je objekt tipa [AutoMLRun](https://docs.microsoft.com/python/api/azureml-train-automl-client/azureml.train.automl.run.automlrun?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109). Ta objekt vsebuje metodo `get_output()`, ki vrne najboljši zagon in ustrezni naučeni model. ```python best_run, fitted_model = remote_run.get_output() ``` Parametre, uporabljene za najboljši model, si lahko ogledate tako, da preprosto natisnete `fitted_model`, lastnosti najboljšega modela pa z metodo [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() ``` Zdaj registrirajte model z metodo [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 Implementacija modela Ko je najboljši model shranjen, ga lahko implementiramo z razredom [InferenceConfig](https://docs.microsoft.com/python/api/azureml-core/azureml.core.model.inferenceconfig?view=azure-ml-py?ocid=AID3041109). InferenceConfig predstavlja nastavitve konfiguracije za prilagojeno okolje, uporabljeno za implementacijo. Razred [AciWebservice](https://docs.microsoft.com/python/api/azureml-core/azureml.core.webservice.aciwebservice?view=azure-ml-py) predstavlja model strojnega učenja, implementiran kot spletna storitev na kontejnerskih primerkih Azure. Implementirana storitev je uravnotežena HTTP-končna točka z REST API-jem. Temu API-ju lahko pošljete podatke in prejmete napoved, ki jo vrne model. Model je implementiran z metodo [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) ``` Ta korak lahko traja nekaj minut. ### 3.3 Uporaba končne točke Končno točko uporabite tako, da ustvarite vzorčni vhod: ```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)) ``` Nato lahko ta vhod pošljete svojemu modelu za napovedovanje: ```python response = aci_service.run(input_data=test_sample) response ``` To bi moralo vrniti `'{"result": [false]}'`. To pomeni, da je vnos pacienta, ki smo ga poslali na končno točko, ustvaril napoved `false`, kar pomeni, da ta oseba verjetno ne bo doživela srčnega napada. Čestitke! Pravkar ste uporabili model, ki je bil razporejen in treniran na Azure ML z uporabo Azure ML SDK! > **_NOTE:_** Ko zaključite projekt, ne pozabite izbrisati vseh virov. ## 🚀 Izziv Obstaja veliko drugih stvari, ki jih lahko naredite prek SDK-ja, žal pa jih v tej lekciji ne moremo obravnavati vseh. Ampak dobra novica je, da vas lahko sposobnost hitrega pregledovanja dokumentacije SDK popelje daleč. Oglejte si dokumentacijo Azure ML SDK in poiščite razred `Pipeline`, ki vam omogoča ustvarjanje cevovodov. Cevovod je zbirka korakov, ki jih je mogoče izvesti kot delovni tok. **NAMIG:** Obiščite [SDK dokumentacijo](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) in v iskalno vrstico vnesite ključne besede, kot je "Pipeline". Med rezultati iskanja bi morali najti razred `azureml.pipeline.core.Pipeline`. ## [Kvizi po predavanju](https://purple-hill-04aebfb03.1.azurestaticapps.net/quiz/37) ## Pregled in samostojno učenje V tej lekciji ste se naučili, kako trenirati, razporediti in uporabiti model za napovedovanje tveganja srčnega popuščanja z uporabo Azure ML SDK v oblaku. Oglejte si to [dokumentacijo](https://docs.microsoft.com/python/api/overview/azure/ml/?view=azure-ml-py?WT.mc_id=academic-77958-bethanycheum&ocid=AID3041109) za dodatne informacije o Azure ML SDK. Poskusite ustvariti svoj model z uporabo Azure ML SDK. ## Naloga [Projekt podatkovne znanosti z uporabo Azure ML SDK](assignment.md) --- **Omejitev odgovornosti**: Ta dokument je bil preveden z uporabo storitve za strojno prevajanje [Co-op Translator](https://github.com/Azure/co-op-translator). Čeprav si prizadevamo za natančnost, vas prosimo, da upoštevate, da lahko avtomatizirani prevodi vsebujejo napake ali netočnosti. Izvirni dokument v njegovem maternem jeziku je treba obravnavati kot avtoritativni vir. Za ključne informacije priporočamo profesionalni človeški prevod. Ne prevzemamo odgovornosti za morebitne nesporazume ali napačne razlage, ki izhajajo iz uporabe tega prevoda.