Hugging Face Transformers:开源机器学习入门指南
了解 Hugging Face 生态系统
Hugging Face 生态系统由多个相互关联的工具组成,这些工具简化了预训练模型的部署和使用。
Hugging Face Transformers 库
Transformers 库是一个开源的 Python 库,提供数千个用于自然语言处理(NLP)、计算机视觉和音频任务的预训练模型。它抽象了底层机器学习框架(如 PyTorch、TensorFlow 和 JAX)的复杂性,使用户能够在无需从头编写代码的情况下实现模型。
Hugging Face Hub
Hub 充当协作平台,类似于机器学习领域的 GitHub,社区在此托管开源模型和数据集。Transformers 库直接与 Hub 集成,以下载和部署模型。
Hugging Face Spaces
Spaces 是 Hub 上的一项服务,允许用户构建并部署基于网页的机器学习演示和应用。它支持使用 Docker 模板——预定义的软件环境蓝图——快速部署一致的应用,例如 JupyterLab 笔记本。
运行大型语言模型的技术要求
运行大型语言模型需要特定的硬件和软件配置,以确保性能和兼容性。
GPU 加速
虽然 CPU 能够处理某些应用,但 LLM 需要图形处理单元(GPU)的并行计算能力才能高效运行。例如,运行 Phi-2 模型需要具备足够显存的 GPU,例如配备 24GB VRAM 的 NVIDIA A10G。
软件依赖
要通过 Transformers 库运行模型,用户必须安装该库本身以及支持的框架。由于 Transformers 库是基于其他框架构建的,它需要安装 PyTorch、TensorFlow 或 JAX 才能工作。
核心机器学习概念
本指南定义了与开源模型交互所需的若干基础编程和机器学习概念。
类和对象
在 Python 中,类(Classes)充当创建对象的“配方”。本指南使用类来创建两个关键对象:model 对象和 tokenizer 对象。这使得属性和函数可以组合在一起,简化了编码过程。
分词与解码
模型无法直接处理原始文本;它们只能理解数值。分词器(tokenizer)是一种工具,将句子拆分为更小的片段(tokens),并为每个片段分配数值输入 ID。此过程称为编码。为了将模型的数值输出转化为人类可读的文本,分词器必须执行相反的过程,即解码。
基础模型 与 指令微调模型
不同模型对提示的响应方式存在关键区别:
- Base Models(基础模型): 这些本质上是巨大的自动补全引擎。它们根据训练数据预测最可能的下一个 token。Microsoft 的 Phi-2 是一种基础模型,这意味着它可能无法以对话方式直接响应指令。
- Instruction-Tuned Models(指令微调模型): 这些是经过进一步训练的基础模型,能够理解并响应特定的用户指令或提示,使其更适合聊天式交互。
实现工作流
要对 Phi-2 等模型进行推理,本指南概述了以下技术工作流:
- Environment Setup(环境设置): 使用 JupyterLab Docker 模板和 NVIDIA A10G GPU 创建一个 Hugging Face Space。
- Installation(安装): 使用
!pip install安装torch(PyTorch)和transformers库。 - Loading(加载): 使用
AutoModelForCausalLM和AutoTokenizer类,从 Hub 中使用特定的model_id(例如"microsoft/phi-2")加载模型和分词器。 - Processing(处理): 使用分词器将输入文本编码为
input_ids。 - Generation(生成): 对模型对象调用
.generate方法生成数值输出。 - Output(输出): 使用分词器的
.decode方法将数值输出解码回文本。