文章目录

大模型训练流程

ChatGPT训练流程简述

  • 使用庞大未标注文本进行GPT预训练(CLM)
  • 收集人类问答数据进行SFT
  • 利用人类偏好标注训练Reward Model
  • 用PPO实现RLHF,提升回答质量
  • 最终部署上线,并持续迭代

(1)预训练阶段(Pre-training)

让模型学习通用语言/多模态知识。通过大规模无标注数据建立对语义、语法、上下文的基础理解。

  • 数据来源
    文本模型:维基百科、书籍语料、论坛、新闻、网页等。
    多模态模型:图文对(如AltText)、图像描述(如COCO)、网页截图等。
  • 常见任务类型
    自回归语言建模(Causal Language Modeling, CLM):如GPT系列
    给定前文预测下一个token(左到右)
    掩码语言建模(Masked Language Modeling, MLM):如BERT
    随机遮挡部分token,让模型预测被遮挡的内容
    多模态预训练任务(如BLIP、CLIP):
    图文对比(Contrastive)
    图文匹配(Matching)
    图文生成(Captioning)
  • 架构
    大多数基于Transformer,分为:
    Encoder-only:BERT、RoBERTa(适合理解任务)
    Decoder-only:GPT、LLaMA(适合生成任务)
    Encoder-Decoder:T5、BLIP(适合翻译、问答等任务)

(2)微调阶段(Fine-tuning)

使模型适配具体任务,如情感分类、问答、摘要、代码生成、图像识别等。

  • 方法
    加入少量标注数据进行训练
    通常保留大模型参数不变,仅训练最后几层(也可以全参微调)
任务类型 示例模型 数据来源
文本分类 RoBERTa分类器 IMDb评论情感
图像问答 BLIP2、MiniGPT-4 VQA2.0等
文本生成 GPT-3、LLaMA 指令数据集
多轮对话 ChatGLM、ChatGPT ShareGPT等

(3)后训练阶段(Post-training / Alignment)

后训练是提升模型对齐能力和实用性的关键阶段。

  1. 常见方式
    (1)SFT:Supervised Fine-tuning(监督微调)
    使用高质量的指令-响应数据
    强调模型对用户指令的理解与规范响应
    例如:“帮我总结下面这段话"→"这段话的核心意思是…”

(2)RLHF:Reinforcement Learning with Human Feedback(人类反馈强化学习)
步骤:
训练奖励模型(Reward Model)
通过PPO等算法优化生成结果
目标:生成更符合人类偏好的回答

(3)DPO:Direct Preference Optimization(直接偏好优化)
更高效地利用人类偏好数据,替代RLHF
直接根据两条回答的偏好差距做目标函数优化

(4)LoRA / QLoRA 等参数高效微调(PEFT)
只微调少量参数,大幅节省计算资源
常用于垂类任务(如医疗问答、法律分析)

补充说明:大模型训练的资源需求

类型 说明
算力 数百至上千张GPU(如A100、H100)
数据量 数十TB至PB级语料
时间周期 几周到数月
成本估算 数百万到千万美元

一、Hugging Face

平台概览

  • 起初是一个开源聊天机器人项目,现在已发展为AI模型基础设施平台。
  • 核心产品是开源库transformers,提供了统一API访问大规模预训练模型(如BERT、GPT、T5、CLIP、LLaMA等)。
  • 当前支持任务包括:自然语言处理、计算机视觉、音频处理、多模态学习等。
  • 核心目标:Democratize AI by making it accessible and open. 即“让AI变得人人可用、可控、可持续”。

在这里插入图片描述

核心组件与生态

组件/平台 作用
🤗 Transformers 主力库,提供数千个NLP/多模态预训练模型的统一调用接口
🤗 Datasets 快速加载、预处理数千个标准数据集的工具库(支持增量处理、大文件)
🤗 Tokenizers 超高速、可训练的分词器,支持BPE、WordPiece等算法
🤗 Accelerate 简化分布式训练与混合精度训练流程
🤗 PEFT 支持LoRA等轻量参数微调方式
🤗 Hub 模型与数据集的共享与发现平台,支持Web UI与命令行操作
🤗 Spaces 快速部署模型Demo的可视化平台,支持Gradio、Streamlit
🤗 Inference API 云端托管模型,提供RESTful推理接口

accelerate

