SynapseML 中配置 Azure AI 服务和 Azure OpenAI 资源的完整指南
前言
SynapseML 是微软开发的一个强大的分布式机器学习库,它能够与 Apache Spark 无缝集成,为大规模数据处理和机器学习任务提供支持。本文将详细介绍如何在 SynapseML 中配置和使用 Azure AI 服务和 Azure OpenAI 资源,帮助开发者快速上手这些强大的认知服务功能。
准备工作
在开始配置之前,您需要确保具备以下条件:
- 一个有效的 Azure 订阅(如果没有,可以免费创建一个)
- 对 Azure 门户的基本操作熟悉
- 了解基本的 Python 和 Spark 编程知识
Azure OpenAI 服务配置
Azure OpenAI 服务提供了强大的自然语言处理能力,通过 SynapseML 的集成,您可以在大规模数据集上高效地使用这些能力。
获取访问权限
由于 Azure OpenAI 服务目前仍处于有限访问阶段,您需要:
- 提交访问请求,说明您的使用场景
- 等待微软审核通过您的请求
创建 Azure OpenAI 资源
获得访问权限后,按照以下步骤创建资源:
- 登录 Azure 门户
- 搜索并选择"Azure OpenAI"服务
- 点击"创建"按钮
- 填写必要的资源信息(名称、订阅、资源组等)
- 选择合适的定价层
- 完成创建过程
获取访问密钥
资源创建完成后,获取访问密钥的步骤:
- 导航到您创建的 OpenAI 资源
- 在左侧菜单中选择"密钥和终结点"
- 复制其中一个密钥(建议妥善保存,不要直接暴露在代码中)
Azure AI 服务配置
Azure AI 服务提供了一系列认知服务能力,包括决策、语言、语音和视觉等。
角色分配
在使用前,您需要:
- 为您的账户分配"Azure AI 服务参与者"角色
- 同意负责任的 AI 使用条款
创建多服务资源
建议创建多服务资源,以便灵活使用不同类型的 AI 服务:
- 在 Azure 门户中搜索"AI 服务"
- 选择"多服务"资源类型
- 填写创建表单(名称、区域、定价层等)
- 完成创建过程
获取访问密钥
与 OpenAI 类似,获取密钥的步骤:
- 导航到创建的 AI 服务资源
- 选择"密钥和终结点"
- 复制并安全保存密钥
密钥管理最佳实践
在生产环境中,直接使用密钥字符串是不安全的。推荐使用 Azure Key Vault 来管理密钥。
Azure Key Vault 创建
- 在 Azure 门户中创建新的 Key Vault
- 配置适当的访问策略
- 确保 Key Vault 与您的 SynapseML 环境位于同一区域
密钥存储
- 将 AI 服务密钥作为机密存储在 Key Vault 中
- 为机密设置适当的名称和描述
- 配置访问控制,限制谁可以访问这些机密
在不同平台使用 find_secret
SynapseML 提供了 find_secret
方法来安全地访问存储在 Key Vault 中的密钥。
Microsoft Fabric/Power BI 配置
- 为 Fabric 或 Power BI 服务账户分配 Key Vault 的"获取"权限
- 确保网络连接配置正确
Azure Databricks 配置
- 将 Key Vault 权限模型设置为"保管库访问策略"
- 在 Databricks 中创建密钥范围
- 关联 Key Vault 的 DNS 名称和资源 ID
Azure Synapse 配置
- 在 Synapse Studio 中创建 Key Vault 链接服务
- 为 Synapse 工作区分配 Key Vault 管理员角色
- 发布更改以生效
快速测试示例
以下是一个使用 SynapseML 进行文本分析的简单示例:
from synapse.ml.services.language import AnalyzeText
from synapse.ml.core.platform import find_secret
# 从Key Vault获取密钥
ai_service_key = find_secret(
secret_name="ai-services-api-key",
keyvault="your-keyvault-name"
)
ai_service_location = "your-region"
# 创建测试数据
df = spark.createDataFrame(
data=[
["en", "Dr. Smith has a very modern medical office, and she has great staff."],
["en", "I had a wonderful trip to Seattle last week."],
],
schema=["language", "text"],
)
# 配置文本分析服务
entity_recognition = (
AnalyzeText()
.setKind("EntityRecognition")
.setLocation(ai_service_location)
.setSubscriptionKey(ai_service_key)
.setTextCol("text")
.setOutputCol("entities")
.setErrorCol("error")
.setLanguageCol("language")
)
# 执行分析
df_results = entity_recognition.transform(df)
display(df_results.select("language", "text", "entities.documents.entities"))
预期输出将包含识别的实体信息,如人名、地点、事件等,以及相关的置信度分数。
总结
通过本文的指导,您应该已经掌握了在 SynapseML 中配置和使用 Azure AI 服务及 Azure OpenAI 资源的完整流程。记住始终遵循安全最佳实践,使用 Key Vault 管理敏感信息,并根据实际需求调整资源配置。SynapseML 的强大功能结合 Azure 认知服务,能够为您的机器学习项目提供强大的支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考