AI大模型随机初始化权重并打印网络结构方法(以Deepseekv3为例,单机可跑)
背景
当前大模型的权重加载和调用,主要是通过在HuggingFace官网下载并使用transformer的库来加以实现;其中大模型的权重文件较大(部分>100GB),若只是快速研究网络结构和数据流变化,则无需下载权重。本文基于这个背景,做了如下尝试,实现了在无需下载权重的情况下打印模型结构和网络的输入输出。
一、基本介绍
1 HuggingFace的文件说明
一般而言,在HuggingFace官网,打开对应的模型,然后点击Files and versions,就会出现模型权重文件和一些相对应的代码和json文件。
config.json文件:模型的配置文件,包含模型的架构和参数配置信息。
configuration_deepseek.py文件:DeepSeekv3模型的配置脚本,定义了模型的具体配置和参数。
model-00001-of-000163.safetensors文件:模型的权重文件之一,存储了模型的部分参数(这里表示总共有163个权重文件,特别庞大)
model.safetensors.index.json文件:模型权重文件的索引文件,记录了各个权重文件的分片信息
modeling_deepseek.py文件:DeepSeekv3模型的实现脚本,包含模型的定义和相关函数
tokenizer.json文件:分词器的配置文件,定义了分词器的词汇表和相关参数
tokenizer_config.json文件:分词器的配置文件,包含分词器的配置信息

2 加载模型的Python库说明
这里展示一段加载模型权重并打印网络结构的代码示例
from transformers import AutoModelForCausalLM
model_path = "model.safetensors"
model = AutoModelForCausalLM.from_pretrained(model_path)
print(model)
其中,AutoModelForCausalLM 是 Hugging Face 的 transformers 库中的一个类,用于加载预训练的因果语言模型。以下是 AutoModelForCausalLM.from_pretrained 方法的入参说明
pretrained_model_name_or_path:预训练模型的名称或路径,可以是Hugging Face模型库中的模型名称,也可以是本地模型文件夹的路径。
config:自定义的模型配置对象,可以传入一个PretrainedConfig对象,用于手动配置模型。如果未提供,系统会从pretrained_model_name_or_path自动加载相应的配置。
state_dict:预加载的模型权重字典,用于初始化模型权重。
cache_dir:指定缓存目录,用于下载和存储模型文件。
from_tf:是否从TensorFlow模型加载权重。
force_download:是否强制重新下载模型权重。
resume_download:在下载过程中,如果发生中断,是否从中断点继续下载。
二、Deepseekv3的随机权重加载和网络结构分析
硬件说明:一台RTX4090显卡(24GB显存)
工程目录

其中,config.json、configuration_deepseek.py和modeling_deepseek.py都是从hugging face直接下载的。
2.1 编辑config.json
由于显存受限,因此这里将hidden_size、intermediate_size和moe_intermediate_size,使得61层的网络能够加载在单卡上。
hidden_size: 模型中隐藏层的维度,通常与模型的输入维度相同;原始为7168,现修改为256
intermediate_size: 模型中MLP的中间层维度;原始为18432,现修改为1024
moe_intermediate_size: 模型中MOE的中间层维度;原始为2048,现修改为128
2.2 编写py脚本
import torch
from configuration_deepseek import DeepseekV3Config
from modeling_deepseek import DeepseekV3ForCausalLMdevice = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")config_file = "config.json"model_config = DeepseekV3Config.from_pretrained(config_file)
model = DeepseekV3ForCausalLM(config=model_config).to(torch.float16).eval()
model = model.to(device)# 打印模型结构
print(model)dummy_input = torch.randint(low=0, high=129280, size=(4, 64), dtype=torch.long).to(device)
output = model(dummy_input)
# 打印输出张量的形状
print(output.logits.shape)
2.3 打印网络结构
显存占用情况

