问题描述
我在 Azure 中创建了一个 train.py 脚本,它具有使用 XGBoost 的数据清理、整理和分类部分。然后我创建了一个 ipynb 文件,通过调用 train.py 脚本来进行超参数调整。
孩子跑步不断要求我为每次跑步执行手动交互式登录。请看图片。 我进行了多次运行的交互式登录,但仍然每次都会询问我。
subscription_id = 'XXXXXXXXXXXXXXXXXX'
resource_group = 'XXXXXXXXXXXXXXX'
workspace_name = 'XXXXXXXXXXXXXXX'
workspace = Workspace(subscription_id,resource_group,workspace_name)
myenv = Environment(workspace=workspace,name="myenv")
from azureml.core.conda_dependencies import CondaDependencies
conda_dep = CondaDependencies()
conda_dep.add_pip_package("numpy")
conda_dep.add_pip_package("pandas")
conda_dep.add_pip_package("nltk")
conda_dep.add_pip_package("sklearn")
conda_dep.add_pip_package("xgboost")
myenv.python.conda_dependencies = conda_dep
experiment_name = 'experiments_xgboost_hyperparams'
experiment = Experiment(workspace,experiment_name)
from azureml.core.compute import ComputeTarget,AmlCompute
from azureml.core.compute_target import ComputeTargetException
compute_cluster_name = 'shan'
try:
compute_target = ComputeTarget(workspace=workspace,name = compute_cluster_name)
print('Found the compute cluster')
except ComputeTargetException:
compute_config = AmlCompute.provisioning_configuration(vm_size="STANDARD_DS3_V2",max_nodes=4)
compute_target = ComputeTarget.create(workspace,compute_cluster_name,compute_config)
compute_target.wait_for_completion(show_output=True)
early_termination_policy = BanditPolicy(slack_factor=0.01)
from azureml.train.hyperdrive import RandomParameterSampling
from azureml.train.hyperdrive import uniform,choice
ps = RandomParameterSampling( {
'learning_rate': uniform(0.1,0.9),'max_depth': choice(range(3,8)),'n_estimators': choice(300,400,500,600)
}
)
primary_metric_name="accuracy",primary_metric_goal=PrimaryMetricGoal.MAXIMIZE
from azureml.core import Scriptrunconfig
script_run_config = Scriptrunconfig(source_directory='.',script='train.py',compute_target=compute_target,environment=myenv)
# script_run_config.run_config.target = compute_target
# Create a HyperDriveConfig using the estimator,hyperparameter sampler,and policy.
hyperdrive_config = HyperDriveConfig(run_config=script_run_config,hyperparameter_sampling=ps,policy=early_termination_policy,primary_metric_name="accuracy",primary_metric_goal=PrimaryMetricGoal.MAXIMIZE,max_total_runs=10,max_concurrent_runs=4)
hyperdrive = experiment.submit(config=hyperdrive_config)
RunDetails(hyperdrive).show()
hyperdrive.wait_for_completion(show_output=True)
这只是让我每次跑步时都要求我进行交互式登录。
解决方法
您需要实现一种身份验证方法以避免进行交互式身份验证。
问题来自这一行:
workspace = Workspace(subscription_id,resource_group,workspace_name)
Azure ML SDK 仅根据名称、订阅 ID 和关联的资源组尝试访问 Workspace
。它不知道您是否有权访问它,这就是它要求您通过 URL 进行身份验证的原因。
我建议通过服务主体实现身份验证,您可以找到官方文档 here。