什么是大模型
**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 官网