大语言模型介绍

大语言模型(Large Language Model, LLM)简称大模型,本质上是基于海量文本数据训练的、通过统计规律映射语言与知识的 “概率生成模型” —— 核心并非 “理解” 语言或世界,而是通过学习人类文本中的字符(词 / 字 / Token )序列关系,实现 “给定输入后,生成符合人类逻辑与常识的输出”。

可从 3 个核心层面理解

底层:海量参数构成的 “统计映射网络”

  • 本质是深度神经网络(Transformer 架构为主) ,核心由数十亿到万亿级的 “参数”(权重矩阵) 组成 —— 这些参数是模型从训练数据中学习到的 “统计规律” 载体,而非 “知识库”。
  • 训练过程:通过海量文本(书籍、网页、论文等)让模型学习 “哪个 Token 在哪个语境下出现的概率更高” 。例如,输入 “成都的特色美食是”,模型通过参数计算,输出 “火锅”“串串” 的概率远高于其他词汇。
  • 关键特点:参数本身无 “语义”,仅记录字符间的 关联概率 (如 “天府之国” 常与 “成都” 同现),但海量参数的协同作用,能让模型呈现出 “理解” 和 “推理” 的假象。

核心能力:基于上下文的 “条件概率生成”

大模型的所有输出(文本、代码、逻辑推导等),本质是 逐 Token 的概率采样过程

  • 输入文本(如 “解释什么是大模型”)被拆分为 Token 序列,传入模型;
  • 模型根据上下文(输入 + 已生成的 Token),计算下一个 Token 的概率分布(所有可能 Token 的出现概率);
  • 按一定规则(如 temperature 调节随机性)从概率分布中采样下一个 Token,重复该过程直到生成结束。

示例:生成 “1+1=?” 时,模型并非 “计算” 结果,而是通过训练数据中 “1+1=2” 的高出现频率,让 “2” 成为概率最高的输出 Token。

表象:涌现出的 “类智能能力”

模型本身无自我意识、无真正的逻辑推理能力,但当参数规模足够大(通常数十亿以上)、训练数据足够丰富时,会 “涌现” 出以下能力,这些能力是统计规律的高阶体现:

  • 语言理解:能识别歧义句、上下文指代(如 “他”“它” 对应的主体);
  • 逻辑推理:能完成简单数学计算、因果分析(如 “因为下雨,所以地面湿”);
  • 知识问答:能回答历史、科学等领域问题(本质是复述训练数据中的相关信息);
  • 创作与代码:能生成文章、诗歌、代码(本质是学习了文本 / 代码的结构与语法规律)。

关键局限:这些能力是 “统计拟合” 的结果,而非 “真正理解”—— 当遇到训练数据中未覆盖的场景,或需要精准逻辑推导时,可能出现 “一本正经地胡说八道”(幻觉)。

大模型的本质 :用海量参数记录文本序列的统计规律,通过逐 Token 的概率生成,模拟出人类的语言表达、知识输出和逻辑推理能力,但核心是 “拟合数据” 而非 “理解世界”。

简单类比:如同一个背诵了全世界所有书籍的 “超级学霸”,能快速复述、组合书中的信息,甚至通过信息关联 “推导” 出新结论,但始终无法真正理解 “为什么”,也无法产生超越训练数据的全新认知。

大模型之 Token

在自然语言处理和大模型领域中,Token 可译为 “词元”,是大模型理解和处理文本的最小语义单位

大模型本质是 “数值处理器”,无法直接理解人类文字。Token 会先完成文本拆分,再被分词器映射成唯一的数字编号,这些数字就是模型能处理的 “原材料”。例如 “我喜欢阅读” 拆成 [“我”,“喜欢”,“阅读”] 后,可能对应映射为 [“101”,“235”,“568”],模型通过计算这些数字间的关联来理解语义。

