将开放源机器学习库和平台与 Azure 机器学习一起使用
本文介绍可与 Azure 机器学习一起使用的开放源 Python 机器学习库和平台。 使用你喜欢的开放源项目来训练、部署和管理端到端机器学习过程。 通过 Jupyter Notebook 和 Visual Studio Code 等开发工具利用 Azure 机器学习中的现有模型和脚本。
训练开源机器学习模型
机器学习训练过程涉及到将算法应用于数据,以便完成任务或解决问题。 你可以根据问题选择最适合任务和你的数据的不同算法。 有关可以通过机器学习解决的问题的详细信息,请参阅深度学习与机器学习一文和机器学习算法速查表。
经典机器学习:Scikit-learn
对于涉及传统机器学习算法任务(例如分类、聚类分析和回归)的训练任务,可以使用 scikit-learn 等库。 要了解如何训练花卉分类模型,请参阅如何使用 scikit-learn 进行训练一文。
神经网络:PyTorch、TensorFlow、Keras
开源机器学习算法称为神经网络,这是机器学习的一个子集,用于在 Azure 机器学习中训练深度学习模型。
开源深度学习框架和操作指南包括:
迁移学习
从头开始训练深度学习模型通常需要大量的时间、数据和计算资源。 你可以通过使用迁移学习来加快训练过程。 迁移学习是一种将解决某个问题时获得的知识应用于虽然不同但却相关的问题的技术。 这意味着,可以使用现有模型来重新设置其用途。 有关迁移学习的详细信息,请参阅深度学习与机器学习一文。
强化学习:Ray RLLib
强化学习是一种人工智能技术,它使用操作、状态和奖励来训练模型:强化学习代理会学习如何根据环境的当前状态,使用一组预定义操作来最大程度地提高指定的奖励。
Ray RLLib 项目有一组可确保在整个训练过程中实现高可伸缩性的功能。 迭代过程既耗费时间又耗费资源,因为强化学习代理会尽力学习完成任务的最佳方式。 Ray RLLib 本身还支持深度学习框架,例如 TensorFlow 和 PyTorch。
若要了解如何将 Ray RLLib 与 Azure 机器学习一起使用,请参阅如何训练强化学习模型。
监视模型性能:TensorBoard
训练单个或多个模型需要可视化和检查所需的指标,以确保模型按预期方式执行。 可以使用 Azure 机器学习中的 TensorBoard 来跟踪和可视化试验指标
负责任的 AI:隐私和公平性
通过差异隐私保护数据隐私
若要训练机器学习模型,你需要数据。 有时,该数据是敏感数据,必须确保数据的安全性和私密性。 差异隐私是维护数据集中信息的机密性的一项技术。 若要了解详细信息,请参阅有关保留数据隐私的文章。
开源差异隐私工具包(例如 SmartNoise)帮助你在 Azure 机器学习解决方案中保留数据隐私。
用于可解释的公平模型的框架
机器学习系统在银行、教育和医疗保健等不同社会领域使用。 因此,这些系统需要对其做出的预测和建议负责以防止意外的后果,这一点很重要。
开源框架(例如 InterpretML 和 Fairlearn (https://github.com/fairlearn/fairlearn) 与 Azure 机器学习配合使用可以创建更透明和公平的机器学习模型。
若要详细了解如何构建公平且可解释的模型,请参阅以下文章:
模型部署
在模型经过训练并可用于生产环境后,你必须选择如何部署模型。 Azure 机器学习提供了各种部署目标。 有关详细信息,请参阅有关部署位置和方式的文章。
使用 ONNX 标准化模型格式
在训练后,模型的内容(例如了解的参数)会进行序列化并保存到文件中。 每个框架都有其自己的序列化格式。 这意味着,当使用不同的框架和工具时,你必须按照框架的要求来部署模型。 若要标准化此过程,可以使用 Open Neural Network Exchange (ONNX) 格式。 ONNX 是适用于人工智能模型的开源格式。 ONNX 支持框架之间的互操作性。 这意味着你可在众多常见的机器学习框架(如 PyTorch)中训练模型,将其转换为 ONNX 格式,并在 ML.NET 等不同框架中使用 ONNX 模型。
若要详细了解 ONNX 以及如何使用 ONNX 模型,请参阅以下文章:
将模型打包并部署为容器
容器技术(例如 Docker)是将模型部署为 Web 服务的一种方法。 容器提供了与平台和资源无关的方式来构建和协调可重现的软件环境。 有了这些核心技术,你就可以使用预配置的环境、预配置的容器映像或自定义的将机器学习模型部署到目标,例如 Kubernetes 群集。 对于 GPU 密集型工作流,可以使用 NVIDIA Triton 推理服务器等工具来使用 GPU 进行预测。
使用同态加密来保护部署
保护部署是部署过程的一个重要部分。 若要部署加密的推理服务,请使用 encrypted-inference
开源 Python 库。 encrypted inferencing
包提供了基于 Microsoft SEAL(一个同态加密库)的绑定。
机器学习运营 (MLOps)
机器学习运营 (MLOps) 通常被视为适用于机器学习的 DevOps,允许你构建透明性、可复原性和可重现性更高的机器学习工作流。 若要详细了解 MLOps,请参阅什么是 MLOps 一文。
使用持续集成 (CI) 和持续部署 (CD) 等 DevOps 做法,你可以自动完成端到端机器学习生命周期,并捕获有关它的治理数据。 你可以在 GitHub Actions 中定义机器学习 CI/CD 管道,以运行 Azure 机器学习训练和部署任务。
为了构建透明、可重现且可审核的管道,必须在 MLOps 过程中捕获软件依赖项、指标、元数据、数据并对模型进行版本控制。 对于此任务,你可以在 Azure 机器学习中使用 MLflow,以及在 Azure Databricks 中训练机器学习模型时使用 MLflow。 还可以将 MLflow 模型部署为 Azure Web 服务。