Amazon SageMaker:彻底改变机器学习和人工智能

2023年11月09日 由 alex 发表 160 0

介绍


机器学习和人工智能已经通过实现智能自动化、数据驱动的决策制定以及预测性洞察力,引领无数行业的革命。然而,机器学习模型的开发和部署可能复杂且具有挑战性。作为亚马逊网络服务(AWS)提供的一项全面托管的机器学习平台,Amazon SageMaker 已成为该领域的一个变革者。本文探讨了 Amazon SageMaker 的各个方面、其重要性,以及它是如何简化和使机器学习过程民主化的。


2


一、Amazon SageMaker 的需求

过去,构建和部署机器学习模型是一项资源密集的任务,需要对数据科学、基础设施和软件工程有深入的专业知识。亚马逊 SageMaker 解决了这一过程中的几个关键痛点:


  • 简化模型开发:SageMaker 提供了一个用户友好的环境,用于开发和试验机器学习模型。其集成的 Jupyter 笔记本允许数据科学家以协作方式编写、测试和记录代码。
  • 可扩展性:机器学习通常需要大量的计算资源。SageMaker 提供了根据任务复杂性进行伸缩的灵活性,确保分配了合适数量的资源。
  • 成本优化:机器学习项目消耗大量计算资源并不罕见。通过提供各种实例类型和定价选项,SageMaker 帮助优化成本。
  • 高效部署:通过 SageMaker 的内置部署能力,将机器学习模型部署到生产环境变得简单。它提供了实时和批量推理的选项,确保模型可以轻松集成到应用和服务中。


二、Amazon SageMaker 的主要特性


  • 数据标注和真实值:SageMaker Ground Truth 通过使用人工标注者或自动数据标注,简化了监督学习中的关键步骤——数据标注的过程。
  • 内置算法:SageMaker 提供了一系列预构建的机器学习算法,节省了构建模型时的时间和精力。这些算法适用于各种任务,从分类到回归再到推荐。
  • 模型训练和调节:SageMaker 的分布式训练功能使得能高效地在大型数据集上训练模型。通过自动化调节,使超参数优化变得简单,提高了模型精度。
  • 模型部署:模型可以作为 RESTful API 部署,用于实时推理,而 SageMaker 负责底层基础设施,包括自动扩展和负载均衡。
  • AutoML与SageMaker Autopilot:对于那些机器学习经验有限的用户,Autopilot 自动化了端到端机器学习过程,从数据预处理到模型部署。
  • 模型监控:SageMaker 实现了模型监控,确保部署的模型继续准确运行,通过检测概念偏移和数据质量问题。


三、与 AWS 服务的集成

Amazon SageMaker与 AWS 提供的广泛服务无缝集成,使其成为 AWS 生态系统中的强大工具。这种集成实现了全面的、端到端的机器学习工作流程:


  • 数据存储和管理:通常使用亚马逊 S3、亚马逊 RDS 和 AWS Glue 进行数据存储和管理,而且 SageMaker 与这些服务轻松集成。
  • 无服务器计算:AWS Lambda 可用于与 SageMaker 模型一起使用的无服务器推理,提供成本有效和可伸缩的解决方案。
  • 工作流编排:AWS Step Functions 可用于创建用于机器学习的无服务器、分布式工作流,简化复杂任务和流程。


四、安全性和合规性

Amazon SageMaker强调安全性和合规性,解决了受监管行业组织的担忧。它提供了诸如虚拟私有云(VPC)支持、数据加密和访问控制的功能,确保敏感数据的保护和符合行业标准。


代码

创建一个包含数据集加载、模型训练和生成图表的完整 Python 代码对于Amazon SageMaker来说可能是一项复杂的任务,且极度依赖于你的特定用例、数据集和你想构建的模型类型。然而,我可以提供一个简化的示例,展示使用常见数据集和线性回归模型的过程。你可以将此作为起点,并针对你的特定需求进行扩展。


在这个示例中,我们将使用波士顿房价数据集,训练一个线性回归模型,并生成散点图以可视化模型的预测。确保你拥有必要的 AWS 凭证和已安装的库。


import boto3
import sagemaker
from sagemaker import get_execution_role
from sagemaker.amazon.amazon_estimator import get_image_uri
from sagemaker.session import s3_input
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
# Load the Boston Housing Prices dataset
housing = fetch_california_housing()
data = pd.DataFrame(housing.data, columns=housing.feature_names)
data['target'] = housing.target
# Split the data into training and testing sets
X = data.drop('target', axis=1)
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train a linear regression model
model = LinearRegression()
model.fit(X_train, y_train)
# Make predictions on the test set
y_pred = model.predict(X_test)
# Calculate the Mean Squared Error
mse = mean_squared_error(y_test, y_pred)
print(f"Mean Squared Error: {mse}")
# Create a scatter plot to visualize predictions
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual Prices vs. Predicted Prices")
plt.show()
# Initialize SageMaker session and role
sagemaker_session = sagemaker.Session()
role = get_execution_role()
# Upload the dataset to S3
bucket = sagemaker_session.default_bucket()
prefix = 'sagemaker/boston-housing'
input_data = s3_input(s3_data=f's3://{bucket}/{prefix}', content_type='text/csv')
# Create a SageMaker linear regression model
linear_container = get_image_uri(boto3.Session().region_name, 'linear-learner')
linear = sagemaker.estimator.Estimator(linear_container,
                                       role,
                                       train_instance_count=1,
                                       train_instance_type='ml.c4.xlarge',
                                       output_path=f's3://{bucket}/{prefix}/output',
                                       sagemaker_session=sagemaker_session)
# Set hyperparameters
linear.set_hyperparameters(predictor_type='regressor',
                           mini_batch_size=100)
# Fit the SageMaker model
linear.fit({'train': input_data})
# Deploy the model to an endpoint
linear_predictor = linear.deploy(initial_instance_count=1, instance_type='ml.t2.medium')
# Make predictions using the deployed model
test_X = X_test.values
predictions = linear_predictor.predict(test_X)
# Clean up resources
linear_predictor.delete_endpoint()


请注意,此代码是一个简化的示例。在真实世界的场景中,你通常需要执行更多的预处理、特征工程和模型调优来获得更好的性能。此外,你需要用你的特定数据集替换波士顿房价数据集,并根据需要调整超参数和模型类型。


Mean Squared Error: 0.5558915986952444


3


请记住,这段代码假设你已经有了必要的AWS设置,包括所需的IAM角色,S3存储桶和SageMaker资源。


结论


Amazon SageMaker在机器学习和人工智能领域是一个颠覆性的解决方案。它简化了机器学习过程,并使其普及,使更广泛的组织和专业人士能够接触到。SageMaker在数据标注、模型开发、训练和部署方面的功能,以及其与AWS服务的无缝集成,使其成为端到端机器学习工作流程的强大平台。

文章来源:https://medium.com/@evertongomede/amazon-sagemaker-revolutionizing-machine-learning-and-artificial-intelligence-cd780a50a27c
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
写评论取消
回复取消