- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在按照 Python SDK 教程来训练许多模型:这里是 link到笔记本
一切正常,但现在我对训练结果感兴趣。当我检查 Azure ML Studio 时,我可以看到管道步骤如下:training pipeline .
在 mm-models train 的输出目录中,我没有得到我需要的信息。但如果我检查子作业,我会按粒度下降 child-jobs .
在这里,我可以看到经过训练的模型及其超参数,例如我想要预测的分区实体。例如某个地区的特定产品。 models for a partitioned entity
现在我想要的是从 Python SDK(或一般以编程方式)检索存储在该子作业中的信息,我可以通过 Azure ML Studio GUI 访问这些信息,例如交叉验证预测或可解释性度量,例如这些:Azure ML GUI .
我可以看到此信息存储在子作业的输出文件夹中:Output + logs
我无法从Python SDK的文档中弄清楚如何检索这些结果。我还尝试通过 Rest API 从子作业中获取结果 thread 。我得到的输出如下所示:error response此外,我不知道如何从 python SDK 中获取子作业的所有 ID。
如果有任何帮助,我将不胜感激!
最佳答案
此类ManyModelLocalInferencing提供了在使用ParallelRunStep训练的许多模型(预测)上下载和运行推理的方法。
构造函数
方法
属性
外部依赖
注意该文档假设该类在更大的上下文中使用,其中定义了以下变量:
import os
import json
import pandas as pd
from azureml.pipeline.core import PipelineRun
from sklearn.externals import joblib
class ManyModelLocalInferencing:
def __init__(self, experiment, training_run_id, cv_output_path, inference_output_path):
"""
Initializes the ManyModelLocalInferencing class.
Parameters:
experiment (azureml.core.Experiment): The experiment object that contains the training run.
training_run_id (str): The ID of the training run.
cv_output_path (str): The path to the directory where the best models will be saved.
inference_output_path (str): The path to the directory where the results of local inferencing will be saved.
"""
self.experiment = experiment
self.training_run_id = training_run_id
self.cv_output_path = cv_output_path
self.inference_output_path = inference_output_path
self.models_downloaded = False
self.results = dict()
def download_best_models(self):
"""
Downloads the best models for each time series object from the Azure ML run and saves them locally.
"""
# get the many models training pipeline run
pipeline = PipelineRun(experiment=self.experiment, run_id=self.training_run_id)
# find the child runs for the many models training step
many_models_runs = []
many_models_train_step = pipeline.find_step_run("many-models-train")[0]
for run_name in many_models_train_step.get_children():
many_models_runs.append(run_name)
# create the output directories if they don't exist
for path in [self.cv_output_path, self.inference_output_path]:
os.makedirs(path, exist_ok=True)
print(f"a new directory '{path}' is created!")
# download the best models for each time series object
summary = []
for run in many_models_runs:
best_model = run.get_best_child()
try:
best_model.download_file("forecast_table", output_file_path=self.cv_output_path)
with open(f'{self.cv_output_path}/forecast_table', "r") as f:
data = json.load(f)
except Exception as e:
print(f"Error downloading for run {run.id}: {str(e)}")
continue
grain_names = '_'.join(data.get('data')[0].get('grain_value_list')[0])
run_preprocessor = best_model.properties['run_preprocessor']
run_algorithm = best_model.properties['run_algorithm']
score = best_model.properties["score"]
# check if there is a previous best model for this time series object
previous_summary = pd.DataFrame(
summary, columns=[time_series_id_column_names,"preprocessor","algorithm","score"]
).query(f"{time_series_id_column_names} == '{grain_names}'")
if not previous_summary.empty:
previous_score = previous_summary.score.min()
else:
previous_score = None
# download the best model if it is better than the previous best model
if previous_score is None or score < previous_score or not os.path.exists(f"{self.cv_output_path}/{grain_names}"):
try:
best_model.download_files(output_directory=f"{self.cv_output_path}/{grain_names}")
except Exception as e:
print(f"Error downloading model files for run {run.id}: {str(e)}")
continue
summary.append({
time_series_id_column_names:grain_names,
"preprocessor": run_preprocessor,
"algorithm": run_algorithm,
"score": score
})
# save the summary to a file
summary_df = pd.DataFrame(summary).groupby(time_series_id_column_names).min()
summary_df.to_csv(f"{self.cv_output_path}/summary.csv")
os.remove(f'{self.cv_output_path}/forecast_table')
self.models_downloaded = True
def local_inferencing(self, test_set: pd.DataFrame):
if not self.models_downloaded:
print(
"Models have not been downloaded. Calling download_best_models first."
)
self.download_best_models()
forecast_results = pd.DataFrame()
quantile_result_list = []
rolling_result_list = []
for sku in test_set[time_series_id_column_names].unique():
test_ = test_set[test_set[time_series_id_column_names] == sku]
fitted_model = joblib.load(f"{self.cv_output_path}/{sku}/outputs/model.pkl")
model_response = fitted_model.forecast(X_pred=test_)[1]
model_response[label_column_name] = test_[label_column_name].values
forecast_results = forecast_results.append(model_response)
X_test = test_set[test_set[time_series_id_column_names] == sku]
y_test = X_test.pop(label_column_name).values
fitted_model.quantiles = [0.05, 0.5, 0.95]
quantile_result_list.append(fitted_model.forecast_quantiles(
X_test
))
# Make a rolling forecast, advancing the forecast origin by 1 period on each iteration through the test set
rolling_result_list.append(fitted_model.rolling_forecast(
X_test, y_test, step=1, ignore_data_errors=True
))
self.results["forecast_results"] = forecast_results
self.results["quantile_results"] = pd.concat(quantile_result_list, sort=False, ignore_index=True)
self.results["rolling_results"] = pd.concat(rolling_result_list, sort=False, ignore_index=True)
for key, value in self.results.items():
print(f'saving {key}')
value.to_csv(f"{self.inference_output_path}/{key}.csv")
关于azure - auto-ml-forecasting-many-models 检索训练结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73652143/
似乎有很多方法可以在 Azure 中自动使用 PowerShell。由于 ARM 模板是最新的,Azure 中的其他 PowerShell 选项是否已过时?这些工具/脚本之间有什么区别: Azure
我正在开发一个将托管在 Azure 中的 Web API。我想使用 Azure 诊断将错误记录到 Azure 表存储中。在经典门户中,我可以将日志配置为转到 Azure 表存储。 Classic Po
Azure 文件存储事件可以触发 Azure WebJob 或 Azure Function 吗? 例如,在文件夹“/todo/”中创建文件时。 最佳答案 我们目前没有任何 Azure 文件绑定(bi
我需要创建一个逻辑应用程序,我的要求是,我需要从 azure data Lake Gen2 文件夹迁移 json 文件,并根据某些值需要将该 json 转换为 xml,然后将其发送到 SQL。 因此,
我使用 VS Code 创建了 1 个 node.js 和 1 个 java Azure Function 当我使用 VS Code 将这两个函数部署到 Azure 时,我最终获得了这么多 Azure
收集 Azure 诊断数据时,暂存槽是否也会将诊断数据发送到 WadPerformanceCounters 表? 如果是这样,我该如何关闭它?或者在阅读诊断信息时如何区分暂存/生产。 我不想显示有关我
您好,我是 Azure 的新手。我有 VS 2012 和 Azure SDK 2.1,当我使用模拟器运行我的 Web 应用程序时一切正常。但是当我在 azure 上部署时出现错误消息: Could n
我很难区分 Azure 订阅和 Azure 租户有何不同?我尝试使用示例来弄清楚,但每次我得出的结论是它们在某种程度上是相同的?如果租户是组织在注册 Microsoft 云服务时接收并拥有的 Azur
如果我想在 Azure Insights 中设置自定义指标集合,并以(近)实时的方式可视化其中一些指标,并查看聚合的历史数据,我应该使用 Azure Metrics Explorer 还是 Azure
我想了解具有以下配置的 Azure 数据工厂 (ADF) 的现实示例/用例: Azure 集成运行时 (AIR) 默认值 自托管集成运行时(SHIR) 其他问题: 这两种配置(AIR 和 SHIR)是
请参阅下面来自 Azure 服务总线的指标。想要识别请求数量中的背景噪音|流量较低时的响应。假设振荡请求| session 中 amqp 握手的响应是潜在的。只是不明白这是什么类型的握手?从总线接收的
此问题与 Azure 事件中心和 Azure 服务总线之间的区别无关。 问题如下: 如果您将Azure Events Hub添加到您的应用程序中,那么您会注意到它依赖于Azure Service Bu
这两个事情是完全不同的,还是它们能完成的事情大致相同/相似? 最佳答案 Azure 辅助角色是“应用程序场”中您自己的一组虚拟机。您可以以分布式方式在它们上运行任何代码。通常,您编写业务代码以在这些服
我目前正在使用 Windows Azure 虚拟机来运行 RStudio, 我的虚拟机是 Windows Server R2 2012,它是 Azure 上的一项附加服务。 我还有一个 Azure 存
我们正在寻找托管一个网站(一些 css、js、一个 html 文件,但不是 aspx、一个通用处理程序)。 我们部署为: 1) Azure 网站 2) Azure 云服务 两种解决方案都有效。但有一个
我想从 Azure 表创建 blob。 AzCopy 支持此功能,但我找不到任何说明数据移动 API 也支持它的文档。此选项可用吗? https://azure.microsoft.com/en-us
This article表示 Azure 订阅所有者有权访问订阅中的所有资源。但是,要访问 Azure 数据库,必须是数据库中的用户,或者是 Azure Admin AD 组的成员。 无论 SQL 安
我尝试使用以下代码将 XML 文件上传到 Azure FTP 服务器: https://www.c-sharpcorner.com/article/upload-and-download-files-
除了 Azure 服务总线使用主题而 Azure 事件中心基于事件 - Azure 事件中心和 Azure 服务总线之间是否有任何根本区别? 对我来说,事件和消息之间没有真正的区别,因为两者只是不同类
我有一个通过虚拟网络网关连接到 Azure 虚拟网络的 Windows VPN 客户端。目标#1 是使用其内部 IP 地址连接到我的虚拟机。这有效。 第二个目标是使用其内部计算机名称进行连接(因为 I
我是一名优秀的程序员,十分优秀!