我想知道如何使用内联存储为kubeflow管道创建一个简单的静态超文本标记语言可视化?
我的用例是我想传递一个包含简单iframe的原始html字符串。
文档中的示例不适合我(kfp sdk v1)。
这是我遵循的文档:https://www.kubeflow.org/docs/components/pipelines/sdk/output-viewer/#web-app
谢啦
更新:
我测试了kfp sdk v2的输出[超文本标记语言]
,它可以工作,但我遇到了其他问题。
首先,Kubeflow html查看器创建了一个带有空白src和srcdoc="您的静态html"的iframe。这使得在您的html中无法使用iframe,因为您有一个嵌套的iframe(来自html查看器的父级和来自实际html的嵌套)。
解决方案:
我找到了一个适用于所有用例的KFPSDKv1和v2的解决方案,我使用markdown可视化而不是超文本标记语言可视化。由于markdown支持内联超文本标记语言,我能够直接将我的html粘贴到markdown输出。与使用超文本标记语言可视化相比,这支持iframe。
以下是一些代码来说明解决方案:
from kfp.components import create_component_from_func
def markdown_vis(mlpipeline_ui_metadata_path: kfp.components.OutputPath()):
import json
metadata = {
'outputs' : [
{
'storage': 'inline',
'source': f"<iframe src=\"https://www.google.ca/\" frameborder=\"0\" allowFullScreen=\"true\" width=\"950\" height=\"600\"/>",
'type': 'markdown',
}]
}
with open(mlpipeline_ui_metadata_path, 'w') as metadata_file:
json.dump(metadata, metadata_file)
markdown_op = create_component_from_func(markdown_vis)
我还测试了文档,它的工作原理: