探秘 Hugging Face:何为 Hugging Face 及其核心组件全览

作者:大模型教程日期:2025/11/30

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

Hugging Face 是一个提供先进自然语言处理( NLP )工具的平台,支持 Transformer 模型的开发和应用。它拥有庞大的模型库和社区资源,能够满足从研究到工业应用的各种需求。

一、注册

官方网址: huggingface.co/

注册好后,点击头像Access Token,创建token 。

二、功能介绍

hugging face的核心组件 主要是 Transformers 和Datasets 。

1、Transformers

也就是 Models大模型,平台上有世界上最全的大模型。中国的魔塔社区与此类似,不过没有它全。 我们自己也可以上传大模型到hugging face平台。

2、Datasets

就是数据集,大模型训练用的数据。

3、大模型分类

点击“Models”,左侧有分类。主导航有根据“任务Tasks”,“库Libraries”,"数据集DataSets","语言Languages","开源协议Licenses"等。

4、大模型文件

打开千问最新版本 Qwen/QwQ-32B,在"Files and Versions"模型文件页面下,可以看到很多类似”model-00001-of-00014.safetensors“ ,后缀 safetensors就是模型文件的名称。

5、Inference Providers

hugging face平台上有很多大模型提供接口试用,列表有黄色闪电标记,详情的右侧有Inference Providers。

不过接口调用不是很稳定,时长不通。

6、下载大模型文件

下载大模型文件到本地,官方提供了多种方式。

(1)git clone方式

1git clone https://huggingface.co/Qwen/QwQ-32B
2

(2)使用hugging face提供的transformers库下载

下一节重点讲解。

三、使用 Transformers 库

Hugging Face 提供了 transformers 库,用于加载和使用模型 。你可以使用以下命令来安装它:(电 脑须安装基础环境:Anaconda,CUDA,cuDNN,pytorch )

1pip install transformers
2

如果你还需要安装其他依赖库,如 datasets 和 tokenizers ,可以使用以下命令:

1pip install transformers datasets tokenizers
2

1、下载模型

使用代码下载模型到本地,代码演示使用depeek-r1-1.5b,小一点。等待大概几分钟就下载完成了,主要看网速。

1from  transformers import AutoTokenizer,AutoModelForCausalLM
2model_name="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
3cache_dir="model3/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B"
4#下载模型
5AutoModelForCausalLM.from_pretrained(model_name,cache_dir=cache_dir)
6#下载分词工具
7AutoTokenizer.from_pretrained(model_name,cache_dir=cache_dir)
8print(f"模型和分词器已下载到:{cache_dir}")
9

AutoModelForCausalLM 是 Hugging Face 的 Transformers 库中的一个类,主要用于处理因果语言模型(Causal Language Model)任务。大部分的text-generation类型的大模型都可以使用这个类。

模型和分词器一般都是成对下载。

代码中model_name的名称一定要是 hugging face上模型的完整名称。cache_dir是本地文件目录,可以使用绝对路径,pycharm开发时,可使用相对路径。

2、模型文件介绍

下载好后的目录如下

模型的核心内容主要是看 snapshots-config.json所在的目录,也是模型的默认目录地址。model.safetensors就是模型的源文件,

(1)config.json文件

1{
2"architectures": [
3"Qwen2ForCausalLM"
4],
5"attention_dropout": 0.0,
6"bos_token_id": 151643,
7"eos_token_id": 151643,
8"hidden_act": "silu",
9"hidden_size": 1536,
10"initializer_range": 0.02,
11"intermediate_size": 8960,
12"max_position_embeddings": 131072,
13"max_window_layers": 21,
14"model_type": "qwen2",
15"num_attention_heads": 12,
16"num_hidden_layers": 28,
17"num_key_value_heads": 2,
18"rms_norm_eps": 1e-06,
19"rope_theta": 10000,
20"sliding_window": 4096,
21"tie_word_embeddings": false,
22"torch_dtype": "bfloat16",
23"transformers_version": "4.44.0",
24"use_cache": true,
25"use_mrope": false,
26"use_sliding_window": false,
27"vocab_size": 151936
28}
29

vocab_size是模型可以识别的字符个数。有些模型文件vocab.txt文件,就是可以识别字符列表。若输入的字符不在这个范围内,分词器会根据配置的special_tokens里的值来赋值。比如下面的:

