HuggingFace · 知识点
HuggingFace 是开源模型与数据的枢纽,也提供现成的推理封装。PyTorch 是造车的发动机,它相当于直接给你一辆能开的跑车。
什么是 HuggingFace?
两层。一层是仓库,一层是开箱即用。
- AI 界的 GitHub — 程序员找代码去 GitHub,AI 工程师找模型和数据去 HuggingFace。托管主流开源模型(Llama、BERT、Stable Diffusion 等)。
- AI 界的 App Store — 现成
Pipeline,不必先啃原理就能在代码里跑起来,例如一键情感分析。
HuggingFace 的核心是什么?
写代码主要和这三块打交道——工具箱、仓库、燃料。
- Transformers(库) — 统一 Python 接口,几乎同一套代码加载 BERT、GPT、Llama。
pipeline/from_pretrained都在这。 - Model Hub(网站) — 仓库。权重(
.bin/.safetensors)和config.json放这里,代码按模型 ID 去拉。 - Datasets(库) — 燃料库。一键下维基、医疗问答、电商评论等,自动收成模型能读的格式。
重点 Transformer 模型有哪三个流派?
先看任务是理解、生成还是转换,再报架构。和 pip 包 transformers 不是一回事:那是加载接口,这是模型长什么样。
- Encoder-Only — 代表 BERT。擅长理解和分析,像阅读理解满分的学生:给一篇文章,能判情感、抽人名。应用:文本分类、实体识别、搜索匹配。
- Decoder-Only — 代表 GPT、Llama、Qwen。擅长生成,像话唠小说家:给个开头,按概率猜下一个字。应用:聊天、代码、创意写作。现在主流 Chat 都是这个。
- Encoder-Decoder — 代表 T5、BART。擅长转换,像翻译官:Encode 听懂一句,Decode 用另一种语言说出来。应用:机器翻译、文本摘要。
HuggingFace 上常用哪些模型?
按任务点名即可,不必背排行榜。NLP 对上三个流派;图和跨模态另算。
NLP
- 理解(Encoder-Only) — BERT / RoBERTa:分类、NER 经典。DistilBERT:BERT 蒸馏版,更快,适合端侧。
- 生成(Decoder-Only) — Llama:开源对话、推理常用。Qwen:中文强。DeepSeek:生成和思考任务常被点名。GPT-2:老且轻,教学入门。
- 翻译 / 摘要(Encoder-Decoder) — T5 / FLAN-T5:把 NLP 任务收成「文本到文本」。BART:纠错、长文摘要。
CV / 多模态
- ViT — 图像分类标杆。
- Stable Diffusion — 开源文生图。
- CLIP — 文本和图像进同一向量空间,以图搜图、零样本分类。
- InternVideo2 / 2.5 — OpenGVLab 视频基础模型(详见下一节)。
视频基础模型 InternVideo2 / 2.5
上海 AI Lab / OpenGVLab 的 Video Foundation Model。 InternVideo2(视频表征 + 多模态对齐 + 对话);2025 开源的 InternVideo2.5 在对话式视频 MLLM 上强化长视频与细粒度时空感知。先看系列定位,再拆 2 与 2.5。
仓库:OpenGVLab/InternVideo;2.5 权重例:OpenGVLab/InternVideo2_5_Chat_8B;论文 arXiv:2501.12386。
InternVideo2(公开规格)
定位 — 视频识别、视频–文本、对话等任务上冲 SOTA(论文/官方口径)。视频编码器可扩到约 60 亿参数量级。
渐进式预训练(三阶段) — 用不同 pretext 任务,从结构到语义再到对话:
| 阶段 | 目标 | 做什么 |
|---|---|---|
| 1. 时空结构 | 抓住视频时空结构 | Video Encoder 学;Expert Encoder 冻结,引导重建 / 特征对齐(掩码视频建模一路) |
| 2. 多模态对齐 | 视频与其它模态语义对齐 | Video + Audio + Text Encoder,对比学习 Align |
| 3. 对话能力 | 开放问答 / 指令跟随 | Video Encoder → Q-Former(+ Instruction)→ LLM 做 next-token 预测出 Answer |
统一了:掩码视频建模、跨模态对比、下一 token 预测。
数据(公开量级)
- 强调时空一致性和标签质量。
- 规模约:4.02 亿条级数据;视频约 200 万;视频–文本约 5000 万(WebVid / InternVid);InternVid2 多模态约 5000 万(视频–音频–语音–文本);图像–文本约 3 亿。
- InternVid2 做法:视频语义切段 → 音 / 视 / 语音分别出 caption 再融合,抬视频–文本对齐。
InternVideo2.5(当前对话向最新)
在 InternVL2.5 上做 Long and Rich Context(LRC),不是简单换皮。
- HiCo — 自适应分层 token 压缩,把长视频压成紧凑时空表示,能吃更长输入(官方称记忆长度至少约 6× 于原版量级)。
- TPO — 用稠密视觉任务标注做任务偏好优化(DPO 一路),细粒度感知(跟踪、分割、时序定位等)。
- 能力 — 长短视频理解基准全面加强;开源 Chat 约 8B;可处理极长帧序列(宣传口径可达万帧级「大海捞针」,数字报官方/论文,)。
2 vs 2.5 怎么说
| InternVideo2 | InternVideo2.5 | |
|---|---|---|
| 重心 | 视频基础表征 + 三阶段预训练 | 视频 MLLM 长上下文 + 细粒度 |
| 对话 | 第三阶段 Q-Former + LLM | 基于 InternVL2.5 + LRC(HiCo/TPO) |
| 要点 | 讲清「结构→对齐→对话」渐进训 | 讲清「长视频怎么塞进 MLLM」 |
视频多模态注释框架 VidCap
VidCap 不是又一个「聊天大模型」,而是 InternVideo2 论文里的 视频多模态自动注释系统:把视频写成高质量文本标签,供第二阶段跨模态对齐用。核心思路——分模态先 caption,再用 LLM 校正融合,而不是一根管子直接出总述。论文 arXiv:2403.15377;产出数据例:OpenGVLab/InternVideo2_Vid_Text(约 61M AVS 注释量级)。
切段常用 AutoShot(按语义边界切,不是 FFmpeg 像素 SceneDet)。
重点 四个模型组件
| 组件 | 用什么模型 / 方法 | 干什么 |
|---|---|---|
| Video Captioner | InternVid 那套路视频描述流水线(不用 VideoLLM 硬生成,论文称下游更稳) | 出视觉描述 |
| Audio Captioner | 自研:基于 VideoChat;音频特征用 BEATs;只训 Q-Former,数据含 WavCaps | 出环境音 / 非语音音频描述(当时缺可靠开源音频 captioner) |
| Speech Captioner | WhisperV2-large | 出语音转写 / 字幕 |
| LLM 融合 | Vicuna-1.5(推理可配 vLLM 加速) | 校正单模态 caption,融合成跨模态描述 |
产出五种文本
每条视频 clip 自动得到:
- 单模态:V(视觉)、A(音频)、S(语音)
- 跨模态:AV(音视频融合)、AVS(音视频+语音融合)
先各说各话,再让 LLM 合成「看得见 + 听得见 + 说得出」的对齐文本,抬时空一致与标签质量。
和 InternVideo2 的关系
VidCap 是数据引擎;InternVideo2 是吃这套标签训出来的视频基础模型。论文里动作识别表现(论文量级):仅用 16 帧在多基准冲 SOTA,例 InternVideo2-6B 在 MiT 51.2%、SSv2 77.5%、ANet 95.9%、HACS 97.0% 等。
HuggingFace 上常用哪些 Datasets?
Datasets 库一键拉公开集。按任务点名即可,规模以数据集卡片上的数为准。
| 任务 | 常用集 | 简介 |
|---|---|---|
| 情感分析 | IMDb / Amazon Polarity | 电影评论 / 商品评论,带正负标签 |
| 问答 | SQuAD / CoQA | 斯坦福问答,从文章里抽答案 |
| 大模型预训练 | FineWeb / C4 | 清洗后的网页文本,预训练基石 |
| 代码生成 | MBPP / CodeContests | 编程题 + 正确答案 |
| 语音识别 | Common Voice | Mozilla 多语言开源语音 |
| 中文 | CLUECorpusSmall | 中文通用语料,适合练小模型 |
Hub 上 IMDb 路径示例:stanfordnlp/imdb。
模型常见的特殊 Token 有哪些?
特殊 Token 不表示词义,是标点和命令,帮模型看清结构和指令。各家写法不同,必须和权重同一套 Tokenizer,不能混用。
- 分隔符 — 切开段落或角色。对话里常用
<|user|>/<|assistant|>区分谁在说话。 - 结束符(EOS / EOT) — 告诉模型可以停。常见
[EOS]、<|endoftext|>。没有它容易说个没完。 - 起始符 — 标记序列开头。BERT 用
[CLS](分类),有的用[BOS],让模型准备开始处理。
国内怎么用 HuggingFace?(环境)
from_pretrained 在国内常报 ConnectionError,是 Hub 连不上,不是代码写错。两条路:设镜像入口(如 HF_ENDPOINT,须在 import transformers 之前),或用 ModelScope 先下到本地再按路径加载。
重点 Pipeline 是什么?
全自动黑盒。文本扔进去,自动走完三步,吐人类能看懂的结果。适合 Demo 和零样本试信号;要深度定制、抠中间张量,拆开自己调 Tokenizer + Model。
- 预处理(Tokenizer) — 文本变成数字(Token ID)。
- 模型推理(Model) — 算出一堆分数(Logits)。
- 后处理(Post-processing) — 分数变成标签,例如 Positive、置信度。
Pipeline 常用 Task 有哪些?
最简易接口,指定 task 名就能调。模型是能力,数据集是知识,Pipeline 把两者打成一键服务。Demo 首选;微调再换 AutoModelFor…。
NLP
| Task | 干什么 |
|---|---|
sentiment-analysis | 情感褒贬 |
text-generation | 写故事、续写代码 |
zero-shot-classification | 无训练,按自定义标签分类 |
question-answering | 给定上下文答题 |
summarization | 长文压成短句 |
translation_xx_to_yy | 翻译,如 translation_en_to_zh |
ner | 人名、地名、组织名 |
CV / 音频
| Task | 干什么 |
|---|---|
image-classification | 图像分类 |
object-detection | 检出物体并定位 |
automatic-speech-recognition | 语音转文字(ASR) |
text-to-speech | 文字转语音(TTS) |
BERT 微调方式
分类任务两条路:给 BERT 加分类头做微调,或让大模型按 Prompt 生成再解析。差在输出是不是类别 ID。
BERT 微调
text
文本 → Tokenize → 模型前向传播 → Logits → argmax → 类别 ID- Tokenizer 把句子收成 Token ID,BERT 常用
[CLS]+ 正文 +[SEP]。 - Encoder 前向,取
[CLS](或 pooled)向量,接一层分类头,得到各类别 Logits。 argmax直接得到类别 ID,不必生成字、也不必解析 JSON。
训练时用交叉熵对标签;推理是一次前向,延迟稳、费用低。适合标签固定的情感、意图、NER(token 级再对每个位置 argmax)。
大模型 Prompt 方式
text
文本 → 构建 Prompt → Tokenize → 模型生成 → 解码文本 → 解析结果 → 类别Decoder 吐的是自然语言,要自己从「正面/负面」里抠标签。零样本能开干,但格式可能跑偏,还要多花生成 token。约束解码、few-shot 是在补解析这一步的不稳。
| BERT 微调 | 大模型 Prompt | |
|---|---|---|
| 骨干 | Encoder,理解 | Decoder,生成 |
| 输出 | Logits → 类别 ID | 文本 → 再解析成类别 |
| 延迟 / 成本 | 一次前向,短 | 自回归,更长更贵 |
| 标签变了 | 通常要重训头 | 改 Prompt 即可 |
重点 什么时候用 BERT 微调,什么时候用大模型?
先看三样:有没有标注、任务死不死、卡上有没有显存。
用 BERT 微调
- 有大量标注
- 任务固定(情感、意图、几类标签很少变)
- 要高准确率、快速推理(生产 QPS)
- 显存紧,大约 1–2GB 就能跑(base 量级)
一次前向出类别 ID,延迟和费用都好控。
用大模型 Prompt
- 没有标注,或标不起
- 任务多样,今天分类明天摘要,不想每个任务训一个头
- 要快速验证、拼 Prompt 就能看效果
- 需要零样本 / few-shot
- 显存够,大约 8GB+(7B 量级起;更小的也能跑,作为量级参考)