01. 大语言模型原理
大语言模型(LLM)是基于 Transformer 架构的大规模预训练语言模型。
核心概念:
- Transformer 架构:自注意力机制
- 预训练:在大规模语料上学习语言模式
- 微调(Fine-tuning):适应特定任务
- 提示工程(Prompt Engineering):引导模型输出
代表模型:
- GPT 系列:自回归生成
- BERT 系列:双向编码
- LLaMA:开源大模型
- ChatGLM:中文优化
python
# Transformer 自注意力机制简化实现
import torch
import torch.nn as nn
class SelfAttention(nn.Module):
def __init__(self, embed_size, heads):
super(SelfAttention, self).__init__()
self.embed_size = embed_size
self.heads = heads
self.head_dim = embed_size // heads
self.values = nn.Linear(self.head_dim, self.head_dim, bias=False)
self.keys = nn.Linear(self.head_dim, self.head_dim, bias=False)
self.queries = nn.Linear(self.head_dim, self.head_dim, bias=False)
self.fc_out = nn.Linear(heads * self.head_dim, embed_size)
def forward(self, values, keys, queries, mask):
N = queries.shape[0]
value_len, key_len, query_len = values.shape[1], keys.shape[1], queries.shape[1]
# 分头
values = values.reshape(N, value_len, self.heads, self.head_dim)
keys = keys.reshape(N, key_len, self.heads, self.head_dim)
queries = queries.reshape(N, query_len, self.heads, self.head_dim)
# 注意力分数
energy = torch.einsum("nqhd,nkhd->nhqk", [queries, keys])
attention = torch.softmax(energy / (self.embed_size ** (1/2)), dim=3)
# 加权求和
out = torch.einsum("nhqk,nvhd->nqhd", [attention, values]).reshape(
N, query_len, self.heads * self.head_dim
)
return self.fc_out(out)02. Prompt Engineering
提示工程是设计有效提示(Prompt)以引导 LLM 生成期望输出的技术。
提示技巧:
- 角色设定:让模型扮演特定角色
- 少样本学习:提供示例
- 思维链:引导模型逐步推理
- 结构化输出:指定输出格式
text
# Prompt 示例
# 1. 角色设定
prompt1 = """
你是一位资深的 Python 开发专家。请解释以下代码的功能:
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)
"""
# 2. 少样本学习
prompt2 = """
将以下中文翻译成英文:
中文:我喜欢编程
英文:I like programming
中文:今天天气很好
英文:The weather is nice today
中文:机器学习很有趣
英文:
"""
# 3. 思维链
prompt3 = """
请一步步分析以下问题:
问题:一个水池有两个进水管,A管单独注满需要6小时,B管单独注满需要4小时。
两管同时打开,多久能注满水池?
请按以下步骤分析:
1. 确定A管的注水速率
2. 确定B管的注水速率
3. 计算同时注水的总速率
4. 计算注满时间
"""03. LLM 应用开发
LLM 应用开发的核心是将大模型集成到实际应用中。
主要技术栈:
- API 调用:OpenAI API、Claude API
- 本地部署:Ollama、vLLM
- 应用框架:LangChain、LlamaIndex
- 向量数据库:ChromaDB、Milvus
python
from openai import OpenAI
client = OpenAI(api_key="your-api-key")
# 基本对话
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "什么是机器学习?"}
],
temperature=0.7,
max_tokens=500
)
print(response.choices[0].message.content)
# 流式响应
stream = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "写一首关于编程的诗"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")知识测验
第 1/5 题正确 0
Transformer 架构的核心机制是什么?
下一节
下一节 AI Agent