Press "Enter" to skip to content

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生

Amazon SageMaker Data Wrangler 是一个单一的可视化界面,可以将数据准备和特征工程的时间从几周缩短到几分钟,具有选择和清洗数据、创建特征和自动化机器学习(ML)工作流程的能力,无需编写任何代码。

SageMaker Data Wrangler 支持 Snowflake,这是一个流行的数据源,适用于想要执行机器学习的用户。我们通过 SageMaker Data Wrangler 启动 Snowflake 直接连接,以改善客户体验。在此功能推出之前,需要管理员设置初始存储集成,以连接 Snowflake,为 Data Wrangler 中的 ML 创建特征。这包括为个人用户提供 Amazon Simple Storage Service(Amazon S3)存储桶、AWS Identity and Access Management(IAM)访问权限、Snowflake 存储集成以及管理或清除 Amazon S3 中数据副本的持续机制。对于数据访问控制严格且用户数量众多的客户来说,这个过程是不可扩展的。

在本文中,我们展示了 Snowflake 在 SageMaker Data Wrangler 中的直接连接如何简化管理员的体验,以及数据科学家从数据到业务洞察的 ML 之旅。

解决方案概述

在此解决方案中,我们使用 SageMaker Data Wrangler 加速 ML 的数据准备,并使用 Amazon SageMaker Autopilot 根据您的数据自动构建、训练和微调 ML 模型。这两项服务专为 ML 从业者设计,旨在增加生产力和缩短时间价值。我们还演示了从 SageMaker Data Wrangler 直接连接到 Snowflake 的简化数据访问,以查询和创建 ML 特征。

请参考下面的图表,了解 Snowflake、SageMaker Data Wrangler 和 SageMaker Autopilot 的低代码 ML 流程概述。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第1张

该工作流程包括以下步骤:

  1. 导航到 SageMaker Data Wrangler,进行数据准备和特征工程任务。
    • 在 SageMaker Data Wrangler 中设置 Snowflake 连接。
    • 在 SageMaker Data Wrangler 中探索您的 Snowflake 表,创建 ML 数据集并执行特征工程。
  2. 使用 SageMaker Data Wrangler 和 SageMaker Autopilot 训练和测试模型。
  3. 将最佳模型加载到实时推理端点进行预测。
  4. 使用 Python 笔记本调用已启动的实时推理端点。

前提条件

对于本文,管理员需要具备以下前提条件:

  • 一个具有管理员权限的 Snowflake 用户,用于创建 Snowflake 虚拟仓库、用户和角色,并授予该用户创建数据库的访问权限。有关管理设置的详细信息,请参见从 Snowflake 导入数据。
  • 一个具有管理员访问权限的 AWS 帐户。
  • 在您首选的 AWS 区域中拥有 Snowflake 企业帐户,并获得 ACCOUNTADMIN 访问权限。
  • 如果您在 SageMaker Data Wrangler 中使用 Snowflake OAuth 访问,则可以选择参考从 Snowflake 导入数据以设置 OAuth 身份提供程序。
  • 熟悉 Snowflake、基本 SQL、Snowsight UI 和 Snowflake 对象。

数据科学家应具备以下前提条件

  • 访问 Amazon SageMaker,访问 Amazon SageMaker Studio 实例和 SageMaker Studio 用户。有关前提条件的更多信息,请参见开始使用 Data Wrangler。
  • 熟悉 AWS 服务、网络和 AWS 管理控制台。了解 Python、Jupyter 笔记本和 ML 的基本知识。

最后,您应该为 Snowflake 准备数据

  • 我们使用 Kaggle 的信用卡交易数据构建 ML 模型,以便检测欺诈性信用卡交易,从而避免客户被收取他们没有购买的物品。数据集包括 2013 年 9 月欧洲持卡人的信用卡交易。
  • 您应该使用 SnowSQL 客户端,并将其安装在本地计算机上,以便您可以使用它将数据集上传到 Snowflake 表中。

以下步骤展示了如何准备和加载数据集到Snowflake数据库中。这是一次性的设置。

Snowflake表和数据准备