Deepseekv3网络结构和输入输出shape
DeepseekV3ForCausalLM((model): DeepseekV3Model((embed_tokens): Embedding(129280, 256)(layers): ModuleList((0-2): 3 x DeepseekV3DecoderLayer((self_attn): DeepseekV3Attention((q_a_proj): Linear(in_features=256, out_features=1536, bias=False)(q_a_layernorm): DeepseekV3RMSNorm()(q_b_proj): Linear(in_features=1536, out_features=24576, bias=False)(kv_a_proj_with_mqa): Linear(in_features=256, out_features=576, bias=False)(kv_a_layernorm): DeepseekV3RMSNorm()(kv_b_proj): Linear(in_features=512, out_features=32768, bias=False)(o_proj): Linear(in_features=16384, out_features=256, bias=False)(rotary_emb): DeepseekV3YarnRotaryEmbedding())(mlp): DeepseekV3MLP((gate_proj): Linear(in_features=256, out_features=1024, bias=False)(up_proj): Linear(in_features=256, out_features=1024, bias=False)(down_proj): Linear(in_features=1024, out_features=256, bias=False)(act_fn): SiLU())(input_layernorm): DeepseekV3RMSNorm()(post_attention_layernorm): DeepseekV3RMSNorm())(3-60): 58 x DeepseekV3DecoderLayer((self_attn): DeepseekV3Attention((q_a_proj): Linear(in_features=256, out_features=1536, bias=False)(q_a_layernorm): DeepseekV3RMSNorm()(q_b_proj): Linear(in_features=1536, out_features=24576, bias=False)(kv_a_proj_with_mqa): Linear(in_features=256, out_features=576, bias=False)(kv_a_layernorm): DeepseekV3RMSNorm()(kv_b_proj): Linear(in_features=512, out_features=32768, bias=False)(o_proj): Linear(in_features=16384, out_features=256, bias=False)(rotary_emb): DeepseekV3YarnRotaryEmbedding())(mlp): DeepseekV3MoE((experts): ModuleList((0-255): 256 x DeepseekV3MLP((gate_proj): Linear(in_features=256, out_features=128, bias=False)(up_proj): Linear(in_features=256, out_features=128, bias=False)(down_proj): Linear(in_features=128, out_features=256, bias=False)(act_fn): SiLU()))(gate): MoEGate()(shared_experts): DeepseekV3MLP((gate_proj): Linear(in_features=256, out_features=128, bias=False)(up_proj): Linear(in_features=256, out_features=128, bias=False)(down_proj): Linear(in_features=128, out_features=256, bias=False)(act_fn): SiLU()))(input_layernorm): DeepseekV3RMSNorm()(post_attention_layernorm): DeepseekV3RMSNorm()))(norm): DeepseekV3RMSNorm())(lm_head): Linear(in_features=256, out_features=129280, bias=False)
)
input shape: torch.Size([4, 64])
output shape: torch.Size([4, 64, 129280])
四、 参考链接
Deepseekv3权重路径
https://huggingface.co/deepseek-ai/DeepSeek-V3/tree/main
附:671B全量的Deepseekv3网络结构
DeepseekV3ForCausalLM((model): DeepseekV3Model((embed_tokens): Embedding(129280, 7168)(layers): ModuleList((0-2): 3 x DeepseekV3DecoderLayer((self_attn): DeepseekV3Attention((q_a_proj): Linear(in_features=7168, out_features=1536, bias=False)(q_a_layernorm): DeepseekV3RMSNorm()(q_b_proj): Linear(in_features=1536, out_features=24576, bias=False)(kv_a_proj_with_mqa): Linear(in_features=7168, out_features=576, bias=False)(kv_a_layernorm): DeepseekV3RMSNorm()(kv_b_proj): Linear(in_features=512, out_features=32768, bias=False)(o_proj): Linear(in_features=16384, out_features=7168, bias=False)(rotary_emb): DeepseekV3YarnRotaryEmbedding())(mlp): DeepseekV3MLP((gate_proj): Linear(in_features=7168, out_features=18432, bias=False)(up_proj): Linear(in_features=7168, out_features=18432, bias=False)(down_proj): Linear(in_features=18432, out_features=7168, bias=False)(act_fn): SiLU())(input_layernorm): DeepseekV3RMSNorm()(post_attention_layernorm): DeepseekV3RMSNorm())(3-60): 58 x DeepseekV3DecoderLayer((self_attn): DeepseekV3Attention((q_a_proj): Linear(in_features=7168, out_features=1536, bias=False)(q_a_layernorm): DeepseekV3RMSNorm()(q_b_proj): Linear(in_features=1536, out_features=24576, bias=False)(kv_a_proj_with_mqa): Linear(in_features=7168, out_features=576, bias=False)(kv_a_layernorm): DeepseekV3RMSNorm()(kv_b_proj): Linear(in_features=512, out_features=32768, bias=False)(o_proj): Linear(in_features=16384, out_features=7168, bias=False)(rotary_emb): DeepseekV3YarnRotaryEmbedding())(mlp): DeepseekV3MoE((experts): ModuleList((0-255): 256 x DeepseekV3MLP((gate_proj): Linear(in_features=7168, out_features=2048, bias=False)(up_proj): Linear(in_features=7168, out_features=2048, bias=False)(down_proj): Linear(in_features=2048, out_features=7168, bias=False)(act_fn): SiLU()))(gate): MoEGate()(shared_experts): DeepseekV3MLP((gate_proj): Linear(in_features=7168, out_features=2048, bias=False)(up_proj): Linear(in_features=7168, out_features=2048, bias=False)(down_proj): Linear(in_features=2048, out_features=7168, bias=False)(act_fn): SiLU()))(input_layernorm): DeepseekV3RMSNorm()(post_attention_layernorm): DeepseekV3RMSNorm()))(norm): DeepseekV3RMSNorm())(lm_head): Linear(in_features=7168, out_features=129280, bias=False)
)
相关文章:
AI大模型随机初始化权重并打印网络结构方法(以Deepseekv3为例,单机可跑)
背景 当前大模型的权重加载和调用,主要是通过在HuggingFace官网下载并使用transformer的库来加以实现;其中大模型的权重文件较大(部分>100GB),若只是快速研究网络结构和数据流变化,则无需下载权重。本文…...
字符串解码——巧妙使用递归解题
题目描述 给定一个经过编码的字符串,返回它解码后的字符串。编码规则为 k[encoded_string],表示方括号内部的 encoded_string 重复 k 次。其中 k 是正整数,输入字符串确保符合格式要求且无额外空格。 示例: 复制 示例 1&#…...
Flask Web开发的重要概念和示例
一口气列举Flask Web应用的所有概念和示例 Flask Web 应用基本框架 路由(Routing) 模版(Template) request 对象 JSON 数据处理 redirect 示例 文件上传示例 文件下载示例 Session 示例 Cookie操作 Flask Web 应用基本框架 这是一个 最基础的 Flask Web 应用,…...
51-ArrayList
51-ArrayList Collection 类型介绍 仓颉中常用的几种基础 Collection 类型,包含 Array、ArrayList、HashSet、HashMap。 可以在不同的场景中选择适合对应业务的类型: Array:如果不需要增加和删除元素,但需要修改元素ÿ…...
Ollama+WebUI+DeepSeek部署自己的本地大模型
前言 使用AI几乎成为互联网工作者必备技能了,DeepSeek的出现把AI再次推向高潮,在本文中,我们将带领大家借助 Ollama、WebUI 和 deepseek 这三个工具,成功搭建属于自己的本地大模型环境。Ollama 作为一款轻量级的大模型运行工具&a…...
(篇六)基于PyDracula搭建一个深度学习的软件之新版本ultralytics-8.3.28调试
ultralytics-8.3.28版本debug记录 1传入文件 代码太多不粘贴在这里了,完整代码写在了篇三 def open_src_file(self):config_file config/fold.jsonconfig json.load(open(config_file, r, encodingutf-8))open_fold config[open_fold]if not os.path.exists(op…...
NLP Word Embeddings
Word representation One-hot形式 在上一周介绍RNN类模型时,使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的,算法很难学习到单词之间的关系。 比如下面的例子,即使语言模型已经知道orange juice是常用组合词…...
基于 FPGA 的嵌入式系统硬件逻辑优化技术探究
在数字化浪潮席卷全球的当下,嵌入式系统已然成为众多领域不可或缺的核心力量。从我们日常使用的智能手机、智能穿戴设备等消费电子产品,到关乎工业生产效率与精度的工业控制系统,再到汽车电子领域的自动驾驶辅助系统以及航空航天领域的飞行器…...
使用HX搭建UNI-APP云开发项目(适合新手小白与想学云开发的宝子)
什么是uni-app云开发 uni-app云开发是uni-app提供的一套后端服务,它可以帮助开发者快速搭建起一个完整的后端服务,包括数据库、云函数、存储等。开发者只需要关注前端页面的开发,后端服务由uni-app云开发提供。 uni-app云开发的优势: 快速搭建后端服务:uni-app云开发提供了…...
sql:时间盲注和boolen盲注
关于时间盲注,boolen盲注的后面几个获取表、列、具体数据的函数补全 时间盲注方法 import time import requests# 获取数据库名 def inject_database(url):dataname for i in range(1, 20):low 32high 128mid (low high) // 2while low < high:payload &q…...
【STM32】ADC|多通道ADC采集
本次实现的是ADC实现数字信号与模拟信号的转化,数字信号时不连续的,模拟信号是连续的。 1.ADC转化的原理 模拟-数字转换技术使用的是逐次逼近法,使用二分比较的方法来确定电压值 当单片机对应的参考电压为3.3v时,0~ 3.3v(模拟信…...
arcgis for js实现层叠立体效果
在 Web 开发中,利用 ArcGIS for JS 实现一些炫酷的地图效果能够极大地提升用户体验。本文将详细介绍如何使用 ArcGIS for JS 实现层叠立体效果,并展示最终的效果图。 效果图 实现思路 要实现层叠立体效果,关键在于获取边界图形的坐标…...
多模态本地部署和ollama部署Llama-Vision实现视觉问答
文章目录 一、模型介绍二、预期用途1. 视觉问答(VQA)与视觉推理2. 文档视觉问答(DocVQA)3. 图像字幕4. 图像-文本检索5. 视觉接地 三、本地部署1. 下载模型2. 模型大小3. 运行代码 四、ollama部署1. 安装ollama2. 安装 Llama 3.2 Vision 模型3. 运行 Llama 3.2-Vision 五、效果…...
【DeepSeek】deepseek可视化部署
目录 1 -> 前文 2 -> 部署可视化界面 1 -> 前文 【DeepSeek】DeepSeek概述 | 本地部署deepseek 通过前文可以将deepseek部署到本地使用,可是每次都需要winR输入cmd调出命令行进入到命令模式,输入命令ollama run deepseek-r1:latest。体验很…...
【Git版本控制器】:第一弹——Git初识,Git安装,创建本地仓库,初始化本地仓库,配置config用户名,邮箱信息
🎁个人主页:我们的五年 🔍系列专栏:Linux网络编程 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 相关笔记: https://blog.csdn.net/dj…...
Fabric.js、leaferjs、pixi.js 库的对比分析
文章目录 一、引言二、参与对比的 canvas 库简介三、性能对比四、易用性对比五、功能特性对比六、综合评价与使用建议七、总结 在前端开发中,canvas 库为实现丰富的图形效果和交互功能提供了强大的支持。本文将对 Fabric.js、leaferjs 和 pixi.js 这三个常见的 canv…...
JVM——堆的回收:引用计数发和可达性分析法、五种对象引用
目录 引用计数法和可达性分析法 引用计数法: 可达性分析算法: 五种对象引用 软引用: 弱引用: 引用计数法和可达性分析法 引用计数法: 引用计数法会为每个对象维护一个引用计数器,当对象被引用时加1&…...
2.11 sqlite3数据库【数据库的相关操作指令、函数】
练习: 将 epoll 服务器 客户端拿来用 客户端:写一个界面,里面有注册登录 服务器:处理注册和登录逻辑,注册的话将注册的账号密码写入数据库,登录的话查询数据库中是否存在账号,并验证密码是否正确…...
开源模型应用落地-Qwen1.5-MoE-A2.7B-Chat与vllm实现推理加速的正确姿势(一)
一、前言 在人工智能技术蓬勃发展的当下,大语言模型的性能与应用不断突破边界,为我们带来前所未有的体验。Qwen1.5-MoE-A2.7B-Chat 作为一款备受瞩目的大语言模型,以其独特的架构和强大的能力,在自然语言处理领域崭露头角。而 vllm 作为高效的推理库,为模型的部署与推理提…...
相得益彰,Mendix AI connector 秒连DeepSeek ,实现研发制造域场景
在当今快速发展的科技领域,低代码一体化平台已成为企业数字化转型的关键工具,同时,大型语言模型(LLM)如 DeepSeek 在自动生成代码和提供智能建议方面表现出色。 Mendix 于近期发布的 GenAI 万能连接器,目前…...
英语笔记【一】词性
一、be 动词 be 动词,是英语中的一种词汇用法,一般用来表示“是”的意思,也可表示“成为”的意思。 be动词的用法有多种变化形式。英语的句子必有一个动词。be 动词自然也是动词的一种。 am 用于第一人称单数;is 第三人称单数&a…...
同为科技智能PDU助力Deepseek人工智能和数据交互的快速发展
1 2025开年,人工智能领域迎来了一场前所未有的变革。Deepseek成为代表“东方力量”的开年王炸,不仅在国内掀起了技术热潮,并且在全球范围内引起了高度关注。Deepseek以颠覆性技术突破和现象级应用场景席卷全球,这不仅重塑了产业格…...
.NET Web-静态文件访问目录浏览
一、Web根目录访问 创建wwwroot文件夹app.UseStaticFiles(); // 启⽤静态⽂件中间件url/路径 进行访问 二、Web根目录之外的文件 app.UseStaticFiles(new StaticFileOptions {FileProvider new PhysicalFileProvider(Path.Combine(builder.Environment.ContentRootPath,&qu…...
redis sentinel模式 与 redis 分片集群 配置
Redis 最低为5.0版本,以下为6.2.6版本信息。 模式 高可用性 数据分片 部署复杂度 适用场景 Sentinel 模式 高 无 中等 中小规模,需要高可用性 集群模式 高 支持 复杂 大规模,需要高…...
CentOS安装Docker,Ubuntu安装Docker,Docker解决方案
文章目录 CentOS7安装DockerUbuntu修改Docker镜像源docker设置容器自动启动启动时加--restartalways如果已经过运行的项目docker compose设置容器自启动 docker file修改时区docker在容器执行命令简单粗暴的办法安装curl docker compose命令安装docker compose Docker WEB 图形…...
【php】php json_encode($arr) 和 json_encode($arr, 320) 有什么区别?
在 PHP 中,json_encode() 函数用于将 PHP 变量(通常是数组或对象)编码为 JSON 格式的字符串。json_encode($arr) 和 json_encode($arr, 320) 的区别主要在于第二个参数,该参数是一个由多个 JSON_* 常量按位或(|&#x…...
【CubeMX+STM32】SD卡 U盘文件系统 USB+FATFS
本篇,将使用CubeMXKeil, 创建一个 USBTF卡存储FatFS 的虚拟U盘读写工程。 目录 一、简述 二、CubeMX 配置 SDIO DMA FatFs USB 三、Keil 编辑代码 四、实验效果 串口助手,实现效果: U盘,识别效果: 一、简述 上…...
node.js+兰空图床实现随机图
之前博客一直用的公共的随机图API,虽然图片的质量都挺不错的,但是稳定性都比较一般,遂打算使用之前部署的兰空图床,自己弄一个随机图 本文章服务器操作基于雨云——新一代云服务提供商的云服务器进行操作,有兴趣的话可…...
【xdoj离散数学上机】T283
递归函数易错: 防止出现递归死循环! 题目 题目:求诱导出的等价关系的关系矩阵 问题描述 给定有限集合上二元关系的关系矩阵,求由其诱导出的等价关系的关系矩阵。 输入格式 第一行输入n,表示矩阵为n阶方阵,…...
缓存机制与 Redis 在高性能系统中的应用
引言 随着互联网应用日益增长,用户对系统的响应速度和稳定性提出了更高的要求。在高并发、大流量的场景下,数据库的读取压力会急剧上升,导致数据库的响应速度变慢,甚至引发性能瓶颈。为了缓解这一问题,缓存机制成为了…...
