|
|
1 year ago | |
|---|---|---|
| .. | ||
| solution | 1 year ago | |
| README.md | 1 year ago | |
| assignment.md | 1 year ago | |
| notebook.ipynb | 1 year ago | |
README.md
Podatkovna znanost v oblaku: Način "Azure ML SDK"
![]() |
|---|
| Podatkovna znanost v oblaku: Azure ML SDK - Sketchnote by @nitya |
Kazalo:
- Podatkovna znanost v oblaku: Način "Azure ML SDK"
Predhodni kviz
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 procesov 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 vaših podatkovnih nizov, uporabljenih v eksperimentih strojnega učenja.
- Upravljanje oblačnih virov za spremljanje, beleženje in organizacijo vaših 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 iterira skozi algoritme in nastavitve hiperparametrov, da najde najboljši model za napovedovanje.
- Namestitev spletnih storitev za pretvorbo vaših naučenih modelov v RESTful storitve, ki jih je mogoče uporabiti v katerikoli aplikaciji.
Več o Azure Machine Learning SDK
V prejšnji lekciji smo videli, kako naučiti, namestiti in uporabiti model na način z malo ali brez kode. Uporabili smo podatkovni niz srčnega popuščanja za generiranje modela napovedovanja srčnega popuščanja. V tej lekciji bomo naredili popolnoma enako, vendar z uporabo Azure Machine Learning SDK.
1.2 Projekt napovedovanja srčnega popuščanja in predstavitev podatkov
Oglejte si tukaj predstavitev projekta napovedovanja srčnega popuščanja in podatkovnega niza.
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 primer. Če že imate delovni prostor, lahko neposredno skočite na razdelek 2.3 Ustvarjanje beležk.
Če ga še nimate, sledite navodilom v razdelku 2.1 Ustvarjanje delovnega prostora Azure ML v prejšnji lekciji za ustvarjanje delovnega prostora.
2.2 Ustvarjanje računalniškega primerka
V delovnem prostoru Azure ML, ki smo ga ustvarili prej, pojdite v meni za računalniške vire, kjer boste videli različne razpoložljive računalniške vire.
Ustvarimo računalniški primer za pripravo Jupyter Notebooka.
- Kliknite gumb + New.
- Dajte ime svojemu računalniškemu primerku.
- Izberite možnosti: CPU ali GPU, velikost VM in število jeder.
- Kliknite gumb Create.
Čestitamo, pravkar ste ustvarili računalniški primer! Ta primer bomo uporabili za ustvarjanje beležke v razdelku Ustvarjanje beležk.
2.3 Nalaganje podatkov
Če še niste naložili podatkovnega niza, si oglejte razdelek 2.3 Nalaganje podatkov v prejšnji lekciji.
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 v Azure ML Studio. Za nalaganje preprosto kliknite 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 namestitev končne točke.
Za ustvarjanje beležke potrebujemo računalniško vozlišče, ki izvaja instanco Jupyter Notebooka. Vrnite se v delovni prostor Azure ML in kliknite na Računalniški primerki. Na seznamu računalniških primerkov bi morali videti računalniški primer, ki smo ga ustvarili prej.
- V razdelku Applications kliknite možnost Jupyter.
- Označite polje "Yes, I understand" in kliknite gumb Continue.
- To bi moralo odpreti nov zavihek brskalnika z vašo instanco Jupyter Notebooka, kot je prikazano. Kliknite gumb "New" za ustvarjanje beležke.
Zdaj, ko imamo beležko, lahko začnemo učiti model z Azure ML SDK.
2.5 Učenje modela
Najprej, če imate kakršne koli dvome, si oglejte dokumentacijo Azure ML SDK. 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 podatkov
Delovni prostor morate naložiti iz konfiguracijske datoteke z naslednjo kodo:
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:
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 uporabo imena eksperimenta. Ime eksperimenta mora biti dolgo 3-36 znakov, začeti se mora 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.
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]
Podatkovni niz lahko pridobite iz delovnega prostora z uporabo imena podatkovnega niza na naslednji način:
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.
Kot je opisano v dokumentaciji, obstaja 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 dovoljenih sočasnih iteracij učenja za eksperiment.primary_metric: Primarna metrika, ki se uporablja za določanje statusa eksperimenta.compute_target: Cilj računalniškega učenja Azure Machine Learning za izvajanje eksperimenta avtomatiziranega strojnega učenja.task: Vrsta naloge za izvajanje. 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 možnosti stolpec z utežmi vzorcev).label_column_name: Ime stolpca z oznakami.path: Polna pot do mape projekta Azure Machine Learning.enable_early_stopping: Ali omogočiti zgodnjo prekinitev, č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 o odpravljanju napak.
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 naučite model z naslednjo kodo. Ta korak lahko traja do ene ure, odvisno od velikosti vašega grozda.
remote_run = experiment.submit(automl_config)
Za prikaz različnih eksperimentov lahko zaženete pripomoček RunDetails.
from azureml.widgets import RunDetails
RunDetails(remote_run).show()
3. Namestitev modela in uporaba končne točke z Azure ML SDK
3.1 Shranjevanje najboljšega modela
remote_run je objekt tipa AutoMLRun. Ta objekt vsebuje metodo get_output(), ki vrne najboljši zagon in ustrezni naučeni model.
best_run, fitted_model = remote_run.get_output()
Parametre, uporabljene za najboljši model, lahko vidite tako, da preprosto natisnete fitted_model, lastnosti najboljšega modela pa si ogledate z uporabo metode get_properties().
best_run.get_properties()
Zdaj registrirajte model z metodo register_model.
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 Namestitev modela
Ko je najboljši model shranjen, ga lahko namestimo z razredom InferenceConfig. InferenceConfig predstavlja nastavitve konfiguracije za prilagojeno okolje, uporabljeno za namestitev. Razred AciWebservice predstavlja model strojnega učenja, nameščen kot spletna storitev na končni točki na Azure Container Instances. Nameščena 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 nameščen z metodo deploy.
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:
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:
response = aci_service.run(input_data=test_sample)
response
To bi moralo vrniti '{"result": [false]}'. To pomeni, da je vhod 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. Dobra novica je, da vas lahko sposobnost hitrega pregledovanja dokumentacije SDK-ja pripelje zelo 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 dokumentacijo SDK in v iskalno vrstico vnesite ključne besede, kot je "Pipeline". V rezultatih iskanja bi morali najti razred azureml.pipeline.core.Pipeline.
Kvizi po predavanju
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 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
Omejitev odgovornosti:
Ta dokument je bil preveden z uporabo storitve za prevajanje z umetno inteligenco 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 morebitna nesporazumevanja ali napačne razlage, ki bi nastale zaradi uporabe tega prevoda.