accelerate 是 Hugging Face 提供的一个轻量级训练框架,旨在简化多设备(如多GPU、TPU)和混合精度训练的配置与代码管理。相比 PyTorch 原生的 DistributedDataParallel,它更友好、更易用,尤其适用于模型开发初期的实验阶段,也支持部署到大规模分布式环境。
✅ 核心特点

特性 说明
多设备适配 一套代码可自动运行于 CPU、单GPU、多GPU(DDP)、TPU、AWS 等平台
混合精度训练(fp16/bf16) 支持自动混合精度加速训练,减少显存消耗,提高速度
零侵入性代码结构 保持 PyTorch 原始训练流程,几乎不改动训练逻辑
一键配置脚本 通过 accelerate config 快速生成配置,统一调度各种训练资源

✅ 安装方式:pip install accelerate

✅ 使用方式概览
✅ 方式一:基础使用(适合中小模型或初学者)

from accelerate import Accelerator
import torch
from torch.utils.data import DataLoader
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# 初始化加速器
accelerator = Accelerator()

# 模型、优化器、数据
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
optimizer = torch.optim.AdamW(model.parameters(), lr=5e-5)

# 构造 DataLoader
train_loader = DataLoader([...], batch_size=16)

# 加速准备(核心步骤)
model, optimizer, train_loader = accelerator.prepare(model, optimizer, train_loader)

# 训练循环
model.train()
for batch in train_loader:
    outputs = model(**batch)
    loss = outputs.loss
    accelerator.backward(loss)  # 自动处理梯度缩放
    optimizer.step()
    optimizer.zero_grad()

✅ 方式二:命令行配置+启动训练(适合中大型模型、混合精度、多卡训练)
Step 1:创建配置文件accelerate config

将提示输入:

使用CPU/GPU/TPU

是否使用混合精度

是否多节点

每台设备的GPU数量

是否使用 DeepSpeed

Step 2:启动训练脚本accelerate launch train.py

✅ 高级特性支持

特性 支持情况
多卡同步训练 ✅ 支持 DDP 与 torchrun 等自动模式
自动混合精度(fp16) ✅ 配置一次即可使用 AMP
DeepSpeed/TPU ✅ 集成支持,配置后无需更改代码
分布式数据采样器 ✅ 自动替换,无需手动设置
Checkpoint恢复 ✅ 可自动保存/加载优化器与模型状态

✅ 典型应用场景
使用transformers训练大模型(如BERT、LLaMA)时,加速和分布式封装。

diffusers等模型在多GPU上训练图像生成任务。

快速从单机扩展到多GPU/多节点部署。

二、Hugging Face模型加载类(总览)

模块/库 模型加载类(代表) 用途场景示例
transformers AutoModel*, AutoTokenizer, pipeline NLP、CV、多模态任务主力
diffusers StableDiffusionPipeline, DDIMPipeline 文生图、图生图、控制图像生成
sentence-transformers SentenceTransformer 向量语义搜索、嵌入提取、相似度计算
peft PeftModel.from_pretrained 参数高效微调(LoRA等)后的加载
trl AutoModelForCausalLMWithValueHead RLHF 模型加载
huggingface_hub hf_hub_download 下载特定模型/数据文件
datasets load_dataset, load_from_disk 加载标准或本地数据集
evaluate load 加载评估指标(如BLEU, ROUGE等)

transformers 模型加载类族(核心库)

transformers 是Hugging Face最核心的库,支持从Hub加载各类预训练模型及其tokenizer,广泛用于文本分类、文本生成、图像识别、多模态理解等任务。

from transformers import AutoModelForSequenceClassification

model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")

常见子类与功能

类名 对应任务场景
AutoModel 通用模型(如BERT encoder)
AutoModelForCausalLM 文本生成模型(GPT类)
AutoModelForMaskedLM 填空任务(如BERT)
AutoModelForSeq2SeqLM 翻译、摘要(如T5、BART)
AutoModelForTokenClassification 命名实体识别任务
AutoModelForImageClassification 图像分类(如ViT、ConvNeXt)
AutoModelForImageTextToText 图像到文本(如BLIP、Qwen-VL)
AutoProcessor 多模态模型的预处理组件(如图像+文本)

diffusers 图像生成模型加载类

diffusers 是专用于扩散模型(如Stable Diffusion)的加载库,适合文生图、图生图、图像控制生成等高级视觉任务。

  • 安装建议:pip install diffusers transformers accelerate
from diffusers import StableDiffusionPipeline

pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5", torch_dtype="auto")
pipe.to("cuda")
pipe.save_pretrained("./models/sd-v1-5")  # 保存本地,后续直接加载

衍生Pipeline(不同功能)

类名 功能说明
StableDiffusionPipeline 文本生成图像(text-to-image)
StableDiffusionImg2ImgPipeline 图像生成图像(image-to-image)
ControlNetPipeline 控制生成图像(如边缘、姿态引导)
DDIMPipeline 可调采样方法生成
PaintByExamplePipeline 示例驱动的图像生成

③ sentence-transformers(语义模型加载)

专为语义检索、嵌入提取而设计,基于transformers封装,适合快速使用SBERT及其衍生模型。

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer('all-MiniLM-L6-v2')
emb1 = model.encode("This is an example.")
emb2 = model.encode("This is a test.")
score = util.cos_sim(emb1, emb2)

④ peft(轻量微调模型加载)

用于加载通过LoRA、IA3、prefix tuning等方法进行参数高效微调的模型。

from peft import PeftModel
from transformers import AutoModelForCausalLM

base_model = AutoModelForCausalLM.from_pretrained("llama-base")
model = PeftModel.from_pretrained(base_model, "path-to-lora")

⑤ trl(强化学习微调模型加载)

专用于RLHF(如ChatGPT训练方法)中,支持加载包含value head的模型,用于奖励建模与策略优化。

from trl import AutoModelForCausalLMWithValueHead

model = AutoModelForCausalLMWithValueHead.from_pretrained("gpt2")

huggingface_hub 底层级文件加载类

如果只需要模型文件(如pytorch_model.bin、config.json等),可使用:pip install huggingface_hub

from huggingface_hub import hf_hub_download

# 下载模型权重文件
file_path = hf_hub_download(repo_id="bert-base-uncased", filename="pytorch_model.bin")
config_path = hf_hub_download(repo_id="bert-base-uncased", filename="config.json")

datasets(加载数据集)

支持加载成千上万的开源数据集,也支持加载本地Arrow格式数据。自动缓存、分词、预处理。

from datasets import load_dataset

dataset = load_dataset("squad")
print(dataset["train"][0])

⑧ evaluate(加载评估指标)

提供标准评估指标(如BLEU、ROUGE、accuracy等),可直接应用于模型性能评估。

from evaluate import load

rouge = load("rouge")
results = rouge.compute(predictions=["hello world"], references=["hi world"])
print(results)

三、Huggingface模型下载(远程加载)

方式一:官网下载(手动)

如何在Huggingface官网上下载模型文件?
操作路径:

  • 打开模型页面,https://huggingface.co
  • 进入Models,在搜索框中输入模型名称(如:bert-base-uncased)
  • 切换到Files and versions
  • 点击.bin、config.json、tokenizer.json等权重文件,右键另存为。

缺点:

  • 不支持大文件断点续传
  • 无法自动更新/校验
  • 文件数量多(通常10+),但只能一个一个文件点开下载
  • 速度慢(100~300KB/s),但单个权重大(几百MB甚至GB)。

方式二:命令行下载(git clone)

  • 登录 HuggingFace CLI(仅私有模型需要):huggingface-cli login
  • 下载模型文件夹 —— 使用git lfs(模型较大时需要):
git lfs install
git clone https://huggingface.co/bert-base-uncased

"""
将下载完整目录,包括:
bert-base-uncased/
├── config.json
├── pytorch_model.bin
├── vocab.txt
└── tokenizer_config.json
"""

方式三:使用 Transformers 提供的 API 下载(推荐)

1、函数详解

