跳到主要内容

MLflow Transformers Flavor

简介

Transformers by 🤗 Hugging Face 是机器学习领域的一项基石,为包括 PyTorchTensorFlowJAX 在内的众多框架提供了最先进的能力。该库已成为自然语言处理 (NLP) 和音频转录处理的实际标准。它还为计算机视觉和多模态 AI 任务提供了引人注目且先进的选项集。Transformers 通过提供预训练模型和易于访问的高级 API 来实现这一切,这些 API 不仅功能强大,而且通用且易于实现。

例如,transformers 库的简洁性基石之一是 pipeline API,它将最常见的 NLP 任务封装到一个 API 调用中。此 API 允许用户根据指定的任务执行各种任务,而无需担心底层模型或预处理步骤。

Transformers Pipeline Architecture

Whisper 模型等的 Transformers Pipeline 架构

Transformers 库与 MLflow 的集成增强了机器学习工作流的管理,从实验跟踪到模型部署。这种组合为将先进的 NLP 和 AI 功能集成到您的应用程序中提供了强大而高效的途径。

Transformers 库的主要功能:

  • 访问预训练模型:适用于各种任务的海量预训练模型,最大限度地减少了训练时间和资源。
  • 任务通用性:支持文本、图像和语音处理等多种模态任务。
  • 框架互操作性:与 PyTorch、TensorFlow、JAX、ONNX 和 TorchScript 兼容。
  • 社区支持:通过论坛和 Hugging Face Hub 可访问的活跃社区,用于协作和支持。

MLflow 的 Transformers Flavor:

MLflow 通过提供以下功能来支持 Transformers 包的使用

  • 简化的实验跟踪:在微调过程中高效记录参数、指标和模型。
  • 轻松的模型部署:简化到各种生产环境的部署。
  • 库集成:与 HuggingFace 库(如 AcceleratePEFT)集成,用于模型优化。
  • 提示管理保存提示模板与 transformers pipelines,以减少样板代码并优化推理。

示例用例

有关微调模型和使用 MLflow 记录结果的示例,请参阅微调教程。这些教程演示了将预训练的基础模型微调为应用程序特定模型(如垃圾邮件分类器、SQL 生成器)的过程。MLflow 在跟踪微调过程(包括数据集、超参数、性能指标和最终模型构件)中发挥着关键作用。下图显示了 MLflow UI 中教程的结果。

Fine-tuning a Transformers Model with MLflow

使用 MLflow 微调 Transformers 模型

轻松部署

模型训练完成后,需要部署以进行推理。MLflow 通过提供诸如 mlflow.transformers.load_model()mlflow.pyfunc.load_model() 等函数来简化这一过程,这些函数可以轻松进行模型服务。作为对 Transformers 进行增强推理的功能支持的一部分,MLflow 提供了启用推理参数使用的机制,这些参数可以减少计算开销并降低部署的内存要求。

开始使用 MLflow Transformers Flavor - 教程和指南

下面,您将找到一些专注于使用transformers的不同用例的指南,这些指南利用了 MLflow 的 API 进行跟踪和推理功能。

使用 MLflow 的 Transformers 入门快速指南

如果您是第一次接触 transformers,或者经常使用 transformers 但不熟悉 MLflow,这是一个很好的起点。

使用 MLflow 的 Transformers 微调教程

微调模型是机器学习工作流中的常见任务。这些教程旨在展示如何使用 transformers 库进行模型微调,同时利用 MLflow 的 API 来跟踪实验配置和结果。

MLflow 的 Transformers 用例教程

有兴趣了解如何将 transformers 用于基本文本生成以外的任务吗?想了解更多关于您可以使用 transformers 和 MLflow 解决的问题的广度吗?

这些更高级的教程旨在展示 transformers 模型架构的不同应用,以及如何利用 MLflow 来跟踪和部署这些模型。

使用 Transformers Flavor 时需要注意的重要细节

