28 KiB
Επιστήμη Δεδομένων στο Cloud: Ο τρόπος "Azure ML SDK"
![]() |
|---|
| Επιστήμη Δεδομένων στο Cloud: Azure ML SDK - Σχεδίαση από @nitya |
Πίνακας περιεχομένων:
- Επιστήμη Δεδομένων στο Cloud: Ο τρόπος "Azure ML SDK"
Προ-Διάλεξη Κουίζ
1. Εισαγωγή
1.1 Τι είναι το Azure ML SDK;
Οι επιστήμονες δεδομένων και οι προγραμματιστές τεχνητής νοημοσύνης χρησιμοποιούν το Azure Machine Learning SDK για να δημιουργήσουν και να εκτελέσουν ροές εργασίας μηχανικής μάθησης με την υπηρεσία Azure Machine Learning. Μπορείτε να αλληλεπιδράσετε με την υπηρεσία σε οποιοδήποτε περιβάλλον Python, συμπεριλαμβανομένων των Jupyter Notebooks, Visual Studio Code ή του αγαπημένου σας IDE Python.
Βασικοί τομείς του SDK περιλαμβάνουν:
- Εξερεύνηση, προετοιμασία και διαχείριση του κύκλου ζωής των συνόλων δεδομένων που χρησιμοποιούνται σε πειράματα μηχανικής μάθησης.
- Διαχείριση πόρων στο cloud για παρακολούθηση, καταγραφή και οργάνωση των πειραμάτων μηχανικής μάθησης.
- Εκπαίδευση μοντέλων είτε τοπικά είτε με χρήση πόρων cloud, συμπεριλαμβανομένης της επιτάχυνσης εκπαίδευσης μοντέλων GPU.
- Χρήση αυτοματοποιημένης μηχανικής μάθησης, η οποία δέχεται παραμέτρους ρύθμισης και δεδομένα εκπαίδευσης. Αυτόματα επαναλαμβάνει αλγορίθμους και ρυθμίσεις υπερπαραμέτρων για να βρει το καλύτερο μοντέλο για την εκτέλεση προβλέψεων.
- Ανάπτυξη web υπηρεσιών για τη μετατροπή των εκπαιδευμένων μοντέλων σας σε RESTful υπηρεσίες που μπορούν να καταναλωθούν σε οποιαδήποτε εφαρμογή.
Μάθετε περισσότερα για το Azure Machine Learning SDK
Στο προηγούμενο μάθημα, είδαμε πώς να εκπαιδεύσουμε, να αναπτύξουμε και να καταναλώσουμε ένα μοντέλο με τρόπο Low code/No code. Χρησιμοποιήσαμε το σύνολο δεδομένων της Καρδιακής Ανεπάρκειας για να δημιουργήσουμε και ένα μοντέλο πρόβλεψης καρδιακής ανεπάρκειας. Σε αυτό το μάθημα, θα κάνουμε ακριβώς το ίδιο πράγμα αλλά χρησιμοποιώντας το Azure Machine Learning SDK.
1.2 Έργο πρόβλεψης καρδιακής ανεπάρκειας και εισαγωγή δεδομένων
Δείτε εδώ την εισαγωγή στο έργο πρόβλεψης καρδιακής ανεπάρκειας και το σύνολο δεδομένων.
2. Εκπαίδευση μοντέλου με το Azure ML SDK
2.1 Δημιουργία χώρου εργασίας Azure ML
Για απλότητα, θα εργαστούμε σε ένα jupyter notebook. Αυτό συνεπάγεται ότι ήδη διαθέτετε έναν χώρο εργασίας και μια υπολογιστική μονάδα. Αν έχετε ήδη χώρο εργασίας, μπορείτε να μεταβείτε απευθείας στο τμήμα 2.3 Δημιουργία σημειωματίου.
Αν όχι, ακολουθήστε τις οδηγίες στην ενότητα 2.1 Δημιουργία χώρου εργασίας Azure ML στο προηγούμενο μάθημα για να δημιουργήσετε έναν χώρο εργασίας.
2.2 Δημιουργία υπολογιστικής μονάδας
Στο Azure ML workspace που δημιουργήσαμε νωρίτερα, μεταβείτε στο μενού υπολογιστών και θα δείτε τους διάφορους διαθέσιμους πόρους υπολογισμού
Ας δημιουργήσουμε μια υπολογιστική μονάδα για να εφοδιάσουμε ένα jupyter notebook.
- Κάντε κλικ στο κουμπί + Νέο.
- Δώστε ένα όνομα στην υπολογιστική μονάδα σας.
- Επιλέξτε τις επιλογές σας: CPU ή GPU, μέγεθος VM και αριθμό πυρήνων.
- Πατήστε το κουμπί Δημιουργία.
Συγχαρητήρια, μόλις δημιουργήσατε μια υπολογιστική μονάδα! Θα χρησιμοποιήσουμε αυτή την υπολογιστική μονάδα για να δημιουργήσουμε ένα Σημειωματάριο στην ενότητα Δημιουργία Σημειωματίων.
2.3 Φόρτωση των δεδομένων
Ανατρέξτε στο προηγούμενο μάθημα στην ενότητα 2.3 Φόρτωση των δεδομένων αν δεν έχετε ανεβάσει ακόμα το σύνολο δεδομένων.
2.4 Δημιουργία Σημειωματίων
ΣΗΜΕΙΩΣΗ: Για το επόμενο βήμα μπορείτε είτε να δημιουργήσετε ένα νέο σημειωματάριο από την αρχή, είτε μπορείτε να ανεβάσετε το σημειωματάριο που δημιουργήσαμε στο Azure ML Studio σας. Για να το ανεβάσετε, απλώς κάντε κλικ στο μενού "Notebook" και ανεβάστε το σημειωματάριο.
Τα σημειωματάρια είναι ένα πολύ σημαντικό μέρος της διαδικασίας της επιστήμης δεδομένων. Χρησιμοποιούνται για να διεξάγουν εξερευνητική ανάλυση δεδομένων (EDA), να κάνουν κλήση σε ένα υπολογιστικό cluster για εκπαίδευση μοντέλου, να κάνουν κλήση σε ένα cluster για ανάπτυξη endpoint.
Για να δημιουργήσουμε ένα Σημειωματάριο, χρειαζόμαστε έναν κόμβο υπολογισμού που προσφέρει την υπηρεσία jupyter notebook. Επιστρέψτε στο Azure ML workspace και κάντε κλικ στις Υπολογιστικές μονάδες. Στη λίστα των υπολογιστικών μονάδων θα δείτε την υπολογιστική μονάδα που δημιουργήσαμε προηγουμένως.
- Στην ενότητα Εφαρμογές, κάντε κλικ στην επιλογή Jupyter.
- Τσεκάρετε το κουτί "Ναι, καταλαβαίνω" και πατήστε το κουμπί Συνέχεια.

