执行 Python 脚本

重要

对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习

从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。

ML 工作室(经典)文档即将停用,将来可能不会更新。

从机器学习试验执行 Python 脚本

类别: Python 语言模块

注意

仅适用于机器学习 Studio (经典)

可在 Azure 机器学习设计器中获取类似的拖放模块。

模块概述

本文介绍如何在 机器学习 Studio 中使用执行 Python 脚本模块 (经典) 来运行 Python 代码。 有关 Studio (经典) 中 Python 的体系结构和设计原则的详细信息,请参阅 以下文章。

使用 Python,可以执行现有 Studio 当前不支持的任务 (经典) 模块,例如:

  • 使用 matplotlib 将数据可视化
  • 使用 Python 库枚举工作区中的数据集和模型
  • 导入数据模块不支持的从源中读取、加载和操作数据

机器学习 Studio (经典) 使用 Python 的 Anaconda 分发,其中包括许多用于数据处理的常见实用工具。

如何使用执行 Python 脚本

执行 Python 脚本模块包含可用于起点的示例 Python 代码。 若要配置执行 Python 脚本模块,请在“Python 脚本”文本框中提供要执行的一组输入和 Python 代码。

  1. “执行 Python 脚本 ”模块添加到试验中。

  2. 滚动到 “属性 ”窗格底部,对于 Python 版本,请选择脚本中使用的 Python 库和运行时版本。

    • Python 2.7.7 的 Anaconda 2.0 分发版
    • Python 2.7.11 的 Anaconda 4.0 分发版
    • Python 3.5 的 Anaconda 4.0 分发版 (默认)

    建议在键入任何新代码之前设置版本。 如果以后更改版本,系统会提示你确认更改。

    重要

    如果在试验中使用 了执行 Python 脚本 模块的多个实例,则必须为实验中的所有模块选择单个版本的 Python。

  3. 在 Studio (要用于输入的经典) 中添加和连接 Dataset1 的任何数据集。 在 Python 脚本中将此数据集引用为 DataFrame1

    如果要使用 Python 生成数据,或者使用 Python 代码将数据直接导入到模块中,则可以选择使用数据集。

    本模块支持在 Dataset2 上添加第二个 Studio (经典) 数据集。 在 Python 脚本中将第二个数据集引用为 DataFrame2。

    使用此模块加载时,存储在 Studio (经典) 中的数据集会自动转换为 pandas data.frames。

    Execute Python input map

  4. 若要包含新的 Python 包或代码,请在 脚本捆绑包中添加包含这些自定义资源的压缩文件。 脚本捆绑包的输入必须是已上传到工作区的压缩文件。 有关如何准备和上传这些资源的详细信息,请参阅 解压缩数据

    上传压缩存档中包含的任何文件都可以在试验执行期间使用。 如果存档中包含目录结构,则会保留该结构,但你必须在路径前面追加一个名为 src 的目录。

  5. 在“Python 脚本”文本框中,键入或粘贴有效的 Python 脚本。

    Python 脚本文本框预先填充了注释中的一些说明,以及用于数据访问和输出的示例代码。 你必须编辑或替换此代码。 请务必遵循有关缩进和大小写的 Python 约定。

    • 脚本必须包含名为 azureml_main 的函数作为此模块的入口点。
    • 入口点函数最多可以包含两个输入参数:Param<dataframe1>Param<dataframe2>
    • 连接到第三个输入端口的压缩文件将被解压缩并存储在目录 .\Script Bundle 中,该目录还会添加到 Python sys.path 中。

    因此,如果 zip 文件包含 mymodule.py,请使用 import mymodule 导入它。

    • 单个数据集可以返回到 Studio (经典) ,该) 必须是类型 pandas.DataFrame序列。 可以在 Python 代码中创建其他输出,并将其直接写入 Azure 存储,或使用 Python 设备创建可视化效果。
  6. 运行试验,或选择模块,然后单击 “运行” 以仅运行 Python 脚本。

    所有数据和代码都将加载到虚拟机中,并使用指定的 Python 环境运行。

结果

模块返回以下输出:

  • 结果数据集。 嵌入的 Python 代码执行的任何计算结果都必须作为 pandas data.frame 提供,该帧会自动转换为机器学习数据集格式,以便可以将结果与实验中的其他模块一起使用。 模块限制为单个数据集作为输出。 有关详细信息,请参阅 数据表

  • Python 设备。 此输出支持使用 Python 解释器的控制台输出和 PNG 图形显示。

如何附加脚本资源

执行 Python 脚本模块支持任意 Python 脚本文件作为输入,前提是它们事先准备好,并作为.ZIP文件的一部分上传到工作区。

将包含 Python 代码的 ZIP 文件Upload工作区

  1. 在 机器学习 Studio (经典) 的试验区域中,单击“数据集”,然后单击“新建”。

  2. 选择“ 从本地文件”选项。

  3. Upload新数据集对话框中,单击新数据集的类型下拉列表,然后选择 Zip 文件 (.zip) 选项。

  4. 单击“ 浏览 ”以找到压缩的文件。

  5. 键入用于工作区的新名称。 分配给数据集的名称将成为工作区中提取包含文件的文件夹的名称。

  6. 将压缩包上传到 Studio (经典) 后,请验证压缩文件是否在 “已保存的数据集 ”列表中可用,然后将数据集连接到 脚本捆绑包 输入端口。

    ZIP 文件中包含的所有文件都可以在运行时使用:例如,示例数据、脚本或新的 Python 包。

    如果压缩文件包含任何尚未安装在 机器学习 Studio (经典) 中的库,则必须将 Python 库包安装为自定义脚本的一部分。

    如果存在目录结构,则会保留它。 但是,必须更改代码,以将目录 src 追加到路径。

调试 Python 代码

当代码被分解为具有明确定义的输入和输出的函数,而不是松散相关的可执行语句序列时, 执行 Python 脚本 模块效果最佳。

此 Python 模块不支持 Intellisense 和调试等功能。 如果模块在运行时失败,可以在模块的输出日志中查看一些错误详细信息。 但是,完整的 Python 堆栈跟踪不可用。 因此,我们建议用户在不同的环境中开发和调试其 Python 脚本,然后将代码导入模块。

可以查找的一些常见问题:

  • 检查从中返回 azureml_main的数据帧中的数据类型。 如果列包含数值类型和字符串以外的数据类型,则可能会出错。

  • 使用 dataframe.dropna() 从 Python 脚本导出时从数据集中删除 NA 值。 准备数据时,请使用 “清理缺失数据 ”模块。

  • 检查嵌入的代码是否存在缩进和空格错误。 如果收到错误“缩进Error:预期缩进块”,请参阅以下资源以获取指导:

已知的限制

  • Python 运行时是沙盒的,不允许以持久性方式访问网络或本地文件系统。

  • 所有本地保存的文件都将隔离,并在模块完成后删除。 Python 代码无法访问运行它的计算机上的大部分目录,当前目录及其子目录除外。

    将压缩文件作为资源提供时,文件将从工作区复制到试验执行空间,解压缩,然后使用。 复制和解压缩资源可能会占用内存。

  • 该模块可以输出单个数据帧。 无法将任意 Python 对象(如训练的模型)直接返回到 Studio (经典) 运行时。 但是,可以将对象写入存储或工作区。 另一个选项是用于 pickle 将多个对象序列化为字节数组,然后在数据帧内返回数组。

示例

有关将 Python 脚本与 Studio (经典) 试验集成的示例,请参阅 Azure AI 库中的以下资源:

另请参阅

R 语言模块