问题标签 [google-cloud-ai-platform-pipelines]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1313 浏览

google-cloud-platform - 如何在 Vertex AI 中安排自定义训练作业的重复运行

我已将我的训练代码打包为 python 包,然后能够在 Vertex AI 上将其作为自定义训练作业运行。现在,我希望能够安排这项工作运行,比如每 2 周运行一次,然后重新训练模型。CustomJoBSpec 中的调度设置仅允许 2 个字段,“超时”和“restartJobOnWorkerRestart”,因此无法使用 CustomJobSpec 中的调度设置。我能想到的实现这一点的一种方法是使用“CustomPythonPackageTrainingJobRunOp”Google Cloud Pipeline 组件一步创建一个 Vertex AI 管道,然后安排管道以我认为合适的方式运行。是否有更好的选择来实现这一目标?

编辑:

我能够使用 Cloud Scheduler 安排自定义训练作业,但我发现在 AIPlatformClient 中使用 create_schedule_from_job_spec 方法在 Vertex AI 管道中非常易于使用。我在 gcp 中使用 Cloud Scheduler 安排自定义作业的步骤如下,链接到谷歌文档:

  1. 将目标类型设置为 HTTP
  2. 对于指定自定义作业的 url,我按照链接获取 url
  3. 对于身份验证,在 Auth 标头下,我选择了“添加 OAauth 令牌”

您还需要在项目中拥有一个“Cloud Scheduler 服务帐户”以及“授予它的 Cloud Scheduler 服务代理角色”。虽然文档说如果您在 2019 年 3 月 19 日之后启用 Cloud Scheduler API,这应该已经自动设置,但对我来说并非如此,并且必须手动添加具有角色的服务帐户。

0 投票
1 回答
119 浏览

google-cloud-platform - 尝试在 VertexAI 管道中使用 CustomPythonPackageTrainingJobRunOp 时出错

我在 VertexAI 管道中使用谷歌云管道组件 CustomPythonPackageTrainingJobRunOp。我之前已经能够将这个包作为 CustomTrainingJob 成功运行。我可以在日志中看到多条 (11) 条错误消息,但唯一对我来说似乎有意义的是“ValueError: too many values to unpack (expected 2)”,但我无法找出解决方案。如果需要,我也可以添加所有其他错误消息。我在训练代码开始时记录了一些消息,所以我知道错误发生在训练代码执行之前。我完全坚持这一点。链接到有人在管道中使用 CustomPythonPackageTrainingJobRunOp 的示例也非常有用。下面是我试图执行的管道代码:

在 CustomPythonPackageTrainingJobRunOp 的文档中,参数“python_module”的类型似乎是“google.cloud.aiplatform.training_jobs.CustomPythonPackageTrainingJob”而不是字符串,这看起来很奇怪。但是,我尝试重新定义管道,其中我已将 CustomPythonPackageTrainingJobRunOp 中的参数 python_module 替换为 CustomPythonPackageTrainingJob 对象而不是字符串,如下所示,但仍然出现相同的错误:

编辑:

添加了我正在传递但忘记在此处添加的参数。

0 投票
1 回答
98 浏览

google-cloud-platform - 示例笔记本,谷歌云管道组件示例

我正在寻找带有“CustomPythonPackageTrainingJobRunOp”谷歌云管道组件的示例或教程笔记本。我一直在尝试使用它,但不断出错。

PS:我已经在这里发布了一个关于错误的问题,并且还请求了一个示例,但是再次发布了关于该示例的帖子,因为我觉得那是一个很长的帖子,并且该请求被其他代码细节所掩盖。

0 投票
1 回答
138 浏览

google-cloud-platform - 尝试使用 TFX 运行非常简单的 Kubeflow 管道时,为什么 GKE 集群上的 pod 会 OOMkilled?

我正在按照Cloud AI Platform Pipelines 上的 TFX教程在 Google Cloud 上实现 Kubeflow 编排的管道。主要区别在于我正在尝试实现对象检测解决方案,而不是本教程提出的出租车应用程序。

出于这个原因,我(在本地)创建了一个通过 labelImg 标记的图像数据集,并使用我上传到 GS 存储桶上的这个脚本将其转换为 .tfrecord。然后我按照 TFX 教程创建 GKE 集群(默认集群,使用此配置)和运行代码所需的 Jupyter Notebook,导入相同的模板。

主要区别在于管道的第一个组件,我将CSVExampleGen组件更改为ImportExampleGen组件:

管道中没有插入其他组件,数据路径指向包含 .tfrecord 的存储桶上的文件夹位置:

这是运行器代码(与 TFX 教程中的基本相同):

然后创建管道并使用 Notebook 中的以下代码调用运行:

问题是,虽然示例中的管道运行没有问题,但该管道总是失败,GKE 集群上的 pod 以代码 137 ( OOMKilled ) 退出。

这是集群工作负载状态的快照,是崩溃运行的完整日志转储

