01、Hugging Face 核心组件介绍
Hugging Face 核心组件介绍
在当今的 AI 开发领域,大模型已经成为推动自然语言处理(NLP)和多模态应用的核心力量。Hugging Face 是一个广受欢迎的 AI 模型平台,提供了丰富的开源模型和工具,帮助开发者快速上手和应用大模型。本文将详细介绍如何使用 Hugging Face 平台,包括环境搭建、模型下载、本地调用以及简单的应用开发。
一、Hugging Face 平台简介
Hugging Face 是一个类似于 AI 领域的 GitHub 的平台,提供了大量的开源 AI 模型和数据集。这些模型涵盖了自然语言处理、计算机视觉、音频处理等多个领域。Hugging Face 的核心组件包括:
- Transformers:用于自然语言处理的模型库,支持多种预训练模型,如 GPT、BERT 等。
- Datasets:提供了丰富的开源数据集,方便开发者进行模型训练和测试。
- API 调用:支持通过 API 在线调用模型,但受限于网络条件,国内用户通常需要通过其他方式访问。
Hugging Face 平台的优势在于其模型的多样性和易用性,但需要注意的是,由于其服务器在国外,国内用户在使用时可能会遇到网络限制。因此,建议通过科学上网的方式访问该平台。
二、环境搭建
在开始使用 Hugging Face 平台之前,我们需要搭建一个适合运行 AI 模型的开发环境。以下是详细的环境搭建步骤:
(一)安装基础环境
安装 Python 集成开发环境:
- 推荐安装 Anaconda,它是一个集成了 Python 和众多科学计算库的开发环境。
- 下载地址:Anaconda 官网
- 安装时注意选择“Just Me”选项,并确保将 Anaconda 的路径添加到系统环境变量中。
安装 CUDA 和 cuDNN(如果使用 GPU 加速):
- 如果你的电脑配备了 NVIDIA 显卡(显存至少 16GB),可以安装 CUDA 和 cuDNN 来加速模型训练。
- 下载地址:NVIDIA CUDA 官网 和 cuDNN 官网
- 安装时请确保 CUDA 和 cuDNN 的版本与你的 GPU 驱动和 PyTorch 版本兼容。
安装 PyTorch:
- PyTorch 是一个流行的深度学习框架,Hugging Face 的 Transformers 库基于 PyTorch 开发。
- 下载地址:PyTorch 官网
- 安装命令(以 GPU 版本为例):
pip install torch torchvision torchaudio
(二)安装 Hugging Face 库
安装 Hugging Face 的 Transformers 和 Datasets 库:
pip install transformers datasets
(三)注册 Hugging Face 账号并获取 API Token
- 访问 Hugging Face 官网,点击右上角的“Sign Up”注册账号。
- 登录后,点击右上角的头像,选择“Settings”。
- 在“Access Tokens”部分,点击“New Token”,创建一个新的 API Token。
- 保存生成的 Token,后续用于 API 调用。
三、模型下载与本地调用
Hugging Face 提供了丰富的预训练模型,可以通过以下步骤将模型下载到本地,并进行本地调用。
(一)下载模型
搜索模型:
- 在 Hugging Face 官网的 Models 页面 中搜索需要的模型,例如“gpt2-chinese-cluecorpussmall”。
- 点击模型名称,进入模型详情页面,复制模型全名。
下载模型:
- 使用 Hugging Face 提供的
transformers
库下载模型。以下是 Python 代码示例:from transformers import AutoModelForCausalLM, AutoTokenizer # 模型名称 model_name = "uer/gpt2-chinese-cluecorpussmall" # 模型保存路径 cache_dir = "model/uer/gpt2-chinese-cluecorpussmall" # 下载模型,如果路径下已存在,则不会进行下载 AutoModelForCausalLM.from_pretrained(model_name, cache_dir=cache_dir) # 下载分词器 ,如果路径下已存在,则不会进行下载 AutoTokenizer.from_pretrained(model_name, cache_dir=cache_dir) print(f"模型分词器{model_name}已下载到{cache_dir}")
- 使用 Hugging Face 提供的
(二)本地调用模型
加载模型和分词器:
- 使用本地路径加载模型和分词器:(可以采用上面下载模型的方法加载模型,这里使用另一种单纯加载模型的方法)
from transformers import AutoModelForCausalLM, AutoTokenizer from transformers import pipeline # 设置模型地址(包含config.json文件的目录),支持绝对路径和相对路径 model_path = r'.\model\uer\gpt2-chinese-cluecorpussmall\models--uer--gpt2-chinese-cluecorpussmall\snapshots\c2c0249d8a2731f269414cc3b22dff021f8e07a3' # 加载模型和分词器 model = AutoModelForCausalLM.from_pretrained(model_path) tokenizer = AutoTokenizer.from_pretrained(model_path)
- 使用本地路径加载模型和分词器:(可以采用上面下载模型的方法加载模型,这里使用另一种单纯加载模型的方法)
创建 Pipeline 并生成文本:
- 使用
pipeline
工具进行文本生成:# 创建文本生成 pipeline generator = pipeline("text-generation", model=model, tokenizer=tokenizer) # 生成文本 prompt = "你好,我是一款语言模型," output = generator(prompt, max_length=50, num_return_sequences=1) print(output)
- 使用
(三)调整生成参数
为了优化生成效果,可以通过调整以下参数来控制文本生成的随机性和多样性:
- Temperature:控制生成文本的随机性。值越低,生成的文本越保守;值越高,生成的文本越多样。默认值为 1.0。
- Top-k:限制生成时仅从概率最高的 k 个词中选择下一个词。值越小,生成结果越一致。
- Top-p:限制生成时仅从累积概率达到 p 的词中选择下一个词。值越高,生成的文本越多样。
以下是调整参数后的代码示例:
output = generator(
"你好,我是一款语言模型,",#生成文本的输入种子文本(prompt)。模型会根据这个初始文本,生成后续的文本
max_length=50,#指定生成文本的最大长度。这里的 50 表示生成的文本最多包含 50 个标记(tokens)
num_return_sequences=1,#参数指定返回多少个独立生成的文本序列。值为 1 表示只生成并返回一段文本。
truncation=True,#该参数决定是否截断输入文本以适应模型的最大输入长度。如果 True,超出模型最大输入长度的部分将被截断;如果 False,模型可能无法处理过长的输入,可能会报错。
temperature=0.7,#该参数控制生成文本的随机性。值越低,生成的文本越保守(倾向于选择概率较高的词);值越高,生成的文本越多样(倾向于选择更多不同的词)。0.7 是一个较为常见的设置,既保留了部分随机性,又不至于太混乱。
top_k=50,#该参数限制模型在每一步生成时仅从概率最高的 k 个词中选择下一个词。这里 top_k=50 表示模型在生成每个词时只考虑概率最高的前 50 个候选词,从而减少生成不太可能的词的概率。
top_p=0.9,#该参数(又称为核采样)进一步限制模型生成时的词汇选择范围。它会选择一组累积概率达到 p 的词汇,模型只会从这个概率集合中采样。top_p=0.9 意味着模型会在可能性最强的 90% 的词中选择下一个词,进一步增加生成的质量。
clean_up_tokenization_spaces=True#该参数控制生成的文本中是否清理分词时引入的空格。如果设置为 True,生成的文本会清除多余的空格;如果为 False,则保留原样。默认值即将改变为 False,因为它能更好地保留原始文本的格式。
)
print(output)
四、分类模型的使用
除了生成模型,Hugging Face 还提供了用于分类任务的模型,如 BERT。以下是使用 BERT 模型进行文本分类的步骤:
(一)下载 BERT 模型
from transformers import BertForSequenceClassification, BertTokenizer
model_name = "bert-base-chinese"
save_directory = "./models/bert-base-chinese"
# 下载模型,并保存到指定路径
model = BertForSequenceClassification.from_pretrained(model_name)
model.save_pretrained(save_directory)
# 下载分词器
tokenizer = BertTokenizer.from_pretrained(model_name)
tokenizer.save_pretrained(save_directory)
(二)加载模型并创建分类 Pipeline
from transformers import BertForSequenceClassification, BertTokenizer
from transformers import pipeline
model_dir = "./models/bert-base-chinese"
# 加载模型和分词器
model = BertForSequenceClassification.from_pretrained("bert-base-chinese", cache_dir=model_dir)
tokenizer = BertTokenizer.from_pretrained("bert-base-chinese",cache_dir=model_dir)
# 创建文本分类 pipeline 通过device可以定义使用cuda(gpu)还是cpu,默认是使用cpu
classifier = pipeline("text-classification", model=model, tokenizer=tokenizer, device='cpu')
# 进行文本分类
text = "我是一款语言模型"
output = classifier(text)
print(output)
五、总结
本文详细介绍了 Hugging Face 平台的使用方法,包括环境搭建、模型下载、本地调用以及分类模型的使用。通过这些步骤,开发者可以快速上手并应用大模型进行自然语言处理任务。在后续的学习中,我们还将探索如何对模型进行微调训练,以满足特定的业务需求。希望本文能为你的大模型学习之旅提供帮助!