大模型微调实战系列教程(1):Hugging Face 入门

611 阅读4分钟

1. Hugging Face 介绍

从本篇文章开始,我们会开启一个系列专题——大模型微调实战。在这个专题中,我们会详细介绍下如何使用和私有部署开源的大模型,并且结合特定业务场景,逐步微调出属于自己的大模型。

本次是专题的第一节,我们不会涉及太多底层的技术原理,而是先了解下 Hugging Face 这个重要的社区。

Hugging Face 是全世界最知名的开源模型社区,甚至没有之一。Hugging Face 在 AI 领域内的地位,丝毫不亚于 GitHub 在软件开发领域。 Hugging Face 于2016年成立于纽约,最初定位为 AI 聊天机器人 开发商,推出了一款面向青少年的对话应用,但未取得广泛成功。但是很快,团队发现开发者对开源 NLP 工具的需求激增,尤其是随着 Transformer 架构(如 Google 的 BERT)的兴起,决定转向技术基础设施方向,最终大获成功。

进入到 Hugging Face 的官网,可以看到最重要的两个模块,分别是 Models 和 DataSets 。下面我们分别介绍下。

图片

2. Models 模型

首先来说模型。目前 Hugging Face 上已经涵盖了大多数的开源模型,我们需要使用的大模型通常都可以在这里找到。

目前 Hugging Face 将模型划分成了几大类别,如 Multimodal 多模态模型、Computer Vision 计算机视觉模型、Natural Language Processing 自然语言处理模型等等。当下在大模型领域,最核心的研究方向还是自然语言处理模型。

在 NLP 模型分类下,还有两个下属的子分类,即 Text Generation 和 Fill-Mask,他们分别是以 GPT 为代表的自回归模型,和以 BERT 为代表的自编码模型。

图片

进入到具体的模型中,我们还可以直接在线体验模型的功能。例如,我们找到 stable-diffusion 模型,输入 prompt,直接就可以生成图片,非常方便。

图片

3. DataSets 数据集

除了模型之外,数据集对于模型的训练也至关重要。Hugging Face 上收集了大量的、各个维度的高质量的数据集,如文本翻译、对话、数学推理、代码生成等等。

图片

我们可以在 Hugging Face 上直接浏览 DataSets 的采样数据,也可以将数据集下载到本地进行训练。

图片

4. 调用 Hugging Face 在线模型

相信通过上面的介绍,大家已经对 Hugging Face 有了一个初步的认知。下面我们就来实际操练一下,如何调用 Hugging Face 上的在线模型。

演示的模型我们选择 gpt2-chinese-cluecorpussmall ,它是基于 gpt-2 这个基础模型,并结合一些中文语料训练出来的,具备一定的中文理解和生成能力。

图片

创建 Access Token

在使用 Hugging Face 之前,需要先创建 Access Token,它代表了访问 Hugging Face 的身份凭证。

特别提示:申请 Token 时需要选择用户权限,在测试环境下,可以考虑把全部权限都勾选上,以避免出现某些功能无法使用的情况。

图片

调用模型

本次我们采用原生 HTTP 请求的方式来调用 Hugging Face,暂时不需要安装 transformers 库,仅使用 requests 库来发送 HTTP 请求即可。可以参考下面的代码:

import os
import dotenvimport requests
# 加载环境变量,并读取HuggingFace的api_tokendotenv.load_dotenv()api_token = os.getenv("HUGGINGFACEHUB_API_TOKEN")
# 定义API的base_url# https://api-inference.huggingface.co/models 这个前缀是固定形式# uer/gpt2-chinese-cluecorpussmall 这个是模型的namespace+名称base_url = "https://api-inference.huggingface.co/models/uer/gpt2-chinese-cluecorpussmall"
# 在Http Header中指定api_tokenheaders = {"Authorization": f"Bearer {api_token}"}
# 发送文本生成请求response = requests.post(base_url, headers=headers, json={"inputs""帮我介绍下李白:"})
# 打印结果print(response.json())

最终的生成结果是这样的:

图片

可以看到 API 是可以正常访问的,但是生成的内容质量非常差,基本上驴唇不对马嘴,这是因为 gpt2 这个基础模型的参数还很小,性能完全无法与 gpt-3.5 及之后的模型相提并论。

5. 小结

本次的文章中,我们对 Hugging Face 这个重量级的开源社区进行了介绍,概览了它的 Models 和 Datasets 这两个核心模块,并且通过一个简单的 demo 演示了如何调用 Hugging Face 上的在线模型,相信大家对于 Hugging Face 已经有了初步的了解了。

下一章的内容,我们会尝试从 Hugging Face 上面的模型下载到本地,并使用自定义的数据集进行训练和推理。

原文地址:https://mp.weixin.qq.com/s/p2ZgCtRUD0wNj6v_PFNcrg