百度开源文心 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 深度测评)
背景
百度在 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 等,分别适用于从基于不同框架二次开发的通用场景,到复杂文本、跨模态任务,再到移动端等资源受限场景的各类需求
| 模型名称 | 核心特点 | 适用场景 |
|---|---|---|
| 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,将项目通过下面命令克隆至本地
bashgit clone https://gitcode.com/paddlepaddle/ERNIE-4.5-300B-A47B-Base-Paddle.git6、等待模型下载克隆(大概3~5分钟)
7、打开本地克隆项目
8、将项目文件用 PyCharm 打开
9、PyCharm 终端安装项目依赖
bash# 创建名为 baidu 的虚拟环境,Python 版本设为 3.10 conda create --name baidu python=3.1010、激活虚拟环境
bash# 激活虚拟环境 conda activate baidu11、安装项目依赖
bash# 安装项目依赖 pip install --progress-bar=on streamlit transformers torch sentencepiece -i https://pypi.tuna.tsinghua.edu.cn/simple12、下载完成
13、将 PyCharm 解释器换成切换成虚拟环境的
baidu14、使用使用
transformers库创建测试脚本
pyfrom 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
bashpython --version2、安装依赖库(transformers和torch依赖前面已经安装了,此处不需要重复安装)
streamlit(做网页)transformers(调用大模型)torch(深度学习框架,模型运行依赖)
bashpip install streamlit3、代码部署(把代码落地成可运行文件)
pythonimport 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, model tokenizer, 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 0 def 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 深度解析
1、使用硅基流动平台对文心大模型/DeepSeek/Qwen 3.0 对比分析深度解析
- 模型广场,搜索对应的大模型
2、点击在线体验
3、添加对比模型
4、选择对比的模型后同步参数即可
文心 vs. DeepSeek

文心与 DeepSeek 各有优势,文心依托百度技术积累与数据,在中文语境理解、多模态融合及生态构建上深耕,有多元版本适配场景;DeepSeek 借字节跳动技术沉淀,在训练效率、推理速度上突出,开源生态助力普及
基础文本理解与生成
考察模型对基础事实、概念的认知及文本生成质量,看回答是否准确、逻辑是否通顺,语言是否自然
1、输入内容(Prompt):请用生动语言介绍二十四节气中芒种的含义与农事关联(简洁核心回答)2、结果分析
语言表达与生动性
- ERNIE-4.5-300B-A47B:运用了比喻的修辞手法,将芒种比作仲夏的忙碌交响曲,把农事活动描述为和暴雨、霉变赛跑,使表述更加生动形象,富有感染力,能让读者较为直观地感受到芒种时节的忙碌氛围
- DeepSeek-R1:语言表述相对平实,主要是直白地阐述芒种的含义以及双抢的重要性,虽然也能清晰传达信息,但在语言的生动性和趣味性上,较 ERNIE-4.5-300B-A47B 略逊一筹
信息完整性与准确性
- ERNIE-4.5-300B-A47B:既提到了芒种名字中 "芒" 和 "种" 的含义,说明了南北方不同的农事活动,还点出了芒种蕴含的古人智慧,信息较为全面完整
- DeepSeek-R1:准确解释了芒种的含义,突出了 "双抢" 这一关键农事活动,不过在信息丰富度上,没有 ERNIE-4.5-300B-A47B 全面, 没有提及芒种所蕴含的文化智慧层面内容
回答效率(Tokens 速度)
- ERNIE-4.5-300B-A47B:生成回答的速度为 55.41 tokens/s ,生成 151 个 tokens
- DeepSeek-R1:生成回答的速度为 20.09 tokens/s ,生成 395 个 tokens。虽然 DeepSeek-R1 生成的内容更长,但从速度上看,ERNIE-4.5-300B-A47B 在单位时间内处理 token 的效率更高
复杂逻辑推理
聚焦模型处理需要多层推导、分析任务的能力,检验逻辑思维深度与严谨性
1、输入内容(Prompt):有 A、B、C 三人,A 说 B 在说谎,B 说 C 在说谎,C 说 A 和 B 都在说谎,三人中只有一人说真话,谁在说真话?请详细推导(简洁核心回答)
2、结果分析
ERNIE-4.5-300B-A47B:先梳理A 说 B 说谎、B 说 C 说谎、C 说 A 和 B 说谎条件,再假设 A 真→B 假→C 真(与 A 真矛盾);假设 B 真→A 假、C 假(符合条件);假设 C 真→A 假、B 假(与 C 真矛盾),推导完整,逻辑闭环,结论明确是 B 说真话
DeepSeek-R1:同样拆解条件,分 A 真、B 真、C 真三种假设,逐一推导矛盾,过程清晰,结论一致为 B 说真话
都精准解决逻辑题,ERNIE 推导更侧重矛盾链梳理,像链条式排查;DeepSeek 偏向假设 - 验证分步走,像流程化检验,均展现出扎实推理能力,结论完全一致,验证逻辑正确性
专业知识适配
针对特定专业领域(如科学、人文等)问题,对比模型知识储备与运用水平
1、输入内容(Prompt):从生物学角度,分析抗生素为何对病毒性感冒无效,结合免疫机制说明(简洁核心回答)
2、结果分析
- ERNIE-4.5-300B-A47B 分作用靶点差异、病毒复制特性、免疫机制分工三层,从药物作用逻辑→病毒生存模式→人体免疫响应,层层嵌套,把抗生素无效拆解成生物机制冲突链,像解释抗生素针对细菌细胞壁,病毒没这结构,逻辑环环相扣,知识密度高且体系化
- DeepSeek-R1 聚焦作用目标、复制机制、免疫协作,用抗生素攻细菌结构,病毒靠宿主借鸡生蛋类比,把复杂免疫流程(先天免疫、适应性免疫分工)简化关联,结论更强调抗生素不参与抗病毒,表达更贴近通俗理解,逻辑链条短但抓核心
简单说,ERNIE 类似学术报告,深挖机制细节拼知识网;DeepSeek 像科普解读,抓关键差异做通俗关联,前者适合专业研究,后者便于快速理解
文心 vs. Qwen 3.0