模型标注的 4k、8k、32k 等参数,指的就是最大 Token 处理长度,这个长度决定了模型 单次 能接收的 输入和生成的输出总量 ,长度越大越能处理长篇文本。

  • 对于英文:1 个 token ≈ 0.75个单词 ≈ 4个字符。
  • 对于中文:1 个 token ≈ 1.5 - 2个中文字符(因为中文词可能由多个字组成,但模型常按单字切分)。

注:上下文窗口大小严格限制的是“单次请求/响应”中,输入和输出的Token总长度,而不是整个会话周期内所有交流的累积长度。

模型训练过程

一个像 ChatGPT 这样的先进助手,通常是按照以下流水线生产出来的:

  • 第一步:建造原材料工厂:训练一个基础模型(如GPT-3),让它拥有海量知识。

  • 第二步:初步加工成工具:用高质量的 “指令-回答” 数据对基础模型进行指令调优,得到指令调优模型(如 InstructGPT)。此时它已经可以用了。

  • 第三步:建立质量标准和优化(可选但关键):为了让它更安全、更有用、更符合人类喜好,引入奖励模型

    • a.收集人类对多个回答的排序数据
    • b. 训练一个奖励模型来学习这个排序标准
    • c. 将奖励模型作为“裁判”,用强化学习 的方式进一步微调指令调优模型。让模型学会生成能获得奖励模型高分的回答。

    经过这一步优化后的模型,就是最终的、更强大的对话助手(如ChatGPT)

三类模型

大模型训练流程中不同阶段递进式产出三类模型:基础模型、指令调优模型和奖励模型

模型类型 训练方式 核心特点 应用场景 总结
基础模型 基于万亿级(TB级)无标注文本做大规模自监督学习 通用性强,拥有广泛的语言知识、事实知识和一定的推理能力,就像一个“博学的学者”,但无明确任务执行意识,输出不确定性高 作为二次开发底座、学术研究、低要求通用文本生成 知道很多,但不会聊天
指令调优模型 以基础模型为底座,用 “指令-期望输出” 标注数据做监督微调 能精准理解并执行人类指令,输出贴合需求,可控性强 对话系统、翻译、代码生成等直接面向用户的实际业务 学会了听话和帮忙
奖励模型 使用人类反馈数据进行训练,用指令调优模型的多版输出+人工偏好排序数据训练 仅具备评分能力,分数贴合人类偏好,无文本生成等业务能力 为强化学习微调提供奖励信号,辅助优化指令调优模型 学会了打分和评判,是强化学习的“教练”

模型文件

模型文件可分为模型权重文件分词器文件配置与辅助文件 三类。

分词器 负责 “把文字转成数字”,权重文件 负责 “用数字做推理”,两者必须配套使用(分词器的拆分规则要和模型训练时一致),否则模型无法正常工作。

模型权重文件

模型权重文件 (核心中的核心)是存储深度学习模型训练后参数的文件,像神经网络的连接权重、偏置项等核心参数都记录其中,是模型实现推理、微调的核心,不同框架和场景对应多种主流格式。

  • .safetensors:Hugging Face 主导的优选格式,仅存权重无执行代码,无安全漏洞,还支持内存映射,加载速度快,适配 PyTorch、TensorFlow 等框架。

  • .bin:PyTorch 生态中常见的二进制格式,大模型常会拆分成多个分块文件存储,搭配索引文件记录权重位置,不过格式非标准化,无统一规范。

  • .ckpt:PyTorch 和 TensorFlow 均会用到的格式,TensorFlow 中还常搭配 .index 索引文件,但其依赖 pickle 序列化,存在恶意代码注入的安全风险。

  • .pt/.pth:PyTorch 原生格式,二者本质无差异,可仅存权重参数,也能保存完整模型结构,适合模型训练过程中的参数保存与调试。

  • .gguf:专为本地高效推理设计,支持多种量化方案,单个文件包含所有权重和配置,很适合在边缘设备等资源受限环境使用。

