![]() |
|---|
| แแทแแแแแแแแทแแแแถแแ แแพแแแแ Azure ML SDK - Sketchnote แแแ @nitya |
แแแแแปแแถแแถแแแถแแทแแถแ
- แแทแแแแแแแแทแแแแถแแ
แแพแแแแ แแทแแธ "Azure ML SDK"
- แแแแฝแแแแแแทแแแปแแแถแแแแแแแ
- 1. แแถแแแแแถแ
- 2. แแถแแแแแแแแขแถแแแแแแแผแแแแแถแแฝแ Azure ML SDK
- 2.1 แแแแแพแแแแแแแแแแแพแแถแ Azure ML
- 2.2 แแแแแพแแงแแแแแแแแแถ
- 2.3 แแถแแแแแปแแแทแแแแแแ
- 2.4 แแถแแแแแแพแแแแแแ แแแแแแแแแถ
- 2.5 แแถแแแแแแแแขแถแแแแแแแผแแแ
- 3. แแถแแแถแแแแแแ แผแแแแผแแแ แแทแแแถแแแแแพแแแแถแแ endpoint แแถแแฝแ Azure ML SDK
- ๐ แแถแแแแแแฝแแแแแแแ
- แแแแฝแแแแแแทแแแแแแถแแแแธแแถแแแแแแแ
- แแถแแแแแฝแแแทแแทแแแ แแทแแแถแแแทแแแแถแแแแแแแฝแแฏแ
- แแถแแ แถแแแ แแแแถแแแถแ
แขแแแแแทแแแแถแแถแแแแแแแทแแแแแแ แแทแแขแแแแขแแทแแแแแแ AI แแแแพ Azure Machine Learning SDK แแพแแแแธแแแแแพแแแทแแขแแปแแแแแแแแแแถแแแแแแแแขแถแแแแแแแถแแแธแแแแแแถแแแแแปแแแแแถ Azure Machine Learningแ แขแแแแขแถแ แแแแพแแถแแแแแถแแแแแแแแถแแฝแแแแแถแแแแแ แแแแปแแแแทแแแแถแ Python แแฝแแแถแ แแฝแแแถแ Jupyter Notebooks, Visual Studio Code แฌ Python IDE แแแแ แทแแแแแแแแขแแแแ
แแแแแแแแแถแแแแแ SDK แแฝแแแถแแ
- แแแแแแแ แแแแ แ แแทแแแแแแแแแแแแธแแทแแแถแแแแผแแแแแทแแแแแแแแแแขแแแแแแแพแแแแถแแแแแแปแแแถแแแแแแแแขแถแแแแแแแผแแแแ
- แแแแแแแแแแแแแถแแแแแแแแแถแแแแแแฝแแแทแแทแแแ แแแแแแแแแถ แแทแแแแแ แแแแแทแแแแแแแแแแแแขแถแแแแแแแผแแแแแแแแขแแแแ
- แแแแแแแขแถแแแแแแแผแแแแแแแแแแถแแ แแ แแแแปแแแปแแแแแผแแแแแแแถแแแแแแฝแแฌแแแแพแแแแถแแแแ แแฝแแแถแแแถแแแแแแแแขแถแแแแแแแผแแแแแแแแแแฟแแแฟแแแถแแฝแ GPUแ
- แแแแพแแแแแแถแแแแแแแแขแถแแแแแแแถแแแธแแแแแแแแแแแแแแแแแท แแแแแแฝแแแถแแแแถแแแถแแแแแแแแแแแแแ แแถแแแแแแแแ แแทแแแทแแแแแแแแแแแแแขแถแแแแแ แแถแแแแพแแถแแแแแกแแแแแแแแแแถแ แแทแแแแแแแแแแแ hyperparameters แแพแแแแธแแแแแแแแแแผแแแแแแขแแแแปแแแแแแถแแแแถแแแแแถแแแแแแแถแแแแแแผแแแถแแแแแถแแแแแ
- แแถแแแแแแ แผแแแแแแแแแแแแแแแถแแแแแแแแแแแผแแแแแแแแถแแแแแแแแขแถแแแแแแ แแถแแแแถ RESTful แแแแขแถแ แแแแพแแแแถแแแแถแแแ แแแแปแแแแแแแทแแธแแถแแฝแแ
แแผแแแแแแแแแแแแแแแแขแแแธ Azure Machine Learning SDK
แแ แแแแปแ แแแแแแแปแ แแพแแแถแแแพแแแแแแแแแแแแขแถแแแแ แแถแแแแแแ แผแ แแทแแแแแพแแแผแแแแแแแปแแแแแ Low code/No codeแ แแพแแแถแแแแแพแแทแแแแแแ Heart Failure แแพแแแแธแแแแแพแ แแทแแแแผแแแแแแแถแแแแแแแถแแแแแแแแผแแ แแ แแแแปแแแแแแแแแ แแพแแแนแแแแแพแแผแ แแแแถแแถแแแแแแปแ แแแปแแแแแแแพ Azure Machine Learning SDK แ
1.2 แแแแนแแแแทแแถแแแแแแถแแแแแแถแแแแแแบแแแถแแแแแแแแผแ แแทแแแถแแแแแถแแขแแแธแแทแแแแแแ
แแทแแทแแแแแพแ แแธแแแ แแแแแถแแแแแแนแแแแทแแถแแแแแแถแแแแแแถแแแแแแบแแแถแแแแแแแแผแ แแทแแแถแแแแแถแแแธแแทแแแแแแแแถแแปแแ
แแพแแแแธแแแแแแแถแแแถแแแแ แแพแแแนแแแแแพแแถแแแ แแพ jupyter notebookแ แแถแแถแแแแแแถแขแแแแแถแ Workspace แแทแ compute instance แแฝแ แ แพแแ แแแแแทแแแพแขแแแแแถแ Workspace แแฝแ แขแแแแขแถแ แแแแทแแแ แแแแแ 2.3 แแถแแแแแแพแแแแแแ แแแแแแแแแถแแแแปแแแแแถแแ
แแพแแทแแแถแ แแผแแขแแปแแแแแแถแแแถแแแแแถแแแ แแแแแ 2.1 แแแแแพแแแแแแแแแแแพแแถแ Azure ML แแ แแแแปแ แแแแแแแปแ แแพแแแแธแแแแแพแ workspaceแ
แแ แแแแปแ แแแแแแแแแแพแแถแ Azure ML แแแแแพแแแถแแแแแแพแแแปแแแแ แ แผแแแ แแแบแแปแ compute แ แพแแขแแแแแนแแแพแแแแแถแแแแแถแแแแแแแแแแแถแแแแแถแแ
แ แแแแแแแพแแงแแแแแแแแแถแแพแแแแธแแแแแแแแแถแแ แแแแ แแแฝแแแแแแ แแแแแแแแแถ jupyter แ
- แ แปแ แแแผแแปแ + Newแ
- แแแแแแแแแแแงแแแแแแแแแถแแแแแขแแแแ
- แแแแพแแขแแแแแถแแแถแแ แแแพแแ CPU แฌ GPU, แแแ แ VM แแทแ แ แแแฝแ coreแ
- แ แปแ แแแผแแปแ Create แ
แขแแขแแแถแแ! แขแแแแแพแแแแแแพแแงแแแแแแแแแถแ แแพแแแนแแแแแพแงแแแแแแแแแถแแแแแพแแแแธแแแแแพแแแแแแ แแแแแแแแแถแแแแปแแแแแแ แแถแแแแแแพแแแแแแ แแแแแแแแแถแ
แแผแแแแแแ แแแแแแแปแ แแแแปแแแแแแ 2.3 แแถแแแแแปแแแทแแแแแแ แแแแแทแแแพแขแแแแแทแแแถแแแแแแปแแแทแแแแแแแกแพแแ
แแแแแแแแแแถแแ: แแแแแถแแแแแ แถแแแแแแถแแ แขแแแแขแถแ แแแแแพแแแแแแ แแแแแแแแแถแแแแธแแธแแพแ แฌแขแถแ แแแแปแแกแพแ แแแแแ แแแแแแแแแถแแแแแพแแแถแแแแแแพแ แแถแแฝแ Azure ML Studio แแแแแขแแแแ แแพแแแแธแแแแปแแกแพแ แแแแถแแแแแ แปแ แแแบแแปแ "Notebook" แ แพแแแแแปแแแแแแ แแแแแแแแแถแ แผแแ
แแแแแ แแแแแแแแแถแแถแแแถแแแแแแถแแแแแแถแแแ แแแแแแแแพแแแถแแแทแแแแแแแแทแแแแถแ แแถแขแถแ แแแแพแแแแแถแแแขแแปแแแแแแถแแแทแแถแแแทแแแแแแแแแแแแแ (EDA), แ แ แแแแถแแแแแแแแแถแแแแแแแแแขแถแแแแแแแผแแแ, แ แ แแแแถแแแแแแแแแถแแแแแแพแแแแถแแ endpoint แ
แแพแแแแธแแแแแพแแแแแแ แแแแแแแแแถ แแพแแแแแผแแแถแ compute node แแแแแแแแพแงแแแแแ jupyter notebookแ แแแแกแแแแ แแแแแแแแแแพแแถแ Azure ML แ แพแแ แปแ แแพ Compute instancesแ แแแแปแแแแแแธ compute instances แขแแแแแฝแแแแแพแ แงแแแแแแแแแถแแแแแถแแแแแแพแแแธแแปแแ
- แแ แแแแปแแแแแแ Applications แ แปแ แแพแแแแแพแ Jupyterแ
- แแแแฝแแแทแแทแแแแแแแขแแ "Yes, I understand" แ แพแแ
แปแ
แแแผแแปแ Continueแ

