28 KiB
วิทยาศาสตร์ข้อมูลในระบบคลาวด์: วิธีการ "Azure ML SDK"
![]() |
---|
วิทยาศาสตร์ข้อมูลในระบบคลาวด์: Azure ML SDK - สเก็ตช์โน้ตโดย @nitya |
สารบัญ:
- วิทยาศาสตร์ข้อมูลในระบบคลาวด์: วิธีการ "Azure ML SDK"
แบบทดสอบก่อนเรียน
1. บทนำ
1.1 Azure ML SDK คืออะไร?
นักวิทยาศาสตร์ข้อมูลและนักพัฒนา AI ใช้ Azure Machine Learning SDK เพื่อสร้างและรันเวิร์กโฟลว์การเรียนรู้ของเครื่องด้วยบริการ Azure Machine Learning คุณสามารถโต้ตอบกับบริการนี้ในสภาพแวดล้อม Python ใดก็ได้ เช่น Jupyter Notebooks, Visual Studio Code หรือ Python IDE ที่คุณชื่นชอบ
หัวข้อสำคัญของ SDK ได้แก่:
- สำรวจ เตรียม และจัดการวงจรชีวิตของชุดข้อมูลที่ใช้ในงานทดลองการเรียนรู้ของเครื่อง
- จัดการทรัพยากรคลาวด์สำหรับการตรวจสอบ การบันทึก และการจัดระเบียบงานทดลองการเรียนรู้ของเครื่อง
- ฝึกโมเดลทั้งในเครื่องหรือโดยใช้ทรัพยากรคลาวด์ รวมถึงการฝึกโมเดลที่ใช้ GPU
- ใช้การเรียนรู้ของเครื่องแบบอัตโนมัติ (AutoML) ซึ่งยอมรับพารามิเตอร์การกำหนดค่าและข้อมูลการฝึก และทำการวนซ้ำผ่านอัลกอริธึมและการตั้งค่าพารามิเตอร์เพื่อค้นหาโมเดลที่ดีที่สุดสำหรับการพยากรณ์
- ปรับใช้บริการเว็บเพื่อแปลงโมเดลที่ฝึกแล้วให้เป็นบริการ RESTful ที่สามารถใช้งานในแอปพลิเคชันใดก็ได้
เรียนรู้เพิ่มเติมเกี่ยวกับ Azure Machine Learning SDK
ใน บทเรียนก่อนหน้า เราได้เห็นวิธีการฝึก ปรับใช้ และใช้งานโมเดลในรูปแบบ Low code/No code โดยใช้ชุดข้อมูลภาวะหัวใจล้มเหลวเพื่อสร้างโมเดลพยากรณ์ภาวะหัวใจล้มเหลว ในบทเรียนนี้ เราจะทำสิ่งเดียวกันแต่ใช้ Azure Machine Learning SDK
1.2 โครงการและการแนะนำชุดข้อมูลการพยากรณ์ภาวะหัวใจล้มเหลว
ดู ที่นี่ สำหรับการแนะนำโครงการและชุดข้อมูลการพยากรณ์ภาวะหัวใจล้มเหลว
2. การฝึกโมเดลด้วย Azure ML SDK
2.1 การสร้าง Azure ML workspace
เพื่อความสะดวก เราจะทำงานใน Jupyter Notebook ซึ่งหมายความว่าคุณมี Workspace และ compute instance อยู่แล้ว หากคุณมี Workspace อยู่แล้ว คุณสามารถข้ามไปยังส่วน 2.3 การสร้างโน้ตบุ๊กได้เลย
หากยังไม่มี โปรดทำตามคำแนะนำในส่วน 2.1 การสร้าง Azure ML workspace ใน บทเรียนก่อนหน้า เพื่อสร้าง Workspace
2.2 การสร้าง compute instance
ใน Azure ML workspace ที่เราสร้างไว้ก่อนหน้านี้ ไปที่เมนู Compute และคุณจะเห็นทรัพยากร Compute ต่างๆ ที่มีอยู่
มาสร้าง compute instance เพื่อจัดเตรียม Jupyter Notebook กันเถอะ
- คลิกปุ่ม + New
- ตั้งชื่อให้ compute instance ของคุณ
- เลือกตัวเลือกของคุณ: CPU หรือ GPU, ขนาด VM และจำนวนคอร์
- คลิกปุ่ม Create
ยินดีด้วย! คุณเพิ่งสร้าง compute instance เสร็จแล้ว เราจะใช้ compute instance นี้เพื่อสร้างโน้ตบุ๊กในส่วน การสร้างโน้ตบุ๊ก
2.3 การโหลดชุดข้อมูล
ดู บทเรียนก่อนหน้า ในส่วน 2.3 การโหลดชุดข้อมูล หากคุณยังไม่ได้อัปโหลดชุดข้อมูล
2.4 การสร้างโน้ตบุ๊ก
หมายเหตุ: สำหรับขั้นตอนถัดไป คุณสามารถสร้างโน้ตบุ๊กใหม่ตั้งแต่ต้น หรืออัปโหลด โน้ตบุ๊กที่เราสร้างไว้ ใน Azure ML Studio ของคุณได้ หากต้องการอัปโหลด เพียงคลิกที่เมนู "Notebook" และอัปโหลดโน้ตบุ๊ก
โน้ตบุ๊กเป็นส่วนสำคัญของกระบวนการวิทยาศาสตร์ข้อมูล สามารถใช้เพื่อทำการวิเคราะห์ข้อมูลเชิงสำรวจ (EDA) เรียกใช้คลัสเตอร์คอมพิวเตอร์เพื่อฝึกโมเดล หรือเรียกใช้คลัสเตอร์การอนุมานเพื่อปรับใช้ endpoint
ในการสร้างโน้ตบุ๊ก เราต้องมี compute node ที่ให้บริการอินสแตนซ์ Jupyter Notebook กลับไปที่ Azure ML workspace และคลิกที่ Compute instances ในรายการ compute instances คุณควรเห็น compute instance ที่เราสร้างไว้ก่อนหน้านี้
- ในส่วน Applications คลิกที่ตัวเลือก Jupyter
- ติ๊กที่ช่อง "Yes, I understand" และคลิกปุ่ม Continue
- หน้าต่างเบราว์เซอร์ใหม่จะเปิดขึ้นพร้อมอินสแตนซ์ Jupyter Notebook ของคุณ คลิกที่ปุ่ม "New" เพื่อสร้างโน้ตบุ๊ก
ตอนนี้เรามีโน้ตบุ๊กแล้ว เราสามารถเริ่มฝึกโมเดลด้วย Azure ML SDK ได้
2.5 การฝึกโมเดล
ก่อนอื่น หากคุณมีข้อสงสัยใดๆ ให้ดูที่ เอกสาร Azure ML SDK ซึ่งมีข้อมูลที่จำเป็นทั้งหมดเพื่อทำความเข้าใจโมดูลที่เราจะดูในบทเรียนนี้
2.5.1 การตั้งค่า Workspace, experiment, compute cluster และ dataset
คุณต้องโหลด workspace
จากไฟล์การกำหนดค่าด้วยโค้ดต่อไปนี้:
from azureml.core import Workspace
ws = Workspace.from_config()
โค้ดนี้จะคืนค่าออบเจ็กต์ประเภท Workspace
ที่แสดงถึง workspace จากนั้นคุณต้องสร้าง experiment
ด้วยโค้ดต่อไปนี้:
from azureml.core import Experiment
experiment_name = 'aml-experiment'
experiment = Experiment(ws, experiment_name)
ในการรับหรือสร้าง experiment จาก workspace คุณต้องร้องขอ experiment โดยใช้ชื่อ experiment ชื่อ experiment ต้องมีความยาว 3-36 ตัวอักษร เริ่มต้นด้วยตัวอักษรหรือตัวเลข และสามารถมีได้เฉพาะตัวอักษร ตัวเลข ขีดล่าง และขีดกลาง หากไม่พบ experiment ใน workspace จะมีการสร้าง experiment ใหม่
ตอนนี้คุณต้องสร้าง compute 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]
คุณสามารถดึงชุดข้อมูลจาก workspace โดยใช้ชื่อชุดข้อมูลในวิธีต่อไปนี้:
dataset = ws.datasets['heart-failure-records']
df = dataset.to_pandas_dataframe()
df.describe()
2.5.2 การตั้งค่า AutoML และการฝึกโมเดล
ในการตั้งค่าการกำหนดค่า AutoML ให้ใช้ AutoMLConfig class
ตามที่อธิบายไว้ในเอกสาร มีพารามิเตอร์มากมายที่คุณสามารถปรับแต่งได้ สำหรับโครงการนี้ เราจะใช้พารามิเตอร์ดังนี้:
experiment_timeout_minutes
: เวลาสูงสุด (เป็นนาที) ที่อนุญาตให้ experiment ทำงานก่อนที่จะหยุดโดยอัตโนมัติและแสดงผลลัพธ์max_concurrent_iterations
: จำนวนการวนซ้ำการฝึกที่อนุญาตให้ทำงานพร้อมกันสูงสุดprimary_metric
: เมตริกหลักที่ใช้กำหนดสถานะของ experimentcompute_target
: เป้าหมายการคำนวณ Azure Machine Learning ที่จะใช้รัน experiment AutoMLtask
: ประเภทของงานที่ต้องรัน ค่าอาจเป็น 'classification', 'regression' หรือ 'forecasting' ขึ้นอยู่กับปัญหา AutoMLtraining_data
: ข้อมูลการฝึกที่ใช้ใน experiment ควรมีทั้งคุณลักษณะการฝึกและคอลัมน์ป้ายกำกับ (อาจมีคอลัมน์น้ำหนักตัวอย่าง)label_column_name
: ชื่อของคอลัมน์ป้ายกำกับpath
: เส้นทางเต็มไปยังโฟลเดอร์โครงการ Azure Machine Learningenable_early_stopping
: เปิดใช้งานการหยุดก่อนกำหนดหากคะแนนไม่ดีขึ้นในระยะสั้นfeaturization
: ตัวบ่งชี้ว่าควรทำขั้นตอน featurization โดยอัตโนมัติหรือไม่ หรือควรใช้ 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
)
เมื่อคุณตั้งค่าการกำหนดค่าเสร็จแล้ว คุณสามารถฝึกโมเดลด้วยโค้ดต่อไปนี้ ขั้นตอนนี้อาจใช้เวลาถึงหนึ่งชั่วโมงขึ้นอยู่กับขนาดคลัสเตอร์ของคุณ
remote_run = experiment.submit(automl_config)
คุณสามารถรันวิดเจ็ต RunDetails เพื่อแสดง experiment ต่างๆ ได้
from azureml.widgets import RunDetails
RunDetails(remote_run).show()
3. การปรับใช้โมเดลและการใช้งาน endpoint ด้วย Azure ML SDK
3.1 การบันทึกโมเดลที่ดีที่สุด
remote_run
เป็นออบเจ็กต์ประเภท AutoMLRun ออบเจ็กต์นี้มีเมธอด get_output()
ซึ่งคืนค่า experiment ที่ดีที่สุดและโมเดลที่เหมาะสมที่สุด
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 บริการเว็บบน Azure Container Instances บริการที่ปรับใช้จะถูกสร้างจากโมเดล สคริปต์ และไฟล์ที่เกี่ยวข้อง บริการเว็บที่ได้จะเป็น 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
ซึ่งหมายความว่าบุคคลนี้ไม่น่าจะมีความเสี่ยงต่อการเกิดหัวใจวาย
ยินดีด้วย! คุณเพิ่งใช้โมเดลที่ถูก deploy และ train บน Azure ML ด้วย Azure ML SDK!
NOTE: เมื่อคุณทำโปรเจกต์เสร็จแล้ว อย่าลืมลบทรัพยากรทั้งหมด
🚀 ความท้าทาย
ยังมีอีกหลายสิ่งที่คุณสามารถทำได้ผ่าน SDK แต่โชคร้ายที่เราไม่สามารถครอบคลุมทั้งหมดในบทเรียนนี้ แต่ข่าวดีคือ การเรียนรู้วิธีค้นหาข้อมูลในเอกสาร SDK จะช่วยให้คุณก้าวหน้าได้ด้วยตัวเอง ลองดูเอกสาร Azure ML SDK และค้นหา Pipeline
class ที่ช่วยให้คุณสร้าง pipeline ได้ Pipeline คือชุดของขั้นตอนที่สามารถดำเนินการเป็น workflow ได้
HINT: ไปที่ SDK documentation และพิมพ์คำสำคัญในช่องค้นหา เช่น "Pipeline" คุณควรเห็น azureml.pipeline.core.Pipeline
class ในผลการค้นหา
แบบทดสอบหลังบทเรียน
ทบทวนและศึกษาด้วยตัวเอง
ในบทเรียนนี้ คุณได้เรียนรู้วิธี train, deploy และใช้งานโมเดลเพื่อทำนายความเสี่ยงของหัวใจวายด้วย Azure ML SDK บนคลาวด์ ดู เอกสารนี้ เพื่อข้อมูลเพิ่มเติมเกี่ยวกับ Azure ML SDK ลองสร้างโมเดลของคุณเองด้วย Azure ML SDK
งานที่ได้รับมอบหมาย
โปรเจกต์ Data Science โดยใช้ Azure ML SDK
ข้อจำกัดความรับผิดชอบ:
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI Co-op Translator แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่แม่นยำ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามนุษย์ที่เป็นมืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความที่ผิดพลาดซึ่งเกิดจากการใช้การแปลนี้