这篇文章是由Salesforce Einstein AI产品总监Daryl Martis共同撰写的。
这是一系列讨论Salesforce Data Cloud和Amazon SageMaker集成的第三篇文章。
在第一部分和第二部分中,我们展示了Salesforce Data Cloud和Einstein Studio与SageMaker的集成,允许企业安全地使用SageMaker访问其Salesforce数据,并使用其工具构建、训练和部署模型到托管在SageMaker上的终端节点。SageMaker终端节点可以注册到Salesforce Data Cloud中,以在Salesforce中激活预测。
在本文中,我们将演示业务分析师和普通数据科学家如何在Amazon SageMaker Canvas中创建机器学习(ML)模型,无需任何代码,并部署训练后的模型与Salesforce Einstein Studio集成,从而创建强大的商业应用程序。SageMaker Canvas提供了一个无代码的体验,可以通过几个点击访问Salesforce Data Cloud中的数据,并构建、测试和部署模型。SageMaker Canvas还可以使用特征重要性和SHAP值来理解预测结果,使您能够轻松解释ML模型的预测。
SageMaker Canvas
SageMaker Canvas使业务分析师和数据科学团队能够在不编写任何代码的情况下构建和使用ML和生成型AI模型。SageMaker Canvas提供了一个可视化的点对点界面,用于生成分类、回归、预测、自然语言处理(NLP)和计算机视觉(CV)的准确ML预测。此外,您还可以访问和评估Amazon Bedrock中的基本模型(FMs)或来自Amazon SageMaker JumpStart的公共FMs,以支持生成型AI解决方案的内容生成、文本提取和摘要。SageMaker Canvas允许您将在任何地方构建的ML模型带入,并直接在SageMaker Canvas中生成预测。
Salesforce Data Cloud和Einstein Studio
Salesforce Data Cloud是一个数据平台,为企业提供从任何接触点实时更新的客户数据。
Einstein Studio是Salesforce Data Cloud上AI工具的入口。借助Einstein Studio,管理员和数据科学家可以轻松地通过几个点击或使用代码创建模型。Einstein Studio的自有模型(BYOM)体验可以将来自外部平台(如SageMaker)的自定义或生成型AI模型连接到Salesforce Data Cloud。
解决方案概述
为了演示如何使用Salesforce Data Cloud中的数据使用SageMaker Canvas构建ML模型,我们创建了一个预测模型来推荐产品。此模型使用存储在Salesforce Data Cloud中的特征,如客户人口统计数据、营销参与度和购买历史。产品推荐模型是通过使用SageMaker Canvas的无代码用户界面使用Salesforce Data Cloud中的数据构建和部署的。
我们使用存储在Amazon Simple Storage Service(Amazon S3)中的以下示例数据集。要在Salesforce Data Cloud中使用此数据集,请参阅在Data Cloud中创建Amazon S3数据流。创建模型所需的以下属性:
- 俱乐部会员 – 如果客户是俱乐部会员
- 活动 – 客户参与的活动
- 州 – 客户所在的州或省
- 月份 – 购买的月份
- 案例数量 – 客户提出的案例数量
- 退货案例类型 – 客户在过去一年内是否退货
- 发货损坏案例类型 – 客户在过去一年内是否有发货损坏
- 参与度评分 – 客户的参与度水平(对邮寄活动的响应、登录在线商店等)
- 维持时间 – 客户与公司建立的关系的时间
- 点击次数 – 客户在购买前一周内平均点击次数
- 访问页面数 – 客户在购买前一周内访问的平均页面数
- 购买的产品 – 实际购买的产品
以下步骤概述了如何使用在SageMaker Canvas中启动的Salesforce Data Cloud连接器访问企业数据并构建预测模型:
- 配置Salesforce连接应用程序以注册SageMaker Canvas域。
- 在SageMaker Canvas中设置Salesforce Data Cloud的OAuth。
- 使用内置的SageMaker Canvas Salesforce Data Cloud连接器连接到Salesforce Data Cloud数据并导入数据集。
- 在SageMaker Canvas中构建和训练模型。
- 在SageMaker Canvas中部署模型并进行预测。
- 将Amazon API Gateway端点部署为SageMaker推断端点的前端连接。
- 在Einstein Studio中注册API Gateway端点。有关说明,请参阅将自己的AI模型带到Data Cloud。
以下图示了解决方案架构。
先决条件
在开始之前,请完成以下先决步骤来创建SageMaker域并启用SageMaker Canvas:
- 创建一个Amazon SageMaker Studio域。有关说明,请参阅Onboard to Amazon SageMaker域。
- 记录域ID和由用户配置文件创建并将由其使用的执行角色。您在后续步骤中将为此角色添加权限。
以下屏幕截图显示了我们为此帖子创建的域。
- 接下来,转到用户配置文件并选择编辑。
- 导航到Amazon SageMaker Canvas设置部分,选择启用Canvas基本权限。
- 选择启用直接部署Canvas模型和为所有用户启用模型注册表权限。
这样可以让SageMaker Canvas将模型部署到SageMaker控制台上的端点上。这些设置可以在域或用户配置文件级别配置。用户配置文件设置优先于域设置。
创建或更新Salesforce连接应用程序
接下来,我们创建一个Salesforce连接应用程序,以启用从SageMaker Canvas到Salesforce Data Cloud的OAuth流程。完成以下步骤:
- 登录Salesforce并导航到设置。
- 搜索应用程序管理器并创建一个新的连接应用程序。
- 提供以下输入:
- 对于连接应用程序名称,输入一个名称。
- 对于API名称,保持默认值(自动填充)。
- 对于联系电子邮件,输入您的联系电子邮件地址。
- 选择启用OAuth设置。
- 对于回调URL,输入
https://<domain-id>.studio.<region>.sagemaker.aws/canvas/default/lab
,并提供您的SageMaker域的域ID和区域。
- 在连接应用程序上配置以下范围:
- 通过API管理用户数据(
api
)。 - 随时执行请求(
refresh_token
,offline_access
)。 - 在Salesforce Data Cloud数据上执行ANSI SQL查询(Data
Cloud_query_api
)。 - 管理Data Cloud个人资料数据(
Data Cloud_profile_api
)。 - 访问身份URL服务(
id
,profile
,email
,address
,phone
)。 - 访问唯一用户标识符(
openid
)。
- 通过API管理用户数据(
- 将连接应用程序的IP放宽设置为放宽IP限制。
为Salesforce数据云连接器配置OAuth设置
SageMaker Canvas使用AWS Secrets Manager来安全地存储来自Salesforce连接应用程序的连接信息。SageMaker Canvas允许管理员在个人用户配置文件或域级别上配置OAuth设置。请注意,您可以同时向域和用户配置文件添加密钥,但SageMaker Canvas首先会在用户配置文件中寻找密钥。
要配置OAuth设置,请按照以下步骤进行:
- 转到SageMaker控制台中的编辑域或用户配置文件设置。
- 在导航窗格中选择Canvas设置。
- 在OAuth设置下,对于数据源,选择Salesforce数据云。
- 对于密钥设置,您可以创建新密钥或使用现有密钥。在这个例子中,我们创建一个新密钥并输入来自Salesforce连接应用程序的客户端ID和客户端密钥。
有关在SageMaker Canvas中启用OAuth的详细信息,请参阅为Salesforce数据云设置OAuth。
完成后,您可以通过以下步骤允许Salesforce数据云访问SageMaker Canvas以构建AI和ML模型:
从Salesforce数据云导入数据
要导入数据,请完成以下步骤:
- 从您在SageMaker域中创建的用户配置文件中选择启动并选择Canvas。
您首次访问Canvas应用程序时,需要大约10分钟来创建。
- 在导航窗格中选择Data Wrangler。
- 在创建菜单中,选择Tabular以创建一个表格数据集。
- 命名数据集并选择创建。
- 对于数据源,选择Salesforce数据云并选择添加连接以导入数据湖对象。
如果您之前已经配置了与Salesforce数据云的连接,您将看到可以使用该连接而不是创建新连接的选项。
- 为新的Salesforce数据云连接提供名称并选择添加连接。
这将需要几分钟来完成。
- 您将被重定向至Salesforce登录页面以授权连接。
登录成功后,请求将会被重定向回到SageMaker Canvas,并显示数据湖对象列表。
- 选择包含用于模型训练功能的数据集,该数据集是通过Amazon S3上传的。
- 拖拽文件后选择在SQL中编辑。
Salesforce在所有Data Cloud对象字段中添加了“__c”。根据SageMaker Canvas的命名规范,字段名称中不允许出现“__”。
-
编辑SQL以重命名列并删除与模型训练无关的元数据。将表名替换为您的对象名称。
SELECT "state__c" as state, "case_type_shipment_damaged__c" as case_type_shipment_damaged, "campaign__c" as campaign, "engagement_score__c" as engagement_score, "case_count__c" as case_count, "case_type_return__c" as case_type_return, "club_member__c" as club_member, "pages_visited__c" as pages_visited, "product_purchased__c" as product_purchased, "clicks__c" as clicks, "tenure__c" as tenure, "month__c" as month FROM product_recommendation__dlm;
-
选择运行SQL然后选择创建数据集。
-
选择数据集并选择创建模型。
-
要创建一个用于预测产品推荐的模型,请提供模型名称,选择预测分析作为问题类型,然后选择创建。
构建和训练模型
请按照以下步骤构建和训练您的模型:
- 启动模型后,将目标列设置为
product_purchased
。
SageMaker Canvas会显示每个列与目标列之间的关键统计数据和相关性。SageMaker Canvas提供了预览模型和验证数据的工具,以便在开始构建之前对模型进行预览和验证。
- 使用预览模型功能查看模型的准确性,并验证数据集以防止在构建模型时出现问题。
- 在查看数据并对数据集进行任何更改后,选择构建类型。选择快速构建选项可能会更快,但它只会使用数据的子集来构建模型。根据本文的目的,我们选择了 标准构建选项。
一个标准的模型构建需要2-4小时完成。
SageMaker Canvas在构建模型时会自动处理数据集中的缺失值。它还会为您应用其他数据准备转换,以使数据准备好进行机器学习。
- 当您的模型开始构建后,您可以离开该页面。
当模型在我的模型页面上显示为准备就绪时,它已经可以用于分析和预测。
- 模型构建完成后,导航到我的模型,选择查看以查看您创建的模型,并选择最新版本。
- 转到分析选项卡,查看每个特征对预测结果的影响。
- 要获取有关模型预测的其他信息,请导航到评分选项卡。
- 选择预测以进行产品预测。
部署模型并进行预测
按照以下步骤部署您的模型并开始进行预测:
- 您可以选择进行批处理预测或单个预测。对于本篇文章,我们选择单个预测。
当您选择单个预测时,SageMaker Canvas会显示您可以提供输入的特征。
- 您可以通过选择更新来更改这些值,并查看实时预测结果。
模型的准确性以及每个特征对特定预测的影响将被显示出来。
- 要部署模型,请提供一个部署名称,选择一个实例类型和实例数量,然后选择部署。
模型部署将需要几分钟的时间。
部署成功后,模型状态将更新为已服务。
SageMaker Canvas提供了一个测试部署的选项。
- 选择查看详细信息。
详细信息选项卡提供了模型端点的详细信息。实例类型、数量、输入格式、响应内容和端点是显示的一些关键细节。
- 选择测试部署以测试已部署的端点。
与单个预测类似,该视图显示输入特征并提供实时更新和测试端点的选项。
新的预测结果连同端点调用结果返回给用户。
创建API以公开SageMaker端点
为了在Salesforce中生成为业务应用程序提供动力的预测结果,您需要通过API Gateway公开SageMaker Canvas部署创建的SageMaker推理端点,并在Salesforce Einstein中注册它。
Salesforce Einstein和SageMaker推理端点之间的请求和响应格式有所不同。您可以使用API Gateway执行转换,也可以使用AWS Lambda来转换请求并映射响应。请参阅使用Amazon API Gateway和AWS Lambda调用Amazon SageMaker模型端点以通过Lambda和API Gateway公开SageMaker端点。
以下代码片段是一个用于转换请求和响应的Lambda函数
import jsonimport boto3import osclient = boto3.client("runtime.sagemaker")endpoint = os.environ['SAGEMAKER_ENDPOINT_NAME']prediction_label = 'product_purchased__c'def lambda_handler(event, context): features=[] # 输入示例 : {"instances": [{"features": ["Washington", 1, "New Colors", 1, 1, 1, 1, 1, 1, 1, 1]}, {"features": ["California", 1, "Web", 100, 1, 1, 100, 1, 10, 1, 1]}]} for instance in event["instances"]: features.append(','.join(map(str, instance["features"]))) body='\n'.join(features) response = client.invoke_endpoint(EndpointName=endpoint,ContentType="text/csv",Body=body,Accept="application/json") response = json.loads(response['Body'].read().decode('utf-8')) prediction_response={"predictions":[]} for prediction in response.get('predictions'): prediction_response['predictions'].append({prediction_label:prediction['predicted_label']}) return prediction_response
根据您的配置更新Lambda函数中的endpoint
和prediction_label
的值。
- 添加一个环境变量
SAGEMAKER_ENDPOINT_NAME
来捕获SageMaker推理端点。 - 将预测标签设置为与在Einstein Studio中注册的模型输出JSON键匹配的值。
Lambda函数的默认超时时间为3秒。根据预测请求的输入大小,SageMaker实时推理API可能需要超过3秒来响应。
- 增加Lambda函数的超时时间,但保持在API Gateway默认集成超时时间之下,该时间为29秒。
在Salesforce Einstein Studio中注册模型
要在Einstein Studio中注册API Gateway端点,请参考将您自己的AI模型带入数据云。
结论
在本文中,我们解释了如何使用SageMaker Canvas连接Salesforce数据云并通过自动ML功能生成预测结果,而无需编写任何代码。我们演示了SageMaker Canvas模型生成能力,可以在完整数据集训练模型之前对模型性能进行提前预览。我们还展示了在SageMaker Canvas中使用单个预测界面,并使用特征重要性来了解预测结果的后模型创建活动。接下来,我们使用在SageMaker Canvas中创建的SageMaker端点,并将其作为API提供,以便您可以将其与Salesforce Einstein Studio集成,并创建强大的Salesforce应用程序。
在即将发布的文章中,我们将向您展示如何使用Salesforce数据云中的数据在SageMaker Canvas中使用可视界面和简单的自然语言提示,使数据洞察力和准备更加简单。
要开始使用SageMaker Canvas,请参见SageMaker Canvas沉浸日并参考开始使用Amazon SageMaker Canvas。