- แแถแแนแแแพแแแแแถแแแแปแแแแแแแธแแถแแฝแแงแแแแแ jupyter notebook แแแแแขแแแแ แ แปแ แแแผแแปแ "New" แแพแแแแธแแแแแพแแแแแแ แแแแแแแแแถแแแแธแ
แแแแแแแแแแแพแแแถแแแแแแ แแแแแแแแแถ แขแถแ แ แถแแแแแแพแแแแแแแแขแถแแแแแแแผแแแแแถแแฝแ Azure ML SDK แแถแแ
แแพแแแ แแแแแทแแแพแขแแแแแถแแแถแแแแแแแแ แแผแแแแแแ แฏแแแถแ Azure ML SDKแ แแถแแถแแแแแแแถแแ แถแแแถแ แแแถแแแแผแแแแแแถแแแแแแขแแแธแแแผแแปแแแ แแแแปแแแแแแแแแแ
2.5.1 แแถแแแแกแพแ Workspace, experiment, compute cluster แแทแแแทแแแแแแ
แขแแแแแแแผแแแแแปแ 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 แแแแธแแฝแแ
แฅแกแผแแแแ แขแแแแแแแผแแแแแแพแแแแแปแแแแแถแแแแแถแแแแถแแแแแแแแขแถแแแแ แแแแแแแพแแผแแแถแแแแแแแ แ แแแถแแแถแแแ แถแแแแแแแแ แแแแแแถแแแถแแธแ
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 แแผแ แแถแแแแแแแ
dataset = ws.datasets['heart-failure-records']
df = dataset.to_pandas_dataframe()
df.describe()2.5.2 แแแแแแแ แแถแแแแแแแแ AutoML แแทแแแถแแแแแแแแขแถแแแแ
แแพแแแแธแแแแแแแ แแถแแแแแแแแ AutoML แแแแพแแแแถแแ AutoMLConfig classแ
แแผแ แแถแแแแแแถแแแแปแแฏแแแถแ แแถแแแแถแแแถแแแแแแแ แแแพแแแแแขแแแแขแถแ แแแแแถแแ แแแแแถแแแแแแแแแแแ แแพแแแนแแแแแพแแแถแแแถแแแแแแแแถแแแแแแแ
experiment_timeout_minutes: แแแแแแแถแขแแทแแแแถ (แแถ แแถแแธ) แแแแแถแแแแแแถแแแขแแปแแแแถแแฒแแแแแแพแแแถแแแปแแแถแแแแผแแแแขแถแแแแแแแแแแแแแแแแแท แแทแแแแแแแแแแแผแแแถแแแแแ แถแแmax_concurrent_iterations: แ แแแฝแแแแแแถแแแแแแแแแแแแแแขแถแแแแแแพแแแแแผแแขแถแ แแถแแแถแแprimary_metric: แแแแแแทแแแแแถแแแแแแแแแพแแแแแถแแแแแแแแแแแถแแแถแ experimentแcompute_target: แแแแแ แแปแแแแแผแแแแแแแแแแพแแพแแแแธแแแ Automated Machine Learning experimentแtask: แแแแแแแแถแแแทแ แแ แแแแแแแผแแแพแแแแแพแแแถแแ แแแแแแขแถแ แแถ 'classification', 'regression', แฌ 'forecasting' แขแถแแแแแแแพแแแแแแแแแแ แถ Automated MLแtraining_data: แแทแแแแแแแแแแแแแขแถแแแแแแแแแแแผแแแแแพแแ แแแแปแ experimentแ แแแแผแแแถแแแถแแแแแแแแแแแแแถแ แแทแแแฝแแแแแแแ แถแแแแแถแ (แขแถแ แแถแแแฝแแแแแแแแถแแแแแแแ)label_column_name: แแแแแแแฝแแแแแแแ แถแแแแแถแแpath: แแแแผแแแแแแ แแแแแแแแ Azure Machine Learningแenable_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
)แฅแกแผแแขแแแแแถแแแแแแแแ แแถแแแแแแแแแแฝแ แขแแแแขแถแ แแแแแแแขแถแแแแแแแผแแแแแแแแแแพแแผแแแถแแแแแแแ แแแ แถแแแแแขแถแ แ แแแถแแแแแแแแแฝแแแแแ แขแถแแแแแแแพแแแ แ cluster แแแแแขแแแแ
remote_run = experiment.submit(automl_config)แขแแแแขแถแ แขแแปแแแแแแแแพแแแถแแแถแแฝแ widget RunDetails แแพแแแแธแแแแ แถแแแผแแแแแทแแแแแแแถแแถแ
from azureml.widgets import RunDetails
RunDetails(remote_run).show()3. แแถแแแถแแแแแแ แผแแแแผแแแ แแทแแแถแแแแแพแแแแถแแ endpoint แแถแแฝแ Azure ML SDK
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)แแแแแแแแแแแผแแแแแแขแแแแปแแแแแผแแแถแแแแแแถแแปแ แแพแแขแถแ แแถแแแแแแ แผแแแถแแแแแแแพแแแแถแแ InferenceConfigแ InferenceConfig แแถแแ แแถแแแแแแแแแแแแแถแแแแแทแแแแถแแแแแถแแแแแแฝแ แแแแแแแพแแแแแถแแแแถแแแถแแแแแแ แผแแแแผแแแแ แแแแถแแ AciWebservice แแถแแแแผแแแผแแแแแแแแแแขแถแแแแแแแแแถแแแถแแแแถแแแแถ endpoint แแ แแพ Azure Container Instancesแ แแแแถแแแแแถแแแถแแแแถแแปแแแถแแแแแผแแแถแแแแแแพแแแธแแแผแแแ script แแทแแฏแแแถแแแแแถแแแแแแแแแ แแแแถแแแแแแแแบแแถแขแแธแแแแ HTTP แแถแแแปแแแแแถแแแแแแปแ แแทแแแถแ 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)แแแ แถแแแแแแฝแแแแ แแแถแแแแแแแปแแแแถแแแถแแธแ
แขแแแแแแแพ 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]}'แ แแแแแถแแแแแแถแแถแแแแแ
แผแแขแแแแแแแบแแแแแพแแแถแแแแแพแแ
แแถแแแ
แแแปแ
แแแแ
แแแแถแแแแแแพแแแถแแแแแถแแแแ false แแแแแถแแแแแแถแแปแแแแแแแแแทแแแถแแแแถแแทแแแแแแแแบแแแแแผแแแถแแแแ
แแผแแขแแขแแแถแแ! แขแแแแแพแแแแแแแพแแแแถแแแแแผแแแแแแแแถแแแแแ แแแแทแแ แแแนแแ แแแบแแแพ Azure ML แแถแแฝแ Azure ML SDK แแถแแแแแแแ!
แแแแแถแแ: แแแแแถแแแแธแขแแแแแแแ แแแแแแแแ แแผแแแปแแแแแแ แแปแแแแแถแแแถแแแขแแแ
แแถแแแฟแแแแแแแแแแแถแ
แแแพแแแแแขแแแแขแถแ
แแแแพแแถแแแถแแแแ SDK แแแแแแแนแแแถแแพแแแทแแขแถแ
แแพแแแถแแแขแแแแ
แแแแปแแแแแแแแแแแแ แแแปแแแแแแแแนแแแแขแแบแแถแแแแแแแแแแ
แแแแฝแ
แแแแพแแแพแแฏแแแถแ SDK แขแถแ
แแถแแขแแแแแ
แแแแถแแแแแ แแผแแแพแแฏแแแถแ Azure ML SDK แ แพแแแแแแแแแแแแถแแ Pipeline แแแแขแแปแแแแถแแฑแแแขแแแแแแแแพแ pipeline แแถแแ Pipeline แแบแแถแแถแแแแแแผแแแแแปแแแแ แถแแแแแขแถแ
แแแแพแแแถแแแถแแถแแแถแแแถแแ
แแนแแแถแแ แ
แผแแแ
แแธ SDK documentation แ แพแแแถแแแถแแแแแแแแนแแแแแปแแแแแขแแแแแแแแแแแผแ
แแถ "Pipeline"แ แขแแแแแฝแแแแแพแแแแแถแแ azureml.pipeline.core.Pipeline แแ
แแแแปแแแแแแแแแแแแแแแ
แแ แแแแแแแแ แขแแแแแถแแแแแแธแแแแแ แแแนแแ แแแบแ แแแแ แแ แแทแแแแแพแแแผแแแแแแแปแแแถแแแแแถแแแแแ แถแแทแแแแแบแแแแแผแแแถแแฝแ Azure ML SDK แแ แแพแแแแ แแผแแแทแแทแแแแแพแแฏแแแถแ แฏแแแถแ แแแแแถแแแแแแแแถแแแแแแแแขแแแธ Azure ML SDKแ แแถแแแแแแแแแแพแแแแผแแแแแแแถแแแแแแฝแแแถแแฝแ Azure ML SDKแ
แแถแแแแแแปแแแแแแแถแแ
แฏแแแถแแแแแแแแผแแแถแแแแแแแแแแแแแแพแแแแถแแแแแแแแแแ AI Co-op Translatorแ แแแแแแแแพแแแทแแแแแแแแ
แแถแแแถแแแแแนแแแแแผแ แแผแแแนแแแถแแถแแแแแแแแแแแแแแแแแแแแแแแทแขแถแ
แแถแแแแ แปแแฌแแทแแแแแนแแแแแผแแ แฏแแแถแแแพแแแ
แแถแแถแแปแแแแแพแ แแฝแแแแแผแแแถแแแแ
แถแแแแปแแแถแแถแแพแแแแแถแแแแแแถแแแแแแแแถแแ
แแแถแแแแถแแแ แแแแแถแแแแแแแแถแแแแแถแแแ แแผแแแแแถแแฒแแแแแแพแแถแแแแแแแแแแแขแแแแแแแถแแแแปแแแแแทแแแแถแแธแแแ แแพแแแทแแแแฝแแแปแแแแแผแแ
แแแแแแถแแแแแ
แแแกแ แฌแแถแแแแแแแแขแแแแแแแแถแแฝแแแแแ
แแแแธแแถแแแแแพแแแแถแแแแถแแแแแแแแแแแกแพแแ



