返回首页

大语言模型:基础与实践

本文解释了语言模型从 n-grams 到基于 transformers 的 LLM 的演变。描述了 tokens、参数、instruct 和多模态版本。提供在 Colab 中启动 Qwen 的代码以供实践。

从零开始的 LLM:Transformers、Tokens、启动 Qwen
Advertisement 728x90

大型语言模型基础:从原理到实践

语言模型根据上下文估计下一个词元的概率:P(w_t | w_1, ..., w_{t-1})。这是包括 LLM 在内的所有现代系统的核心原理。

发展经历了三个阶段:

  • 统计 n-gram:统计 2–3 个词序列的频率。速度快,但忽略长距离上下文和语义。
  • 向量嵌入(word2vec、GloVe):将词表示为多维空间中的点,距离反映语义相似度。
  • Transformer:注意力机制允许考虑远处词元之间的连接,实现深度文本理解。

Transformer 构成了能够生成连贯文本的 LLM 的基础。

Google AdInline article slot

大型语言模型的规模

LLM 在规模上有所不同:训练数据达数千亿个词元,参数量从 7B 到 175B。参数是神经网络权重,用于捕捉语言的统计模式。

7B–14B 的模型可以在 GPU 上以量化形式本地运行。更大的模型需要集群。在大规模下,LLM 不仅捕捉语言知识,还从文本中编码事实到逻辑等知识。这些是聊天机器人、分析和生成的基础模型。

指令调优和对话式 LLM

基础 LLM 预测词元,但并不总是严格遵循任务。指令模型在指令-响应对上进行微调,并使用 RLHF:通过人类评估来塑造礼貌和一致性的偏好。

Google AdInline article slot

结果:像 ChatGPT、Claude、Gemini 这样的对话系统。它们能澄清查询、结构化响应,并解释推理过程。

分词和上下文窗口

LLM 使用词元工作——子词单元(词、词素、标点)。分词器从语料库构建词汇表,通过合并频繁序列。

过程:

Google AdInline article slot
  • 文本 → 词元。
  • 词元 → 嵌入。
  • 输入到模型。

上下文窗口——词元限制(例如,128k)。API 费用和生成按词元计费。单词长度 ≠ 词元数。

关键生成参数

  • Temperature:控制随机性。低(0.1–0.3)——确定性响应。高(0.8+)——创造性,但有产生幻觉的风险。
  • Max tokens:输出限制,防止无限生成。

参数根据任务进行调优:生产环境中注重稳定性,头脑风暴中注重多样性。

LLM 中的多模态

多模态模型整合文本、图像、音频、视频。不同模态的词元被投影到共享空间。

示例:GPT-4o、Gemini、Claude 3。能力:

  • 图像描述。
  • 图表/表格分析。
  • 对视觉查询的响应。

这将 LLM 扩展为通用系统。

实践:在 Google Colab 中运行 Qwen

用于实验,可选择开源模型。Qwen2.5-3B-Instruct——纯文本,Qwen2.5-VL-3B-Instruct——多模态。质量低于专有模型,但足以用于原型开发。

文本模型

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import textwrap

model_name = "Qwen/Qwen2.5-3B-Instruct"

tokenizer = AutoTokenizer.from_pretrained(model_name)

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)

prompt = "Explain prostymi slovami, that takoe bolshaya yazykovaya model."

inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

outputs = model.generate(
    **inputs,
    max_new_tokens=150,
    temperature=0.7
)

generated_tokens = outputs[0][inputs["input_ids"].shape[-1]:]
answer = tokenizer.decode(generated_tokens, skip_special_tokens=True)
print()
print(textwrap.fill(answer.strip(), width=80))

输出展示了尽管只有 3B 参数,仍能给出连贯的解释。

多模态模型

同样,加载 Qwen2.5-VL-3B-Instruct 并将图像作为输入。

关键要点

  • LLM 从 n-gram 演变为带有注意力的 Transformer。
  • 规模(参数、数据)带来涌现能力和知识。
  • 指令调优 + RLHF 确保任务遵循。
  • 词元定义限制:上下文窗口、成本。
  • 多模态将各种模态统一到一个空间。

— Editorial Team

Advertisement 728x90

继续阅读