> 技术文档 > 百度开源文心 4.5 系列开源大模型 GitCode 本地化部署,硅基流动:文心 vs. DeepSeek vs. Qwen 3.0 深度测评

百度开源文心 4.5 系列开源大模型 GitCode 本地化部署,硅基流动:文心 vs. DeepSeek vs. Qwen 3.0 深度测评


百度开源文心 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.10conda 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, GenerationConfigimport torchimport 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 stfrom transformers import AutoModelForCausalLM, AutoTokenizerfrom threading import Threadfrom queue import Queue, Emptyimport timeimport platform# 初始化模型和分词器@st.cache_resourcedef 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 = queue self.first_token_time = None self.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() # 解码token tokens = 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: break  full_response += chunk  placeholder.markdown(full_response + \"▌\") except Empty:  continue placeholder.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

激光切割机价格