S'S ALGORITHM

AWS中机器学习的相关服务和网络构架

时间戳2024年2月。

Sagemaker的训练和部署模型

以下是一个例子。

[client app]
[endpoint]

[s3]
model artifacts
training data

[sagemaker]
model development/ hosting
model training

[ECR]
inference code image
training code image

最顶端是客户应用client app。通过endpoint和Sagemaker进行交互。

S3中存放训练数据training data,sagemaker使用ECR中的推理和训练代码,对S3中的训练数据进行训练,得到的model模型,保存在S3中。

当客户端通过端点发来请求,sagemaker会通过推理代码调用模型,进行推理,然后将结果返回给客户。

ECR中有内置的模型供使用。sagemaker则可以运行各种框架,比如Pytorch,Tensorflow等,灵活地进行训练和host。同时sagemaker可以选择各种计算资源,包括GPU,和Spark集群GPU等高级计算资源。

代码,模型,image,框架可以使用AWS的也可以是自己准备的。

两种部署方法

1, 持续性的endpoint,为个人提供推理服务。

2, Sagemaker batch transform 为整个数据集进行推理。

3, 其他优质选择:

- Inference pipelines 可以进行更加复杂的处理。
- Sagemaker Neo进行边缘部署。
- Elastic Inference可以加速深度学习模型。
- 自由伸缩scaling可以进行endpoint的自由增减。
- ShadowTesting可以进行新模型的测试比较。

数据类型RecordIO和Protobuf

多次出现这种数据类型。

RecordIO和Protobuf都是用于序列化数据的格式,通常在机器学习中使用。

  1. RecordIO:RecordIO是一种二进制数据格式,用于高效地存储和传输大规模数据集。它通常用于存储图像、音频、文本等类型的数据,并且能够有效地处理大规模数据,提高数据处理的效率。RecordIO格式通常与深度学习框架如MXNet等结合使用。

  2. Protobuf(Protocol Buffers):Protobuf是一种轻量级、高效的序列化数据格式,由Google开发。它使用简单的接口描述语言来定义数据结构,然后通过编译器生成相应的代码,用于在不同的平台和编程语言中进行数据的序列化和反序列化操作。Protobuf在机器学习中常用于定义模型结构、数据格式等,因为它具有高效的序列化和反序列化速度,能够有效地处理大规模数据。

这两种格式在机器学习中比较常见的原因包括:

总的来说,RecordIO和Protobuf都是为了解决大规模数据处理和跨平台数据交换而设计的,因此在机器学习中得到了广泛的应用。

Sagemaker的build-in models

Sagemaker的生态服务

关键概念

ML相关的AWS服务

立刻上手无需代码

其他

Kinesis Analysis中的两种算法

时间序列预测

教育娱乐

监控检测服务

SDK

代码服务

部署:可扩展,加速,可靠,安全

考试中遇到的我觉得自己需要再查一下的东西

OpenSearch

AWS OpenSearch Service 是亚马逊网络服务(AWS)提供的一项托管的搜索和分析服务。它是基于开源的 Elasticsearch 和 Kibana 构建的,用于实时搜索、分析和可视化大规模数据的解决方案。

以下是 AWS OpenSearch Service 的主要特性:

  1. 实时搜索和分析: OpenSearch Service 提供了快速、实时的搜索和分析功能,能够处理大规模数据的实时查询和聚合。

  2. 弹性伸缩: OpenSearch Service 可以根据需求自动扩展和收缩,以适应数据量和查询负载的变化。

  3. 高可用性: OpenSearch Service 提供了高可用性和可靠性,支持多个可用区部署,以确保服务的稳定性和容错能力。

  4. 安全性: OpenSearch Service 提供了多种安全功能,包括身份验证、访问控制、加密传输等,以保护数据的安全性和隐私性。

  5. 可视化和监控: OpenSearch Service 集成了 Kibana 工具,提供了丰富的可视化和监控功能,帮助用户实时监控数据的状态和性能指标。

  6. 托管服务: OpenSearch Service 是一项托管的服务,AWS 负责管理基础设施和服务的运行,用户只需关注数据和查询即可,无需担心基础设施的管理和维护。

总的来说,AWS OpenSearch Service 提供了一个灵活、可扩展和高可用的搜索和分析平台,适用于各种场景,包括日志分析、实时监控、数据可视化等。


残差图

残差图(Residual Plot)是一种用于评估统计模型拟合质量的可视化工具。在回归分析中,残差是观测值与模型预测值之间的差异,残差图显示了每个观测值的残差与相应的预测值之间的关系。

在残差图中,通常将横轴表示模型的预测值,纵轴表示残差。每个点代表一个观测值,其位置表示该观测值对应的预测值和实际观测值之间的偏差。

残差图的主要用途包括:

  1. 评估模型拟合质量: 残差图可以帮助识别模型是否存在偏差或方差的问题。如果模型拟合良好,残差图中的点应该均匀分布在零线附近,而不应该出现任何明显的模式或趋势。

  2. 检测异方差性: 异方差是指残差的方差随着预测值的变化而变化。在残差图中,如果残差的方差随着预测值的增加而增加或减少,则可能存在异方差性。

  3. 识别异常值和离群点: 残差图可以帮助识别异常值和离群点,即与其他观测值相比残差较大的点。

  4. 检验线性假设: 对于线性回归模型,残差图应该显示出随机分布的点,如果出现明显的非线性模式,则可能违反了线性假设。

通过观察残差图,分析人员可以更好地了解模型的拟合情况,并采取相应的措施来改进模型或调整分析方法。


SagaMaker生命周期配置(life cycle configuration)

