大模型微调实战(1):Hugging Face 入门

大模型数据中台向量数据库
  1. Hugging Face 介绍 ==================

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

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

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

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

picture.image

  1. Models 模型 ============

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

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

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

picture.image

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

picture.image

  1. DataSets 数据集 ===============

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

picture.image

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

picture.image

  1. 调用 Hugging Face 在线模型 =======================

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

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

picture.image

创建 Access Token

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

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

picture.image

调用模型

本次我们采用原生 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())  

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

picture.image

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

  1. 小结 =====

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

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

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
云原生数据库 veDB 核心技术剖析与展望
veDB 是一款分布式数据库,采用了云原生计算存储分离架构。本次演讲将为大家介绍火山引擎这款云原生数据库的核心技术原理,并对未来进行展望。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论