基于Python的可视化(已弃用)

预定义和自定义的管道输出可视化

本页面描述了基于 Python 的可视化,如何创建它们,以及如何在 Kubeflow Pipelines UI 中使用它们来可视化结果。基于 Python 的可视化在 Kubeflow Pipelines 版本 0.1.29 及更高版本中可用,并且在 Kubeflow 版本 0.7.0 及更高版本中可用。

虽然基于Python的可视化被意图作为在Kubeflow Pipelines UI中可视化数据的主要方法,但它们并不取代在Kubeflow Pipelines UI中可视化数据的先前方法。当考虑在您的管道中使用哪种可视化方法时,请检查下面部分中基于Python的可视化的局限性,并将其与您的可视化需求进行比较。

介绍

基于Python的可视化是一种在Kubeflow Pipelines UI中可视化结果的新方法。这种可视化结果的新方法是通过使用 nbconvert 实现的。除了使用nbconvert,管道的结果现在可以在不需要将组件包含在管道本身中的情况下进行可视化,因为可视化结果的过程现在与管道解耦。

基于Python的可视化提供了两类可视化。第一类是 预定义可视化。这些可视化是Kubeflow Pipelines 默认提供的,方便你和你的客户轻松快速地生成强大的可视化。第二类是 自定义可视化。自定义可视化允许你和你的客户提供Python可视化代码来生成可视化。这些可视化可以在结果可视化时实现快速开发、实验和定制。

Confusion matrix visualization from a pipeline component

使用预定义的可视化

预定义矩阵可视化

Confusion matrix visualization from a pipeline component

  1. 打开运行的详细信息。
  2. Select a component.
    • 所选的组件没有关系。但是,如果您想可视化特定组件的输出,在该组件内进行操作会更简单。
  3. 选择工件选项卡。
  4. 在标签顶部,您应该会看到一个名为 Visualization Creator 的卡片。
  5. Within the card, provide a visualization type, a source, and any necessary arguments.
    • 任何必需或可选参数将显示为占位符。
  6. 点击 生成可视化
  7. 向下滚动查看生成的可视化。

预定义的TFX可视化

  1. 在管道页面,点击 [样本] 统一 DSL - 出租车小费预测模型训练器 以打开管道详情页面。
  2. 在管道详情页面,点击 创建运行.
  3. On the Create run page,
    • 使用您选择的运行名称和实验名称。
    • pipeline-root字段中,指定一个您有写入权限的存储桶。例如,输入一个Google Cloud Storage存储桶或Amazon S3存储桶的路径。
    • 点击 开始 创建运行。
  4. 运行完成后,在运行详情页面,点击任意步骤。例如,点击第一个步骤 csvexamplegen,如上面视频所示。
  5. In the side panel of the selected step,
    • 点击工件选项卡。
    • 可视化创建器部分,从下拉菜单中选择TFDV
    • 字段中,使用gs://ml-pipeline-playground/tfx_taxi_simple/data/data.csv,这是本次运行使用的输入数据。
    • 点击 生成可视化 并等待。
  6. 移动到Artifacts选项卡的底部以找到生成的可视化。

使用自定义可视化

Confusion matrix visualization from a pipeline component

  1. Enable custom visualizations within Kubeflow Pipelines.
    • 如果您还没有将 Kubeflow Pipelines 部署到您的集群中,您可以编辑 frontend deployment YAML 文件,以包含以下 YAML,这指定了允许通过环境变量进行自定义可视化。

      - env:
        - name: ALLOW_CUSTOM_VISUALIZATIONS
          value: true
      
    • 如果您已经在一个集群中部署了Kubeflow Pipelines,您可以编辑前端部署YAML以指定允许自定义可视化,如上所述。有关更新部署的详细信息,请参见Kubernetes文档中的更新部署

  2. 打开运行的详细信息。
  3. Select a component.
    • 所选的组件没有关系。但是,如果您想可视化特定组件的输出,在该组件内进行操作会更简单。
  4. 选择工件选项卡。
  5. 在标签顶部,您应该会看到一个名为 Visualization Creator 的卡片。
  6. 在卡片中,选择自定义可视化类型,然后提供一个源以及任何必要的参数(源和参数变量对于自定义可视化是可选的)。
  7. 提供自定义可视化代码。
  8. 点击 生成可视化
  9. 向下滚动查看生成的可视化。

