在 Azure 中使用 Hugging Face 机器学习模型

微软最近的 Azure 开源日展示了一个使用云原生工具和服务构建的新参考应用程序,重点是微软自己的开源工具。该应用程序旨在成为一项服务,帮助主人与丢失的宠物团聚。它使用机器学习快速将失踪动物的照片与来自动物收容所、救援和社区站点的图像进行比较。这是一个很好的例子,说明开源工具如何构建复杂的站点和服务,从基础设施即代码工具到应用程序框架以及向代码添加功能的各种工具。
该应用程序的核心是一个开源机器学习模型,它是 Hugging Face 社区开发的数千个模型和数据集库的一部分,并建立在其大量不同工具和服务的基础上。社区的规模是使用 Hugging Face 模型的一个很好的理由,可以导入它们以在您自己的代码中进行推理,在您自己的服务器上运行,或者通过云 API 访问它们。
考虑在 Azure 中使用 Hugging Face 的另一个原因是:它允许您将 AI 应用于许多不同的业务问题。尽管 Microsoft 自己的认知服务 API 涵盖了许多具有定义良好的 API 的常见 AI 场景,但它们只是一家公司对哪些机器学习服务对企业有意义的看法。这确实使它们成为万事通,专为一般目的而不是特定任务而设计。如果您的代码需要支持边缘情况,那么向 API 添加适当的调优可能需要大量工作。
是的,可以选择使用 Azure 的机器学习工作室构建自己的特定模型,使用 PyTorch 和 TensorFlow 等工具从头开始设计和训练模型。但这需要在构建和训练模型方面具有重要的数据科学和机器学习专业知识。 “从头开始”的机器学习方法还有其他问题。 Azure 为机器学习训练提供了越来越多的虚拟机选项,但该过程可能具有很高的计算要求并且运行成本很高,尤其是在构建需要大量数据的大型模型时。我们并不都是开放人工智能,也没有预算来构建用于训练的云托管超级计算机!
Hugging Face 拥有超过 40,000 个基于其 Transformer 模型框架构建的模型,它拥有由社区构建和训练的模型,可用于比 Microsoft 单独使用的场景更多的场景,从而帮助解决定制问题。您也不限于文本; Hugging Face 的 Transformers 经过训练可以使用自然语言、音频和计算机视觉。 Hugging Face 将这些功能描述为“任务”,例如,有超过 2,000 个不同的图像分类模型和近 18,000 个文本分类模型。
Microsoft 最近在 Azure 上推出了对 Hugging Face 模型的支持,提供了一组可在您的代码中使用的端点,以及从 Hugging Face Hub 及其管道 API 导入的模型。模型由 Hugging Face 社区构建和测试,端点方法意味着它们已准备好进行推理。
免费提供模型;您只需支付用于运行推理任务的 Azure 计算资源。这并非微不足道,尤其是当您处理大量数据时,您应该将定价与 Azure 自己的认知服务进行比较。
创建端点非常简单。在 Azure Marketplace 中,选择 Hugging Face Azure ML 以将服务添加到你的帐户。将您的终结点添加到资源组,然后选择一个区域并为其命名。您现在可以从 Hugging Face Hub 中选择一个模型并选择模型 ID 和任何关联的任务。接下来,为服务选择 Azure 计算实例和 VNet 以确保服务安全。这足以创建端点,生成使用它所需的 URL 和密钥。
有用的是,该服务支持端点根据每分钟的请求数根据需要自动缩放。默认情况下,您仅限于单个实例,但您可以使用配置屏幕中的滑块来设置最小和最大实例数。扩展是由五分钟内的平均请求数驱动的,旨在消除可能导致不必要成本的需求高峰。
目前,关于 Azure 集成的文档很少,但您可以通过查看 Hugging Face 的 AWS 端点文档来了解它。 Endpoint API 基于现有的 Inference API,您可以决定如何构造有效负载。
该服务为您提供了一个方便的 playground URL 来测试您的推理模型。这包括示例 Python 和 JavaScript 代码,以及从命令行使用 curl 的选项。数据以 JSON 格式发送,响应以类似的方式传递。您可以使用标准库来组装和处理 JSON,从而允许您在代码中嵌入对 API 的 REST 调用。如果您使用的是 Python,则可以获取示例代码并将其复制到 Jupyter 笔记本中,您可以在其中与同事共享测试,共同构建更完整的应用程序。
现在,你可以在 Azure 机器学习中使用 Hugging Face 的基础模型,并使用你用来构建和训练自己的模型的相同工具。虽然该功能目前处于预览阶段,但它是一种使用模型的有用方式,使用熟悉的工具和技术,使用 Azure 机器学习在您的应用程序中微调和部署 Hugging Face 模型。您可以使用 Azure 机器学习注册表搜索模型,准备好运行。
这是为您的代码添加额外的预训练模型端点的快速方法;您还可以选择根据自己的数据微调模型,将 Azure 存储用于训练和测试数据,并使用 Azure 机器学习的管道来管理流程。将 Hugging Face 模型作为您自己模型的基础很有意义;它们已在一系列可能不太适合您的案例中得到证明。一个接受过识别金属制品缺陷训练的模型具有处理玻璃或塑料所必需的一些特征,因此额外的训练将降低出错的风险。
开源机器学习社区不断壮大,像微软这样的公司接受它很重要。他们可能有经验和技能,但他们没有更广泛社区的规模或专业化。通过与 Hugging Face 等社区合作,开发人员可以获得更多选择。这对每个人来说都是一场胜利。