Loading...

在 AWS Outposts 机架上进行本地训练机器学习模型以满足数据驻留要求 计算博客



AWS Outposts架构下本地训练机器学习模型

关键要点

在这篇文章中,您将学习如何使用 AWS Outposts rack 和存储在 Amazon S3 on Outposts 的数据集,在本地训练机器学习ML模型。随着数据主权和隐私法规的逐渐增多,组织需要灵活的解决方案,以平衡合规性和云服务的敏捷性,特别是在医疗和金融等领域。

在 AWS Outposts 机架上进行本地训练机器学习模型以满足数据驻留要求 计算博客

Outposts rack 提供了一种无缝的混合解决方案,将 AWS 能力扩展到任何本地或边缘位置,让您可以自由选择存储和处理数据的位置。不同国家的数据主权法规各有不同,本文将探讨需要在没有 AWS 区域的地理位置上存储和处理训练数据集的场景。

Amazon S3 上的 Outposts

在准备机器学习模型训练所需的数据集时,存储和检索数据是一个关键环节,尤其是在遵守数据居住地和监管要求时。

您可以将训练数据集作为对象数据存储在 Outposts 的 Amazon S3 本地桶中。要访问 S3 on Outposts 桶进行数据操作,您需要创建 访问点,并通过与您的 VPC 相关联的 S3 on Outposts 端点 路由请求。这些端点不仅可以从 VPC 内部访问,也可以通过 本地网关 在本地访问。

解决方案概述

通过这一示例架构,您将训练 YOLOv5 模型,使用来自 Common Objects in Context (COCO) 数据集的一部分分类。COCO 数据集是对象检测任务中一个热门的选择,提供丰富的图像类别和详细的注释,并可通过 AWS 开放数据赞助计划 访问。

本示例基于一个使用 Amazon Elastic Compute Cloud (Amazon EC2) g4dn8xlarge 实例在 Outposts rack 上进行模型训练的架构。根据您的 Outposts rack 计算配置,您可以使用不同的实例大小或类型,并根据需要调整训练参数,如学习率、增强或模型架构。您将使用 AWS 深度学习AMI 来启动您的 EC2 实例,该AMI包含加速深度学习所需的框架、依赖关系和工具。

关于训练数据集的存储,您将使用一个 S3 on Outposts 桶,并通过 Outposts 本地网关从您的本地位置连接到它。 本地网关路由 模式可以是直接 VPC 路由或客户拥有的 IPCoIP,具体取决于您的工作负载需求。您的本地网关路由模式将决定您需要使用的 S3 on Outposts 端点配置。

1 下载并填充训练数据集

您可以使用以下 AWS CLI 命令将训练数据集下载到本地客户端机器:

bashaws s3 sync s3//fastaicoco/

下载后,解压 annotationstrainval2017zip、val2017zip 和 train2017zip 文件:

bashunzip annotationstrainval2017zipunzip val2017zipunzip train2017zip

在 annotations 文件夹中,您需要使用 instancestrain2017json 和 instancesval2017json 这两个文件,这些文件包含与训练和验证文件夹中的图像对应的注释。

2 过滤和准备训练数据集

您将使用 COCO 数据集中的训练、验证和注释文件。该数据集包含超过 10 万张图像,分为 80 个类别,但为了简化训练,您可以专注于超市货架上 10 种特定食品项目:香蕉、苹果、三明治、橙子、花椰菜、胡萝卜、热狗、比萨、甜甜圈和蛋糕。毕竟,谁不喜欢在模型训练后去品尝一口呢?训练这种模型的应用可能是自我存货监控、自动结账或使用计算机视觉进行产品展示优化。由于 YOLOv5 使用特定的注释标签格式,您需要将 COCO 数据集注释转换为 目标注释格式。

3 将训练数据集加载到 S3 on Outposts 桶中

为将训练数据加载到 S3 on Outposts,您需要首先使用 AWS 控制台或 CLI 创建一个新桶,并为 VPC 创建一个访问点和端点。您可以使用桶样式 访问点别名 来加载数据,使用以下 CLI 命令:

bashcd /your/local/target/upload/path/aws s3 sync s3//trainingdatao0a2b3c4d5e6d7f8g9h10fops3

将上述 CLI 命令中的别名替换为您环境的相应桶别名。s3 sync 命令会同步结构相同的文件夹,包含训练和验证数据的图像和标签,您稍后将用其加载到 EC2 实例中进行模型训练。

4 启动 EC2 实例

您可以根据 此入门指南 启动带有深度学习AMI的 EC2 实例。对于本练习,使用的是 Deep Learning AMI GPU PyTorch 201 (Ubuntu 2004)。

5 下载 YOLOv5 并安装依赖

一旦 SSH 进入 EC2 实例,激活预配置的 PyTorch 环境,并克隆 YOLOv5 库。

bashssh i /path/keypairnamepem ubuntu@instanceipaddressconda activate pytorchgit clone https//githubcom/ultralytics/yolov5gitcd yolov5

然后,安装所需的依赖。

bashpip install U r requirementstxt

为了确保各种软件包之间的兼容性,您可能需要修改在 AWS 深度学习 AMI 上运行的现有软件包。

6 从 S3 on Outposts 将训练数据集加载到 EC2 实例中

使用 s3 sync CLI 命令将训练数据集复制到 EC2 实例中,并指向您的本地工作空间。

bashaws s3 sync s3//trainingdatao0a2b3c4d5e6d7f8g9h10fops3

7 准备配置文件

