百度开源文心 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 等,分别适用于从基于不同框架二次开发的通用场景,到复杂文本、跨模态任务,再到移动端等资源受限场景的各类需求
模型名称 | 核心特点 | 适用场景 |
---|---|---|
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 深度解析
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和克隆