模型权重文件大小和模型类型、参数量及参数精度强相关,跨度从几十 KB 到上百 GB 不等,不同场景的模型大小差异显著,超大规模语言模型参数量以十亿为单位,权重文件极大。

分词器文件

分词器文件 (文本 “翻译官”)负责 定义文本的 “拆分规则”,将自然语言(如中文句子、英文单词)转换成模型能识别的数字序列,相当于模型的 “语言翻译官”。

常见格式:tokenizer_config.json、vocab.txt(词表文件)、special_tokens_map.json 等,通常以多个文件组合存在。

大小特点:体积极小,一般仅几 MB 到几十 MB(词表越大略大,但远小于权重文件)。

配置与辅助文件

定义模型结构和推理规则,如编码器层数、注意力头数、隐藏层维度、激活函数类型,上下文窗口大小等,加载模型时需与权重文件匹配。

大模型框架和应用平台工具

大模型框架和工具是 支撑大模型从训练、微调,到推理、部署全流程的软件工具集合,能解决大模型开发中计算量大、显存占用高、部署复杂等核心问题,降低大模型开发与落地的技术门槛。

主要包含 底层(推理部署)框架上层应用平台工具

  • 底层框架(如 Ollama、vLLM)负责模型的推理计算和显存管理,而上层应用平台不参与底层计算,仅作为 “操作入口”。

  • 底层框架解决 “模型能在本地跑起来” 的问题,而上层应用平台解决 “跑起来后怎么方便用” 的问题。

  • 底层框架是 “模型运行的引擎”,而上层应用平台是 “基于引擎搭建应用的工作台”。

底层(推理部署)框架

大模型底层(推理部署)框架是支撑大模型从 “训练完成” 到 “实际可用” 的核心技术底座,负责模型加载、计算优化、资源调度、请求处理等关键环节,直接决定模型的响应速度、吞吐量、资源利用率和部署成本。

按核心用途可分为训练框架、推理部署框架、轻量化微调框架三类

训练框架

这类框架主打高效支撑大规模参数模型的训练,通过分布式计算、显存优化等技术,突破单设备算力限制,适配千亿甚至万亿参数模型的训练需求。

  • PyTorch:以灵活性和易用性著称,采用动态计算图,调试便捷且与 Python 深度集成。是学术研究和中小规模大模型原型开发的首选。
推理部署框架

这类框架聚焦模型训练完成后的落地环节,核心目标是提升推理速度、降低延迟、提高吞吐量,适配不同部署环境(云服务器、个人设备、边缘设备等)。

  • vLLM:核心创新是 PagedAttention(分页注意力)技术,借鉴操作系统内存分页思想,大幅提升显存利用率至 95% 以上。同时支持连续批处理,能实时接收新请求并动态加入队列,在高并发场景下表现优异,适合在线客服、智能文档处理等对延迟和吞吐量要求高的企业级应用。

  • TensorRT-LLM(NVIDIA):NVIDIA 推出的专用推理引擎,对自家 GPU 的算力挖掘极为充分。但它与 NVIDIA 硬件生态深度绑定。

  • Llama.cpp:一款极致轻量化的开源框架,核心优势是支持纯 CPU 推理,无需依赖 GPU,架构简单且部署便捷。它能在嵌入式设备、物联网终端等资源受限环境中运行,成本极低。其推理速度较慢,仅适合边缘计算、低负载的基础推理任务,比如嵌入式设备上的简单问答功能。

  • Ollama:主打轻量化、零配置部署,适配 Windows、Mac、Linux 等主流桌面系统。普通开发者无需复杂配置,就能快速在个人电脑上运行 Llama、Mistral 等常见大模型,适合个人验证模型效果、快速做小范围原型测试,不过性能上难以满足大规模并发需求。

  • LMDeploy:针对国产 GPU 做了深度优化,同时具备多模态处理优势。解决了国内企业在特定硬件环境下的部署适配问题,适合国内政府机构、企业在国产算力平台上部署大模型。