(1)AutoModel.from_pretrained() —— 从Hugging Face模型仓库,下载指定预训练模型的权重和配置
# 函数功能:加载指定预训练模型的权重和配置,返回一个通用Transformer模型(无特定任务头),
# 应用领域:适用于下游任务如特征提取、嵌入生成、微调等。
# 参数说明:
# from transformers import AutoModel
# model = AutoModel.from_pretrained(
#     pretrained_model_name_or_path: str,      # 模型名称(如 "bert-base-uncased")或本地路径(如 "./models/bert")
#     cache_dir: Optional[str] = None,         # 指定缓存路径,模型文件将下载并存储在该目录中
#     force_download: bool = False,            # 如果为True,即使本地已存在也会重新下载
#     resume_download: bool = False,           # 断点续传下载(用于网络中断情况下)
#     proxies: Optional[dict] = None,          # 设置HTTP代理,例如 {"http": "http://127.0.0.1:8080"}
#     revision: str = "main",                  # 指定模型版本(默认是 "main",可指定为commit hash或分支名)
#     trust_remote_code: bool = False,         			# 是否信任远程模型定义的自定义代码(启用后可加载非官方模型实现)
#     torch_dtype: Optional[torch.dtype] = None,  		# 指定加载的权重精度,如 torch.float16、torch.bfloat16
#     low_cpu_mem_usage: bool = False,         			# 减少CPU内存占用(推荐大模型加载时开启)
#     device_map: Optional[Union[str, Dict]] = None,  	# 自动将模型分布在CPU/GPU上(如 "auto")
#     **kwargs
# )
# 返回值:一个继承自PreTrainedModel的模型对象,如BertModel、GPT2Model等
(2)AutoTokenizer.from_pretrained() —— 从Hugging Face模型仓库,下载指定预训练模型的分词器
# 函数功能:加载指定预训练模型的分词器(Tokenizer),用于文本编码、解码等操作。
# 应用领域:分词器包含词表、分词规则、特殊符号定义等,适配对应模型结构。
# 参数说明:
# from transformers import AutoTokenizer
# tokenizer = AutoTokenizer.from_pretrained(
#     pretrained_model_name_or_path: str,       # 模型名称或本地路径,如 "bert-base-chinese" 或 "./bert_tokenizer"
#     cache_dir: Optional[str] = None,          # 缓存目录,默认使用 ~/.cache/huggingface
#     force_download: bool = False,             # 强制重新下载,即使本地已有缓存
#     resume_download: bool = False,            # 支持断点续传
#     proxies: Optional[dict] = None,           # 代理设置
#     revision: str = "main",                   # 指定分支或commit版本
#     use_fast: bool = True,                    # 是否加载“Fast Tokenizer”(Rust实现,速度更快)
#     trust_remote_code: bool = False,          # 是否允许加载自定义代码(非官方模型可能用到)
#     tokenizer_type: Optional[str] = None,     # 可显式指定tokenizer类型(一般不用)
#     **kwargs
# )
# 返回值:一个继承自PreTrainedTokenizer或PreTrainedTokenizerFast的对象,如BertTokenizer、GPT2TokenizerFast等
(3)huggingface_hub.hf_hub_download() —— 从Hugging Face模型仓库,下载指定文件到本地缓存目录
# 函数功能:从Hugging Face模型仓库下载指定文件到本地缓存目录,支持断点续传。
# 应用场景:下载大模型权重、配置文件等,避免重复下载。
# 参数说明:
# from huggingface_hub import hf_hub_download
# file_path = hf_hub_download(
#     repo_id: str,                     # 【必需】模型仓库名称,如 "bert-base-uncased" 或 "Qwen/Qwen1.5-0.5B"
#     filename: str,                    # 【必需】目标文件名,如 "pytorch_model.bin"、"config.json"
#     subfolder: Optional[str] = None,  # 指定子目录(如果文件位于模型仓库的子文件夹中)
#     repo_type: str = "model",         # 仓库类型:可选 "model"(默认)、"dataset"、"space"
#     revision: str = "main",           # 仓库版本:可以是分支名、tag名或commit hash(如 "v1.0")
#     cache_dir: Optional[str] = None,  # 指定文件缓存路径,默认缓存至 ~/.cache/huggingface/hub
#     local_files_only: bool = False,   # 是否仅使用本地缓存,不尝试联网下载(适合离线环境)
#     force_download: bool = False,     # 强制重新下载文件,即使本地已有
#     resume_download: bool = False,    # 开启断点续传(下载大模型时推荐)
#     proxies: Optional[dict] = None,   # 设置代理,如 {"http": "http://127.0.0.1:7890"}
#     token: Optional[str] = None,      # Hugging Face 访问令牌(用于私有模型访问)
# )
# 返回值:
#     file_path (str): 下载完成的本地文件路径,可直接用于加载模型或读取内容。

2、项目实战

(1)上传模型到Hugging Face Hub —— 待优化 + 待测试
huggingface-cli login
from transformers import AutoModel

model.push_to_hub("my-model-name")  # 上传模型
tokenizer.push_to_hub("my-model-name")  # 上传分词器
(2)从Hugging Face下载指定模型(保存到默认路径 or 指定路径)