1BertTokenizer(name_or_path='D:\Test\LLMTrain\day02\model\bert-base-chinese\models--bert-base-chinese\snapshots\c30a6ed22ab4564dc1e3b2ecbf6e766b0611a33f', vocab_size=21128, model_max_length=512, is_fast=False, padding_side='right', truncation_side='right', special_tokens={'unk_token': '[UNK]', 'sep_token': '[SEP]', 'pad_token': '[PAD]', 'cls_token': '[CLS]', 'mask_token': '[MASK]'}, clean_up_tokenization_spaces=True, added_tokens_decoder={
2

3、Pipelines运行本地模型

大模型下载到本地,就可以使用了,transformers库中的pipelines是一个非常实用的高级工具,它为自然语言处理(NLP)任务提供了一种简单、便捷且统一的接口,使得用户无需深入了解模型的具体细节就能轻松完成各种常见的 NLP 任务。pipelines的主要特点如下:

(1) 简化模型使用流程

在传统的使用方式中,若要使用一个预训练模型完成特定任务,需要手动完成加载模型、分词、编码、推理、解码等一系列复杂的步骤。而pipelines将这些步骤进行了封装,用户只需提供任务类型和必要的输入,就能直接得到任务的处理结果。

例如,使用pipelines进行文本分类:

1from transformers import BertTokenizer,BertForSequenceClassification,pipeline
2#设置具体包含config.json的目录,只支持绝对路径
3model_dir = r"model\bert-base-chinese"
4#加载模型和分词器
5model = BertForSequenceClassification.from_pretrained("bert-base-chinese",cache_dir=model_dir)
6tokenizer = BertTokenizer.from_pretrained("bert-base-chinese",cache_dir=model_dir)
7#创建分类pipleine
8classifier = pipeline("text-classification",model=model,tokenizer=tokenizer,device="cpu")
9#进行文本分类
10result = classifier("你好,我是一款语言模型")
11print(result)
12print(model)
13

上述代码中,用户只需创建一个text - classification类型的管道,然后传入文本,就能直接得到文本的分类结果,无需关心模型加载、分词等底层操作。

(2)支持多种常见 NLP 任务

pipelines支持多种常见的自然语言处理任务,以下是一些常见任务及其示例:

文本分类:判断文本所属的类别,如情感分析(积极、消极)、主题分类等。

1classifier = pipeline('text-classification')
2result = classifier("This is a great product!")
3

问答系统:根据给定的上下文和问题,找出问题的答案。

1qa = pipeline('question-answering')
2context = "Albert Einstein was a German-born theoretical physicist. He developed the theory of relativity."
3question = "Who developed the theory of relativity?"
4result = qa(question=question, context=context)
5

文本生成:根据输入的文本生成相关的文本内容,如故事续写、摘要生成等。

1generator = pipeline('text-generation')
2input_text = "Once upon a time"
3result = generator(input_text, max_length=100)
4

命名实体识别(NER):识别文本中的命名实体,如人名、地名、组织机构名等。

1ner = pipeline('ner')
2text = "Apple is looking at buying U.K. startup for $1 billion"
3result = ner(text)
4

(3)自动选择合适的模型

pipelines会根据指定的任务类型自动选择合适的预训练模型。例如,当你创建一个text - classification管道时,它会默认选择一个在文本分类任务上表现良好的预训练模型。当然,你也可以手动指定使用的模型,只需在创建管道时传入model参数即可。

1# 使用指定的模型创建文本分类管道
2classifier = pipeline('text-classification', model='distilbert-base-uncased-finetuned-sst-2-english')
3

注意,这里需要能联网,并且能科学上网。可以使用本地的大模型调用。

1#本地离线调用deepseek-r1
2from transformers import AutoModelForCausalLM,AutoTokenizer,pipeline
3#设置具体包含config.json的目录,只支持绝对路径
4model_dir = r"D:\trsanformers_test\model3\deepseek-ai\DeepSeek-R1-Distill-Qwen-1.5B\models--deepseek-ai--DeepSeek-R1-Distill-Qwen-1.5B\snapshots\ad9f0ae0864d7fbcd1cd905e3c6c5b069cc8b562"
5#加载模型和分词器
6model = AutoModelForCausalLM.from_pretrained(model_dir)
7tokenizer = AutoTokenizer.from_pretrained(model_dir)
8# 模拟多轮对话,设置角色信息
9messages = [
10{"role": "user", "content": "请使用java写一个冒泡排序。"}
11]
12# 构建输入文本,按照 DeepSeek - R1 的格式
13input_text = ""
14for message in messages:
15if message["role"] == "user":
16input_text += f"<|UserBegin|>{message['content']}<|UserEnd|>"
17elif message["role"] == "assistant":
18input_text += f"{message['content']}"
19#使用加载的模型和分词器创建生成文本的pipeline
20generator = pipeline("text-generation",model=model,tokenizer=tokenizer,device="cpu")
21#生成文本
22# output = generator("你好,我是一款语言模型,",max_length=50,num_return_sequences=1)
23output = generator(
24input_text,#生成文本的输入种子文本(prompt)。模型会根据这个初始文本,生成后续的文本
25max_length=1500,#指定生成文本的最大长度。这里的 50 表示生成的文本最多包含 50 个标记(tokens)
26num_return_sequences=1,#参数指定返回多少个独立生成的文本序列。值为 1 表示只生成并返回一段文本。
27truncation=True,#该参数决定是否截断输入文本以适应模型的最大输入长度。如果 True,超出模型最大输入长度的部分将被截断;如果 False,模型可能无法处理过长的输入,可能会报错。
28temperature=0.7,#该参数控制生成文本的随机性。值越低,生成的文本越保守(倾向于选择概率较高的词);值越高,生成的文本越多样(倾向于选择更多不同的词)。0.7 是一个较为常见的设置,既保留了部分随机性,又不至于太混乱。
29top_k=50,#该参数限制模型在每一步生成时仅从概率最高的 k 个词中选择下一个词。这里 top_k=50 表示模型在生成每个词时只考虑概率最高的前 50 个候选词,从而减少生成不太可能的词的概率。
30top_p=0.9,#该参数(又称为核采样)进一步限制模型生成时的词汇选择范围。它会选择一组累积概率达到 p 的词汇,模型只会从这个概率集合中采样。top_p=0.9 意味着模型会在可能性最强的 90% 的词中选择下一个词,进一步增加生成的质量。
31clean_up_tokenization_spaces=True#该参数控制生成的文本中是否清理分词时引入的空格。如果设置为 True,生成的文本会清除多余的空格;如果为 False,则保留原样。默认值即将改变为 False,因为它能更好地保留原始文本的格式。
32)
33print(output)
34

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI


探秘 Hugging Face:何为 Hugging Face 及其核心组件全览》 是转载文章,点击查看原文


相关推荐


都说了我没有开挂,只是用了一点点辅助
Vic_wkx2025/11/27

最近有点游戏荒,不知道玩啥,于是重拾儿时的快乐,下载了植物大战僵尸! 游戏还是当年的游戏,但我已经不是当年那个我了。 我变秃了,也变强了!唉,捋着额头上稀疏的秀发,空叹年华似水流... 现在再玩这个游戏的时候,我的眼界和格局都不是当年年幼的我能够比拟的了。以前玩的时候只顾着打僵尸,而现在的我想的是,怎么收购这家游戏公司? 不好意思吹过头了!现在玩的时候,想的是怎么让游戏过程更丝滑,身为程序员,我现在可以借助一点小小的帮助。 比如在种向日葵的时候,发现种起来非常地不丝滑: 种一朵向日葵,需要把鼠


Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider
q***65692025/11/25

开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 场地信息界面 单车信息界面 归还信息界面 共享单车界面 系统管理界面 看板展示 系统首页 个人中心界面 摘要 共享单车在城市出行中扮演着越来越重要的角色,与此同时,共享单车运营商需要有效地管理和分析大量的数据以提升用户体验和运营效率。本文提出了基于大数据技术的共享单车数据分析与辅助


底层视觉及图像增强-项目实践理论补充(十六-0-(22):HDR技术深度解析:从数学原理到LED显示工程实践):从奥运大屏,到手机小屏,快来挖一挖里面都有什么
AIminminHu2025/11/23

底层视觉及图像增强-项目实践理论补充(十六-0-(22):HDR技术深度解析:从数学原理到LED显示工程实践):从奥运大屏,到手机小屏,快来挖一挖里面都有什么 🔥 HDR技术深度解析:从数学原理到LED显示工程实践前言一、多曝光融合的数学本质与工程挑战1.1 数学原理:加权最大似然估计1.2 HDR的数学本质:超越8bit的亮度编码革命HDR编码的数学突破 1.3 去鬼影(Deghosting)1.4 LED显示中的工程实践 二、相机响应函数(CRF)的物理意义与LED启示


Python与C#:从哲学到细节的全面对比
码事漫谈2025/11/21

Python和C#都是现代、高级、面向对象的编程语言,拥有庞大的社区和广泛的应用。然而,它们源于不同的生态系统,秉承不同的设计哲学,因此在语法、执行模型和典型应用上存在显著差异。Python以其极简主义和灵活性著称,而C#则以其在强大类型系统和结构化框架下的优雅与一致性闻名。 下面,我们将从整体到细节,系统地剖析这两种语言的差异。 一、整体与哲学 设计哲学与起源 Python: 由Guido van Rossum创建,其核心哲学是**“优美胜于丑陋,明了胜于晦涩,简洁胜于复杂”。它是一种解


Vue高阶组件已过时?这3种新方案让你的代码更优雅
良山有风来2025/11/20

还记得那些年被高阶组件支配的恐惧吗?props命名冲突、组件嵌套过深、调试困难...每次修改组件都像在拆炸弹。如果你还在Vue 3中苦苦挣扎如何复用组件逻辑,今天这篇文章就是为你准备的。 我将带你彻底告别HOC的痛点,掌握3种更现代、更优雅的代码复用方案。这些方案都是基于Vue 3的Composition API,不仅解决了HOC的老问题,还能让你的代码更加清晰和可维护。 为什么说HOC在Vue 3中已经过时? 先来看一个典型的高阶组件例子。假设我们需要给多个组件添加用户登录状态检查: // 传


C#.NET DateTime 最强入门到进阶:格式化、转换、UTC、时区全覆盖
唐青枫2025/11/19

简介 DateTime 是 System 命名空间中用于表示日期和时间的结构体,广泛用于处理时间相关的操作,如存储、计算、格式化等。 DateTime 结构概述 定义:System.DateTime 是一个值类型(struct),表示自公元 0001 年 1 月 1 日午夜 00:00:00(DateTime.MinValue)起经过的“刻度”(ticks,1 tick = 100 纳秒)数。 内部存储:一个 long 值(ticks)+ 一个 DateTimeKind 枚举,指示时间的


HTTP与HTTPS深度解析:从明文传输到安全通信
叁佰万2025/11/17

接续上文:https://blog.csdn.net/m0_73589512/article/details/154828521?spm=1001.2014.3001.5501 个人主页:叁佰万-CSDN博客 主题专栏:网络通信_叁佰万的博客-CSDN博客 目录 HTTP与HTTPS深度解析:从明文传输到安全通信 一、HTTP:万维网的“基础通信语言” 1. 核心工作原理:请求-响应模式 2. 核心结构:请求与响应的“格式规范” HTTP请求结构 HTTP响应结构 3. 关键


Bash 的 tail 命令
hubenchang05152025/11/16

#Bash 的 tail 命令 tail [OPTION]... [FILE]... 功能 查看文件的末尾。 类型 可执行文件(/usr/bin/tail),属于 coreutils。 参数 OPTION 选项: -c, --bytes=[+]NUM - 查看文件末尾的 NUM 字节,如果使用正号,则表示查看第 NUM 字节之后的内容 -f, --follow[={name|descriptor}] - 跟随文件,当文件内容增加时打印追加的内容 -F - 等价于 --follow=name


Python 的内置函数 max
IMPYLH2025/11/15

Python 内建函数列表 > Python 的内置函数 max Python 的内置函数 max() 是一个用于返回可迭代对象中最大元素或多个参数中最大值的实用函数。它支持多种数据类型和灵活的调用方式,是 Python 编程中常用的工具之一。 基本用法 单个可迭代对象: numbers = [3, 1, 4, 1, 5, 9, 2] print(max(numbers)) # 输出:9 多个参数: print(max(3, 1, 4, 1, 5)) # 输出:5 关键参数


IM 收件箱机制(三)
锅拌饭2025/11/14

在IM中,有了长连接之后,如何完成服务端与客户端的数据同步也是很重要的一环。 通常会有两种方案,一个是服务端直接转发,一个是收件箱机制。我们以消息类型的数据为例。 服务端直接转发: 是服务端收到消息A,存储完成后,直接将消息A的具体内容通过长连接通道发送给客户端B。我们把这种方式叫做服务端直接转发。 收件箱: 服务端收到消息后,不直接转发该消息给客户端,而是将消息id、消息所在会话id推送给客户端的消息收件箱,客户端发现消息收件箱有数据后,择机通过长连接 or 短连接拉取消息具体内容。 服务端直

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读