轻量化微调框架

全量微调大模型需消耗大量算力和显存,这类框架通过参数高效微调技术,仅训练模型的少量参数就能实现性能提升,大幅降低微调成本。

  • PEFT(Parameter-Efficient Fine-Tuning):Hugging Face 推出的轻量化微调工具库,支持 LoRA、IA³ 等多种主流参数高效微调算法。

  • Unsloth:主打快速轻量化微调,适配 Llama、Mistral 等热门模型。

上层应用平台工具

这类框架不聚焦模型训练或推理的性能优化,而是用于快速搭建基于大模型的复杂应用,解决模型与外部工具、数据源的协同问题。

即聚焦降低用户使用或开发门槛,提供交互界面与应用构建能力

常用的应用平台工具
  • Open WebUI(Ollama Web UI):本质是为 Ollama 等推理框架打造的图形化前端工具,并非独立的推理框架。核心作用是把 Ollama 的命令行操作转化为直观的浏览器界面,同时扩展了更多交互功能。

  • Text-generation-webui:一款适配多推理后端的本地化模型交互 Web 工具,支持对接 llama.cpp、Transformers 等多个底层推理相关工具,核心价值是降低本地模型的使用门槛,提供丰富的交互功能。

  • Dify:是低代码的大模型应用开发平台,不仅能对接底层推理框架,还提供从应用设计到部署的全流程能力,核心目标是让用户快速构建出定制化大模型应用。

对比
对比维度 Ollama Web UI Text-generation-webui Dify 底层推理部署框架(如 vLLM、TensorRT - LLM、Ollama)
核心作用 提供本地化模型的图形化交互界面 提供多格式模型的本地化交互与轻量管理 低代码构建并部署大模型应用 优化模型推理速度、显存利用率,支撑模型运行
是否参与底层计算 否,依赖 Ollama 等框架 否,依赖对接的推理工具 否,调用底层框架 / 模型 API 是,核心负责模型计算与资源调度
核心功能 对话交互、RAG、模型下载管理 多模式对话、参数调节、插件扩展 Prompt 编排、知识库搭建、应用部署 量化优化、批处理、并行计算
目标用户 个人、小团队(注重隐私与易用性) AI 爱好者、开发者(测试多类本地模型) 企业、业务团队、非技术开发者(快速落地应用) 算法工程师、企业运维(优化模型部署性能)

本地运行大模型

本地以 docker 方式运行 Qwen2.5-Math-1.5B-Instruct 大模型,图形化交互界面使用 Text-generation-webui 。

硬件:

  • 以CPU方式运行:32G内存,8 Core AMD CPU,无GPU
  • 以GPU方式运行:46G内存,2 * RTX3090-24G

下载大模型

获取 Qwen2.5-Math-1.5B-Instruct 大模型,
可以从 Hugging Face Hub 或 阿里云魔搭社区(ModelScope)下载。以Hugging Face为例,可以直接 git clone,或从页面手动下载所有模型文件

  • https://huggingface.co/Qwen/Qwen2.5-Math-1.5B-Instruct

  • https://ollama.com/mightykatun/qwen2.5-math

  • https://openi.pcl.ac.cn/cubeai-model-zoo/qwen2.5-math-1.5b-instruct

推荐使用 git lfs 下载大模型

# 查看是否安装 Git LFS
git-lfs --version

# 安装 Git LFS
sudo apt-get install git-lfs -y

# 全局所有仓库启用 LFS(推荐)
git lfs install --global

# 下载 1.5B 版大模型
git lfs clone https://huggingface.co/Qwen/Qwen2.5-Math-1.5B-Instruct

# 下载 7B 版大模型
git lfs clone https://www.modelscope.cn/Qwen/Qwen2.5-Math-7B-Instruct.git

git lfs 是 Git 的扩展,需单独安装,而非 Git 自带命令