我已经尝试过减小数据集大小(现在整个 .tfrecord 大约为 6MB)并将其在本地分成两组(验证和训练),因为当组件应该拆分数据集时似乎会发生崩溃,但两者都没有这些改变了局面。

您对它为什么会出现内存不足以及我可以采取哪些步骤来解决这个问题有任何想法吗?

非常感谢。

0 投票
0 回答
93 浏览

google-ai-platform - 如何在 Vertex AI 中调用自定义预测逻辑?

目标:通过执行自定义预测逻辑来服务来自 Vertex AI 端点的预测请求。

详细步骤:例如,我们可能已经在GCS bucket中上传了一个image_quality.pb模型(在non-vertex-ai pythonic环境下开发)

接下来,我们希望通过反序列化部署的模型并在顶点 AI 端点中提供推理功能来创建自定义图像推理逻辑

最后,我们希望将图像列表(存储在另一个 GCS 存储桶中)传递给该端点。

我们还希望在 tensorboard 中查看日志和指标。

现有的 Vertex AI 代码示例提供了调用 model.batch_predict / 端点的示例。预测,但不要提及如何执行自定义预测代码。

如果有人可以提供文档/代码的指南和链接以实施上述步骤,那就太好了。

提前致谢!

0 投票
0 回答
44 浏览

google-cloud-functions - 使用谷歌存储中的云功能触发我的打包模型的训练

我是云功能和 AI Platform Pipeline 的新手。

我将自定义模型存储在 GCS 中,并使用脚本 training.sh 从笔记本电脑运行

training.sh 在哪里

每次在 input_data 存储桶中上传新文件时,我都会尝试自动进行培训。我正在使用云功能来做到这一点。但是,我不清楚如何使用 Kuberflow 来运行 training.sh 文件。

我正在使用本教程

https://cloud.google.com/blog/products/ai-machine-learning/using-remote-and-event-triggered-ai-platform-pipelines

和它的笔记本

https://github.com/amygdala/code-snippets/blob/master/ml/notebook_examples/functions/hosted_kfp_gcf.ipynb

在这里,他通过创建容器定义了一个顺序管道。

我看不到如何定义类似的函数来运行我的 training.sh。我需要将我的模型包 my_package_model-0.1.2.tar.gz 容器化吗?

有人熟悉这种类型的自动化吗?

0 投票
1 回答
110 浏览

python - 如何设置 PipelineJob 的运行名称

我有这段代码来启动 VertexAI 管道作业:

这很好用,但run name标签是一个随机数。我该如何指定run name

在此处输入图像描述

0 投票
0 回答
51 浏览

google-cloud-platform - 标准输出未在 Kubeflow 的 Sidecar Container 中保存为 Artifact

我在 GCP AI Platform Pipelines (Kubeflow) pod 上使用 sidecar 和 init 容器,但标准输出内容不是在 Artifacts 中创建的。

主容器中的标准输出,如 Artifactsminio://{bucket-name}/artifacts/{workflow-name}/{pod-name}/main.log将自动创建。所以,我预计 sidecar 和 init 容器将是相同的。

我必须实现任何额外的代码吗?

生成 ContainerOp 的代码:

Kubeflow 管道版本:1.4.1

客户端库版本:kfp 1.8.9

0 投票
0 回答
72 浏览

google-cloud-platform - 无法查看 Vertex AI 管道节点日志

我创建了一个 Vertex AI 管道来执行一个简单的 ML 流程,即创建数据集、在其上训练模型,然后在测试集上进行预测。有一个基于 python 函数的组件(train-logistic-model),我在其中训练模型。但是,在组件中我指定了一个无效的包,因此管道中的步骤失败了。我知道这一点,因为当我更正包名称时,该步骤运行良好。但是,对于失败的管道,我看不到任何日志。当我单击管道运行时图(附图片)上“执行信息”下的“查看作业”时,它会将我带到管道运行的“自定义作业”页面。有一条消息:

自定义作业失败并显示错误消息:副本 workerpool0-0 以非零状态退出 1 ...

当我单击查看日志按钮时,它会将我带到没有日志的日志资源管理器。为什么没有日志?我是否需要为此在管道中的某处启用日志记录?或者它可能是一个权限问题(它没有提到任何关于它的内容,只是日志资源管理器上的这条消息和它下面的 0 个日志。

显示查询中指定时间的日志。要查看更多结果,请更新您的查询

在此处输入图像描述

0 投票
2 回答
828 浏览

google-cloud-platform - Kubeflow 与 Vertex AI 管道

我正在探索 kubeflow 管道和 Vertex AI 管道。据我了解,Vertex AI 管道是 kubeflow 管道的托管版本,因此不需要部署完整的 kubeflow 实例。在这方面,抛开定价不谈,Vertex AI 管道是更好的选择。但是,在 kubeflow 中,可以创建实验,这是我在 Vertex AI 管道中没有找到的等价物。我能够在文档中发现 Vertex AI 不支持的唯一 kubeflow 功能是“缓存过期”和“递归”,但它们没有提及任何关于实验的内容。让我想知道在两者之间做出决定时是否还有其他值得考虑的差异。