这是最常见、最推荐的方式,适用于绝大多数模型。

from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("bert-base-uncased")  # 下载模型权重
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")  # 下载分词器

# 下载文件自动保存在本地缓存目录:
#       Linux/Mac: ~/.cache/huggingface/
#       Windows: C:\Users\<用户名>\.cache\huggingface\
# 重复使用时会从本地加载,不再重复下载。

使用cache_dir参数将模型下载到指定目录:

from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("bert-base-uncased", cache_dir="./models/bert/")
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased", cache_dir="./models/bert/")
(3)加载本地模型

若模型已下载好(如位于./models/bert-base-uncased/),则可直接加载:

from transformers import AutoModel, AutoTokenizer

model = AutoModel.from_pretrained("./models/bert-base-uncased/")
tokenizer = AutoTokenizer.from_pretrained("./models/bert-base-uncased/")

四、项目实战

免费可用大模型

GPT文本聊天

"""
pip install transformers
pip install torch  # 或tensorflow,依据后端选择
"""

# 加载模型与Tokenizer
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")

# Qwen/Qwen2.5-VL-3B-Instruct
# mergekit-community/Qwen3-1.5B-Instruct

# 推理生成
input_text = "Once upon a time"
input_ids = tokenizer.encode(input_text, return_tensors="pt")
output = model.generate(input_ids, max_length=50)
print(tokenizer.decode(output[0], skip_special_tokens=True))

# 本地部署
from transformers import pipeline
generator = pipeline("text-generation", model="gpt2")
print(generator("In the future,", max_length=30))

Diffusers图像生成

五、知识小课堂

(1)多模态大模型要求必须输入RGB图像

  • 通用视觉多模态模型(如BLIP、GPT4-Vision等)要求输入为RGB图像。
  • 原因:这些模型预训练阶段使用的图像(如COCO、Laion-400M)均为自然图像,包含颜色、背景、纹理等信息,使用的是3通道格式。
  • 即便图像本身是灰度的,也需转换为3通道形式(R=G=B)以适配模型。
项目 RGB图像(3通道) 灰度图像(1通道)
模型输入尺寸 通常为3×H×W 通常为1×H×W
数据量 是灰度图的3倍 最小化输入冗余
推理时间 稍慢(占显存更高) 快一点(可节省显存与处理时间)
适用场景 大多数视觉语言模型(必须是RGB) 传统OCR任务、轻量CNN
影响程度 对现代GPU影响不大(主要看模型大小) 对低端设备可提升10%-20%效率

(2)提示词prompt(中文 or 英文) —— 选择策略:根据模型训练偏向 + 任务导向

Qwen2.5-VL-3B-Instruct是中英文多语言多模态模型,中文prompt和英文prompt在大多数常规任务上表现接近,但存在细微差异,取决于任务类型与训练数据偏向。以下是详细分析:

一、Qwen2.5-VL-3B-Instruct对中英文Prompt的适配性

维度 中文Prompt 英文Prompt
支持情况 ✅完全支持 ✅完全支持
输出连贯性 优秀 优秀
训练数据分布 中文比例较高,覆盖图文任务 英文也充分训练,但比例略低于中文
实际表现 在**中文场景(如中文题目、票据识别、答题卡处理等)**下通常更鲁棒 英文数据或OCR任务中依然表现稳定

推荐策略:
若图片中内容为中文,建议优先使用中文prompt,可获得更稳定的token解码与上下文联动。
若任务目标是结构化提取、步骤推理、代码生成等较通用任务,英文prompt也表现良好。

二、其他主流多模态模型中Prompt语言适应情况

模型名称 是否偏向英文训练 中文Prompt支持 英文Prompt支持 适配建议
InternVL 2.5 ✅偏英文 ✅良好(但略次于Qwen) ✅优秀 若输入全为中文,推荐加提示词指令引导中文输出
MiniGPT-4 ✅偏英文 ⚠️有限支持(需优化prompt) ✅优秀 中文任务易出错,需额外优化prompt或训练
LLava-1.5/Next ✅偏英文 ⚠️有限支持 ✅优秀 中文适配弱,不推荐中文任务直接使用
Qwen-VL ❌无偏见(多语言兼容) ✅强适配 ✅强适配 多语言任务推荐