大模型文件说明
~/qwen-math-service/models$ tree
.
└── Qwen2.5-Math-1.5B-Instruct
    ├── config.json
    ├── generation_config.json
    ├── LICENSE
    ├── merges.txt
    ├── model.safetensors
    ├── README.md
    ├── tokenizer_config.json
    ├── tokenizer.json
    └── vocab.json

  • model.safetensors:权重文件(核心)

  • tokenizer.json:分词器 完整核心配置文件,定义分词器的核心逻辑,包括词汇表、分词规则和特殊标记。

  • tokenizer_config.json:分词器 辅助配置文件, 主要用于指定分词器的高级选项和运行时参数,适用于特定任务和场景。

  • config.json:模型结构配置文件,定义 1.5B 模型的网络架构

  • generation_config.json:生成式推理配置,定义模型生成文本时的核心参数集

  • vocab.json:辅助词汇映射文件,补充 token 与 ID 的对应关系

代码测试大模型

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer


# 模型来源:from_pretrained 方法默认会从 Hugging Face Hub 下载模型。
# 如果你已经提前下载了模型到本地,可以传递本地路径,例如 model = AutoModelForCausalLM.from_pretrained("./your_local_model_path")。
# 指定本地模型所在的目录路径
model_path = "/app/models/Qwen2.5-Math-1.5B-Instruct"  # 请替换为你的实际路径, eg: Qwen/Qwen2.5-Math-1.5B

# 加载分词器 (Tokenizer)
tokenizer = AutoTokenizer.from_pretrained(model_path)

# 加载模型, 注意:对于BERT这类模型,应使用 `AutoModelForSequenceClassification` 等对应类
model = AutoModelForCausalLM.from_pretrained(
    model_path,
    dtype=torch.float16,      # 半精度节省显存
    device_map="auto",              # 自动分配设备(多GPU情况), 或 cpu
    low_cpu_mem_usage=True,         # 减少CPU内存占用
)

# 准备问题
question = "解方程: x + 2 = 5, 求x的值"

# 处理输入文本, 返回 PyTorch 张量
inputs = tokenizer(question, return_tensors="pt").to(model.device)

# 生成回答
outputs = model.generate(**inputs, max_length=200)
answer = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(f"回答: {answer}")

# 输出
"""
回答: 解方程: x + 2 = 5, 求x的值.
要解方程 \( x + 2 = 5 \) 求 \( x \) 的值,我们需要将 \( x \) 隔离在方程的一边。以下是这样做的步骤:

1. 从给定的方程开始:
   \[
   x + 2 = 5
   \]

2. 为了隔离 \( x \),我们需要去掉方程左边的 \( +2 \)。我们可以通过从方程的两边减去2来实现这一点:
   \[
   x + 2 - 2 = 5 - 2
   \]

3. 简化方程的两边:
   \[
   x = 3
   \]

所以,\( x \) 的值是 \(\boxed{3}\)。
"""

部署服务

项目结构
~/qwen-math-service/
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── runserver.sh
├── models
│     └── Qwen2.5-Math-1.5B-Instruct (下载的大模型)
└── text-generation-webui
    ├── requirements
    ├── server.py
    ├── ...

Dockerfile - cpu 版

# Dockerfile

FROM python:3.11-slim

WORKDIR /app

# 安装系统依赖
RUN apt-get update && apt-get install -y build-essential

# 复制项目文件
COPY . .

# 安装 CPU 版本的 PyTorch
RUN pip install torch torchvision torchaudio \
    --index-url https://download.pytorch.org/whl/cpu

# 安装 text-generation-webui 依赖
RUN pip install -r text-generation-webui/requirements/full/requirements_cpu_only.txt

# 安装服务使用的额外 Python 依赖
RUN pip install -r requirements.txt

# 暴露端口
EXPOSE 7860

Dockerfile - gpu 版

FROM nvidia/cuda:12.8.0-runtime-ubuntu22.04

# 设置环境变量
ENV PYTHONUNBUFFERED=1

WORKDIR /app

