有多种方法可以使用 AzureML 解决此问题。最简单的方法是使用 AzureML Python SDK 启动一些作业(基础示例取自此处)
from azureml.train.sklearn import SKLearn
runs = []
for kernel in ['linear', 'rbf', 'poly', 'sigmoid']:
for penalty in [0.5, 1, 1.5]:
print ('submitting run for kernel', kernel, 'penalty', penalty)
script_params = {
'--kernel': kernel,
'--penalty': penalty,
}
estimator = SKLearn(source_directory=project_folder,
script_params=script_params,
compute_target=compute_target,
entry_script='train_iris.py',
pip_packages=['joblib==0.13.2'])
runs.append(experiment.submit(estimator))
以上要求您将您的训练与所需的 python 包一起放入一个脚本(或文件夹中的一组脚本)中。上述估计器是使用 Scikit Learn 的便捷包装器。Tensorflow、Pytorch、Chainer 和一个通用的估计器azureml.train.estimator.Estimator
(
第二个选项,如果您实际上是在调整参数,是像这样使用 HyperDrive 服务(使用与SKLearn
上面相同的 Estimator):
from azureml.train.sklearn import SKLearn
from azureml.train.hyperdrive.runconfig import HyperDriveConfig
from azureml.train.hyperdrive.sampling import RandomParameterSampling
from azureml.train.hyperdrive.run import PrimaryMetricGoal
from azureml.train.hyperdrive.parameter_expressions import choice
estimator = SKLearn(source_directory=project_folder,
script_params=script_params,
compute_target=compute_target,
entry_script='train_iris.py',
pip_packages=['joblib==0.13.2'])
param_sampling = RandomParameterSampling( {
"--kernel": choice('linear', 'rbf', 'poly', 'sigmoid'),
"--penalty": choice(0.5, 1, 1.5)
}
)
hyperdrive_run_config = HyperDriveConfig(estimator=estimator,
hyperparameter_sampling=param_sampling,
primary_metric_name='Accuracy',
primary_metric_goal=PrimaryMetricGoal.MAXIMIZE,
max_total_runs=12,
max_concurrent_runs=4)
hyperdrive_run = experiment.submit(hyperdrive_run_config)
或者您可以使用 DASK 来安排您提到的工作。以下是如何在 AzureML Compute Cluster 上设置 DASK 的示例,以便您可以对其进行交互式工作:https ://github.com/danielsc/azureml-and-dask