基础文本理解与生成
1、输入内容(Prompt):请用生动语言介绍二十四节气中芒种的含义与农事关联(简洁核心回答)
2、结果分析
- 语言风格:ERNIE-4.5-300B-A47B 用 锋刃时刻、军令状等词,偏硬核、生动;Qwen3-30B-A3B 以 交响曲、指挥家类比,风格更文艺、细腻
- 信息呈现:ERNIE 聚焦南北方农事动作(插秧、收割)与 "收 - 种接力赛" 逻辑,信息扎实落地;Qwen 侧重场景氛围(麦浪、稻秧入水)与节气意义,画面感更强
- 创作视角:ERNIE 突出劳作紧迫性与土地约定;Qwen 自然意象串联收种,赋予节气浪漫感
复杂逻辑推理
1、输入内容(Prompt):有 A、B、C 三人,A 说 B 在说谎,B 说 C 在说谎,C 说 A 和 B 都在说谎,三人中只有一人说真话,谁在说真话?请详细推导(简洁核心回答)
2、结果分析
ERNIE - 4.5 - 300B - A47B 与 Qwen3 - 30B - A3B 在逻辑推理任务中,均采用假设法,通过对 A、B、C 说真话的三种假设,推导是否符合"仅一人说真话"条件,两者推理路径一致,都得出 B 说真话的结论,体现逻辑正确性
ERNIE 表述简洁,以清晰步骤快速推导;Qwen3-30B-A3B 则拆解更细,对每个假设的矛盾点阐释更详尽 。效率上,ERNIE 生成 token 少(122 个)、速度快(54.78 tokens/s );Qwen3-30B-A3B 生成 token 多(1401 个)、速度慢(29.40 tokens/s ),反映出不同模型在推理表达风格与计算效率上的差异
专业知识适配
1、输入内容(Prompt):从生物学角度,分析抗生素为何对病毒性感冒无效,结合免疫机制说明(简洁核心回答)
2、结果分析
ERNIE - 4.5 - 300B - A47B 与 Qwen3 - 30B - A3B 分析抗生素对病毒性感冒无效的问题,ERNIE 从作用靶点、免疫机制差异深度拆解,生成 234 tokens,速度 33.31 tokens/s ,知识颗粒细、逻辑闭环;Qwen 聚焦核心矛盾,补充实用场景,生成 626 tokens,速度 26.40 tokens/s ,链条短平快、结论直白,前者适配原理研究,后者便于快速理解,展现不同模型知识处理与输出风格
文心 vs. DeepSeek vs. Qwen 3.0 总结
文心、DeepSeek、Qwen 3.0 各有特色:文心语言生动善修辞,深度拆解知识,适配文化创作与专业解析;DeepSeek 推导清晰简洁,聚焦核心机制,适合高效推理与知识传递;Qwen 3.0 文艺细腻兼场景补充,在科普问答等场景优势明显,三者因风格与效率差异,适配不同任务需求
| 对比维度 | 文心(ERNIE 系列) | DeepSeek | Qwen 3.0 |
|---|---|---|---|
| 语言风格 | 生动形象,善用修辞,构建场景感 | 表述平实清晰,逻辑推导流程化 | 文艺细腻,常借意象,营造氛围 |
| 逻辑推理 | 假设法推导完整,构建矛盾链闭环验证 | 假设-验证分步走,推理过程清晰,结论精准 | 拆解细致,流程化检验假设,逻辑严谨 |
| 专业知识解析 | 深度拆解机制,构建体系化知识网 | 聚焦核心机制,表达简洁直接,抓关键差异 | 简化复杂流程,补充场景化说明 |
| 效率(Token 与速度) | 生成 Token 数适中 | Token 数依任务波动,速度 20.09 - 29.40 Token/s | Token 数偏多 |
| 适用场景 | 文化内容创作、专业知识深度解析,追求语言生动与知识体系构建 | 高效逻辑推理、专业知识快速传递,需简洁阐释场景 | 科普创作、场景化知识问答,兼顾文艺表达与实用补充 |
总结
本次围绕百度开源文心 4.5 系列大模型,介绍其多参数规模、创新架构、开源协议及部署与 Web UI 开发方式,并对比显示,文心擅长文化创作与专业解析,DeepSeek 适合高效推理,Qwen 3.0 在科普问答有优势,三者适配不同需求,提供多元选择
✅架构生态多元:创新 MoE 架构与多模态异构结构,覆盖飞桨、PyTorch 框架模型,参数数亿至数百亿,适配通用开发、复杂任务及移动端等场景
✅性能效率突出:FLOPs 利用率达 47%,在文本与多模态任务中刷新多项基准记录,平衡高性能与部署效率
✅开源开放度高:Apache 2.0 协议开源,支持飞桨框架全流程操作,便于学术研究与产业应用二次开发
一起来玩转文心大模型吧👉文心大模型免费下载地址:https://ai.gitcode.com/theme/1939325484087291906
1、登录GitCode文心大模型主题,选择合适的模型部署2、模型使用方式可以Notebook快速开发也可以openMind和克隆
































