MLflow Transformers 风味
简介
🤗 Hugging Face 的 Transformers 是机器学习领域的核心,为 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 风味:
MLflow 通过提供以下功能来支持 Transformers 包的使用:
- 简化实验跟踪:在微调过程中高效记录参数、指标和模型。
- 轻松模型部署:简化部署到各种生产环境。
- 库集成:与 HuggingFace 库(如 Accelerate、PEFT)集成以优化模型。
- 提示管理:使用 transformers 管道保存提示模板,以更少的样板代码优化推理。
示例用例
有关使用 MLflow 微调模型和记录结果的示例,请参阅微调教程。这些教程演示了将预训练基础模型微调为特定应用程序模型(如垃圾邮件分类器、SQL 生成器)的过程。MLflow 在跟踪微调过程(包括数据集、超参数、性能指标和最终模型工件)中发挥着关键作用。下图显示了 MLflow UI 中教程的结果。
轻松部署
模型训练完成后,需要部署以进行推理。MLflow 与 Transformers 的集成通过提供诸如 mlflow.transformers.load_model()
和 mlflow.pyfunc.load_model()
等函数来简化此过程,从而实现轻松的模型服务。作为 Transformers 增强推理功能支持的一部分,MLflow 提供了启用使用推理参数的机制,这些参数可以减少计算开销并降低部署的内存要求。
MLflow Transformers 风味入门 - 教程和指南
下面,您将找到一些指南,这些指南侧重于使用 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 进行有状态聊天对话管道的基础知识。
了解如何使用本地 Transformers 模型和 MLflow 构建兼容 OpenAI 的聊天机器人,并以最少的配置进行部署。
了解如何使用 Transformers Pipelines 设置提示模板以优化 LLM 的输出并简化最终用户体验。
关于 transformers 风味需要注意的重要细节
在使用 MLflow 中的 transformers 风味时,有几个重要的注意事项需要牢记
- PyFunc 限制:使用 python_function 风味时,并非所有 Transformers 管道的输出都可能被捕获。例如,如果需要从输出中获取其他引用或分数,则应使用本机实现。此外,并非所有管道类型都支持 pyfunc。有关支持的管道类型及其输入和输出格式,请参阅将 Transformers 模型加载为 Python 函数。
- 支持的管道类型:并非所有 Transformers 管道类型当前都支持与 python_function 风味一起使用。特别是,新的模型架构可能不受支持,直到 transformers 库在其支持的管道实现中具有指定的管道类型。
- 输入和输出类型:python_function 实现的输入和输出类型可能与本机管道预期的不同。用户需要确保与其数据处理工作流的兼容性。
- 模型配置:保存或记录模型时,可以使用model_config设置某些参数。但是,如果同时保存 model_config 和带有参数的ModelSignature,则 ModelSignature 中的默认参数将覆盖model_config中的参数。
- 音频和视觉模型:支持将音频和基于文本的大型语言模型与 pyfunc 一起使用,而计算机视觉和多模态模型等其他类型仅支持本机类型加载。
- 提示模板:提示模板目前支持少数管道类型。有关支持的管道的完整列表以及有关该功能的更多信息,请参阅此链接。
记录大型模型
默认情况下,MLflow 会占用一定的内存占用和存储空间来记录模型。这在使用具有数十亿参数的大型基础模型时可能会成为一个问题。为了解决这个问题,MLflow 提供了一些优化技术,以减少记录过程中的资源消耗并加快记录过程。请参阅在 MLflow Transformers 风味中使用大型模型指南,了解有关这些技巧的更多信息。
使用 Transformer Pipelines 的 tasks
在 MLflow Transformers 风味中,task
在确定模型的输入和输出格式方面起着至关重要的作用。请参阅MLflow Transformers 中的任务指南,了解如何使用本机 Transformers 任务类型,并利用高级任务(如llm/v1/chat
和llm/v1/completions
)进行兼容 OpenAI 的推理。
详细文档
要了解有关 MLflow 中 transformers 风味细微差别的更多信息,请深入研究综合指南,其中包括
- 管道与组件日志记录:探索保存模型组件或完整管道的不同方法,并了解加载这些模型以用于各种用例的细微差别。
- 作为 Python 函数的 Transformers 模型:熟悉与 pyfunc 模型风味兼容的各种
transformers
管道类型。了解风味中 pyfunc 模型实现的输入和输出格式的标准化,确保与 JSON 和 Pandas DataFrames 的无缝集成。 - 提示模板:了解如何使用 transformers 管道保存提示模板,以更少的样板代码优化推理。
- 用于推理的模型配置和模型签名参数:了解如何利用
model_config
和ModelSignature
进行灵活和自定义的模型加载和推理。 - 自动元数据和模型卡日志记录:发现模型卡和其他元数据的自动日志记录功能,增强模型文档和透明度。
- 模型签名推理:了解 MLflow 在
transformers
风味中自动推断和附加模型签名的功能,从而简化模型部署。 - 覆盖 PyTorch dtype:深入了解优化
transformers
模型以进行推理,重点关注内存优化和数据类型配置。 - 音频管道的输入数据类型:了解在 transformers 管道中处理音频数据的特定要求,包括处理 str、bytes 和 np.ndarray 等不同输入类型。
- MLflow Transformers 风味中的 PEFT 模型:MLflow 原生支持 PEFT(参数高效微调),支持 LoRA、QLoRA 等各种优化技术,可显著降低微调成本。请查看指南和教程,了解如何利用 PEFT 和 MLflow。
了解有关 Transformers 的更多信息
有兴趣了解如何利用 transformers 进行机器学习工作流吗?
🤗 Hugging Face 有一个很棒的 NLP 课程。查看它,看看如何利用Transformers、Datasets、Tokenizers 和 Accelerate。