百度开源文心 4.5 系列开源大模型 GitCode 本地化部署,硅基流动:文心 vs. DeepSeek vs. Qwen 3.0 深度测评
文章目录
- 百度开源文心 4.5 系列开源大模型 GitCode 本地化部署,硅基流动:文心 vs. DeepSeek vs. Qwen 3.0 深度测评
- 背景
- 百度开源文心 4.5 系列开源大模型介绍
- GitCode 部署 ERNIE-4.5-300B-A47B
- Streamlit 库开发Web UI 页面
- 文心 vs. DeepSeek / Qwen 3.0 深度解析
- 文心 vs. DeepSeek
- 基础文本理解与生成
- 复杂逻辑推理
- 专业知识适配
- 文心 vs. Qwen 3.0
- 基础文本理解与生成
- 复杂逻辑推理
- 专业知识适配
- 评测总结
- 文心 vs. DeepSeek vs. Qwen 3.0 总结
- 总结
背景
百度在 GitCode 发布文心大模型 4.5 系列开源模型,涵盖从数亿到数百亿参数规模。其针对 MoE 架构提出创新多模态异构结构,适用于从大语言模型向多模态模型的持续预训练,能显著增强多模态理解能力,在文本和多模态任务上刷新多项基准测试记录,该系列模型均用飞桨框架训练、推理和部署,模型 FLOPs 利用率达 47%,以 Apache 2.0 协议开源,助力学术研究与产业应用 。
百度开源文心 4.5 系列开源大模型介绍
百度开源文心 4.5 系列模型类型丰富,包括基于飞桨框架的 Base-Paddle、Paddle,以及基于 PyTorch 框架的 Base-PT、PT ,还有多种参数量与架构各异的文本及多模态模型,像拥有 MoE 架构、参数量达 3000 亿总参用于复杂文本理解与生成的 ERNIE-4.5-300B-A47B ,424 亿总参实现图文交互的多模态模型 ERNIE-4.5-VL-424B-A47B 等,分别适用于从基于不同框架二次开发的通用场景,到复杂文本、跨模态任务,再到移动端等资源受限场景的各类需求
- 模型类别划分:按类型分 MoE 模型、大语言模型(LLMs )、视觉语言模型(VLMs )、稠密型模型,覆盖不同技术路线与应用场景,大语言模型专注文本交互,视觉语言模型支持文本、图像、视频多模态输入,满足多样需求
- 功能特性呈现:明确各模型输入输出模态,大语言模型和稠密型模型多为文本输入输出,视觉语言模型可处理图像、视频等多模态,且部分模型上下文窗口达 128K,体现长文本处理能力,助力理解复杂、长篇内容,为技术选型(如多模态场景选视觉语言模型 )、应用开发(依输入输出需求匹配模型 )提供清晰指引
模型名称 | 核心特点 | 适用场景 |
---|---|---|
Base-Paddle | 基于飞桨框架的基座模型,通用预训练基础 | 需基于飞桨框架二次开发的通用场景 |
Paddle | 基于飞桨框架,经后训练优化(非基座) | 飞桨生态下的特定任务(如对话、生成) |
Base-PT | 基于 PyTorch 框架的基座模型,通用预训练基础 | 需基于 PyTorch 框架二次开发的通用场景 |
PT | 基于 PyTorch 框架,经后训练优化(非基座) | PyTorch 生态下的特定任务(如对话、生成) |
ERNIE-4.5-300B-A47B | 文本模型,3000 亿总参(激活 47 亿),MoE 架构 | 复杂文本理解与生成 |
ERNIE-4.5-VL-424B-A47B | 多模态模型,424 亿总参(激活 47 亿),图文交互 | 复杂跨模态任务(图文推理、生成) |
ERNIE-4.5-VL-28B-A3B | 多模态模型,280 亿总参(激活 30 亿),双模式交互 | 中等复杂度图文任务 |
ERNIE-4.5-21B-A3B | 文本模型,210 亿总参(激活 30 亿),高效 MoE | 智能对话、内容创作 |
ERNIE-4.5-0.3B | 轻量级文本模型,3 亿参,适配边缘环境 | 移动端、资源受限场景的对话 / 生成 |
GitCode 部署 ERNIE-4.5-300B-A47B
1、进入 GitCode 文心大模型专区
2、选择大模型 baidu/ERNIE-4.5-300B-A47B,查看开发文档
3、模型克隆至本地
4、使用HTTPS方式克隆
5、本地打开 Git Bash,将项目通过下面命令克隆至本地
git clone https://gitcode.com/paddlepaddle/ERNIE-4.5-300B-A47B-Base-Paddle.git
6、等待模型下载克隆(大概3~5分钟)
7、打开本地克隆项目
8、将项目文件用 PyCharm 打开
9、PyCharm 终端安装项目依赖
# 创建名为 baidu 的虚拟环境,Python 版本设为 3.10 conda create --name baidu python=3.10
10、激活虚拟环境
# 激活虚拟环境 conda activate baidu
11、安装项目依赖
# 安装项目依赖 pip install --progress-bar=on streamlit transformers torch sentencepiece -i https://pypi.tuna.tsinghua.edu.cn/simple
12、下载完成
13、将 PyCharm 解释器换成切换成虚拟环境的
baidu
14、使用使用
transformers
库创建测试脚本from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig import torch import time# 记录开始时间 start_time = time.time()# 设置模型路径 model_name = "ERNIE-4.5-0.3B-PT"# 设备配置 - CPU 环境 device = torch.device("cpu") print(f"使用设备: {device}")# 加载分词器和模型 - 添加进度提示 print("正在加载模型,请稍候...") tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True).to(device) print(f"模型加载完成,耗时: {time.time() - start_time:.2f}秒")# 准备模型输入 prompt = "请介绍一下人工智能在医疗领域的应用" messages = [{"role": "user", "content": prompt}]# 应用聊天模板 text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True )# 构造模型输入,确保 attention_mask 是2D张量 encoding = tokenizer([text],add_special_tokens=False,return_tensors="pt" ) model_inputs = {"input_ids": encoding.input_ids.to(device),"attention_mask": torch.ones_like(encoding.input_ids).to(device) # 确保是2D张量 }# 优化生成配置 - 显式设置所有参数 generation_config = GenerationConfig(max_new_tokens=300,temperature=0.7,top_p=0.9,do_sample=True,bos_token_id=tokenizer.bos_token_id or 1, # 确保有值eos_token_id=tokenizer.eos_token_id or 2, # 确保有值pad_token_id=tokenizer.eos_token_id or 2, # 确保有值frequency_penalty=0.0,presence_penalty=0.0 )# 执行文本生成 - 添加进度提示 print("开始生成回答...") generate_start_time = time.time() with torch.no_grad():generated_ids = model.generate(**model_inputs, # 解包输入字典generation_config=generation_config) output_ids = generated_ids[0][len(model_inputs["input_ids"][0]):].tolist() print(f"回答生成完成,耗时: {time.time() - generate_start_time:.2f}秒")# 解码生成的文本 generate_text = tokenizer.decode(output_ids, skip_special_tokens=True).strip()# 输出结果 print("\n" + "="*50) print(f"问题: {prompt}") print("-"*50) print(f"生成的回答:\n{generate_text}") print("="*50) print(f"总耗时: {time.time() - start_time:.2f}秒")
15、test.py 运行测试结果
Streamlit 库开发Web UI 页面
1、新建一个
baidu_chat.py文件
,确认 Python 环境,此时需要确认 conda 虚拟环境是baidu
python --version
2、安装依赖库(transformers和torch依赖前面已经安装了,此处不需要重复安装)
streamlit
(做网页)transformers
(调用大模型)torch
(深度学习框架,模型运行依赖)pip install streamlit
3、代码部署(把代码落地成可运行文件)
import streamlit as st from transformers import AutoModelForCausalLM, AutoTokenizer from threading import Thread from queue import Queue, Empty import time import platform# 初始化模型和分词器 @st.cache_resource def load_model():model_name = "ERNIE-4.5-0.3B-PT"tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True)return tokenizer, modeltokenizer, model = load_model()class CustomStreamer:def __init__(self, queue):self.queue = queueself.first_token_time = Noneself.generation_start = time.perf_counter()self.full_response = "" # 存储完整响应def put(self, value):# 记录第一个token的到达时间if self.first_token_time is None:self.first_token_time = time.perf_counter()# 解码tokentokens = value.cpu().numpy()text = tokenizer.decode(tokens[0], skip_special_tokens=True)# 清理前缀for prefix in ['User:', 'Assistant:']:if prefix in text:text = text.split(prefix, 1)[-1]cleaned_text = text.strip()self.full_response += cleaned_text # 累积完整响应self.queue.put(cleaned_text)def end(self):self.queue.put(None)def get_first_token_latency(self):if self.first_token_time:return (self.first_token_time - self.generation_start) * 1000 # 毫秒return 0def generate_response_stream(prompt, queue, max_tokens, temperature):generation_start = time.perf_counter()# 准备输入messages = [{"role": "user", "content": prompt}]text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True)model_inputs = tokenizer([text], return_tensors="pt")prompt_tokens = len(model_inputs.input_ids[0])# 初始化流式处理器streamer = CustomStreamer(queue)# 生成响应generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=max_tokens,temperature=temperature,streamer=streamer,do_sample=True if temperature > 0 else False)# Streamlit界面 def main():st.title("ERNIE-4.5-300B-A47B Chat")st.write("CSDN博主:wei_shuo")# 侧边栏 - 模型配置 + 规范约束with st.sidebar:st.header("⚙️ 模型配置")max_tokens = st.slider("最大生成长度", 100, 2048, 1024)temperature = st.slider("温度系数", 0.1, 2.0, 1.0, 0.1)# 规范约束说明(可折叠)with st.expander("📖 大模型规范约束", expanded=False):st.markdown("""### 安全与合规1. 拒绝生成违法违规内容(如暴力、歧视、恶意信息等) 2. 敏感问题需遵循平台规则,引导正向价值观 ### 回答质量1. 优先使用 Markdown 格式,确保排版清晰(标题、列表、代码块等) 2. 回答需准确、简洁,避免无意义内容堆叠 3. 专业问题需提供合理依据或步骤 ### 交互约束1. 支持多轮对话,但需控制上下文长度(避免超出 `max_tokens` 限制) 2. 对模糊问题,先澄清需求再回答 """)if st.button("🧹 清空对话"):st.session_state.messages = []st.rerun()# 初始化聊天记录if "messages" not in st.session_state:st.session_state.messages = []# 显示历史消息for message in st.session_state.messages:with st.chat_message(message["role"]):st.markdown(message["content"])# 聊天输入if prompt := st.chat_input("请输入您的问题..."):# 添加用户消息st.session_state.messages.append({"role": "user", "content": prompt})with st.chat_message("user"):st.markdown(prompt)# 生成响应with st.chat_message("assistant"):placeholder = st.empty()full_response = ""queue = Queue()# 启动生成线程thread = Thread(target=generate_response_stream,args=(prompt, queue, max_tokens, temperature))thread.start()# 流式输出while True:try:chunk = queue.get(timeout=0.1)if chunk is None:breakfull_response += chunkplaceholder.markdown(full_response + "▌")except Empty:continueplaceholder.markdown(full_response)thread.join()# 保存到历史记录st.session_state.messages.append({"role": "assistant", "content": full_response})if __name__ == "__main__":main()
4、运行代码(首次使用需要输入邮箱)
5、查看本地部署结果
文心 vs. DeepSeek / Qwen 3.0 深度解析
上图是文心 4.5 系列模型能力盘点表,涵盖不同模型,从多模态(Multimodal)、混合专家(MoE)、后训练(Post - Trained)、思维 / 非思维模式(Thinking/Non - Thinking Mode)维度呈现,VL 系列部分模型具多模态能力,不同模型在各维度特性有别,可直观了解各模型功能侧重 。
文心 vs. DeepSeek
文心与 DeepSeek 各有优势,文心依托百度技术积累与数据,在中文语境理解、多模态融合及生态构建上深耕,有多元版本适配场景;DeepSeek 借字节跳动技术沉淀,在训练效率、推理速度上突出,开源生态助力普及
基础文本理解与生成
考察模型对基础事实、概念的认知及文本生成质量,看回答是否准确、逻辑是否通顺,语言是否自然
1、输入内容(Prompt):请用生动语言介绍二十四节气中芒种的含义与农事关联(简洁核心回答)
2、结果可视化分析:ERNIE-4.5-300B-A47B 在语言生动性、信息完整性、回答效率(Tokens 速度)上表现更优,仅输出 Tokens 总量少于 DeepSeek-R1 ;后者虽输出内容更长,但在表达生动度、信息全面性及生成速度方面均不及前者,整体来看 ERNIE-4.5-300B-A47B 综合表现更突出 。
复杂逻辑推理
聚焦模型处理需要多层推导、分析任务的能力,检验逻辑思维深度与严谨性
1、输入内容(Prompt):有 A、B、C 三人,A 说 B 在说谎,B 说 C 在说谎,C 说 A 和 B 都在说谎,三人中只有一人说真话,谁在说真话?请详细推导(简洁核心回答)
2、结果可视化分析:复杂逻辑推理任务中,ERNIE - 4.5 - 300B - A47B 在推理逻辑路径、回答效率(Tokens 速度)、推理风格总结维度表现更优,仅输出 Tokens 总量少于 DeepSeek - R1;DeepSeek - R1 虽输出内容丰富,但效率指标低,二者推理结论一致,验证逻辑正确,展现出不同推理风格与效率特点 。
专业知识适配
针对特定专业领域(如科学、人文等)问题,对比模型知识储备与运用水平
1、输入内容(Prompt):从生物学角度,分析抗生素为何对病毒性感冒无效,结合免疫机制说明(简洁核心回答)
2、结果可视化分析:生物视角抗生素无效机制解读任务中,ERNIE - 4.5 - 300B - A47B 在逻辑拆解深度、表达风格专业性及回答效率(Tokens 速度)上优势显著,输出 Tokens 总量少;DeepSeek - R1 输出内容丰富,然逻辑拆解、表达风格专业度及回答效率均不及前者,二者呈现 “专业深度型” 与 “内容丰富型” 差异化表现
文心 vs. Qwen 3.0
基础文本理解与生成
1、输入内容(Prompt):请用生动语言介绍二十四节气中芒种的含义与农事关联(简洁核心回答)
2、结果可视化分析:介绍芒种含义与农事关联任务中,ERNIE - 4.5 - 300B - A47B 与 Qwen3 - 30B - A3B 风格有别,前者语言、信息呈现、创作视角表现均衡,回答效率也不弱;后者在各维度得分略高,输出内容更丰富,且回答效率(Tokens 速度)与前者相近,二者以不同风格诠释节气,展现模型差异化表达力
复杂逻辑推理
1、输入内容(Prompt):有 A、B、C 三人,A 说 B 在说谎,B 说 C 在说谎,C 说 A 和 B 都在说谎,三人中只有一人说真话,谁在说真话?请详细推导(简洁核心回答)
2、结果可视化分析:逻辑推理任务中,ERNIE - 4.5 - 300B - A47B 与 Qwen3 - 30B - A3B 推理方法、结论一致,展现逻辑正确性。ERNIE 表达简洁,回答效率(Tokens 速度)高、输出量少;Qwen3 - 30B - A3B 表达细致,输出内容丰富但效率稍低,二者体现出 “高效简洁” 与 “详实全面” 的差异化推理风格 。
专业知识适配
1、输入内容(Prompt):从生物学角度,分析抗生素为何对病毒性感冒无效,结合免疫机制说明(简洁核心回答)
2、结果可视化分析:分析抗生素对病毒性感冒无效的任务中,ERNIE-4.5-300B-A47B 与 Qwen3-30B-A3B 在核心逻辑、表达风格维度表现相近,ERNIE-4.5-300B-A47B 回答效率(Tokens 速度)更高,输出 Tokens 总量少;Qwen3-30B-A3B 输出内容更丰富,二者展现出 “高效简洁” 与 “详实全面” 的不同知识输出风格 。
评测总结
文心、DeepSeek、Qwen 3.0 各有特色:文心语言生动善修辞,深度拆解知识,适配文化创作与专业解析;DeepSeek 推导清晰简洁,聚焦核心机制,适合高效推理与知识传递;Qwen 3.0 文艺细腻兼场景补充,在科普问答等场景优势明显,三者因风格与效率差异,适配不同任务需求
从测评结果来看,ERNIE - 4.5 - 300B - A47B 在语言生动性、信息完整性、逻辑推理完整性、生物医学逻辑深度四个维度,得分均为最高,综合表现最优;Qwen3 - 30B - A3B 各维度得分次之,整体实力较强;DeepSeek - R1 在各维度得分相对偏低,表现稍弱,ERNIE - 4.5 - 300B - A47B 综合能力领先,Qwen3 - 30B - A3B 可作为有效补充,DeepSeek - R1 在这些测评维度上有较大提升空间 。
文心 vs. DeepSeek vs. Qwen 3.0 总结
文心 ERNIE - 4.5 系列模型与 Qwen3、DeepSeek - V3 在不同能力维度(通用、推理、数学、知识、编码 )下,基于多种基准测试的性能对比数据:
- 模型整体表现:不同模型在各基准测试里各有优劣,像 ERNIE - 4.5 - 300B - A4TB - Base 在多个通用基准(如 C - Eval、CMMLU 等 )中成绩突出,显示出在通用能力上的优势;Qwen3 - 30B - A3B - Base 在部分推理基准(如 ARC - Easy、ARC - Challenge )表现亮眼,体现推理能力特点
- 能力维度差异:通用能力里,各模型在不同子项(C - Eval、CMMLU 等 )排名有别,反映对不同类型通用知识的掌握侧重;推理方面,不同基准下模型表现波动,说明应对不同推理场景能力不同;数学、知识、编码维度同理,各有擅长与薄弱板块,体现模型在特定知识领域和技能上的优势区与提升点
- 模型对比优势:比如 ERNIE - 4.5 系列部分版本在部分基准(如 C - Eval 中 ERNIE - 4.5 - 300B - A4TB - Base 成绩突出 )领先,可看出其在对应能力维度的竞争力;Qwen3、DeepSeek - V3 也有各自优势板块,展现不同技术路线或训练侧重的成果,能为模型迭代、选型提供参考,比如侧重数学能力可选某类表现好的模型,侧重编码则看对应编码基准成绩选
总结
本次围绕百度开源文心 4.5 系列大模型,介绍其多参数规模、创新架构、开源协议及部署与 Web UI 开发方式,并对比显示,ERNIE - 4.5 - 300B - A47B 在语言生动性、信息完整性等维度表现最佳,适配专业研究、报告撰写;Qwen3 - 30B - A3B 表现次之,因文艺细腻风格适配知识科普、文案创作;DeepSeek - R1 虽整体稍弱,但凭借平实表达与推理风格,适用于基础概念科普。不同模型各有优势,需要根据具体需求场景来选择。
✅架构生态多元:创新 MoE 架构与多模态异构结构,覆盖飞桨、PyTorch 框架模型,参数数亿至数百亿,适配通用开发、复杂任务及移动端等场景
✅性能效率突出:FLOPs 利用率达 47%,在文本与多模态任务中刷新多项基准记录,平衡高性能与部署效率
✅开源开放度高:Apache 2.0 协议开源,支持飞桨框架全流程操作,便于学术研究与产业应用二次开发
如果大家想和我一起感受百度开源文心4.5系列开源大模型:一起来玩转文心大模型吧
👉文心大模型免费下载地址:https://ai.gitcode.com/theme/1939325484087291906