Skip to content

HuggingFace · 知识点

HuggingFace 是开源模型与数据的枢纽,也提供现成的推理封装。PyTorch 是造车的发动机,它相当于直接给你一辆能开的跑车。

什么是 HuggingFace?

两层。一层是仓库,一层是开箱即用

  1. AI 界的 GitHub — 程序员找代码去 GitHub,AI 工程师找模型和数据去 HuggingFace。托管主流开源模型(Llama、BERT、Stable Diffusion 等)。
  2. AI 界的 App Store — 现成 Pipeline,不必先啃原理就能在代码里跑起来,例如一键情感分析。

HuggingFace 的核心是什么?

写代码主要和这三块打交道——工具箱、仓库、燃料

  1. Transformers(库) — 统一 Python 接口,几乎同一套代码加载 BERT、GPT、Llama。pipeline / from_pretrained 都在这。
  2. Model Hub(网站) — 仓库。权重(.bin / .safetensors)和 config.json 放这里,代码按模型 ID 去拉。
  3. Datasets(库) — 燃料库。一键下维基、医疗问答、电商评论等,自动收成模型能读的格式。

重点 Transformer 模型有哪三个流派?

先看任务是理解、生成还是转换,再报架构。和 pip 包 transformers 不是一回事:那是加载接口,这是模型长什么样。

  1. Encoder-Only — 代表 BERT。擅长理解和分析,像阅读理解满分的学生:给一篇文章,能判情感、抽人名。应用:文本分类、实体识别、搜索匹配。
  2. Decoder-Only — 代表 GPT、Llama、Qwen。擅长生成,像话唠小说家:给个开头,按概率猜下一个字。应用:聊天、代码、创意写作。现在主流 Chat 都是这个。
  3. Encoder-Decoder — 代表 T5、BART。擅长转换,像翻译官:Encode 听懂一句,Decode 用另一种语言说出来。应用:机器翻译、文本摘要。

HuggingFace 上常用哪些模型?

按任务点名即可,不必背排行榜。NLP 对上三个流派;图和跨模态另算。

NLP

  1. 理解(Encoder-Only) — BERT / RoBERTa:分类、NER 经典。DistilBERT:BERT 蒸馏版,更快,适合端侧。
  2. 生成(Decoder-Only) — Llama:开源对话、推理常用。Qwen:中文强。DeepSeek:生成和思考任务常被点名。GPT-2:老且轻,教学入门。
  3. 翻译 / 摘要(Encoder-Decoder) — T5 / FLAN-T5:把 NLP 任务收成「文本到文本」。BART:纠错、长文摘要。

CV / 多模态

  1. ViT — 图像分类标杆。
  2. Stable Diffusion — 开源文生图。
  3. CLIP — 文本和图像进同一向量空间,以图搜图、零样本分类。
  4. InternVideo2 / 2.5 — OpenGVLab 视频基础模型(详见下一节)。

视频基础模型 InternVideo2 / 2.5

上海 AI Lab / OpenGVLab 的 Video Foundation ModelInternVideo2(视频表征 + 多模态对齐 + 对话);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),不是简单换皮。

  1. HiCo — 自适应分层 token 压缩,把长视频压成紧凑时空表示,能吃更长输入(官方称记忆长度至少约 于原版量级)。
  2. TPO — 用稠密视觉任务标注做任务偏好优化(DPO 一路),细粒度感知(跟踪、分割、时序定位等)。
  3. 能力 — 长短视频理解基准全面加强;开源 Chat 约 8B;可处理极长帧序列(宣传口径可达万帧级「大海捞针」,数字报官方/论文,)。

2 vs 2.5 怎么说

InternVideo2InternVideo2.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 CaptionerInternVid 那套路视频描述流水线(不用 VideoLLM 硬生成,论文称下游更稳)视觉描述
Audio Captioner自研:基于 VideoChat;音频特征用 BEATs;只训 Q-Former,数据含 WavCaps环境音 / 非语音音频描述(当时缺可靠开源音频 captioner)
Speech CaptionerWhisperV2-large语音转写 / 字幕
LLM 融合Vicuna-1.5(推理可配 vLLM 加速)校正单模态 caption,融合成跨模态描述

产出五种文本

每条视频 clip 自动得到:

  1. 单模态:V(视觉)、A(音频)、S(语音)
  2. 跨模态: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 VoiceMozilla 多语言开源语音
中文CLUECorpusSmall中文通用语料,适合练小模型

Hub 上 IMDb 路径示例:stanfordnlp/imdb

模型常见的特殊 Token 有哪些?

特殊 Token 不表示词义,是标点和命令,帮模型看清结构和指令。各家写法不同,必须和权重同一套 Tokenizer,不能混用。

  1. 分隔符 — 切开段落或角色。对话里常用 <|user|> / <|assistant|> 区分谁在说话。
  2. 结束符(EOS / EOT) — 告诉模型可以停。常见 [EOS]<|endoftext|>。没有它容易说个没完。
  3. 起始符 — 标记序列开头。BERT 用 [CLS](分类),有的用 [BOS],让模型准备开始处理。

国内怎么用 HuggingFace?(环境)

from_pretrained 在国内常报 ConnectionError,是 Hub 连不上,不是代码写错。两条路:设镜像入口(如 HF_ENDPOINT,须在 import transformers 之前),或用 ModelScope 先下到本地再按路径加载。

重点 Pipeline 是什么?

全自动黑盒。文本扔进去,自动走完三步,吐人类能看懂的结果。适合 Demo 和零样本试信号;要深度定制、抠中间张量,拆开自己调 Tokenizer + Model。

  1. 预处理(Tokenizer) — 文本变成数字(Token ID)。
  2. 模型推理(Model) — 算出一堆分数(Logits)。
  3. 后处理(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
  1. Tokenizer 把句子收成 Token ID,BERT 常用 [CLS] + 正文 + [SEP]
  2. Encoder 前向,取 [CLS](或 pooled)向量,接一层分类头,得到各类别 Logits
  3. 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 量级起;更小的也能跑,作为量级参考)