0

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

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

在此处输入图像描述

这是 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)

这只是不断询问我每个孩子运行的交互式登录。

4

1 回答 1

1

您需要实现一种身份验证方法以避免进行交互式身份验证。

问题来自这一行:

workspace = Workspace(subscription_id, resource_group, workspace_name)

Azure ML SDK 尝试Workspace仅根据其名称、订阅 ID 和关联的资源组来访问它。它不知道您是否可以访问它,这就是它要求您通过 URL 进行身份验证的原因。

我建议通过服务主体实现身份验证,您可以在此处找到官方文档。

于 2021-02-20T11:34:09.653 回答