完成以下步骤进行一次性设置:

  1. 首先,作为管理员,创建Snowflake虚拟仓库、用户和角色,并授予其他用户(如数据科学家)访问权限,以创建数据库和为他们的ML用例暂存数据:

    -- 使用角色SECURITYADMIN创建角色和用户
    USE ROLE SECURITYADMIN;
    
    -- 创建新角色'ML Role'
    CREATE OR REPLACE ROLE ML_ROLE COMMENT='ML Role';
    GRANT ROLE ML_ROLE TO ROLE SYSADMIN;
    
    -- 创建新用户和密码,并将角色授予用户
    CREATE OR REPLACE USER ML_USER PASSWORD='<REPLACE_PASSWORD>'
    DEFAULT_ROLE=ML_ROLE
    DEFAULT_WAREHOUSE=ML_WH
    DEFAULT_NAMESPACE=ML_WORKSHOP.PUBLIC
    COMMENT='ML User';
    GRANT ROLE ML_ROLE TO USER ML_USER;
    
    -- 授予角色权限
    USE ROLE ACCOUNTADMIN;
    GRANT CREATE DATABASE ON ACCOUNT TO ROLE ML_ROLE;
    
    --为AI/ML工作创建仓库
    USE ROLE SYSADMIN;
    
    CREATE OR REPLACE WAREHOUSE ML_WH
    WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 120 AUTO_RESUME = true INITIALLY_SUSPENDED = TRUE;
    
    GRANT ALL ON WAREHOUSE ML_WH TO ROLE ML_ROLE;
  2. 作为数据科学家,现在我们创建一个数据库,并将信用卡交易导入到Snowflake数据库中,以便从SageMaker Data Wrangler访问数据。为了说明目的,我们创建了一个名为SF_FIN_TRANSACTION的Snowflake数据库:

    -- 选择角色和仓库
    USE ROLE ML_ROLE;
    USE WAREHOUSE ML_WH;
    
    -- 创建用于导入金融交易的数据库
    CREATE DATABASE IF NOT EXISTS sf_fin_transaction;
    
    -- 创建CSV文件格式
    create or replace file format my_csv_format
    type = csv
    field_delimiter = ','
    skip_header = 1
    null_if = ('NULL', 'null')
    empty_field_as_null = true
    compression = gzip;
  3. 下载数据集CSV文件到本地计算机,并创建一个stage来将数据加载到数据库表中。在运行PUT命令导入数据到已创建的stage之前,请更新文件路径以指向已下载数据集的位置:

    -- 创建Snowflake命名的内部stage以存储交易csv文件
    CREATE OR REPLACE STAGE my_stage
    FILE_FORMAT = my_csv_format;
    
    -- 将文件导入stage
    -- 此命令需要从SnowSQL客户端而不是WebUI运行
    PUT file:///Users/*******/Downloads/creditcard.csv @my_stage;
    
    -- 检查导入是否成功
    LIST @my_stage;
  4. 创建表credit_card_transactions

    -- 创建表并定义映射到csv交易文件的列
    create or replace table credit_card_transaction (
    Time integer,
    V1 float, V2 float, V3 float,
    V4 float, V5 float, V6 float,
    V7 float, V8 float, V9 float,
    V10 float,V11 float,V12 float,
    V13 float,V14 float,V15 float,
    V16 float,V17 float,V18 float,
    V19 float,V20 float,V21 float,
    V22 float,V23 float,V24 float,
    V25 float,V26 float,V27 float,
    V28 float,Amount float,
    Class varchar(5)
    );
  5. 从stage导入数据到创建的表中:

    -- 将交易导入一个名为'credit_card_transaction'的新表中
    copy into credit_card_transaction from @my_stage ON_ERROR = CONTINUE;
    
    -- 检查表是否成功创建
    select * from credit_card_transaction limit 100;

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第2张

设置SageMaker Data Wrangler和Snowflake连接

在我们准备数据集以在SageMaker Data Wrangler中使用之后,让我们在SageMaker Data Wrangler中创建一个新的Snowflake连接,以连接到Snowflake中的sf_fin_transaction数据库并查询credit_card_transaction表:

  1. 在SageMaker数据整理器连接页面上选择Snowflake
  2. 提供一个名称以标识您的连接。
  3. 选择连接到Snowflake数据库的身份验证方法:
    • 如果使用基本身份验证,请提供Snowflake管理员共享的用户名和密码。在本文中,我们使用基本身份验证连接到Snowflake,使用上一步创建的用户凭据。
    • 如果使用OAuth,请提供您的身份提供者凭据。

SageMaker Data Wrangler默认直接从Snowflake查询数据,而不在S3桶中创建任何数据副本。SageMaker Data Wrangler的新用户友好的增强功能使用Apache Spark与Snowflake集成,为您的ML之旅准备并无缝创建数据集。

到目前为止,我们已经在Snowflake上创建了数据库,将CSV文件导入Snowflake表中,创建了Snowflake凭据,并创建了一个SageMaker Data Wrangler连接器以连接到Snowflake。要验证配置的Snowflake连接,请在创建的Snowflake表上运行以下查询:

