ืื ื ืืืืจ ืืจืื ืืืขื ื ื ืชืื ืื - ืืื ืจืื ืฉืื ื ืืขืฆืื ืืื ืืื - ืฉืขืืืืื ืขื ืืืื ืืช GPU, ืืงืืืืืช ืื ืืืจืืืืืืืช, ืืืืืงืืืช ืืขื ื, ืื ืืจื Jupyter Notebook ืื ืืจื ืืืืืฉืื ืกืืืืช ืคืืชืื ืฉื Python. ืืฉืขืืืชื ืฉื ืชืืื ืืืคืชื AI/ML ืืืืื, ืขืฉืืชื ืืืืืง ืืช ืื, ืชืื ืืื ืืื ืช ื ืชืื ืื ืขื ืฉืจืช ืื ืชืื ืช ืขืืืื ืจืืืื, ืืืจืฆืช ืืืจืื ืขื ืืืื ื ืืืจืืืืืืช ืขื GPU ื-Azure.
ืืืืื ืฉืืืื ื ืฉืืขื ื ืขื
ืขื ืืืช, ืืืืจืื ื ืืืืืชื ืืจื ืืืชืืื ืืืฉืชืืฉ ืืืขืืืืช ื-Azure ML ืืขืืืื ืฉืื! ืืชืขื ืืื ืื ืืคืจืืื?
ืืกืื ืืขืืงืจื ืืื
ืืื, ืืชื ืืงืื ืืช ืืืชืจืื ืืช ืืืืื ืืืฉืืืืฉ ื-Azure ML:
- ืืชื ืืืื ืืขืืื ืจืื ืืืื ืืืืคื ืืงืืื ืขื ืืืืฉื ืฉืื ื-IDE ื ืื, ื ืืฉืชืืฉ ื-GPU ืจืง ืืืืืื ืืืืืื. ืืืงืืื, ืืืืจ ืืฉืืื ืืืืจืื ืืืื ืืืชืืื ืืืืืืืืช ืืขืืืก ืื ืืจืฉ, ืืขื ืืื ืืืืจืช ืืกืคืจ ืืฆืืชืื ืืืื ืืืื ื-0, ื ืืชื ืืืคืขืื ืืืืืืืืช ืืช ืืืืื ื ืืืืจืืืืืืช "ืขื ืคื ืืจืืฉื" ืื ืืืืืช ืืฉืืืืช ืืืจืื.
- ืืชื ืืืื ืืืืกื ืืช ืื ืชืืฆืจื ืืืืืื ืืืงืื ืืื, ืืืื ืืืืืื ืฉืืืฉืื ืืืืืืืื ืืืชืงืืืื - ืืื ืฆืืจื ืืืื ืขื ืืืืืฉืื ืืขืจืืช ืื ืกืืจ ืืืืกื ืืช ืื ืืชืืฆืืืช.
- ืืืงืจื ืื, ืืื ืื ืฉืื ืืืืืื ืืขืืื ืขื ืืืชื ืคืจืืืงื - ืื ืืืืืื ืืืฉืชืืฉ ืืืืชื ืืฉืืื ืืืฉืื, ืื ืื ืืกืืืื ืืขืืื ืืชืืจ, ืืื ืืืืืื ืื ืืจืืืช ืืช ืืชืืฆืืืช ืฉื ืื ืืกืืืื ืืื ืฉื ืืฉื ื. ืชืจืืืฉ ืืื ืืื ืืื ืฉืืืืฉ ื-Azure ML ืืืืจืืช ืืืืื ืขืืืงืืืืฉืจ ืืืงืื ืืชืช ืืื ืชืืืื ืืืื ื ืืืจืืืืืืช ืขื GPU, ืืชื ืืืื ืืืฆืืจ ืืฉืืื ืืื ืฉืืฉืืฉ ืืช ืืืื ืืืืคื ืืจืืื. ืื ืืกืฃ, ืืืืช ืชืืฆืืืช ืืืืืช ืขื ืืืืง ืืืื ืืืืื ืืฉืืฉ ืืจืืื ืชืืจืืชื ืืื.
- ืขื Azure ML, ืืชื ืืืื ืืงืืืช ืืืฆืข ืกืืจื ืฉื ื ืืกืืืื, ืืืฉื, ืขืืืจ ืืืคืืืืืืฆืื ืฉื ืืืคืจืคืจืืืจืื - ื ืืชื ืืขืฉืืช ืืืช ืขื ืืื ืฉืืจืืช ืงืื, ืืื ืฆืืจื ืืืฆืข ืกืืจื ืฉื ื ืืกืืืื ืืืืคื ืืื ื.
ืื ื ืืงืืื ืฉืฉืื ืขืชื ืืืชื ืื ืกืืช ืืช Azure ML! ืื ื ืืื ืืืชืืื:
- ืืื ืฉืืชืงื ืช
ืงืื Visual Studio , ืืื ืื ืืจืืืืชAzure ืื ืืกื ะธืชืืืช ML - ืฉืืคื ืืช ืืืืืจ
https://github.com/CloudAdvocacy/AzureMLStarter - ืืื ืืืื ืงืื ืืืืื ืืืฉืื ืืืืืื ืืืื ืืืืื ืกืคืจืืช ืืืชื ืื ืืืขืจื ืื ืชืื ืื ืฉื MNIST. - ืคืชื ืืช ืืืืืจ ืืืฉืืื ื-Visual Studio Code.
- ืชืืฉืื ืืงืจืื!
Azure ML Workspace ื-Azure ML Portal
Azure ML ืืืืจืื ืกืืื ืืจืขืืื ืืืืจ ืขืืืื - ืืื ืขืืืื. ื ืืชื ืืืืกื ื ืชืื ืื ืืืจืื ืืขืืืื, ืืฉืืื ืืืื ื ืืกืืืื ืืืืจืื, ืื ืฉื ื ืฉืืจืืช ืชืืฆืืืช ืืืืืื - ืืืืืื ืืืืืืืื ืืืชืงืืืื. ืืชื ืืืื ืืจืืืช ืื ืืฉ ืืชืื ืกืืืืช ืืขืืืื ืืจื
ื ืืชื ืืืฆืืจ ืกืืืืช ืขืืืื ืืจื ืืืฉืง ืืืื ืืจื ื
az extension add -n azure-cli-ml
az group create -n myazml -l northeurope
az ml workspace create -w myworkspace -g myazml
ืืื ืื, ืืฉืืืืื ืืืจืื ืืขืืืื ืืื ืืฉืืื ืืืฉืื (ืืืฉื). ืืืืจ ืฉืืฆืจืช ืชืกืจืื ืืืืืื ืืืืื, ืชืืื ืืฉืืื ื ืืกืื ืืืืฆืืข ืืกืืืืช ืืขืืืื, ืืฆืืื ืืืฉื ืืขื - ืืืงืจื ืื, ืืกืงืจืืคื ืืืืจื, ืืืคืขื ืืกืืืืช ืืืืฉืื ืืจืฆืืื, ืืืืืจ ืืื ืื ืชืืฆืืืช ืื ืืกืื ืืืฉืืจื ืืกืืืืช ืืขืืืื ืืืืฉื ื ืืชืื ืืฉืืืืฉ.
ืชืกืจืื ืืืืื ืขืืืจ MNIST
ืฉืงืื ืืช ืืืขืื ืืงืืืกืืช
ืืฉ ืกืงืจืืคื ืืืืืจ ืฉืื ื train_local.py
, ืฉืื ื ืืืื ืื ืืช ืืืื ืืจืืจืกืื ืืืื ืืืจืืช ืืคืฉืืื ืืืืชืจ ืืืืฆืขืืช ืกืคืจืืืช SkLearn. ืืืืื, ืื ื ืืืื ืฉืื ืื ืืืจื ืืืืื ืืืืชืจ ืืคืชืืจ ืืช ืืืขืื - ืื ืื ื ืืฉืชืืฉืื ืื ืืืืืื, ืืงืื ืืืืชืจ.
ืืกืงืจืืคื ืืืจืื ืชืืืื ืืช ื ืชืื ื ื-MNIST ื-OpenML ืืืืืจ ืืื ืืฉืชืืฉ ืืืืืงื LogisticRegression
ืืื ืืืื ืืช ืืืืื, ืืืืืจ ืืื ืืืืคืืก ืืช ืืืืืง ืืืชืงืื:
mnist = fetch_openml('mnist_784')
mnist['target'] = np.array([int(x) for x in mnist['target']])
shuffle_index = np.random.permutation(len(mist['data']))
X, y = mnist['data'][shuffle_index], mnist['target'][shuffle_index]
X_train, X_test, y_train, y_test =
train_test_split(X, y, test_size = 0.3, random_state = 42)
lr = LogisticRegression()
lr.fit(X_train, y_train)
y_hat = lr.predict(X_test)
acc = np.average(np.int32(y_hat == y_test))
print('Overall accuracy:', acc)
ืืชื ืืืื ืืืจืืฅ ืืช ืืกืงืจืืคื ืืืืฉื ืฉืื ืืืงืื ืืช ืืชืืฆืื ืชืื ืืกืคืจ ืฉื ืืืช.
ืืคืขื ืืช ืืกืงืจืืคื ื-Azure ML
ืื ื ืจืืฅ ืืช ืกืงืจืืคื ืืืืืื ืืจื Azure ML, ืืืื ืื ื ืฉื ื ืืชืจืื ืืช ืขืืงืจืืื:
- ืืคืขืืช ืืืจืื ืขื ืืฉืื ืืืฉืื ืฉืจืืจืืชื, ืืฉืจ, ืืืื, ืคืจืืืืงืืืื ืืืชืจ ืืืืืฉื ืืืงืืื. ืืืงืืื, Azure ML ืขืฆืื ืชืืื ืืืจืื ืืช ืืกืงืจืืคื ืฉืื ื ืขื ืื ืืงืืฆืื ืืืกืคืจืืื ืื ืืืืืช ืืชืื ืงืื ืืืื ืจ docker, ืืืชืงืื ืืช ืืชืืืช ืื ืืจืฉืช ืืืฉืืื ืืืชื ืืืืฆืืข.
- ืืชืื ืชืืฆืืืช ืืจืืฉืื ืืืื ืืชืื ืกืืืืช ืขืืืื ืฉื Azure ML. ืืื ืื ืฆื ืืช ืืชืืื ื ืืื, ืขืืื ื ืืืืกืืฃ ืืื ืฉืืจืืช ืงืื ืืกืงืจืืคื ืฉืื ื ืืื ืืชืขื ืืช ืืืืืง ืืืชืงืื:
from azureml.core.run import Run
...
try:
run = Run.get_submitted_run()
run.log('accuracy', acc)
except:
pass
ืืืจืกื ืืืชืืืื ืฉื ืืชืกืจืื ื ืงืจืืช train_universal.py
(ืื ืงืฆืช ืืืชืจ ืขืจืืืื ืืื ืฉืืชืื ืืืขืื, ืืื ืื ืืจืื). ื ืืชื ืืืจืืฅ ืกืงืจืืคื ืื ืื ืืงืืืืช ืืื ืขื ืืฉืื ืืืฉืื ืืจืืืง.
ืืื ืืืคืขืื ืืืชื ื-Azure ML ืืงืื VS, ืขืืื ืืืฆืข ืืช ืืคืขืืืืช ืืืืืช:
-
ืืื ืฉืืจืืื ืฉื Azure ืืืืืจืช ืืื ืื ืฉืื. ืืืจ ืืกืื Azure ืืืชืคืจืื ืืฆื ืฉืืื. ืื ืืื ื ืืืืืจ, ืชืืคืืข ืืชืจืื ืืคืื ื ืืืื ืืช ืืชืืชืื ื (
ืืื ), ืขื ืืื ืืืืฆื ืขืืื ืชืืื ืืืืื ืก ืืจื ืืืคืืคื. ืืชื ืืืื ืื ืืืืืฅ Ctrl-Shift-P ืืื ืืงืจืื ืืฉืืจืช ืืคืงืืื VS Code, ืืืงืื Azure ืื ืืกื. -
ืืืืจ ืืื, ืืงืืข Azure (ืกืื ืืฆื ืฉืืื), ืืฆื ืืช ืืงืืข ืืืืืช ืืืื ื:
ืืื ืืชื ืืืืจ ืืจืืืช ืงืืืฆืืช ืฉืื ืืช ืฉื ืืืืืืงืืื ืืชืื ืกืืืืช ืืขืืืื: ืืฉืืื ืืืฉืื, ื ืืกืืืื ืืื'.
- ืขืืืจ ืืจืฉืืืช ืืงืืฆืื, ืืืฅ ืืืืฆื ืืื ืืช ืขื ืืกืงืจืืคื
train_universal.py
ืืืืจ Azure ML: ืืคืขื ืื ืืกืื ื-Azure.
- ืืืืจ ืืื ืชืืคืืข ืกืืจื ืฉื ืืืืืืืื ืืืืืจ ืฉืืจืช ืืคืงืืื ืฉื VS Code: ืืฉืจ ืืช ืืื ืื ืืืช ืกืืืืช ืืขืืืื ืฉื Azure ML ืฉืื ืืชื ืืฉืชืืฉ, ืืืืจ ืฆืืจ ื ืืกืื ืืืฉ:
-
ืืืจ ืืืฆืืจ ืืฉืื ืืืฉืื ืืืฉ ืฆืืจ ืืืฉื ืืืฉ:
- ืืืฉื ืงืืืข ืืช ืืฉืื ืืืืฉืื ืฉืขืืื ืืชืงืืื ืืืืจืื. ืืชื ืืืื ืืืืืจ ืืืฉื ืืงืืื, ืื ืืฉืืื ืขื ื ืฉื AmlCompute. ืื ื ืืืืืฅ ืืืฆืืจ ืืฉืืื ืืืื ืืช ืฉื ืืชื ืืืจืืื
STANDARD_DS3_v2
, ืขื ืืกืคืจ ืืื ืืืื ืฉื ืืืื ืืช ืฉื 0 (ืืืงืกืืืื ืฉื 1 ืื ืืืชืจ, ืชืืื ืืชืืืื ืฉืื). ื ืืชื ืืขืฉืืช ืืืช ืืจื ืืืฉืง VS Code, ืื ืืขืืจ ืืจืืคืืจืื ML .
- ืืืฉื ืงืืืข ืืช ืืฉืื ืืืืฉืื ืฉืขืืื ืืชืงืืื ืืืืจืื. ืืชื ืืืื ืืืืืจ ืืืฉื ืืงืืื, ืื ืืฉืืื ืขื ื ืฉื AmlCompute. ืื ื ืืืืืฅ ืืืฆืืจ ืืฉืืื ืืืื ืืช ืฉื ืืชื ืืืจืืื
-
ืืืืจ ืืื, ืขืืื ืืืืืจ ืชืฆืืจื ืชืฆืืจืช ืืืฉื, ืืืืืืจ ืืช ืืคืจืืืจืื ืฉื ืืืืื ืฉื ืืฆืจ ืืืืจืื, ืืคืจื, ืืช ืื ืืกืคืจืืืช ืืืจืืฉืืช. ืืืงืจื ืฉืื ื, ืืืืืื ืฉืื ื ืืฉืชืืฉืื ื-Scikit Learn, ืื ื ืืืืจืื SkLearn, ืืืืืจ ืืื ืคืฉืื ืืฉืจ ืืช ืจืฉืืืช ืืกืคืจืืืช ืืืืฆืขืช ืขื ืืื ืืงืฉื ืขื Enter. ืื ืืชื ืืฉืชืืฉ ืืกืคืจืืืช ื ืืกืคืืช, ืืฉ ืืฆืืื ืืืชื ืืื.
-
ืื ืืคืชื ืืืื ืขื ืงืืืฅ JSON ืฉืืชืืจ ืืช ืื ืืกืื. ืื, ืืชื ืืืื ืืชืงื ืืื ืคืจืืืจืื - ืืืฉื, ืฉื ืื ืืกืื. ืืืืจ ืืื ืืืฅ ืขื ืืงืืฉืืจ ืฉืื ื ืืกืื ืืืฉ ืืชืื ืืงืืืฅ ืืื:
- ืืืืจ ืืืฉืช ื ืืกืื ืืืฆืืื ืืจื VS Code, ืืฆื ืืืื ืฉื ืืืืจ ืืืืืขืืช, ืชืจืื ืงืืฉืืจ ืื
Azure ML Portal , ืฉืื ืชืืื ืืขืงืื ืืืจ ืืกืืืืก ืืืชืืฆืืืช ืฉื ืื ืืกืื.
ืืืืจ ืืื, ืืชื ืชืืื ืืืื ืืืฆืื ืืืชื ืืืืืจ ื ืืกืืืื
- ืื ืืืืจ ืืื ืืืฆืขืช ืืื ืชืืงืื ืื ืืงืื ืื ืฉืื ืืช ืืช ืืคืจืืืจืื, ืืืคืขืื ืืืืฉ ืฉื ืื ืืกืื ืชืืื ืืจืื ืืืชืจ ืืืืจื ืืงืื. ืขื ืืื ืืืืฆื ืืื ืืช ืขื ืงืืืฅ, ืชืจืื ืคืจืื ืชืคืจืื ืืืฉ ืืืืจ ืขื ืืจืืฆื ืืืืจืื ื - ืคืฉืื ืืืจ ืืืชื, ืืื ืืกืื ืืชืืื ืืื:
ืืชื ืชืืื ืืืื ืืืฆืื ืืช ืืชืืฆืืืช ืฉื ืืืืื ืืื ืืืฉืงืืช ื-Azure ML Portal, ืืื ืฆืืจื ืืจืฉืื ืืืชื.
ืขืืฉืื ืืชื ืืืืข ืฉืืคืขืืช ื ืืกืืืื ืขื Azure ML ืืื ืคืฉืืื ืืืื ืืืืื, ืืืชื ืืงืื ืืกืคืจ ืืชืจืื ืืช ื ืืืืื ืืื.
ืืื ืืชื ืืืื ืืจืืืช ืื ืืช ืืืกืจืื ืืช. ืืืืืื, ืืงื ืืจืื ืืืชืจ ืืื ืืืคืขืื ืืช ืืกืงืจืืคื. ืืืืื, ืืจืืืช ืืกืงืจืืคื ืืงืื ืืืื ืจ ืืคืจืืกื ืฉืื ืืฉืจืช ืืืงืืช ืืื. ืื ืืืงืืื ืืืฉืืื ื ืืชื ืืืืื ืฉื 0 ืฆืืชืื, ืืืงื ืขืื ืืืชืจ ืืื ืืืคืขืื ืืช ืืืืื ื ืืืืจืืืืืืช, ืืื ืื ืืืื ืืืื ืืฉืื ืื ื ืืชื ืกืื ืืืฉืืืืช ืคืฉืืืืช ืืื MNIST, ืฉื ืคืชืจืืช ืชืื ืืื ืฉื ืืืช . ืขื ืืืช, ืืืืื ืืืืืชืืื, ืืืฉืจ ืืืืืื ื ืืฉื ืืกืคืจ ืฉืขืืช, ืื ืืคืืื ืืืื ืื ืฉืืืขืืช, ืืืื ืื ืืกืฃ ืืื ืืืคื ืืืกืจ ืืฉืืืืช, ืืืืืื ืขื ืจืงืข ืืืืฆืืขืื ืืืืืืื ืืจืื ืืืชืจ ืฉืืฉืืื ืืืฉืื ืืืื ืืกืคืง.
ืื ืืืื?
ืื ื ืืงืืื ืฉืืืืจ ืงืจืืืช ืืืืจ ืื, ืชืืื ืืชืฉืชืืฉ ื-Azure ML ืืขืืืืชื ืืื ืืืคืขืื ืกืงืจืืคืืื, ืื ืื ืืฉืืื ืืืฉืื ืืืืืกื ืชืืฆืืืช ืืืืคื ืืจืืื. ืขื ืืืช, Azure ML ืืืื ืืชืช ืื ืืคืืื ืืืชืจ ืืชืจืื ืืช!
ืืชืื ืกืืืืช ืืขืืืื, ืืชื ืืืื ืืืืกื ื ืชืื ืื, ืืืื ืืืฆืืจ ืืืืจ ืืจืืื ืขืืืจ ืื ืืืฉืืืืช ืฉืื, ืฉืงื ืืืฉืช ืืืื. ืื ืืกืฃ, ืืชื ืืืื ืืืจืืฅ ื ืืกืืืื ืื ื-Visual Studio Code, ืืื ืืืืฆืขืืช ื-API - ืื ืืืื ืืืืืช ืฉืืืืฉื ืืืืืื ืื ืืชื ืฆืจืื ืืืฆืข ืืืคืืืืืืฆืื ืฉื ืืืคืจืคืจืืืจืื ืืฆืจืื ืืืจืืฅ ืืช ืืกืงืจืืคื ืคืขืืื ืจืืืช ืขื ืคืจืืืจืื ืฉืื ืื. ืืชืจื ืืื, ืืื ืืืืืื ืืืืืืช ืืืื ืืช ื-Azure ML
ืืฉืืืื ืืืขืืืื
ืืืืืข ื ืืกืฃ ืขื Azure ML, ืืืชืื ืฉืืงืืจืกืื ืืืืื ืฉื Microsoft Learn ืืืขืืืื:
ืืืื ืืฉืืจืืช Azure ML ืื ืืืช ืคืชืจืื ืืช AI ืขื Azure ML Service ืืืืื ืืื ืืงืืื ืขื Azure ML Service
ืืงืืจ: www.habr.com