Appearance
第13天:国内大模型详解
学习目标
本节将带领读者了解国内主流大模型,掌握文心一言、通义千问、混元、豆包、GLM、Kimi、DeepSeek、Yi的特点,对比国内大模型的差异,并能够调用国内大模型API。
课程内容
1. 文心一言(百度)
1.1 模型概述
文心一言是百度开发的大语言模型,于2023年3月发布,采用ERNIE(Enhanced Representation through Knowledge Integration)架构,参数量估计为千亿级。其核心特点包括知识增强预训练、多模态能力、中文优化、企业级应用等,特别适合中文场景和企业级应用。
1.2 架构特点
ERNIE架构:
python
class ERNIEEncoderLayer(nn.Module):
def __init__(self, d_model, nhead, d_ff, dropout=0.1):
super().__init__()
# 知识增强注意力
self.knowledge_attn = KnowledgeEnhancedAttention(d_model, nhead)
# 自注意力
self.self_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout)
# 前馈网络
self.ffn = nn.Sequential(
nn.Linear(d_model, d_ff),
nn.ReLU(),
nn.Dropout(dropout),
nn.Linear(d_ff, d_model)
)
# 层归一化
self.norm1 = nn.LayerNorm(d_model)
self.norm2 = nn.LayerNorm(d_model)
self.norm3 = nn.LayerNorm(d_model)
# Dropout
self.dropout1 = nn.Dropout(dropout)
self.dropout2 = nn.Dropout(dropout)
self.dropout3 = nn.Dropout(dropout)
def forward(self, x, knowledge_mask=None, attention_mask=None):
"""
Args:
x: 输入 [batch_size, seq_len, d_model]
knowledge_mask: 知识掩码
attention_mask: 注意力掩码
Returns:
output: 输出 [batch_size, seq_len, d_model]
"""
# 知识增强注意力
knowledge_output = self.knowledge_attn(x, knowledge_mask)
x = x + self.dropout1(knowledge_output)
x = self.norm1(x)
# 自注意力
attn_output, _ = self.self_attn(x, x, x, key_padding_mask=attention_mask)
x = x + self.dropout2(attn_output)
x = self.norm2(x)
# 前馈网络
ffn_output = self.ffn(x)
x = x + self.dropout3(ffn_output)
x = self.norm3(x)
return x
class KnowledgeEnhancedAttention(nn.Module):
def __init__(self, d_model, nhead):
super().__init__()
self.d_model = d_model
self.nhead = nhead
# 知识查询
self.knowledge_query = nn.Linear(d_model, d_model)
# 知识键
self.knowledge_key = nn.Linear(d_model, d_model)
# 知识值
self.knowledge_value = nn.Linear(d_model, d_model)
def forward(self, x, mask=None):
"""
Args:
x: 输入 [batch_size, seq_len, d_model]
mask: 知识掩码
Returns:
output: 知识增强输出 [batch_size, seq_len, d_model]
"""
batch_size, seq_len, _ = x.shape
# 计算知识Q、K、V
Q = self.knowledge_query(x)
K = self.knowledge_key(x)
V = self.knowledge_value(x)
# 计算注意力分数
scores = torch.matmul(Q, K.transpose(-2, -1))
scores = scores / torch.sqrt(torch.tensor(self.d_model, dtype=torch.float32))
# 应用掩码
if mask is not None:
scores = scores.masked_fill(mask == 0, -1e9)
# 计算注意力权重
weights = F.softmax(scores, dim=-1)
# 计算输出
output = torch.matmul(weights, V)
return output1.3 API调用
安装SDK:
bash
pip install qianfan调用示例:
python
import qianfan
# 初始化客户端
client = qianfan.ChatCompletion(
ak="your-access-key",
sk="your-secret-key"
)
# 调用模型
response = client.do(
model="ERNIE-Bot-4",
messages=[
{"role": "user", "content": "请介绍一下文心一言"}
],
temperature=0.7,
top_p=0.9,
max_output_tokens=1000
)
# 获取结果
print(response["result"])流式输出:
python
# 流式调用
response = client.do(
model="ERNIE-Bot-4",
messages=[
{"role": "user", "content": "请写一首关于春天的诗"}
],
stream=True
)
for chunk in response:
print(chunk["result"], end="", flush=True)1.4 应用场景
适合场景:
文心一言适合的场景包括知识问答、文本生成、代码生成、多模态理解、企业应用等方面。在这些场景下,文心一言能够提供高质量的服务。
不适合场景:
文心一言不适合的场景包括实时对话(延迟较高)、长文本处理(上下文限制)等方面。在这些场景下,文心一言的性能可能无法满足需求。
2. 通义千问(阿里)
2.1 模型概述
基本信息:
通义千问的基本信息包括开发者(阿里云)、发布时间(2023年4月)、架构(Transformer Decoder)、参数量(72B(Qwen-72B))等方面。
核心特点:
通义千问的核心特点包括多尺寸模型系列、强大的中文能力、开源友好、多模态支持等方面。
2.2 模型系列
Qwen系列:
Qwen系列包括Qwen-0.5B(超轻量级)、Qwen-1.8B(轻量级)、Qwen-7B(小型)、Qwen-14B(中型)、Qwen-72B(大型)、Qwen-110B(超大型)等版本。
Qwen-VL:多模态版本
2.3 API调用
安装SDK:
bash
pip install dashscope调用示例:
python
from dashscope import Generation
# 配置API Key
import dashscope
dashscope.api_key = "your-api-key"
# 调用模型
response = Generation.call(
model="qwen-max",
prompt="请介绍一下通义千问",
max_tokens=1000,
temperature=0.7,
top_p=0.9
)
# 获取结果
print(response.output.text)流式输出:
python
# 流式调用
response = Generation.call(
model="qwen-max",
prompt="请写一个Python函数计算斐波那契数列",
stream=True,
result_format='message'
)
for chunk in response:
if chunk.output.choices:
print(chunk.output.choices[0].message.content, end="", flush=True)2.4 本地部署
使用Hugging Face:
python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# 加载模型
model_name = "Qwen/Qwen-7B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
trust_remote_code=True
).eval()
# 生成文本
prompt = "请介绍一下通义千问"
inputs = tokenizer(prompt, return_tensors="pt")
inputs = inputs.to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=500,
temperature=0.7,
top_p=0.9
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)2.5 应用场景
适合场景:
通义千问的适合场景包括代码生成、文本生成、知识问答、多语言处理、本地部署等方面。
3. 混元(腾讯)
3.1 模型概述
基本信息:
混元的基本信息包括开发者(腾讯)、发布时间(2023年9月)、架构(Transformer)、参数量(未公开)等方面。
核心特点:
混元的核心特点包括多模态能力、腾讯生态集成、企业级服务、中文优化等方面。
3.2 API调用
调用示例:
python
import requests
import json
# 配置
url = "https://hunyuan.tencentcloudapi.com/"
secret_id = "your-secret-id"
secret_key = "your-secret-key"
# 请求
payload = {
"Model": "hunyuan-lite",
"Messages": [
{
"Role": "user",
"Content": "请介绍一下混元大模型"
}
],
"Stream": False
}
# 发送请求
response = requests.post(
url,
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {secret_id}.{secret_key}"
},
data=json.dumps(payload)
)
# 获取结果
result = response.json()
print(result["Response"]["Reply"])3.3 应用场景
适合场景:
混元的适合场景包括腾讯生态应用、多模态处理、企业服务、内容生成等方面。
4. 豆包(字节跳动)
4.1 模型概述
基本信息:
豆包的基本信息包括开发者(字节跳动)、发布时间(2023年)、架构(Transformer)、参数量(未公开)等方面。
核心特点:
豆包的核心特点包括对话能力强、推荐算法结合、多模态支持、移动端优化等方面。
4.2 API调用
调用示例:
python
import requests
import json
# 配置
url = "https://ark.cn-beijing.volces.com/api/v3/chat/completions"
api_key = "your-api-key"
# 请求
payload = {
"model": "ep-2024xxxx",
"messages": [
{
"role": "user",
"content": "请介绍一下豆包大模型"
}
],
"temperature": 0.7,
"max_tokens": 1000
}
# 发送请求
response = requests.post(
url,
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
},
data=json.dumps(payload)
)
# 获取结果
result = response.json()
print(result["choices"][0]["message"]["content"])4.3 应用场景
适合场景:
豆包的适合场景包括对话系统、内容推荐、短视频生成、移动应用等方面。
5. GLM(智谱AI)
5.1 模型概述
基本信息:
GLM的基本信息包括开发者(智谱AI(清华大学))、发布时间(2023年)、架构(GLM(General Language Model))、参数量(130B(GLM-130B))等方面。
核心特点:
GLM的核心特点包括自研架构、开源友好、多模态支持、强大的中文能力等方面。
5.2 GLM架构
GLM架构特点:
python
class GLMDecoderLayer(nn.Module):
def __init__(self, d_model, nhead, d_ff, dropout=0.1):
super().__init__()
# 双向注意力(编码器)
self.bilateral_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout)
# 自回归注意力(解码器)
self.autoregressive_attn = nn.MultiheadAttention(d_model, nhead, dropout=dropout)
# 前馈网络
self.ffn = nn.Sequential(
nn.Linear(d_model, d_ff),
nn.GELU(),
nn.Dropout(dropout),
nn.Linear(d_ff, d_model)
)
# 层归一化
self.norm1 = nn.LayerNorm(d_model)
self.norm2 = nn.LayerNorm(d_model)
self.norm3 = nn.LayerNorm(d_model)
# Dropout
self.dropout1 = nn.Dropout(dropout)
self.dropout2 = nn.Dropout(dropout)
self.dropout3 = nn.Dropout(dropout)
def forward(self, x, mask=None):
"""
Args:
x: 输入 [batch_size, seq_len, d_model]
mask: 注意力掩码
Returns:
output: 输出 [batch_size, seq_len, d_model]
"""
# 双向注意力
bilateral_output, _ = self.bilateral_attn(x, x, x, key_padding_mask=mask)
x = x + self.dropout1(bilateral_output)
x = self.norm1(x)
# 自回归注意力
causal_mask = torch.triu(torch.ones(x.size(1), x.size(1)), diagonal=1)
causal_mask = causal_mask.masked_fill(causal_mask == 1, float('-inf'))
autoregressive_output, _ = self.autoregressive_attn(x, x, x, attn_mask=causal_mask)
x = x + self.dropout2(autoregressive_output)
x = self.norm2(x)
# 前馈网络
ffn_output = self.ffn(x)
x = x + self.dropout3(ffn_output)
x = self.norm3(x)
return x5.3 API调用
安装SDK:
bash
pip install zhipuai调用示例:
python
from zhipuai import ZhipuAI
# 初始化客户端
client = ZhipuAI(api_key="your-api-key")
# 调用模型
response = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "user", "content": "请介绍一下GLM大模型"}
],
temperature=0.7,
max_tokens=1000
)
# 获取结果
print(response.choices[0].message.content)流式输出:
python
# 流式调用
response = client.chat.completions.create(
model="glm-4",
messages=[
{"role": "user", "content": "请写一个Python冒泡排序"}
],
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)5.4 本地部署
使用Hugging Face:
python
from transformers import AutoTokenizer, AutoModel
import torch
# 加载模型
model_name = "THUDM/chatglm3-6b"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModel.from_pretrained(
model_name,
trust_remote_code=True
).half().cuda()
model = model.eval()
# 生成文本
response, history = model.chat(tokenizer, "请介绍一下GLM大模型", history=[])
print(response)5.5 应用场景
适合场景:
GLM的适合场景包括代码生成、知识问答、文本生成、多模态处理、本地部署等方面。
6. Kimi(月之暗面)
6.1 模型概述
基本信息:
Kimi的基本信息包括开发者(月之暗面)、发布时间(2023年)、架构(Transformer)、参数量(未公开)等方面。
核心特点:
Kimi的核心特点包括超长上下文(200万token)、强大的记忆能力、多模态支持、文件处理能力强等方面。
6.2 API调用
调用示例:
python
import requests
import json
# 配置
url = "https://api.moonshot.cn/v1/chat/completions"
api_key = "your-api-key"
# 请求
payload = {
"model": "moonshot-v1-128k",
"messages": [
{
"role": "user",
"content": "请介绍一下Kimi大模型"
}
],
"temperature": 0.7,
"max_tokens": 1000
}
# 发送请求
response = requests.post(
url,
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
},
data=json.dumps(payload)
)
# 获取结果
result = response.json()
print(result["choices"][0]["message"]["content"])6.3 文件上传
上传文件:
python
# 上传文件
files = {
"file": ("document.pdf", open("document.pdf", "rb"), "application/pdf")
}
response = requests.post(
"https://api.moonshot.cn/v1/files",
headers={
"Authorization": f"Bearer {api_key}"
},
files=files
)
file_id = response.json()["id"]
# 使用文件
payload = {
"model": "moonshot-v1-128k",
"messages": [
{
"role": "system",
"content": "你是一个文档分析助手"
},
{
"role": "user",
"content": f"请分析这个文件:file://{file_id}"
}
]
}
response = requests.post(
url,
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
},
data=json.dumps(payload)
)
print(response.json()["choices"][0]["message"]["content"])6.4 应用场景
适合场景:
Kimi的适合场景包括长文档处理、知识库问答、文件分析、多轮对话、复杂推理等方面。
7. DeepSeek(深度求索)
7.1 模型概述
基本信息:
DeepSeek的基本信息包括开发者(深度求索)、发布时间(2023年)、架构(Transformer + MoE)、参数量(67B(DeepSeek-V2))等方面。
核心特点:
DeepSeek的核心特点包括MoE架构、开源友好、强大的代码能力、高性价比等方面。
7.2 API调用
调用示例:
python
import requests
import json
# 配置
url = "https://api.deepseek.com/chat/completions"
api_key = "your-api-key"
# 请求
payload = {
"model": "deepseek-chat",
"messages": [
{
"role": "user",
"content": "请介绍一下DeepSeek大模型"
}
],
"temperature": 0.7,
"max_tokens": 1000
}
# 发送请求
response = requests.post(
url,
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {api_key}"
},
data=json.dumps(payload)
)
# 获取结果
result = response.json()
print(result["choices"][0]["message"]["content"])7.3 本地部署
使用Hugging Face:
python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# 加载模型
model_name = "deepseek-ai/DeepSeek-V2.5"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype=torch.float16
)
# 生成文本
prompt = "请介绍一下DeepSeek大模型"
inputs = tokenizer(prompt, return_tensors="pt")
inputs = inputs.to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=500,
temperature=0.7,
top_p=0.9
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)7.4 应用场景
适合场景:
DeepSeek的适合场景包括代码生成、数学推理、知识问答、本地部署、高性价比应用等方面。
8. Yi(零一万物)
8.1 模型概述
基本信息:
Yi的基本信息包括开发者(零一万物)、发布时间(2023年)、架构(Transformer)、参数量(34B(Yi-34B))等方面。
核心特点:
Yi的核心特点包括多尺寸模型、开源友好、多语言支持、强大的中文能力等方面。
8.2 模型系列
Yi系列:
Yi系列包括Yi-6B(小型)、Yi-9B(中型)、Yi-34B(大型)、Yi-VL(多模态版本)等版本。
8.3 本地部署
使用Hugging Face:
python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# 加载模型
model_name = "01-ai/Yi-34B-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype=torch.float16,
trust_remote_code=True
)
# 生成文本
prompt = "请介绍一下Yi大模型"
inputs = tokenizer(prompt, return_tensors="pt")
inputs = inputs.to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=500,
temperature=0.7,
top_p=0.9
)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)8.4 应用场景
适合场景:
Yi的适合场景包括文本生成、知识问答、多语言处理、本地部署、开源应用等方面。
实践任务
任务:调用5个国内模型API对比
目标:调用5个国内大模型API,对比输出结果
要求:
- 选择5个国内大模型
- 准备相同的输入
- 调用API获取输出
- 对比分析结果
代码框架:
python
import requests
import json
# 配置
models = {
"文心一言": {
"url": "https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions",
"api_key": "your-api-key",
"model": "ERNIE-Bot-4"
},
"通义千问": {
"url": "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation",
"api_key": "your-api-key",
"model": "qwen-max"
},
"GLM": {
"url": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
"api_key": "your-api-key",
"model": "glm-4"
},
"Kimi": {
"url": "https://api.moonshot.cn/v1/chat/completions",
"api_key": "your-api-key",
"model": "moonshot-v1-128k"
},
"DeepSeek": {
"url": "https://api.deepseek.com/chat/completions",
"api_key": "your-api-key",
"model": "deepseek-chat"
}
}
# 准备输入
prompt = "请用Python写一个快速排序算法"
# 调用模型
results = {}
for model_name, config in models.items():
try:
payload = {
"model": config["model"],
"messages": [
{"role": "user", "content": prompt}
],
"temperature": 0.7,
"max_tokens": 1000
}
response = requests.post(
config["url"],
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {config['api_key']}"
},
data=json.dumps(payload)
)
result = response.json()
results[model_name] = result["choices"][0]["message"]["content"]
print(f"{model_name}调用成功")
except Exception as e:
print(f"{model_name}调用失败: {e}")
results[model_name] = None
# 对比结果
for model_name, result in results.items():
print(f"\n{'='*50}")
print(f"{model_name}:")
print(f"{'='*50}")
print(result)课后作业
作业1:国内大模型对比表
题目:创建国内大模型对比表
要求:
- 对比文心一言、通义千问、混元、豆包、GLM、Kimi、DeepSeek、Yi
- 从架构、参数量、特点、API价格、应用场景等方面对比
- 生成对比报告
作业2:模型性能测试
题目:测试国内大模型的性能
要求:
- 设计测试任务(代码生成、文本生成、知识问答等)
- 测试不同模型的表现
- 分析性能差异
作业3:成本分析
题目:分析国内大模型的使用成本
要求:
- 调研各模型的API价格
- 计算不同使用场景的成本
- 提供成本优化建议
参考资料
官方文档
- 文心一言: https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html
- 通义千问: https://help.aliyun.com/zh/dashscope/
- GLM: https://open.bigmodel.cn/dev/api
- Kimi: https://platform.moonshot.cn/docs
- DeepSeek: https://platform.deepseek.com/api-docs/
开源模型
- Qwen: https://huggingface.co/Qwen
- GLM: https://huggingface.co/THUDM
- Yi: https://huggingface.co/01-ai
- DeepSeek: https://huggingface.co/deepseek-ai
在线资源
ModelScope: https://modelscope.cn/
- 阿里模型库
WiseModel: https://wisemodel.cn/
- 智谱模型库
扩展阅读
模型评估
模型评估基准包括C-Eval(中文大模型评估基准)、CMMLU(中文多任务语言理解)、AGIEval(通用智能评估)等。
模型优化
模型优化技术包括量化(减少模型大小)、蒸馏(知识迁移)、微调(适配特定任务)等方法。
下节预告
下一节我们将学习国外大模型详解,深入了解GPT、Claude、Gemini、Llama等国外大模型的特点和应用。

扫描二维码关注"架构师AI杜"公众号,获取更多技术内容和最新动态