- Αυτό θα ανοίξει μια νέα καρτέλα περιηγητή με την υπηρεσία jupyter notebook όπως φαίνεται. Κάντε κλικ στο κουμπί "Νέο" για να δημιουργήσετε ένα σημειωματάριο.
Τώρα που έχουμε ένα Σημειωματάριο, μπορούμε να ξεκινήσουμε την εκπαίδευση μοντέλου με το Azure ML SDK.
2.5 Εκπαίδευση μοντέλου
Πρώτα απ' όλα, αν έχετε ποτέ αμφιβολία, ανατρέξτε στην τεκμηρίωση του Azure ML SDK. Περιέχει όλες τις απαραίτητες πληροφορίες για να κατανοήσετε τα modules που θα δούμε σε αυτό το μάθημα.
2.5.1 Ρύθμιση χώρου εργασίας, πειράματος, υπολογιστικού cluster και δεδομένων
Πρέπει να φορτώσετε το workspace από το αρχείο ρυθμίσεων χρησιμοποιώντας τον ακόλουθο κώδικα:
from azureml.core import Workspace
ws = Workspace.from_config()
Αυτό επιστρέφει ένα αντικείμενο τύπου Workspace που αντιπροσωπεύει το χώρο εργασίας. Στη συνέχεια, πρέπει να δημιουργήσετε ένα experiment χρησιμοποιώντας τον ακόλουθο κώδικα:
from azureml.core import Experiment
experiment_name = 'aml-experiment'
experiment = Experiment(ws, experiment_name)
Για να λάβετε ή να δημιουργήσετε ένα πείραμα από έναν χώρο εργασίας, ζητάτε το πείραμα χρησιμοποιώντας το όνομα του πειράματος. Το όνομα του πειράματος πρέπει να είναι 3-36 χαρακτήρες, να ξεκινά με γράμμα ή αριθμό και να περιέχει μόνο γράμματα, αριθμούς, κάτω παύλες και παύλες. Αν το πείραμα δεν βρεθεί στο χώρο εργασίας, δημιουργείται ένα νέο πείραμα.
Τώρα πρέπει να δημιουργήσετε ένα υπολογιστικό cluster για την εκπαίδευση με τον ακόλουθο κώδικα. Σημειώστε ότι αυτό το βήμα μπορεί να πάρει λίγα λεπτά.
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]
Μπορείτε να πάρετε το σύνολο δεδομένων από τον χώρο εργασίας χρησιμοποιώντας το όνομα του συνόλου δεδομένων ως εξής:
dataset = ws.datasets['heart-failure-records']
df = dataset.to_pandas_dataframe()
df.describe()
2.5.2 Ρύθμιση AutoML και εκπαίδευση
Για να ορίσετε τη ρύθμιση AutoML, χρησιμοποιήστε την κλάση AutoMLConfig.
Όπως περιγράφεται στην τεκμηρίωση, υπάρχουν πολλές παράμετροι με τις οποίες μπορείτε να πειραματιστείτε. Για αυτό το έργο, θα χρησιμοποιήσουμε τις εξής παραμέτρους:
experiment_timeout_minutes: Το μέγιστο χρονικό διάστημα (σε λεπτά) που επιτρέπεται να εκτελεστεί το πείραμα πριν σταματήσει αυτόματα και γίνουν διαθέσιμα τα αποτελέσματα.max_concurrent_iterations: Ο μέγιστος αριθμός ταυτόχρονων επαναλήψεων εκπαίδευσης που επιτρέπονται για το πείραμα.primary_metric: Το κύριο μέτρο που χρησιμοποιείται για να καθοριστεί η κατάσταση του πειράματος.compute_target: Ο στόχος υπολογισμού Azure Machine Learning για την εκτέλεση του πειράματος Αυτοματοποιημένης Μηχανικής Μάθησης.task: Ο τύπος εργασίας προς εκτέλεση. Οι τιμές μπορεί να είναι 'classification', 'regression' ή 'forecasting' ανάλογα με τον τύπο του προβλήματος αυτοματοποιημένης μηχανικής μάθησης που πρέπει να λυθεί.training_data: Τα δεδομένα εκπαίδευσης που θα χρησιμοποιηθούν εντός του πειράματος. Πρέπει να περιλαμβάνει τόσο τα χαρακτηριστικά εκπαίδευσης όσο και μια στήλη ετικέτας (προαιρετικά μια στήλη βαρών δείγματος).label_column_name: Το όνομα της στήλης ετικέτας.path: Η πλήρης διαδρομή προς το φάκελο του έργου Azure Machine Learning.enable_early_stopping: Αν θα ενεργοποιηθεί η πρώιμη διακοπή αν η βαθμολογία δεν βελτιώνεται σε σύντομο χρονικό διάστημα.featurization: Δείκτης για το αν το βήμα χαρακτηριστικής εξαγωγής θα γίνει αυτόματα ή όχι, ή αν θα χρησιμοποιηθεί προσαρμοσμένη χαρακτηριστική εξαγωγή.debug_log: Το αρχείο καταγραφής όπου θα γραφτούν πληροφορίες εντοπισμού σφαλμάτων.
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
)
Τώρα που έχετε τοποθετήσει τη ρύθμισή σας, μπορείτε να εκπαιδεύσετε το μοντέλο χρησιμοποιώντας τον ακόλουθο κώδικα. Αυτό το βήμα μπορεί να διαρκέσει έως και μία ώρα ανάλογα με το μέγεθος του cluster σας.
remote_run = experiment.submit(automl_config)
Μπορείτε να εκτελέσετε το widget RunDetails για να δείτε τα διαφορετικά πειράματα.
from azureml.widgets import RunDetails
RunDetails(remote_run).show()
3. Ανάπτυξη μοντέλου και κατανάλωση endpoint με το Azure ML SDK
3.1 Αποθήκευση του καλύτερου μοντέλου
Το remote_run είναι ένα αντικείμενο τύπου AutoMLRun. Αυτό το αντικείμενο περιέχει τη μέθοδο get_output() που επιστρέφει την καλύτερη εκτέλεση και το αντίστοιχο προσαρμοσμένο μοντέλο.
best_run, fitted_model = remote_run.get_output()
Μπορείτε να δείτε τις παραμέτρους που χρησιμοποιήθηκαν για το καλύτερο μοντέλο απλώς εκτυπώνοντας το fitted_model και να δείτε τις ιδιότητες του καλύτερου μοντέλου χρησιμοποιώντας τη μέθοδο get_properties().
best_run.get_properties()
Τώρα, καταχωρίστε το μοντέλο με τη μέθοδο 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 Ανάπτυξη μοντέλου
Μόλις αποθηκευτεί το καλύτερο μοντέλο, μπορούμε να το αναπτύξουμε με την κλάση InferenceConfig. Η InferenceConfig αντιπροσωπεύει τις ρυθμίσεις για ένα προσαρμοσμένο περιβάλλον που χρησιμοποιείται για ανάπτυξη. Η κλάση AciWebservice αντιπροσωπεύει ένα μοντέλο μηχανικής μάθησης που αναπτύσσεται ως endpoint web υπηρεσίας σε Azure Container Instances. Μια αναπτυγμένη υπηρεσία δημιουργείται από μοντέλο, script και συσχετιζόμενα αρχεία. Η προκύπτουσα web υπηρεσία είναι ένα ισορροπημένο HTTP endpoint με μια REST API. Μπορείτε να στείλετε δεδομένα σε αυτήν την API και να λάβετε την πρόβλεψη που επιστρέφεται από το μοντέλο.
Το μοντέλο αναπτύσσεται με τη μέθοδο 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)
Αυτό το βήμα θα πάρει λίγα λεπτά.
3.3 Κατανάλωση endpoint
Καταναλώνετε το endpoint σας δημιουργώντας ένα δείγμα εισόδου:
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))
Και στη συνέχεια μπορείτε να στείλετε αυτήν την είσοδο στο μοντέλο σας για πρόβλεψη:
response = aci_service.run(input_data=test_sample)
response
Αυτό θα πρέπει να εξάγει '{"result": [false]}'. Αυτό σημαίνει ότι η είσοδος ασθενούς που στείλαμε στο endpoint παρήγαγε την πρόβλεψη false που σημαίνει ότι αυτό το άτομο πιθανότατα δεν θα παρουσιάσει καρδιακή προσβολή.
Συγχαρητήρια! Μόλις αξιοποιήσατε το μοντέλο που έχει αναπτυχθεί και εκπαιδευτεί στο Azure ML με το Azure ML SDK!
ΣΗΜΕΙΩΣΗ: Μόλις ολοκληρώσετε το έργο, μην ξεχάσετε να διαγράψετε όλους τους πόρους.
🚀 Πρόκληση
Υπάρχουν πολλά άλλα που μπορείτε να κάνετε μέσω του SDK, δυστυχώς δεν μπορούμε να τα δούμε όλα σε αυτό το μάθημα. Αλλά καλή είδηση, η εκμάθηση του πώς να περιηγηθείτε στην τεκμηρίωση του SDK μπορεί να σας βοηθήσει πολύ μόνοι σας. Ρίξτε μια ματιά στην τεκμηρίωση του Azure ML SDK και βρείτε την κλάση Pipeline που σας επιτρέπει να δημιουργείτε pipelines. Ένα Pipeline είναι μια συλλογή βημάτων που μπορούν να εκτελεστούν ως ροή εργασίας.
ΥΠΟΔΕΙΞΗ: Μεταβείτε στην τεκμηρίωση του SDK και πληκτρολογήστε λέξεις-κλειδιά στη γραμμή αναζήτησης όπως "Pipeline". Θα πρέπει να βρείτε την κλάση azureml.pipeline.core.Pipeline στα αποτελέσματα αναζήτησης.
Κουίζ μετά το μάθημα
Ανασκόπηση & Αυτοεκπαίδευση
Σε αυτό το μάθημα, μάθατε πώς να εκπαιδεύετε, να αναπτύσσετε και να χρησιμοποιείτε ένα μοντέλο για να προβλέψετε τον κίνδυνο καρδιακής ανεπάρκειας με το Azure ML SDK στο cloud. Δείτε αυτήν την τεκμηρίωση για περαιτέρω πληροφορίες σχετικά με το Azure ML SDK. Προσπαθήστε να δημιουργήσετε το δικό σας μοντέλο με το Azure ML SDK.
Ανάθεση
Έργο Data Science χρησιμοποιώντας το Azure ML SDK
Αποποίηση ευθυνών: Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία μετάφρασης με τεχνητή νοημοσύνη Co-op Translator. Ενώ επιδιώκουμε την ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτοματοποιημένες μεταφράσεις ενδέχεται να περιέχουν λάθη ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή λανθασμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.



