Airflow Azure Machine Learning提供程序包
项目描述
Airflow Azure Machine Learning提供程序
源代码 | PyPI软件包 | 示例DAGs | 示例Docker容器
此软件包使您可以从Apache Airflow提交工作流到Azure Machine Learning。
先决条件
- Azure账户和Azure Machine Learning工作区
- 要验证您的空间设置成功,您可以在Azure Machine Learning Studio中尝试访问您的空间,并尝试执行基本操作,如分配计算集群和提交训练作业等。
- 运行的Apache Airflow实例。
安装
在您的Apache Airflow实例中,运行以下命令:
pip install airflow-provider-azure-machinelearning
或者,您可以参考dev文件夹中的示例或Airflow的操作指南来在Docker容器中设置Airflow。
在Airflow中配置Azure Machine Learning连接
要将工作负载发送到您的Airflow Azure Machine Learning工作区,您需要在Airflow实例中设置一个“Azure Machine Learning”连接
-
请确保此包已安装到您的Airflow实例中。如果没有安装此包,您将无法在步骤3中看到“Azure Machine Learning”,也无法添加此类连接。
-
在Airflow Web门户中,导航到
管理员
-->连接
,然后点击+
添加新的连接。 -
从“连接类型”下拉菜单中选择“Azure Machine Learning”。您应该看到一个类似下面的表单
-
连接ID
是您连接的唯一标识符。您还需要将此字符串传递到AzureML Airflow操作符中。请查看这些示例DAG。 -
描述
是可选的。所有其他字段都是必填项。 -
租户ID
。您可以通过此说明来获取它。 -
订阅ID
、资源组名称
和工作区名称
可以唯一标识Azure Machine Learning中的工作区。在Azure Machine Learning Studio中打开后,选择所需的工作区,然后点击网站右上角的“更改工作区”(位于配置文件图标左侧)。在这里您可以看到工作区名称
。现在,点击“在Azure门户中查看所有属性”。这是您工作区的Azure资源页。从这里您可以检索订阅ID
和资源组名称
。 -
客户端ID
和密码
是一对。它们基本上是基于服务主体认证过程的“用户名”和“密码”。您需要在Azure门户中生成它们,并将它们赋予工作区资源组的“贡献者”权限。这确保了您的Airflow连接可以读取/写入您的Azure ML资源以方便工作负载。请按照以下3个简单步骤设置它们。
要创建服务主体,您需要遵循3个简单步骤:
- 创建一个
客户端ID
。遵循Azure指南中“使用Azure AD注册应用程序并创建服务主体”部分的说明howto-create-service-principal-portal。应用程序ID
,即客户端ID
,是此服务主体的唯一标识符。 - 创建一个
密码
。您可以在Azure Portal中按照此说明中的“选项2:创建新应用程序密码”部分创建此应用程序下的密码
。一旦成功创建密码,您将无法看到其值。因此,我们建议您按照此说明将您的密码存储到Azure Key Vault中。 - 请将此服务主体
Contributor
授予对您的Azure机器学习资源组
的访问权限。重复上述第7项说明,进入您的工作区的资源页面,并点击资源组
。在左侧面板中,选择访问控制(IAM)
,并将Contributor
角色分配给上面的应用程序。这一步很重要。没有它,您的Airflow将无法访问创建计算集群、执行训练工作负载或上传数据等所需资源。以下是分配角色的说明。
注意
如果上述第3步中下拉菜单中没有“Azure机器学习”,则意味着airflow-providers-azure-machinelearning
包未成功安装。您可以按照安装部分中的说明进行安装,并在Airflow webserver容器/机器中使用命令如``pip show airflow-provider-azure-machinelearning```来验证包是否正确安装。
您可以在一个Airflow实例中为不同的Azure机器学习工作区创建许多连接。您可以通过以下方式这样做
- 从单个DAG中协调多个工作区/订阅的工作负载。
- 在不同工程师的工作负载之间实现隔离。
- 在实验环境和生产环境之间实现隔离。
上述说明是关于通过Airflow UI添加连接的。您也可以通过Airflow Cli这样做。您可以在Airflow 文档中找到更多通过Cli进行此操作的示例。以下是一个Airflow命令示例
airflow connections add \
--conn-type "azure_machine_learning" \
--conn-description "[Description]" \
--conn-host "schema" \
--conn-login "[Client-ID]" \
--conn-password "[Secret]" \
--conn-extra '{"extra__azure_machine_learning__tenantId": "[Tenant-ID]", "extra__azure_machine_learning__subscriptionId": "[Subscription-ID]", "extra__azure_machine_learning__resource_group_name": "[Resource-Group-Name]", "extra__azure_machine_learning__workspace_name": "[Workspace-Name]"}' \
"[Connection-ID]"
示例
请查看example_dags了解如何使用此提供程序包。如果您没有运行的Airflow实例,请参阅示例Docker容器,或[Apache Airflow 文档)https://airflow.org.cn/).
开发环境
要构建此包,运行其测试,运行其linting工具等,您将需要以下内容
- 通过pip:
pip install -r dev/requirements.txt
- 通过conda:
conda env create -f dev/environment.yml
运行测试和linters
- 所有测试都在tests文件夹中。要运行它们,从该文件夹运行
pytest
- 此repo使用black,flake8和isort来保持编码格式一致。从该文件夹运行
black .
,isort .
和flake8
。
问题
请将问题提交到我们的官方仓库:[https://github.com/azure/airflow-provider-azure-machinelearning](https://github.com/azure/airflow-provider-azure-machinelearning)。
贡献
此项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权利并且实际上确实授予我们使用您贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA机器人将自动确定您是否需要提供CLA,并适当地装饰PR(例如,状态检查,注释)。只需遵循机器人提供的说明即可。您只需要在所有使用我们的CLA的仓库中这样做一次。
本项目已采用微软开源代码行为准则。有关更多信息,请参阅代码行为准则FAQ或联系opencode@microsoft.com,如有任何其他问题或评论。
商标
本项目可能包含项目、产品或服务的商标或标志。Microsoft 商标或标志的授权使用必须遵守并遵循 Microsoft 的商标及品牌指南。在修改版本项目中使用 Microsoft 商标或标志时,不得造成混淆或暗示 Microsoft 的赞助。任何第三方商标或标志的使用均受这些第三方政策约束。
发布历史
0.0.1
新增功能
- 首次预览。
项目详情
哈希值 for airflow-provider-azure-machinelearning-0.0.1b2.tar.gz
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 283a3aec9f2f5f4a6a7d8ee2623631f4a0b497eddf65292f24c2a4fb41fdfb57 |
|
MD5 | 0a296748b7f6535f1da75236ac679fb4 |
|
BLAKE2b-256 | 26f6811c9244757ef64dfe7efa58f97bd7054e6d3f6e245e66e6984b4977ea41 |
哈希值 for airflow_provider_azure_machinelearning-0.0.1b2-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ef304eca5b4204385566295a44bbcca190ad1bdb00d77718e2fdc2eadfbb653f |
|
MD5 | 60d8f19799bce7a22f517acc14da8d88 |
|
BLAKE2b-256 | 0c24b2a883e5c543eeaf62b17c972fc61288a78891a198d4ef1ec4de5274e8b2 |