更快、更容易地访问更大的数据集,以加速你在顶点AI中的ML模型训练

256 阅读4分钟

顶点人工智能培训提供了一种无服务器的方法,以简化客户的ML模型培训体验。因此,在设计上,训练数据不会持续存在于计算集群中。在过去,客户只有云存储(GCS)或BigQuery(BQ)作为存储选项。现在,你也可以使用NFS共享,如Filestore,用于训练作业,并像访问本地文件系统中的文件一样访问NFS共享中的数据。

内置的NFS支持定制的培训工作有以下好处。

  • 为顶点人工智能训练提供了一种简单的方法来存储和访问大型数据集,减少了移动训练数据的繁琐工作。

  • 通过消除数据下载步骤,训练工作执行得更快。

  • 与使用其他存储解决方案相比,数据流在网络上的吞吐量更高。

本文演示了如何创建一个Filestore实例,以及如何使用存储在实例中的数据,用你的自定义训练代码训练模型。

创建一个Filestore实例并复制数据

首先,让我们创建一个Filestore实例作为我们的NFS文件服务器。

在云控制台中,进入Filestore实例页面,点击创建实例。

Vertex AI 1

根据你的需要配置该实例,注意以下几点。

  • 在本教程中,为了简单起见,我们使用 "默认 "的VPC网络。你可以选择任何你想要的网络,但要保存网络名称,因为我们以后会需要它。

  • 确保你使用 "私人服务访问 "作为连接模式。

关于深入的说明,请看创建实例

Vertex AI 2

你的新实例将显示在仪表板页面上。点击实例的名称,查看实例的细节。

instances 2

保存NFS挂载点信息,其形式为SERVER:PATH 。我们将在以后使用它。

Vertex AI 4

按照官方指南的指示,将数据复制到你的实例。

设置VPC网络对接

由于我们为Filestore实例选择了上面提到的 "私人服务访问 "模式,我们已经在我们的网络和谷歌服务之间建立了VPC对等。如果你使用的是第三方的NFS解决方案,你可能需要按照设置VPC网络对等中的指示,自己设置对等。

创建一个访问NFS的自定义作业

一旦你设置了NFS共享和VPC对等,你就可以用你的自定义培训作业来使用它。 在本节中,我们将使用gcloud CLI来创建一个可以访问NFS共享中文件的自定义培训作业。

具体来说,这个过程可以简化为以下一般步骤。

  1. 决定一个挂载点目录,路径为/mnt/nfs/ 。当你提交作业时,你的NFS共享将被挂载到这个目录。

  2. 在你的自定义代码中,你可以通过挂载点目录的本地路径访问你的NFS文件共享。

  3. 在你的培训作业请求中指定 "nfsMount "字段和network 字段,并提交它。

例如,我们把my_mount "挂载点''文件夹。然后在我们的自定义代码中,我们可以指定/mnt/nfs/my_mount ,以获得存储在我们Filestore实例中的数据。

code_block

[StructValue([(u'code', u "with open('/mnt/nfs/my_mount/data.csv', 'r') as f:\r\n lines = f.readlines()"), (u'language', u''), (u'caption', <wagtail.wagtailcore.rich_text.RichText object at 0x3e405209b490>])

我们也可以通过该本地路径写到Filestore实例。

代码_block

[StructValue([(u'code', u "with open('/mnt/nfs/my_mount/epoch3.log', 'a') as f:\r\n f.write('success!

在这里,假设我们建立了一个自定义的容器图像 gcr.io/PROJECT_ID/nfs-demo ,包含上述代码,用于提交我们的训练作业。我们可以运行像下面这样的命令。

code_block

[StructValue([(u'code', u'PROJECT_ID='YOUR-PROJECT/''project/nLOCATION=us-central1\r\nJOB_NAME='nfs-demo/'\r\nIMAGE_URI="gcr.io/PROJECT_ID/nfsdemo:latest"rnrngcloudaicustomjobscreaternproject=PROJECT\_ID/nfs-demo:latest"\\r\\n\\rngcloud ai custom-jobs create \\r\\n --project={PROJECT_ID}.\\\o-region=LOCATIONrndisplayname={LOCATION}。\\\\\\r\\n --display-name={JOB_NAME}\\\u'language', u''), (u'caption', <wagtail.wagtailcore.rich_text.RichText object at 0x3e4052378810>)])


config.yaml 文件描述了CustomJobSpec,它应该有网络和NFS挂载的设置,如下所示。

code_block

[StructValue([(u'code', u "network: projects/PROJECT_NUMBER/global/networks/default\r\nworkerPoolSpecs:\r\n - machineSpec:\r\n machineType: n1-standard-8\r\n replicaCount:1\r\n containerSpec:\r\n imageUri:'gcr.io/PROJECT_ID/nfs-demo:latest'\r\n nfsMounts:\r\n - server:10.76.0.10\n path:/fileshare\r\n mountPoint: my_mount"), (u'language', u''), (u'caption', <wagtail.wagtailcore.rich_text.RichText object at 0x3e4052148bd0>)]]

然后我们可以检查你的训练作业的状态,看看它是如何成功地从你的NFS文件共享中读/写数据的。


总结

在这篇文章中,我们使用Filestore来演示如何通过挂载到Vertex AI来访问NFS共享中的文件。我们创建了一个Filestore实例和VPC对等连接,然后提交了一个可以直接从Filestore读取本地目录的作业。

通过利用来自NFS共享(如Filestore)的数据流的性能和吞吐量优势,它简化并加速了在Vertex AI上运行训练作业的过程,这使用户能够用更多的数据训练更好的模型。

  • 要了解更多关于使用NFS文件系统与Vertex AI的信息,请看NFS对Vertex AI训练的支持

  • 要了解更多关于Vertex AI的信息,请查看我们的开发者倡导者的这篇博文