MLflow Transformers Flavor
简介
🤗 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 Flavor:
MLflow 通过提供以下方式支持 Transformers 软件包的使用
- 简化的实验跟踪:在 微调过程 中有效地记录参数、指标和模型。
- 轻松的模型部署:简化了到各种生产环境的部署。
- 库集成:与 HuggingFace 库集成,例如 Accelerate、 PEFT 用于模型优化。
- 提示管理:使用 transformers pipelines 保存提示模板,以优化推理,减少样板代码。
使用案例示例
有关微调模型并使用 MLflow 记录结果的示例,请参阅 微调教程。 这些教程演示了将预训练的基础模型微调为特定于应用程序的模型的过程,例如垃圾邮件分类器、SQL 生成器。 MLflow 在跟踪微调过程(包括数据集、超参数、性能指标和最终模型工件)中起着关键作用。 下图显示了 MLflow UI 中教程的结果。
轻松部署
一旦模型经过训练,就需要 部署用于推理。 MLflow 与 Transformers 的集成通过提供诸如 mlflow.transformers.load_model()
和 mlflow.pyfunc.load_model()
之类的函数简化了此过程,从而可以轻松地进行模型服务。 作为增强 transformers 推理的特性支持的一部分,MLflow 提供了启用使用 推理参数 的机制,这些参数可以减少计算开销并降低部署的内存需求。
MLflow Transformers Flavor 入门 - 教程和指南
下面,您将找到许多侧重于使用 *transformers* 的不同用例的指南,这些用例利用 MLflow 的 API 进行跟踪和推理。
将 Transformers 与 MLflow 结合使用的入门快速入门
如果这是您第一次接触 transformers,或者广泛使用 transformers 但不熟悉 MLflow,那么这是一个很好的起点。
使用 MLflow 的 Transformers 微调教程
微调模型是机器学习工作流程中的常见任务。 这些教程旨在展示如何使用 transformers 库微调模型,并利用 MLflow 的 API 来跟踪实验配置和结果。
了解如何使用 MLflow 微调 transformers 模型,以跟踪训练过程并记录特定用例的调整后的 pipeline。
了解如何使用 PEFT (QLoRA) 和 MLflow 微调大型基础模型,从而显着减少内存使用量。
Transformers 与 MLflow 的用例教程
是否有兴趣了解如何利用 transformers 来执行基本文本生成以外的任务? 是否想详细了解您可以使用 transformers 和 MLflow 解决的问题的广度?
这些更高级的教程旨在展示 transformers 模型架构的不同应用,以及如何利用 MLflow 来跟踪和部署这些模型。
了解如何利用 Whisper 模型与 MLflow 生成准确的音频转录。
了解在 MLflow 中保存和加载 transformers 模型以自定义工作流程的选项,并提供有趣的翻译示例!
了解具有 Transformers 和 MLflow 的有状态聊天会话式 Pipeline 的基础知识。
了解如何使用本地 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 类型支持提示模板。 有关支持的 pipeline 的完整列表以及有关该特性的更多信息,请参阅 此链接。
记录大型模型
默认情况下,MLflow 会占用一定的内存占用空间和存储空间来记录模型。 这在使用具有数十亿个参数的大型基础模型时可能会成为一个问题。 为了解决这个问题,MLflow 提供了一些优化技术来减少记录期间的资源消耗并加快记录过程。 请参阅 在 MLflow Transformers flavor 中使用大型模型 指南,了解有关这些技巧的更多信息。
使用 Transformer Pipelines 的 tasks
在 MLflow Transformers flavor 中,task
在确定模型的输入和输出格式方面起着至关重要的作用。 请参阅 MLflow Transformers 中的任务 指南,了解如何使用本机 Transformers 任务类型,以及如何利用诸如 llm/v1/chat
和 llm/v1/completions
之类的高级任务进行 OpenAI 兼容的推理。
详细文档
要了解有关 MLflow 中 *transformers* flavor 的细微之处的更多信息,请深入研究 综合指南,其中涵盖了
- Pipelines 与组件日志记录:探索保存模型组件或完整 pipelines 的不同方法,并了解为各种用例加载这些模型的细微之处。
- 作为 Python 函数的 Transformers 模型:熟悉与 pyfunc 模型 flavor 兼容的各种
transformers
pipeline 类型。 了解 flavor 的 pyfunc 模型实现中输入和输出格式的标准化,确保与 JSON 和 Pandas DataFrames 无缝集成。 - 提示模板:了解如何使用 transformers pipelines 保存提示模板,以优化推理,减少样板代码。
- 用于推理的模型配置和模型签名参数:了解如何利用
model_config
和ModelSignature
进行灵活和自定义的模型加载和推理。 - 自动元数据和 ModelCard 日志记录:发现用于模型卡和其他元数据的自动日志记录特性,从而增强模型文档和透明度。
- 模型签名推理:了解 MLflow 在
transformers
flavor 中的功能,以自动推断和附加模型签名,从而简化模型部署。 - 覆盖 Pytorch dtype:深入了解如何优化
transformers
模型以进行推理,重点关注内存优化和数据类型配置。 - 音频 Pipelines 的输入数据类型:了解在 transformers pipelines 中处理音频数据的具体要求,包括处理诸如 str、bytes 和 np.ndarray 等不同输入类型。
- MLflow Transformers flavor 中的 PEFT 模型:PEFT(参数高效微调)在 MLflow 中得到原生支持,从而可以实现诸如 LoRA、QLoRA 等各种优化技术,从而显着降低微调成本。 查看指南和教程,了解有关如何将 PEFT 与 MLflow 结合使用的更多信息。
了解有关 Transformers 的更多信息
是否有兴趣了解有关如何利用 transformers 来进行机器学习工作流程的更多信息?
🤗 Hugging Face 有一个很棒的 NLP 课程。 访问它,了解如何利用 Transformers、数据集、分词器和 Accelerate。