|
**LLM(Large Language Model,大语言模型)**
在自然语言处理(NLP)分支中,LLM 指基于机器学习技术、在海量文本数据上训练得到的模型,
能够学习并理解自然语言的复杂结构和模式。
核心思想:利用大规模的无监督学习捕捉语言的统计规律和语义特征,
从而执行文本生成、问答、翻译、摘要等多种任务。
由于通常基于 Transformer 架构并在超大数据集上预训练,
它们展现出对自然语言的深刻理解和生成能力,甚至表现出一定的逻辑推理和常识应用能力。
知名代表:OpenAI 的 GPT 系列、Meta 的 LLaMA、智谱的 GLM、深度求索的 DeepSeek 等。
**使用形态的区分**
- ChatGPT 类产品:面向终端用户的聊天界面(Web 产品),可直接交互
- OpenAI API 类接口:面向开发者的模型服务,用于把 AI 能力集成进各种应用
- 注意:注册了聊天产品账号,不代表可以直接免费使用 API(通常仅赠送少量额度)
|
|
**核心原理:其实就是"超级接话"游戏**
大模型生成文本的本质是**自回归(Autoregressive)概率预测**:
给定上文所有 token,预测下一个 token 的概率分布,采样出一个,再把它拼回上文,循环往复。
$$P(w_1, w_2, \dots, w_n) = \prod_{t=1}^{n} P(w_t \mid w_1, w_2, \dots, w_{t-1})$$
每步从概率分布中采样,采样的"随机性"由 temperature、top-p 等参数控制:
$$p_i = \frac{e^{z_i / T}}{\sum_j e^{z_j / T}}$$
- T(temperature)越小,分布越尖锐,输出越确定(适合任务型场景)
- T 越大,分布越平坦,输出越发散(适合创意型场景)
**这套生成机制的内核叫 Transformer 架构**
| 架构 | 出品方 | 特点 |
|------|--------|------|
| Transformer | Google | 最流行,几乎所有大模型都用它;目前唯一被证明符合 scaling-law |
| RWKV | PENG Bo | 可并行训练,推理性能极佳,适合端侧 |
| Mamba | CMU & Princeton | 性能更佳,尤其适合长文本生成 |
scaling-law(规模定律):模型损失随参数量 N、数据量 D、算力 C 的增长呈幂律下降:
$$L(N, D) \approx \left(\frac{N_c}{N}\right)^{\alpha_N} + \left(\frac{D_c}{D}\right)^{\alpha_D} + L_\infty$$
这解释了"规模就是一切"的工程路线为何有效。
|
|
**参数"B"的含义**
"B" 代表 "Billion"(十亿),用于量度模型中参数的数量。每个参数存储模型的权重或偏置。
| 标注 | 参数量 |
|------|--------|
| 1.5B | 约 15 亿 |
| 7B / 13B | 约 70 亿 / 130 亿 |
| 70B | 约 700 亿 |
| 175B(GPT-3) | 约 1750 亿 |
参数越多,模型通常能理解和生成更复杂、更自然的语言,但显存与算力开销也同步上升。
经验估算:**推理显存 ≈ 参数量 × 每参数字节数**(BF16/FP16 为 2 字节,FP8 为 1 字节,INT4 为 0.5 字节)。
$$\text{显存}_{\text{权重}} \approx N_{\text{params}} \times b_{\text{bytes}}$$
例如 7B 模型 FP16 推理约需 14GB 显存,量化到 Q4 后约 4GB。
|
|
**大模型的两大缺陷**
1. **并非知晓一切**
- 训练数据不可能什么都有,垂直、非公开数据必有欠缺
- 不知道最新信息:训练周期长、更新耗资巨大,不可能实时训练
(如 GPT-3.5 知识截至 2021 年 9 月,GPT-4 截至 2023 年 12 月)
2. **没有"真逻辑"**
- 它表现出的逻辑推理是训练文本的统计规律,而不是真正的逻辑,所以有"幻觉"
- 例:把 100 以内所有加法算式都训练给大模型,它能回答 100 以内的加法,但仍有概率出错;
问更大数字的加法,出错概率更大——它并不懂"加法",只是记住了统计规律,是"用字面意义做数学"
**结论**:大模型需要连接真实世界(RAG),并对接真逻辑系统(Function Calling / 工具)。
数学能力最强的软件系统是 Wolfram Alpha,其原理与大模型完全不同,推荐阅读
《Wolfram|Alpha as the Way to Bring Computational Knowledge Superpowers to ChatGPT》。
|
|
**safetensors** —— Hugging Face 提出的安全、高效的模型权重存储格式,
旨在替代传统的 PyTorch .pt / .pth 文件,解决 pickle 反序列化可能执行恶意代码的安全漏洞。
核心特点:
1. **安全性**:仅存储张量数据,不含可执行代码;限制文件头大小与内存访问范围,防内存溢出攻击
2. **高效加载**:零拷贝(mmap 内存直接映射),Linux 上加载速度比 PyTorch 快约 2 倍;支持惰性加载部分张量
3. **跨框架**:支持 PyTorch、TensorFlow 等,主要集成于 Hugging Face 生态
4. **局限**:不含模型元数据(架构、超参数),依赖外部配置文件;量化支持较弱
|
|
**.gguf(GPT-Generated Unified Format)** —— 由 llama.cpp 创始人 Georgi Gerganov 设计,
专为 LLM 推理优化,是 GGML 的继任者。通过二进制编码 + 内存映射显著提升加载效率,并支持量化。
核心特点:
- **内存映射(mmap)**:直接从磁盘映射到内存,减少占用与启动时间,尤其适合 CPU 推理
- **单文件部署**:包含全部元数据(架构、超参数、分词器),无需额外依赖文件
- **量化支持**:2~8 位多种量化方案(如 Q4_K、Q5_K、Q8_0),
70B 模型可从 140GB 压到约 20GB;文件名通常以 `q4_k_m.gguf` 形式命名
- **应用场景**:LLaMA / Gemma / Qwen 等模型的本地推理,Hugging Face 上有超 6000 个 GGUF 模型
|
|
| 特性 | .safetensors | .gguf |
|------|--------------|-------|
| 核心目标 | 安全存储与快速加载张量 | 高效加载大模型 + 量化支持 |
| 安全性 | 高(无代码执行风险) | 中等(依赖二进制解析安全性) |
| 元数据 | 无 | 包含完整元数据 |
| 量化支持 | 无 | 多级量化方案 |
| 适用场景 | 通用模型共享、HF 生态 | 大模型推理、低资源设备 |
| 主要生态 | Hugging Face | llama.cpp、Hugging Face |
经验:**能不用量化就不用**——量化不如原精度效果好;资源有限时量化是可用折中。
注意:ollama 里的模型格式与原生模型不同,想做微调需下载原生(safetensors)权重,只做推理则无所谓。
|
|
用 micromamba 建独立环境(执行前请先关闭代理):
```bash
micromamba create -n llm1 python=3.11
micromamba activate llm1
micromamba run -n llm1 mycommand
export PATH=/wks/python/micromamba/envs/llm1/bin:$PATH
```
PDF 检索学习环境(llm_pdf)示例:
```bash
micromamba activate llm_pdf
micromamba install -c pytorch -c conda-forge pytorch torchaudio torchvision
# 基础依赖
micromamba install python-dotenv openai -c conda-forge
# LLM 核心库(含 faiss-cpu)
micromamba install faiss-cpu chromadb langchain langchain-openai \
langchain-community langchain-text-splitters -c conda-forge
# 需要用 pip 安装的
pip install pysqlite3-binary
pip install langchain-faiss
# 常用 LLM 开发依赖
micromamba install numpy pandas fastapi uvicorn streamlit -c conda-forge
micromamba install llama-index transformers unstructured pypdf python-docx markdown -c conda-forge
# Jupyter
micromamba install jupyter jupyter_contrib_nbextensions -c conda-forge
```
|
|
常用 pip 依赖一览:
```bash
pip install --upgrade openai
pip install python-dotenv
pip install chromadb
pip install pysqlite3-binary
pip install elasticsearch7
pip install --upgrade langchain
pip install --upgrade langchain-openai
pip install langchain_community
pip install qianfan # 百度千帆
```
nltk(文本处理):
```python
pip install nltk
import nltk
nltk.download('punkt') # 英文切词、词根、切句
nltk.download('stopwords') # 英文停用词库
```
|
|
Windows 上用 docker 搭 LLM 开发环境(nvidia 官方 PyTorch 镜像,已带 CUDA + ubuntu):
```bash
docker network create --subnet=192.168.73.0/24 mydk
docker run -itd --privileged --name llm -h llm --net=mydk --ip 192.168.73.11 \
-p 6006:6006 -p 8888:8888 -p 8080:8080 -p 8008:8008 \
--gpus all -v /C/wks:/opt/wks -v /D/soft:/opt/soft -v /D/app:/opt/app \
-e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all \
nvcr.io/nvidia/pytorch:23.10-py3 bash
docker exec -it llm bash
```
要点:
- 这种 docker 本质还是 WSL 系统,与真实 linux 服务器的 docker 有差异(如编译安装 vllm 时)
- 镜像内验证:`nvidia-smi` 能看到 GPU 即可
- 容器内补常用工具:`apt install sudo curl git git-lfs net-tools vim cmake`
- 双环境建议:容器内再放一套 anaconda3(`sh Anaconda3-2024.02-1-Linux-x86_64.sh`),
jupyter 环境与 conda 环境分离
|
|
**hf-mirror**:https://hf-mirror.com/ ,用于镜像 huggingface.co 域名,国内直连。
Hugging Face 官方命令行工具 huggingface-cli 自带完善的下载功能。
|
|
```bash
# 1. 安装依赖
pip install -U huggingface_hub
# 2. 设置环境变量(建议写入 ~/.bashrc)
# Linux
export HF_ENDPOINT=https://hf-mirror.com
# Windows Powershell
$env:HF_ENDPOINT = "https://hf-mirror.com"
# 3.1 下载模型
huggingface-cli download --resume-download gpt2 --local-dir gpt2
# 3.2 下载数据集
huggingface-cli download --repo-type dataset --resume-download wikitext --local-dir wikitext
```
|
|
非侵入式,能解决大部分情况:huggingface 工具链会读取 HF_ENDPOINT 环境变量确定下载地址:
```bash
HF_ENDPOINT=https://hf-mirror.com python your_script.py
```
大文件模型也可走 git-lfs(modelscope 同理):
```bash
sudo apt install git-lfs
git lfs install
git clone https://www.modelscope.cn/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B.git
```
|
Huggingface 镜像站
Ollama 官网
vLLM 官网