在 Azure ML Notebook 中的超参数调整超驱动期间为子运行提供交互式登录

问题描述

我在 Azure 中创建了一个 train.py 脚本,它具有使用 XGBoost 的数据清理、整理和分类部分。然后我创建了一个 ipynb 文件,通过调用 train.py 脚本来进行超参数调整。

孩子跑步不断要求我为每次跑步执行手动交互式登录。请看图片。 我进行了多次运行的交互式登录,但仍然每次都会询问我。

enter image description here

这里是ipynb文件中的代码

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