- Hugging Face 介绍 ==================
从本篇文章开始,我们会开启一个系列专题——大模型微调实战。 在这个专题中,我们会详细介绍下如何使用和私有部署开源的大模型,并且结合特定业务场景,逐步微调出属于自己的大模型。
本次是专题的第一节,我们不会涉及太多底层的技术原理,而是先了解下 Hugging Face 这个重要的社区。
Hugging Face 是全世界最知名的开源模型社区,甚至没有之一。Hugging Face 在 AI 领域内的地位,丝毫不亚于 GitHub 在软件开发领域。 Hugging Face 于2016年成立于纽约,最初定位为 AI 聊天机器人 开发商,推出了一款面向青少年的对话应用,但未取得广泛成功。但是很快,团队发现开发者对 开源 NLP 工具 的需求激增,尤其是随着 Transformer 架构(如 Google 的 BERT)的兴起 ,决定转向技术基础设施方向,最终大获成功。
进入到 Hugging Face 的官网,可以看到最重要的两个模块,分别是 Models 和 DataSets 。下面我们分别介绍下。
- Models 模型 ============
首先来说模型。目前 Hugging Face 上已经涵盖了大多数的开源模型,我们需要使用的大模型通常都可以在这里找到。
目前 Hugging Face 将模型划分成了几大类别,如 Multimodal 多模态模型、Computer Vision 计算机视觉模型、Natural Language Processing 自然语言处理模型等等。 当下在大模型领域,最核心的研究方向还是自然语言处理模型。
在 NLP 模型分类下,还有两个下属的子分类,即 Text Generation 和 Fill-Mask,他们分别是以 GPT 为代表的自回归模型,和以 BERT 为代表的自编码模型。
进入到具体的模型中,我们还可以直接在线体验模型的功能。例如,我们找到 stable-diffusion 模型,输入 prompt,直接就可以生成图片,非常方便。
- DataSets 数据集 ===============
除了模型之外,数据集对于模型的训练也至关重要。Hugging Face 上收集了大量的、各个维度的高质量的数据集,如 文本翻译、对话、数学推理、代码生成 等等。
我们可以在 Hugging Face 上直接浏览 DataSets 的采样数据,也可以将数据集下载到本地进行训练。
- 调用 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 dotenv
import requests
# 加载环境变量,并读取HuggingFace的api_token
dotenv.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_token
headers = {"Authorization": f"Bearer {api_token}"}
# 发送文本生成请求
response = requests.post(base_url, headers=headers, json={"inputs": "帮我介绍下李白:"})
# 打印结果
print(response.json())
最终的生成结果是这样的:
可以看到 API 是可以正常访问的,但是生成的内容质量非常差,基本上驴唇不对马嘴,这是因为 gpt2 这个基础模型的参数还很小,性能完全无法与 gpt-3.5 及之后的模型相提并论。
- 小结 =====
本次的文章中,我们对 Hugging Face 这个重量级的开源社区进行了介绍,概览了它的 Models 和 Datasets 这两个核心模块,并且通过一个简单的 demo 演示了如何调用 Hugging Face 上的在线模型,相信大家对于 Hugging Face 已经有了初步的了解了。
下一章的内容,我们会尝试从 Hugging Face 上面的模型下载到本地,并使用自定义的数据集进行训练和推理。