select * from credit_card_transaction;

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第3张

请注意,在高级设置中,以前需要的存储集成选项现在是可选的。

探索Snowflake数据

验证查询结果后,选择导入以将查询结果保存为数据集。我们使用这个提取的数据集进行探索性数据分析和特征工程。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第4张

您可以选择在SageMaker Data Wrangler UI中从Snowflake中抽样数据。另一种选择是使用SageMaker Data Wrangler处理作业下载完整数据,以用于您的ML模型训练用例。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第5张

在SageMaker Data Wrangler中执行探索性数据分析

在可以进行训练之前,需要对Data Wrangler中的数据进行特征工程。在本节中,我们演示如何使用SageMaker Data Wrangler内置功能对来自Snowflake的数据进行特征工程。

首先,让我们使用SageMaker Data Wrangler中的Data Quality and Insights Report功能生成报告,自动验证数据质量并检测数据中的异常。

您可以使用报告来帮助您清理和处理数据。它会提供信息,例如缺失值的数量和异常值的数量。如果您的数据存在问题,例如目标泄漏或不平衡,insights报告可以引起您的注意。有关报告详细信息,请参阅在Amazon SageMaker Data Wrangler中使用数据质量和洞察力加速数据准备。

在检查SageMaker Data Wrangler应用的数据类型匹配后,完成以下步骤:

  1. 数据类型旁边选择加号,然后选择添加分析使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第6张
  2. 对于分析类型,选择Data Quality and Insights Report
  3. 选择创建使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第7张
  4. 参考数据质量和洞察报告详细信息以检查高优先级警告。

在进行机器学习之前,您可以选择解决报告的警告。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第8张

要预测的目标列Class被分类为字符串。首先,让我们应用转换以删除陈旧的空字符。

  1. 选择添加步骤并选择格式化字符串
  2. 在转换列表中,选择剥离左右
  3. 输入要删除的字符并选择添加

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第9张

接下来,我们将目标列Class从字符串数据类型转换为布尔值,因为交易要么是合法的,要么是欺诈的。

  1. 选择添加步骤
  2. 选择将列解析为类型
  3. 对于列,选择Class
  4. 对于,选择字符串
  5. 对于,选择布尔
  6. 选择添加

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第10张

在目标列变换之后,我们减少了特征列的数量,因为原始数据集中有30多个特征。我们使用主成分分析(PCA)根据特征重要性来降低维度。要了解有关PCA和降维的更多信息,请参阅主成分分析(PCA)算法。

  1. 选择添加步骤使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第11张
  2. 选择降维使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第12张
  3. 对于转换,选择主成分分析
  4. 对于输入列,选择除目标列Class之外的所有列。 使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第13张
  5. 选择数据流旁边的加号,然后选择添加分析
  6. 对于分析类型,选择快速模型
  7. 对于分析名称,输入名称。
  8. 对于标签,选择Class使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第14张
  9. 选择运行

根据PCA结果,您可以决定使用哪些特征来构建模型。在以下截图中,图表显示了按预测目标类别(在该数据集中为交易是否欺诈或有效)的最高到最低重要性排序的特征(或维度)。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第15张

您可以根据此分析选择减少功能数量,但在本帖中,我们将默认设置保持不变。

这就结束了我们的特征工程过程,尽管您可以选择运行快速模型并再次创建数据质量和洞见报告,以了解在执行进一步优化之前的数据情况。

导出数据并训练模型

接下来,我们使用SageMaker Autopilot自动构建、训练和调整基于您的数据的最佳ML模型。使用SageMaker Autopilot,您仍然可以完全控制和查看您的数据和模型。

现在,我们已经完成了探索和特征工程,让我们在数据集上训练一个模型并导出数据,以使用SageMaker Autopilot训练ML模型。

  1. 训练选项卡上,选择导出并训练使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第16张

我们可以在等待导出完成时监视导出进度。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第17张

让我们配置SageMaker Autopilot通过指定我们要预测的目标和问题类型来运行自动化训练作业。在这种情况下,因为我们正在训练数据集以预测交易是否欺诈或有效,所以我们使用二进制分类。

  1. 为实验输入名称,提供S3位置数据,并选择下一步:目标和特征使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第18张
  2. 对于目标,选择Class作为要预测的列。
  3. 选择下一步:训练方法使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第19张

让我们允许SageMaker Autopilot基于数据集决定训练方法。

  1. 对于训练方法和算法,选择自动

