- 博客(30)
- 收藏
- 关注
原创 深度学习专题:模型训练的张量并行(一)
本文介绍了深度学习中的张量并行技术,重点分析了两种切分方式:行并行和列并行。行并行将权重矩阵按行拆分到不同设备,输入矩阵随之按列拆分,通过all-reduce聚合结果;列并行则将权重矩阵按列拆分,输入保持不变,通过all-gather聚合输出。两种方法都能有效减少单个设备的显存占用,并利用多设备并行计算加速模型训练。
2025-12-17 14:49:38
142
原创 深度学习专题:模型训练的数据并行(二)
本文详细介绍了深度学习分布式训练中的Ring All-Reduce梯度同步算法。该算法采用环形通信结构,分为Scatter-Reduce和All-Gather两个阶段:首先将梯度分块进行累加计算(各GPU负责不同参数块),然后广播完整的累加结果。通过四块GPU和9个参数的实例演示,文章展示了完整的通信流程,包括4次通信完成梯度聚合和广播。Ring All-Reduce的优势在于通信量不随设备数增加而显著增长(N个设备只需2×(N-1)次通信),特别适合大规模参数同步场景。
2025-10-31 16:02:35
448
原创 MySQL EXPLAIN 中的七种 type 类型详解
本文深入解析MySQL EXPLAIN命令中的七种type类型,从最优的system到最差的ALL,详细说明每种类型的特点、使用场景和优化建议。通过性能对比表和实战案例,帮助开发者理解查询性能差异,掌握如何通过添加索引、优化连接条件等方式提升SQL查询效率,特别强调避免全表扫描和合理使用覆盖索引的重要性。
2025-09-22 18:32:44
824
原创 深入 Linux 文件系统:从数据存储到万物皆文件
本文系统介绍了Linux文件系统的核心原理与运行机制。首先从最小模型出发,阐述元数据区(inode表、位图)与数据区的协作方式;接着分析目录结构、文件操作流程及软硬链接区别;然后讲解日志文件系统如何确保数据一致性;进而剖析现代文件系统(如ext4)的块组优化设计;最后揭示虚拟文件系统(VFS)如何实现"一切皆文件"的抽象。通过层次化视角,展现了从系统调用到硬件写入的完整数据流,帮助读者全面理解Linux文件系统的高效性与可靠性。
2025-09-11 17:31:23
1328
原创 深入浅出:揭秘硬盘的物理与逻辑结构
硬盘数据存储的核心在于物理与逻辑结构的协同工作。物理上,数据通过盘片、磁道、扇区和柱面组织;逻辑上,操作系统将硬盘抽象为分区,并通过MBR引导和管理。进一步格式化创建文件系统,利用iNode表、位图等元数据结构高效管理数据块。整个过程从物理定位到逻辑抽象,实现了数据的精确存储与快速访问。
2025-09-11 09:34:26
1046
原创 SQL 中 WHERE 与 HAVING 的用法详解:分组聚合场景下的混用指南
SQL中WHERE与HAVING子句的区别与配合使用。WHERE用于分组前过滤单行记录,HAVING用于分组后过滤聚合结果。两者在分组查询中协同工作:先WHERE过滤原始数据,再GROUP BY分组,最后HAVING筛选分组结果。常见误区包括WHERE中使用聚合函数和HAVING引用非分组列。HAVING本质是对分组结果做WHERE过滤,也可用子查询+WHERE替代。合理混用这两个子句能编写高效精确的聚合查询。
2025-07-31 16:41:25
425
原创 MySQL 查询中的 UNION、UNION ALL 和 DISTINCT
MySQL查询中的UNION、UNION ALL和DISTINCT三者的区别与使用场景: UNION:合并结果集并自动去重,适合需要合并多表数据且去除重复记录的场景,但性能较低。 UNION ALL:合并结果集但保留所有行(包括重复),性能优于UNION,适合确定没有重复或需要保留重复的情况。 DISTINCT:仅用于单表查询去重,会影响查询性能,大数据量时考虑用GROUP BY替代。 实际应用中应根据是否需要去重、合并结果集等需求选择合适的方法,并注意列匹配和ORDER BY语句的位置。
2025-07-31 16:12:49
478
原创 深度学习专题:模型训练的数据并行
本文介绍了深度学习中的关键并行技术,重点探讨了数据并行方法。数据并行通过将模型复制到多个GPU上并拆分训练数据,实现了加速训练过程。文章详细阐述了数据并行的工作流程,包括模型分发、数据拆分、并行计算和梯度同步等步骤。通过单层全连接网络的算例验证,证明了数据并行的数学正确性:将4个样本平分给2个GPU后,梯度同步结果(7.5)与单卡完整批量计算完全一致。数据并行有效解决了大规模模型训练时单GPU计算能力不足的问题。
2025-07-31 10:06:34
1216
原创 SQL 连接类型示例:内连接与外连接
本文介绍了SQL中四种主要的连接类型及其区别。通过员工表和部门表的示例数据,展示了每种连接的实际效果:内连接只返回匹配行;左连接保留左表全部记录;右连接保留右表全部记录;全连接保留两表所有记录。最后总结了关键区别:内连接仅匹配行,左/右连接分别保留左/右表全部数据,全连接保留两表所有数据。特别指出MySQL不支持全连接,但可通过组合左/右连接实现类似功能。
2025-07-30 15:28:16
554
原创 MySQL 并发控制之锁机制 —— InnoDB 当前读(SELECT FOR UPDATE / SELECT LOCK IN SHARE MODE)加锁策略总结
*MySQL 并发控制之锁机制 —— InnoDB 当前读(SELECT FOR UPDATE / SELECT LOCK IN SHARE MODE)加锁策略总结****1. 隔离级别的影响****2. 索引类型的影响****(1) 主键(Primary Key)或唯一索引(Unique Key)****(2) 非唯一索引(Secondary Index)****(3) 无索引(全表扫描)****3. 查询类型的影响****(1) 等值查询(`=`)**
2025-07-29 14:02:13
782
原创 浅谈 Redis 数据类型
Redis 的是二进制安全的,可以用来存储等数据。适用于存储等任意二进制安全的内容SETGET nameMGET:可存储图片、序列化对象等任意数据:短字符串用embstr编码(内存连续),长字符串用raw编码当key时,设置其值为value,并返回OK(成功);若key已存在,则不做任何操作,返回nil(失败)为防止锁持有者崩溃后锁无法释放,需设置超时(通过EXPIRE任务完成后,主动删除键以释放锁(通过DEL**【风险1】**若SETNX成功,但EXPIRE未执行(如客户端崩溃),锁会永久占用SET。
2025-05-13 15:07:06
940
原创 用 Java 实现 哲学家就餐问题
这篇文章分析了死锁产生的条件,并使用 Java 实现经典的哲学家就餐问题以复现死锁,并给出解开死锁的解决方案。
2025-05-09 15:42:38
663
原创 创建型设计模式之:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式
创建型设计模式之:简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式
2025-04-25 15:45:14
1371
原创 聊聊 JUC 下的 CountDownLatch、CyclicBarrier、Phaser 和 Semaphore
聊聊 JUC 下的 CountDownLatch、CyclicBarrier、Phaser 和 Semaphore
2025-04-16 22:03:17
1081
1
原创 Java 网络 I/O 编程:同步阻塞 I/O,同步非阻塞 I/O 和 I/O 多路复用
Java 网络 I/O 编程:同步阻塞 I/O,同步非阻塞 I/O 和 I/O 多路复用
2025-02-25 20:25:31
1291
原创 网络安全专题:数据加密技术、免密登录技术、数字签名、数字证书、安全套接字 SSL 与 HTTPS 协议
网络安全专题:数据加密技术、免密登录技术、数字签名、数字证书、安全套接字 SSL 与 HTTPS 协议
2025-02-22 16:50:37
1260
原创 IP 地址
当 DHCP Discover 报文到达路由器时,路由器会将源 IP 地址改为自己的 IP 地址,将目标 IP 地址改为 DHCP 服务器的 IP 地址,然后将报文定向发送给 DHCP 服务器。例如 192.168.1.2 和 192.168.2.2 的子网掩码是 255.255.255.0,它们在不同网段,但是由于子网掩码设置错误(例如设置成 255.255.0.0),在通信时,计算机判断它们在同一网段,从而发送 ARP 广播请求目标计算机的 MAC 地址,这当然会失败,因为路由器不转发 ARP 广播。
2024-12-04 17:59:01
2322
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