三、总结与建议
Qwen2.5-VL-3B-Instruct:中英文Prompt皆可良好使用,中文任务推荐使用中文Prompt。
若目标项目为中文答题卡识别、图文理解、结构抽取等任务,Qwen具明显优势,无需强制英文Prompt。
其他模型(如InternVL)虽也支持中文,但鲁棒性和生成稳定性略逊一筹。

(3)提示词prompt(长度),将导致模型的推理时间变长

  1. 上下文长度越长,占用的计算资源越多
    大模型(如Qwen2.5-VL-3B-Instruct)在推理时需要将整个提示词+问题+生成的内容作为一个完整的上下文输入Transformer结构中;

上下文越长,每一层的自注意力机制计算复杂度为O(n²),导致推理时间显著上升;

对于多轮或结构复杂的提示词,推理延迟可能会从几百毫秒上升到几秒甚至更长。

  1. 长提示词会降低“关注焦点”,增加干扰项
    如果提示词中内容过多,尤其是杂项规范、任务描述、样例堆叠等,容易导致模型“解码分散”,推理路径变长,响应速度下降;

模型可能需要更长时间来“聚焦”于核心任务(如图文题理解、数值解答),影响整体效率。

  1. GPU显存和系统缓存占用增加
    对于部署在本地的推理系统,长提示词不仅加重模型负载,也会导致显存压力升高,影响并发处理能力;

若采用批处理方式,长提示词会拉长整批任务的平均推理时间。

目标 建议
提高推理速度 精简提示词,保留任务导向性语句,避免冗长背景或重复表述
兼顾稳定性和速度 将说明性内容拆分为“任务指令+补充规则”的模块结构,引导模型先聚焦任务
多轮交互任务(如批量答题) 使用模板压缩或结构归纳(如:答案均为数字/选项,请直接给出答案)
低延迟需求场景(如实时反馈系统) 保证提示词在<500 token内,减少多样例堆叠

(3)打印模型的权重参数

from transformers import AutoModel

model = AutoModel.from_pretrained("./models/Qwen2.5-VL-3B-Instruct")  # 替换为你的模型
total_params = sum(p.numel() for p in model.parameters())
print(f"模型总参数量:{total_params:,}{total_params/1e9:.2f}B")
#######################################################################################
from transformers import AutoModelForImageTextToText

model = AutoModelForImageTextToText.from_pretrained("./models/Qwen2.5-VL-3B-Instruct")
total_params = sum(p.numel() for p in model.parameters())
print(f"模型总参数量:{total_params:,}{total_params/1e9:.2f}B")
#######################################################################################
from transformers import Qwen2_5_VLForConditionalGeneration

model = Qwen2_5_VLForConditionalGeneration.from_pretrained("./models/Qwen2.5-VL-3B-Instruct")
total_params = sum(p.numel() for p in model.parameters())
print(f"模型总参数量:{total_params:,}{total_params/1e9:.2f}B")

"""
模型总参数量:3,754,622,976 ≈ 3.75B
模型总参数量:3,754,622,976 ≈ 3.75B
模型总参数量:3,754,622,976 ≈ 3.75B
"""

(4)推理过程的总显存占用 = 模型参数占用 + 激活值占用 + 输入数据 + …

总显存占用 ≈ 模型参数占用 + 激活值占用 + 中间缓存/优化器状态 + 输入数据 + 其他系统开销(包括显存碎片)

  • 1. 模型参数占用:每个参数占用的空间 = 参数个数 × 每个参数的精度(如float32是4字节)
    • 示例:1亿个参数 × 4字节(float32)= 400MB,若模型使用了半精度(float16),则为 2 字节/参数。
  • 2. 激活值(activation)占用 —— 这是训练/推理过程中中间层特征图(tensor)的显存消耗。
    • 计算方式粗略估计为:激活值占用 ≈ 批量大小 × 每层输出维度 × 每元素字节数 × 层数
    • 激活值数量远大于模型参数,尤其在深层网络中最显著。
    • 推理阶段可以启用 torch.no_grad() 或 inference_mode() 以显著减少激活缓存。
  • 3. 优化器状态(仅训练时)
    • 如 Adam 优化器,每个参数除了主值,还需要额外的两个状态变量(momentum 和 variance)。
    • 以float32为例,每个参数需要额外 2 × 4字节 = 8字节。所以:总优化器显存 ≈ 参数量 × 8字节
  • 4. 输入数据本身
    • 例如图像输入 [batch_size, channels, height, width],其大小可以直接估算:batch=4,图像为(3, 224, 224),float32格式:4 × 3 × 224 × 224 × 4字节 ≈ 2.3MB
  • 5. 系统开销与显存碎片:PyTorch等框架会预分配显存池用于快速分配,显存碎片也会造成额外开销。通常建议留出 5%~10% 作为缓冲。