Amazon SageMaker 生命周期配置(Lifecycle Configuration)是一种 AWS SageMaker 服务提供的功能,它允许您在训练实例启动或终止时自动执行特定的操作。这些操作可以包括预安装软件包、配置环境变量、下载数据等。

Lifecycle Configuration 允许您在训练实例启动时自动执行一系列步骤,这些步骤可以定制化以满足您的需求,提高工作效率并减少手动干预的需要。您可以通过 SageMaker 控制台、SDK 或 AWS CLI 来创建和管理 Lifecycle Configuration。

以下是创建 SageMaker Lifecycle Configuration 的一般步骤:

  1. 创建 Lifecycle Configuration 脚本: 首先,您需要编写一个包含要在训练实例启动或终止时执行的操作的脚本。这个脚本可以是 Shell 脚本、Python 脚本或其他脚本语言。

  2. 上传 Lifecycle Configuration 脚本: 将编写好的脚本上传到 Amazon S3 存储桶中,以便后续在 SageMaker 中引用。

  3. 创建 Lifecycle Configuration: 在 SageMaker 控制台、SDK 或 AWS CLI 中创建 Lifecycle Configuration,并指定上传的脚本的 S3 路径。

  4. 将 Lifecycle Configuration 关联到 SageMaker 作业: 在创建 SageMaker 训练作业时,将之前创建的 Lifecycle Configuration 关联到作业中。

  5. 启动训练作业: 启动训练作业后,SageMaker 将在训练实例启动或终止时自动执行 Lifecycle Configuration 中指定的操作。

通过使用 Lifecycle Configuration,您可以自动化许多与训练实例相关的任务,使得整个机器学习工作流程更加高效和可靠。


GetRecord API 和 BatchGetRecord API

是 Amazon SageMaker Feature Store 提供的两种不同的 API,用于检索特征记录,它们之间的主要区别在于处理的数据量和返回结果的方式。

  1. 单个记录 vs 批量记录:
    • GetRecord API 用于检索单个特征记录。您需要指定要检索的特征组名称和单个记录的标识符。
    • BatchGetRecord API 则用于批量检索多个特征记录。您可以同时指定多个特征组名称和记录标识符,以一次性检索多个记录。
  2. 返回结果的方式:
    • GetRecord API 返回一个特定记录的特征值。如果您只需要检索单个记录的特征值,则可以使用此 API。
    • BatchGetRecord API 返回多个记录的特征值。您可以一次性检索多个记录,并获取它们的特征值。这在需要批量处理大量记录时非常有用。
  3. 效率:
    • 对于单个记录的检索,GetRecord API 是更有效的选择,因为它专门设计用于获取单个记录。
    • 对于批量检索多个记录,BatchGetRecord API 则更加高效,因为它允许您在一次 API 调用中检索多个记录,减少了网络开销和调用次数。

因此,选择使用 GetRecord API 还是 BatchGetRecord API 取决于您的具体需求。如果您只需要检索单个记录的特征值,则使用 GetRecord API。如果您需要同时检索多个记录的特征值,则使用 BatchGetRecord API。


网络隔离训练

网络隔离训练是一种将训练任务隔离在独立的网络环境中执行的方法。这样做的目的是确保训练任务对外部网络的影响最小化,并提高训练任务的安全性和稳定性。

网络隔离训练通常涉及以下几个方面:

  1. 虚拟私有云(VPC): 在云计算环境中,您可以使用 VPC 将训练任务隔离在专用的网络环境中。这样可以确保训练任务的流量不会通过公共网络,并减少与其他网络资源的干扰。

  2. 访问控制: 通过访问控制列表(ACL)或安全组等方式,限制训练任务对外部网络资源的访问权限。这可以减少训练任务与外部网络资源之间的通信,提高训练任务的安全性和稳定性。

  3. 子网隔离: 将训练任务部署在专用的子网中,以确保训练任务与其他网络资源之间的隔离。这可以减少训练任务与其他网络资源之间的干扰,并提高训练任务的稳定性。

  4. 流量控制: 使用流量控制机制(如流量限制、流量调节等)控制训练任务对外部网络资源的访问。这可以避免训练任务对外部网络资源的过度使用,提高网络资源的可用性和稳定性。

通过采取这些网络隔离措施,您可以确保训练任务在独立的网络环境中执行,并最大程度地减少对外部网络资源的干扰,从而提高训练任务的安全性和稳定性。


snappy压缩

Snappy 压缩是一种快速数据压缩算法,旨在在保持较高压缩率的同时提供非常快的压缩和解压缩速度。它由 Google 开发,最初用于 Google 的内部系统,后来被开源并广泛应用于各种领域,特别是大数据处理和网络传输方面。

Snappy 压缩的特点包括:

  1. 快速: Snappy 压缩和解压缩速度非常快,通常比许多其他压缩算法(如Gzip)要快得多。这使得它特别适合需要快速处理大量数据的场景。

  2. 低延迟: Snappy 压缩和解压缩的延迟非常低,这意味着它可以提供快速的响应时间,适用于需要实时性能的应用程序。

  3. 无损耗: Snappy 压缩尽可能地减少对压缩率的牺牲,同时保持了相对较高的压缩率。它主要关注在速度和压缩率之间找到一个平衡点,而不是追求最大的压缩率。

Snappy 压缩通常用于各种应用场景,包括网络传输、大规模数据分析、分布式系统等,特别是在需要快速处理大量数据的环境中。然而,值得注意的是,Snappy 压缩的压缩率可能不如一些其他压缩算法(如Gzip)那么高,因此在一些对压缩率要求较高的场景中,可能需要考虑其他压缩算法。