在使用 MLflow 中的 transformers flavor 时,有几点重要注意事项需要牢记

  • PyFunc 限制:在使用 python_function flavor 时,并非所有 Transformers pipeline 的输出都能被捕获。例如,如果输出需要额外的引用或分数,则应使用原生实现。此外,并非所有 pipeline 类型都支持 pyfunc。请参阅 将 Transformers 模型加载为 Python 函数,了解支持的 pipeline 类型及其输入和输出格式。
  • 支持的 Pipeline 类型:并非所有 Transformers pipeline 类型目前都支持与 python_function flavor 一起使用。特别是,新的模型架构可能要等到 transformers 库在其支持的 pipeline 实现中有了指定的 pipeline 类型后才会被支持。
  • 输入和输出类型:python_function 实现的输入和输出类型可能与原生 pipeline 预期的不同。用户需要确保与他们的数据处理工作流兼容。
  • 模型配置:保存或记录模型时,可以使用model_config来设置某些参数。但是,如果同时保存了 model_config 和包含参数的ModelSignature,则 ModelSignature 中的默认参数将覆盖 model_config 中的参数。
  • 音频和视觉模型:音频和基于文本的大型语言模型支持 pyfunc,而计算机视觉和多模态模型等其他类型仅支持原生类型加载。
  • 提示模板:目前支持的提示模板适用于少数 pipeline 类型。要获取支持的 pipelines 的完整列表以及有关该功能的更多信息,请参阅此链接

记录大型模型

默认情况下,MLflow 在记录模型时会消耗一定的内存和存储空间。这在使用拥有数十亿参数的大型基础模型时可能会成为一个问题。为了解决这个问题,MLflow 提供了一些优化技术,以减少记录过程中的资源消耗并加快记录速度。请参阅 MLflow Transformers flavor 中处理大型模型指南,了解更多关于这些技巧的信息。

使用 Transformer Pipelines 的 tasks

在 MLflow Transformers flavor 中,task 在确定模型的输入和输出格式方面起着至关重要的作用。请参阅 MLflow Transformers 中的 Tasks 指南,了解如何使用原生的 Transformers task 类型,以及如何利用诸如 llm/v1/chatllm/v1/completions 等高级 task 来实现 OpenAI 兼容的推理。

详细文档

要了解更多关于 MLflow 中transformers flavor 的细微差别,请参阅综合指南,其中涵盖了

  • Pipelines 与组件记录:探索保存模型组件或完整 pipelines 的不同方法,并了解加载这些模型用于各种用例的细微差别。
  • 将 Transformers 模型加载为 Python 函数:熟悉与 pyfunc 模型 flavor 兼容的各种 transformers pipeline 类型。了解 pyfunc 模型实现中 flavor 的输入和输出格式的标准化,以确保与 JSON 和 Pandas DataFrames 无缝集成。
  • 提示模板:了解如何将提示模板与 transformers pipelines 一起保存,以减少样板代码并优化推理。
  • 用于推理的模型配置和模型签名参数:了解如何利用 model_configModelSignature 来实现灵活且自定义的模型加载和推理。
  • 自动元数据和 ModelCard 记录:发现模型卡和其他元数据的自动记录功能,增强模型文档和透明度。
  • 模型签名推断:了解 MLflow 在 transformers flavor 内自动推断和附加模型签名的能力,从而简化模型部署。
  • 覆盖 Pytorch dtype:深入了解为推理优化 transformers 模型,重点关注内存优化和数据类型配置。
  • 音频 pipelines 的输入数据类型:了解处理 transformers pipelines 中的音频数据的具体要求,包括处理 str、bytes 和 np.ndarray 等不同输入类型。
  • MLflow Transformers flavor 中的 PEFT 模型:PEFT (Parameter-Efficient Fine-Tuning) 在 MLflow 中得到原生支持,支持 LoRA、QLoRA 等各种优化技术,以显著降低微调成本。请查看指南和教程,了解更多关于如何利用 MLflow 的 PEFT 的信息。

了解更多关于 Transformers 的信息

有兴趣了解更多关于如何利用 transformers 来进行机器学习工作流吗?

🤗 Hugging Face 提供了一个出色的 NLP 课程。请查看并了解如何利用 Transformers、Datasets、Tokenizers 和 Accelerate