您过去肯定有过版本控制代码。但是,您是否对数据进行了版本控制?您是否曾经想过与不同的团队协作处理大量数据,而无需提交大量数据?想象一下,使用类似 git 的命令来运行类似存储库的生态系统,在该生态系统中,您可以提交数据、创建分支、检查历史记录并在整个数据生命周期中跟踪更改,那将是多么酷。最终,这可确保大型组织中的团队以与协作处理代码相同的方式协作处理数据。Pachyderm 的支柱是其文件系统 PFS。它本质上构建在 Postgres 和 Object Store 之上,例如 MinIO。这可确保数据在所有请求中都是安全和一致的。这可确保用户可以使用分支和提交对其数据进行版本控制,以管理和跟踪随时间的变化。
我们来看看如何以 MinIO Enterprise Store 作为主干来设置 Pachyderm。
MinIO Enterprise Store 和 Pachyderm
您应该已经有一个 Kubernetes 集群,并使用 Kubernetes 的支持版本运行。完成后,请继续下载并解压缩 MinIO Enterprise Store 的 Kubernetes YAML 文件。
wget https://dl.min.io/enterprise/console.tar.gz
tar xvf console.tar.gz
启动 MinIO Enterprise 控制台
kubectl apply -k console
接下来让我们安装 Pachyderm。
添加 Helm Chart 仓库和更新
helm repo add pachyderm https://helm.pachyderm.com
helm repo update
使用以下步骤创建 MinIO 存储桶
<div>
<script async src="https://js.storylane.io/js/v2/storylane.js"></script>
<div class="sl-embed" style="position:relative;padding-bottom:calc(79.17% + 25px);width:100%;height:0;transform:scale(1)">
<iframe loading="lazy" class="sl-demo" src="https://app.storylane.io/demo/cesgrcyf9wnq?embed=inline" name="sl-embed" allow="fullscreen" allowfullscreen style="position:absolute;top:0;left:0;width:100%!important;height:100%!important;border:1px solid rgba(63,95,172,0.35);box-shadow: 0px 0px 18px rgba(26, 19, 72, 0.15);border-radius:10px;box-sizing:border-box;"></iframe>
</div>
</div>
使用 MinIO 终端节点、存储桶名称、访问密钥 ID 和私有密钥更新 Pachyderm Helm 值文件。
pachd:
storage:
backend: "AMAZON"
storageURL: "s3://pachyderm-test?endpoint=minio.default.svc.cluster.local:9000&disableSSL=true®ion=dummy-region"
部署 Pachyderm
helm install pachyderm -f values.yaml pachyderm/pachyderm --version <your_chart_version>
添加和检索数据
有两种方法可以添加和检索数据。
MC
MC 是最好和最简单的方法。您可以像添加任何其他 S3 终端节点一样添加 Pachyderm 终端节点
mc alias set pachyderm_minio <pachyderm-address> <YOUR-PACHYDERM-AUTH-TOKEN> <YOUR-PACHYDERM-AUTH-TOKEN>
列出 Pachyderm 存储库和项目的内容
mc ls local/master.<repo>.<project>
命令行界面
您还可以使用 aws cli 将数据放入 MinIO 中
aws --endpoint-url <pachyderm-address> s3 cp myfile.csv s3://minio.default.svc.cluster.local:9000
从 MinIO Enterprise Store 检索数据同样简单
aws --endpoint-url <pachyderm-address> s3 cp s3://minio.default.svc.cluster.local:9000/myfile.csv
如果您在 Kubernetes 集群之外,则可以使用端口转发,但我建议将其限制为测试用例。
AI 数据的版本控制
我们发布代码,现在很明显我们为什么要这样做。我们将基础设施版本化为代码,这在过去并不是常态,但慢慢地,即使对于小型设置,对基础设施代码进行版本控制也与应用程序代码一样重要。从根本上说,我们这样做的原因是为了合作。了解大数据和 AI/ML 是同一枚硬币的两面非常重要,你不能缺一不可,随着模型的发展,它们都会相互影响。因此,您希望能够确保其他团队可以以有意义的方式处理您生成的数据,而无需再次重做整个数据,想象一下每次有人在没有适当的 git commit/merge 的情况下覆盖您的代码。在 MinIO,我们不仅注重简单性,还注重管理基础设施的最佳实践。