(5)2025年免费可用大模型(统计表)

  • 完全开源 vs 开放权重:部分模型(如 LLaMA、DeepSeek)属于开源可用权重,但不满足 OSI 完整开源标准(数据集、训练代码不公开)。只有少数如 BioGPT/K2/OLMo 完全满足 OSI 标准 Sease(未纳入上表以免复杂)。
  • 硬件适配性:gpt‑oss‑20B 可在消费级 GPU 或 16 GB VRAM PC 上运行;gpt‑oss‑120B 适用于带高端 GPU 的设备 Windows Central。
  • 应用匹配建议:
    • 高推理/长上下文任务:推荐 Qwen 3、Mixtral、LLaMA 3.3、DeepSeek。
    • 多语言 / 多模态场景:首选 Qwen 3 或 Gemma。
    • 本地部署 / 边缘设备部署:考虑 Vicuna、StableLM‑2、gpt‑oss‑20B。
模型名称 作者 / 来源 参数数量参数量级 许可类型 主要特点与适用场景
gpt‑oss‑120B OpenAI ∼120 B Apache 2.0 (open‑weight) 理性推理强,性能近似 o4‑mini,可在单张高端 GPU 上运行 (卫报, WIRED)
gpt‑oss‑20B OpenAI ∼20 B Apache 2.0 (open‑weight) 可在 16 GB VRAM 的消费级设备(如 Windows PC)本地运行 (卫报, Windows Central)
LLaMA 3.3 / 3.1 Meta AI 从 8 B 到 405 B 部分开放(open‑weight) 多轮对话、推理能力提升,适合企业级、高上下文任务 (Big Data Analytics News, DEV)
Qwen 3 系列 阿里达摩院 稠密与稀疏:0.6 B~235 B Apache 2.0 多模态支持(文字 / 图 / 语音),128K 上下文窗口,大型协作场景 (维基百科, Analytics Vidhya)
Mixtral‑8×22B Mistral AI 约 141 B(激活 39 B) Apache 2.0 Sparse MoE 架构,处理数学与逻辑任务能力强,支持函数调用 (a3logics.com, Big Data Analytics News)
DeepSeek R1 DeepSeek 尚未公开具体参数 开放权重模型 理解推理强,特别强调推理路径透明,广受关注 (a3logics.com, Business Insider)
Gemma 2 / 3 系列 Google DeepMind Gemini 同源:数十至数百 B Apache 2.0 多语言支持、逻辑推理与问答能力较强,适合安全敏感环境 (Analytics Vidhya, Sease)
Falcon‑180B TII / BigScience ∼180 B Apache 2.0 性能与效率兼顾,开源中参数最大者之一,适用于大规模生成 (picovoice.ai, GitHub)
StableLM‑2 系列 Stability AI 1.6 B / 12 B CC BY‑SA‑4.0 或 Apache 2.0 性能稳定、轻量,可用于多语言应用与部署到边缘设备 (a3logics.com, GitHub)
BLOOM (176 B) BigScience 176 B RAIL v1.0(自由研究使用) 多语言支持,参与式开发,适合多语环境和通用生成任务 (维基百科, GitHub)
Vicuna‑13B 基于 LLaMA 社区 ∼13 B Apache 2.0 聊天友好、社区驱动、轻量部署,可在边缘设备使用 (GitHub, Big Data Analytics News)

(6)大模型类别总览(以阿里为例)

https://www.alibabacloud.com/help/zh/model-studio/models#237069b90a2i3
在这里插入图片描述

模型加载器:通用模型 + 多模型任务 + 专属任务

加载方式 模型类型 模型用途 是否适配Qwen2.5-VL-3B-Instruct 封装程度
AutoModel 通用模型加载器 加载权重但无任务头(比如生成、分类等) ❌ 不推荐 非常底层
AutoModelForImageTextToText 多模态任务加载器 图像输入 + 文本输出(如VQA、图像描述) ✅ 推荐 中级封装
Qwen2_5_VLForConditionalGeneration 官方模型类(Qwen专属) 完全适配 VL-Instruct 任务 ✅✅ 强烈推荐 高度封装,完全匹配
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