persistent-volumes - 从不同组件访问 kubeflow 中的持久卷
问题描述
我正在向我的 kubeflow 管道组件添加持久卷声明,我希望能够从不同的组件访问卷,以便我可以在其中存储数据并从其他组件中检索它。
- 体积定义:
vop = kfp.dsl.VolumeOp(
name="create-pvc",
resource_name="my-pvc",
modes=kfp.dsl.VOLUME_MODE_RWO,
size=volume_size
)
- 将卷安装到组件:
comp1.add_pvolumes({"/mnt'": vop.volume})
comp2.add_pvolumes({"/mnt'": comp1.pvolume})
- 我在 comp1 中创建了一些数据并想从 comp2 中读取它
# data read from external source
data=some_data_frame_readed_from_gcs
# data pickled to volume
path = os.path.abspath("data")
with open(path, 'wb') as f:
pickle.dump(data, f)
print("PATH: {}".format(path))
# output path is: "/mnt/data"
# Now I try to read it from comp2
with open(path, 'rb') as f:
df = pickle.load(f)
- 这是 kubeflow 管道中显示的错误代码:
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/data'
解决方案
您是否有特殊原因要使用卷?KFP 具有内置的数据传递机制(参见Python 的数据传递)
如果您的数据小于 10GB,我建议使用内置的数据传递方法。
卷的支持较少,并且使组件不可移植。例如,Vertex AI Pipelines 不支持卷。
推荐阅读
- vuejs2 - VueJS State Getter 正在寻找匹配项,但未返回正确的值
- java - 使用格式说明符
- android - 空文档的 Android Firestore id
- java - 仅在 CLI 上的单元测试中无法在 src/main/resources 中找到 xsd
- iot - 总是从服务器获得 -1 连接被拒绝响应
- c++ - 使用 WMI 和 C++ 获取主板序列号时出现问题
- flutter - 适用于 iOS 的自定义 Flutter 插件开发
- rust - 如何从底层的子树中获取 roothash 或证明?
- discord - Discord.js 如果有角色则发送消息
- javascript - 如何重置 Impetus.js 的动量?