# 安装系统依赖
RUN apt update && apt install -y \
    python3 \
    python3-pip \
    python3-venv \
    wget \
    curl \
    build-essential

RUN pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

# 复制项目文件
COPY . .

# 安装 text-generation-webui 依赖
RUN pip3 install -r text-generation-webui/requirements/full/requirements_cpu_only.txt

# 安装服务使用的额外 Python 依赖
RUN pip3 install -r requirements.txt

# 暴露端口
EXPOSE 7860

docker-compose.yml - cpu 版

# docker-compose.yml
version: '3.8'

services:
  textgen-webui:
    image: qwen-math-cpu
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: qwen-math-cpu
    ports:
      - "7860:7860"
    volumes:
      - .:/app
      # - ./models:/app/models
      # - ./text-generation-webui:/app/text-generation-webui
    restart: no
    networks:
      - textgen-network

    # command: sleep 9999999999900
    command: /bin/sh -c "./runserver.sh"
 
networks:
  textgen-network:
    driver: bridge

volumes:
  model-data:
  log-data:

docker-compose.yml - gpu 版

version: '3.8'

services:
  qwen-math:
    image: qwen-math-gpu
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: qwen-math-gpu
    ports:
      - "7860:7860"
    volumes:
      - ./models:/app/models
      - ./text-generation-webui:/app/text-generation-webui
    restart: unless-stopped

    # 关键,宿主机需要安装 sudo apt install -y nvidia-container-toolkit
    gpus: all
  
    networks:
      - textgen-network

    # command: sleep 9999999999900
    command: /bin/sh -c "./runserver.sh"

networks:
  textgen-network:
    driver: bridge

volumes:
  model-data:
  log-data:
  

在 Docker 容器中使用 GPU

在 Docker 容器中使用 gpu, 宿主机需要安装 nvidia-container-toolkit

### 1. 在宿主机安装 nvidia-container-toolkit
# 添加GPG密钥
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
# 配置软件源,注意这里使用的是libnvidia-container的稳定版Debian源
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 更新软件包列表
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit


### 2. 在 docker 容器中验证 GPU 是否可用
# 验证 PyTorch是否能识别CUDA
import torch

torch.__version__
torch.version.cuda
torch.cuda.is_available()

requirements.txt

# Qwen 模型特殊依赖, 流式生成支持
transformers_stream_generator

pyyaml

runserver.sh - cpu 版

cd text-generation-webui

# 运行 text-generation-webui 下的 serve.py 启动脚本
python server.py --listen --listen-host 0.0.0.0 --cpu --model-dir /app/models --model Qwen2.5-Math-1.5B-Instruct

runserver.sh - gpu 版

cd text-generation-webui

# 运行 text-generation-webui 下的 serve.py 启动脚本
python3 server.py --listen --listen-host 0.0.0.0 --model-dir /app/models --model Qwen2.5-Math-7B-Instruct

部署步骤

现在按照以下步骤完成部署:

1. 创建项目目录和文件

mkdir -p ~/qwen-math-service/models
cd ~/qwen-math-service

将上面的 Dockerfiledocker-compose.yml 等内容分别保存到对应文件中。

2. 下载 Text Generation WebUI 代码

git clone https://github.com/oobabooga/text-generation-webui.git .

3. 下载 Qwen2.5-Math-1.5B-Instruct 模型

cd models
git lfs install
git clone https://huggingface.co/Qwen/Qwen2.5-Math-1.5B-Instruct
cd ..

如果网络条件不佳,也可以直接从 Hugging Face 页面手动下载所有模型文件,然后放到 models/ 目录下。

4. 构建和启动服务


# -d 参数表示在后台运行服务。
docker-compose up -d

# 查看服务日志
docker logs -n 100 -f qwen-math-cpu
访问服务

服务启动后,你可以在浏览器中访问:

http://localhost:7860

# 如果要从同一网络的其他设备访问,使用
http://你的主机IP:7860
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