MLflow Transformers Flavor
简介
Transformers by 🤗 Hugging Face 是机器学习领域的一项基石,为包括 PyTorch、TensorFlow 和 JAX 在内的众多框架提供了最先进的能力。该库已成为自然语言处理 (NLP) 和音频转录处理的实际标准。它还为计算机视觉和多模态 AI 任务提供了引人注目且先进的选项集。Transformers 通过提供预训练模型和易于访问的高级 API 来实现这一切,这些 API 不仅功能强大,而且通用且易于实现。
例如,transformers 库的简洁性基石之一是 pipeline API,它将最常见的 NLP 任务封装到一个 API 调用中。此 API 允许用户根据指定的任务执行各种任务,而无需担心底层模型或预处理步骤。
Transformers 库与 MLflow 的集成增强了机器学习工作流的管理,从实验跟踪到模型部署。这种组合为将先进的 NLP 和 AI 功能集成到您的应用程序中提供了强大而高效的途径。
Transformers 库的主要功能:
- 访问预训练模型:适用于各种任务的海量预训练模型,最大限度地减少了训练时间和资源。
- 任务通用性:支持文本、图像和语音处理等多种模态任务。
- 框架互操作性:与 PyTorch、TensorFlow、JAX、ONNX 和 TorchScript 兼容。
- 社区支持:通过论坛和 Hugging Face Hub 可访问的活跃社区,用于协作和支持。
MLflow 的 Transformers Flavor:
MLflow 通过提供以下功能来支持 Transformers 包的使用
- 简化的实验跟踪:在微调过程中高效记录参数、指标和模型。
- 轻松的模型部署:简化到各种生产环境的部署。
- 库集成:与 HuggingFace 库(如 Accelerate、PEFT)集成,用于模型优化。
- 提示管理:保存提示模板与 transformers pipelines,以减少样板代码并优化推理。
示例用例
有关微调模型和使用 MLflow 记录结果的示例,请参阅微调教程。这些教程演示了将预训练的基础模型微调为应用程序特定模型(如垃圾邮件分类器、SQL 生成器)的过程。MLflow 在跟踪微调过程(包括数据集、超参数、性能指标和最终模型构件)中发挥着关键作用。下图显示了 MLflow UI 中教程的结果。
轻松部署
模型训练完成后,需要部署以进行推理。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 模型,以跟踪训练过程并记录特定用例的微调管道。
了解如何使用 PEFT (QLoRA) 和 MLflow,以显著减少内存使用量来微调大型基础模型。
MLflow 的 Transformers 用例教程
有兴趣了解如何将 transformers 用于基本文本生成以外的任务吗?想了解更多关于您可以使用 transformers 和 MLflow 解决的问题的广度吗?
这些更高级的教程旨在展示 transformers 模型架构的不同应用,以及如何利用 MLflow 来跟踪和部署这些模型。
了解如何利用 Whisper 模型和 MLflow 生成准确的音频转录。
了解在 MLflow 中保存和加载 transformers 模型的选项,通过有趣的翻译示例自定义您的工作流!
了解使用 Transformers 和 MLflow 进行状态化聊天 Conversational Pipelines 的基础知识。
了解如何使用本地 Transformers 模型和 MLflow 构建 OpenAI 兼容的聊天机器人,并以最少的配置进行部署。
了解如何为 Transformers Pipelines 设置提示模板,以优化 LLM 的输出,并简化终端用户体验。
使用 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/chat 和 llm/v1/completions 等高级 task 来实现 OpenAI 兼容的推理。
详细文档
要了解更多关于 MLflow 中transformers flavor 的细微差别,请参阅综合指南,其中涵盖了
- Pipelines 与组件记录:探索保存模型组件或完整 pipelines 的不同方法,并了解加载这些模型用于各种用例的细微差别。
- 将 Transformers 模型加载为 Python 函数:熟悉与 pyfunc 模型 flavor 兼容的各种
transformerspipeline 类型。了解 pyfunc 模型实现中 flavor 的输入和输出格式的标准化,以确保与 JSON 和 Pandas DataFrames 无缝集成。 - 提示模板:了解如何将提示模板与 transformers pipelines 一起保存,以减少样板代码并优化推理。
- 用于推理的模型配置和模型签名参数:了解如何利用
model_config和ModelSignature来实现灵活且自定义的模型加载和推理。 - 自动元数据和 ModelCard 记录:发现模型卡和其他元数据的自动记录功能,增强模型文档和透明度。
- 模型签名推断:了解 MLflow 在
transformersflavor 内自动推断和附加模型签名的能力,从而简化模型部署。 - 覆盖 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。