上述指令的演示如下。

  1. 在管道页面,点击 [样本] 统一 DSL - 出租车小费预测模型训练器 以打开管道详情页面。
  2. 在管道详情页面,点击 创建运行.
  3. On the Create run page,
    • 使用您选择的运行名称和实验名称,或者简单地使用为您选择的默认名称。
    • pipeline-root字段中,指定您有权限写入的存储桶。例如,输入Google Cloud Storage存储桶或Amazon S3存储桶的路径。
    • 点击 开始 创建运行。
  4. 运行完成后,在运行详细信息页面,点击statisticsgen步骤。该步骤的输出是由Tensorflow数据验证生成的统计数据。
  5. In the side panel of the selected step,
    • 点击输入/输出选项卡找到mlpipeline-ui-metadata项,并点击其中的minio链接。这将打开一个新的浏览器选项卡,显示输出文件路径的信息。复制演示视频中显示的输出文件路径。
    • 返回到运行详情页面,并点击 工件 选项卡。
    • 在选项卡的顶部,你应该看到一个名为 Visualization Creator 的卡片,从下拉菜单中选择 Custom
    • 自定义可视化代码字段中,填写以下代码片段,并将[output file path]替换为您刚刚从mlpipeline-ui-metadata复制的输出文件路径。
       import tensorflow_data_validation as tfdv
       stats = tfdv.load_statistics('[output file path]/stats_tfrecord')
       tfdv.visualize_statistics(stats)
     
    • 点击 生成可视化 并等待。
  6. 移动到Artifacts选项卡的底部以找到生成的可视化。

已知限制

  • 无法同时生成多个可视化。

    • 这是因为使用单个Python内核来生成可视化。
    • If visualizations are a major part of your workflow, it is recommended to increase the number of replicas within the 可视化部署 YAML file or within the visualization service deployment itself.
      • 请注意,这并不能直接解决问题,而是减少在生成可视化时遇到延迟的可能性。
  • 生成超过30秒的可视化将失败。

    • 对于达到30秒超时的可视化,您可以将TimeoutValue头部添加到前端发出的请求中,指定一个最多为8位数字的正整数的ASCII字符串,用于生成可视化所需的时间,具体如grpc文档所述。

    • 对于超过100秒的可视化,您必须在请求头中指定一个 TimeoutValue 并且 更改可视化服务的默认内核超时。要更改可视化服务的默认内核超时,请将可视化服务部署的 KERNEL_TIMEOUT 环境变量设置为新的超时长度(以秒为单位),可以在 可视化部署 YAML 文件中或在可视化服务部署本身中进行设置。

      - env:
        - name: KERNEL_TIMEOUT
          value: 100
      
  • 生成的可视化的HTML内容不能大于4MB。

    • gRPC 默认限制服务器可以发送和接收的最大大小为 4MB。为了允许生成大于 4MB 的可视化内容,您必须手动设置 MaxCallRecvMsgSize 以用于 gRPC。这可以通过编辑提供给 gRPC 服务器的选项来完成,位于 main.go 中。

      var maxCallRecvMsgSize = 4 * 1024 * 1024
      if serviceName == "Visualization" {
            // 仅当是针对可视化时才更改 maxCallRecvMesSize
            maxCallRecvMsgSize = 50 * 1024 * 1024
      }
      opts := []grpc.DialOption{
            grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxCallRecvMsgSize)),
            grpc.WithInsecure(),
      }
      

反馈

此页面有帮助吗?