创建数据配置文件,反映数据集的结构、类别和其他参数。datayml

yamltrain /your/ec2/path/to/data/images/train val /your/ec2/path/to/data/images/val nc 10 # 数据集中的类别数 names [banana apple sandwich orange broccoli carrot hot dog pizza donut cake]

使用来自 YOLOv5 库的 示例 配置文件创建模型训练参数文件。您需要将类数更新为 10,还可以根据需要更改其他参数。

parametersyml

yaml

参数

nc 10 # 数据集中的类别数depthmultiple 033 # 模型深度倍增widthmultiple 050 # 层通道倍增anchors [1013 1630 3323] # P3/8 [3061 6245 59119] # P4/16 [11690 156198 373326] # P5/32

主体

backbone[[1 1 Conv [64 6 2 2]] # 0P1/2 [1 1 Conv [128 3 2]] # 1P2/4 [1 3 C3 [128]] [1 1 Conv [256 3 2]] # 3P3/8 [1 6 C3 [256]] [1 1 Conv [512 3 2]] # 5P4/16 [1 9 C3 [512]] [1 1 Conv [1024 3 2]] # 7P5/32 [1 3 C3 [1024]] [1 1 SPPF [1024 5]] # 9]

头部

head[[1 1 Conv [512 1 1]] [1 1 nnUpsample [None 2 nearest]] [[1 6] 1 Concat [1]] # 合并 backbone P4 [1 3 C3 [512 False]] # 13

[1 1 Conv [256 1 1]] [1 1 nnUpsample [None 2 nearest]] [[1 4] 1 Concat [1]] # 合并 backbone P3 [1 3 C3 [256 False]] # 17 (P3/8small)

[1 1 Conv [256 3 2]] [[1 14] 1 Concat [1]] # 合并 head P4 [1 3 C3 [512 False]] # 20 (P4/16medium)

[1 1 Conv [512 3 2]] [[1 10] 1 Concat [1]] # 合并 head P5 [1 3 C3 [1024 False]] # 23 (P5/32large)

[[17 20 23] 1 Detect [nc anchors]] # 检测(P3 P4 P5)

到此为止,目录结构应该如下所示:

8 训练模型

您可以运行以下命令来训练模型。批量大小和训练轮次可以根据您的 vCPU 和 GPU 配置而有所不同,您可以进一步修改这些值或添加权重,以进行额外的训练轮次。

bashpython3 trainpy imgsize 640 batchsize 32 epochs 50 data /your/path/to/configuationfiles/dataconfigyaml cfg /your/path/to/configuationfiles/parametersyaml

安易加速器正版下载

在每个训练轮次的迭代过程中,您可以监控模型性能。

textStarting training for 50 epochs

Epoch GPUmem boxloss objloss clsloss Instances Size0/49 67G 008403 005 004359 129 640 100 455/455 [0614lt0000

模型训练完成后,您可以查看验证结果以及对批量验证数据集的评估,使用标准度量来评估模型的性能。

textValidating runs/train/exp/weights/bestptFusing layers YOLOv5 summary 157 layers 7037095 parameters 0 gradients 158 GFLOPs Class Images Instances P R mAP50 mAP5095 all 575 2114 0282 0222 016 00653 banana 575 280 0189 0143 00759 0024 apple 575 186 0206 0085 00418 00151 sandwich 575 146 0368 0404 0343 0146 orange 575 188 0265 0149 00863 00362 broccoli 575 226 0239 0226 0138 00417 carrot 575 310 0182 0203 00971 00267 hot dog 575 108 0242 0111 00929 00311 pizza 575 208 0405 0418 0333 015 donut 575 228 0352 0241 019 00973 cake 575 234 0369 0235 0203 00853Results saved to runs/train/exp

使用模型进行推理

为了测试模型的表现,您可以通过传入一张来自超市货架上的新图像进行测试,其中包含您训练模型的某些对象。

bash(pytorch) ubuntu@ip1723148165/workspace/source/yolov5 python3 detectpy weights /home/ubuntu/workspace/source/yolov5/runs/train/exp/weights/bestpt source /home/ubuntu/workspace/inference/Inferenceimagejpg

来自前述模型推理的响应表明,它预测在图像中有 4 个苹果、6 个橙子和 1 个蛋糕。预测可能会根据使用的图像类型而有所不同。虽然单个样本图像可以让您感受到模型的性能,但并未提供全面的了解。为了更全面的评估,建议在更大且更具多样性的验证图像集上测试模型。为了获得更好的预测效果,可能需要进行额外的训练和参数调整。

清理

在成功训练和测试模型后,您可以终止以下教程中使用的资源:

终止 用于模型训练的 EC2 实例;如果您不再需要训练数据集,可以 删除 S3 on Outposts 资源。

结论

AWS Outposts 与 S3 on Outposts 的无缝计算集成,加上本地机器学习模型训练能力,为组织提供了一种强大的解决方案,以应对数据居住地的要求。通过构建此环境,您可以确保数据集保持在所需地理位置,同时仍然利用先进的机器学习模型和云基础架构。此外,认真审查和微调您的实施策略及自我约束,以确保数据始终在合规要求的边界内,这一点至关重要。您可以阅读有关数据居住地架构的更多信息,详见此 博客文章。

参考资料

COCO Common Objects in Context fastai 数据集于 2023 年 8 月 20 日访问,链接为 https//registryopendataaws/fastaicoco。

安易官网提供卓越的全球连线,轻松实现一键加速体验。作为官方平台,确保高速稳定的网络连接,轻松解决跨区域访问障碍。