要了解SageMaker Autopilot支持的训练模式的更多信息,请参阅训练模式和算法支持。

  1. 选择下一步:部署和高级设置使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第20张
  2. 对于部署选项,选择使用Data Wrangler自动部署最佳模型和转换,在实验完成后加载最佳模型进行推理。
  3. 为您的端点输入名称。
  4. 对于选择机器学习问题类型,选择二进制分类
  5. 对于目标指标,选择F1
  6. 选择下一步:审核和创建使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第21张
  7. 选择创建实验

启动SageMaker Autopilot作业,创建一组训练作业,使用超参数组合来优化目标指标。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第22张

等待SageMaker Autopilot完成模型的构建和最佳ML模型的评估。

启动实时推理端点以测试最佳模型

SageMaker Autopilot运行实验以确定最佳模型,可以将信用卡交易分类为合法或欺诈。

当SageMaker Autopilot完成实验后,我们可以通过SageMaker Autopilot作业描述页面查看训练结果、评估指标并探索最佳模型。

  1. 选择最佳模型并选择 Deploy model . 使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第23张

我们使用实时推理端点来测试通过SageMaker Autopilot创建的最佳模型。

  1. 选择 Make real-time predictions . 使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第24张

当端点可用时,我们可以传递负载并获得推理结果。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第25张

让我们启动一个Python笔记本来使用推理端点。

  1. 在SageMaker Studio控制台中,选择导航窗格中的文件夹图标,然后选择 Create notebook . 使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第26张

  2. 使用以下Python代码调用已部署的实时推理端点:

    # Library imports
    import os
    import io
    import boto3
    import json
    import csv
    
    #: Define the endpoint's name.
    ENDPOINT_NAME = 'SnowFlake-FraudDetection' # replace the endpoint name as per your config
    runtime = boto3.client('runtime.sagemaker')
    
    #: Define a test payload to send to your endpoint.
    payload = {
        "body": {
        "TIME": 152895,
        "V1": 2.021155535,
        "V2": 0.05372872624,
        "V3": -1.620399104,
        "V4": 0.3530165253,
        "V5": 0.3048483853,
        "V6": -0.6850955461,
        "V7": 0.02483335885,
        "V8": -0.05101346021,
        "V9": 0.3550896835,
        "V10": -0.1830053153,
        "V11": 1.148091498,
        "V12": 0.4283365505,
        "V13": -0.9347237892,
        "V14": -0.4615291327,
        "V15": -0.4124343184,
        "V16": 0.4993445934,
        "V17": 0.3411548305,
        "V18": 0.2343833846,
        "V19": 0.278223588,
        "V20": -0.2104513475,
        "V21": -0.3116427235,
        "V22": -0.8690778214,
        "V23": 0.3624146958,
        "V24": 0.6455923598,
        "V25": -0.3424913329,
        "V26": 0.1456884618,
        "V27": -0.07174890419,
        "V28": -0.040882382,
        "AMOUNT": 0.27
        }
    }
    
    #: Submit an API request and capture the response object.
    response = runtime.invoke_endpoint(
        EndpointName=ENDPOINT_NAME,
        ContentType='text/csv',
        Body=str(payload)
    )
    
    #: Print the model endpoint's output.
    print(response['Body'].read().decode()) 

输出显示结果为false,这意味着样本特征数据不是欺诈的。

使用Amazon SageMaker Data Wrangler与Snowflake的直接连接,加速商业洞见的产生 数据科学 第27张

清理

为了确保在完成本教程后不会产生费用,请关闭SageMaker Data Wrangler应用程序和用于执行推断的笔记本实例。您还应该删除使用SageMaker Autopilot创建的推理端点,以防止产生额外的费用。

结论

在本文中,我们演示了如何直接从Snowflake获取数据,而不创建任何中间副本。您可以直接从Snowflake对SageMaker Data Wrangler进行抽样或加载完整数据集。然后,您可以使用SageMaker Data Wrangler的可视化界面探索数据、清理数据和执行特征工程。

我们还强调了如何使用SageMaker Data Wrangler和SageMaker Autopilot集成轻松训练和调整模型。在完成特征工程后,我们可以直接从SageMaker Data Wrangler用户界面训练和调整模型,而无需编写任何代码。然后,我们引用SageMaker Autopilot的最佳模型来运行推断,使用实时端点。

今天就尝试使用SageMaker Data Wrangler的新Snowflake直接集成,使用SageMaker轻松构建您的数据的ML模型。

Leave a Reply

Your email address will not be published. Required fields are marked *