- 博客(27)
- 收藏
- 关注
原创 MoE详解(重点是反向传播的实现)
Mixture of Experts (MoE) 的反向传播机制与标准神经网络略有不同,主要是因为 MoE 模型中的机制导致并不是所有的参数都会参与前向计算。因此,在反向传播过程中,只有被激活的专家网络的参数会被更新,而未被激活的专家参数不会被影响。为了更好地理解 MoE 的反向传播机制,我们需要详细分析 MoE 的架构、前向传播中的稀疏激活机制,以及反向传播时参数更新的具体流程。
2024-10-07 14:56:47 839
原创 深入解析大模型显存占用大小:公式、推导及实例分析
在深度学习中,模型的显存(GPU memory)占用是决定训练和推理效率的关键因素之一。特别是近年来,随着模型参数规模的不断增长,显存的合理分配和优化变得至关重要。本文将深入讲解模型在显存上的主要占用来源,提供详细的计算公式和具体例子,帮助读者理解显存需求的不同来源及如何进行优化。
2024-10-03 00:02:25 814 1
原创 深入理解文本生成模型参数:Top-k、Top-p、Temperature 和 Beam Search
在自然语言处理(NLP)领域,文本生成任务(例如机器翻译、文本摘要和对话生成)是一个重要的研究方向。生成文本时,通常使用诸如 GPT、BERT 等模型。然而,要生成符合预期的文本,仅仅依靠模型本身还不够。如何在解码时控制生成策略对于模型的表现至关重要。top_ktop_p和num_beams,并配合实际例子展示它们在生成效果上的不同之处。
2024-10-02 23:46:22 881
原创 一个很大的文件,文件的每一行是一个很大的数字,如果给你一个单机,内存比较小,存不了这么大的文件,但是硬盘是无限大的,如何对文件做一个排序输出
这里我描述一种基于归并排序思想的外部排序方法,它将大文件分割成多个小文件,在每个小文件上进行排序,然后再将这些排序好的小文件合并成一个有序的大文件。读取和排序小块: 将大文件分成多个较小的块,每一块都可以被加载到内存中。写回磁盘: 将排序好的块写回到磁盘上,形成多个已排序的小文件。初始归并: 先将文件两两配对归并,得到更少但更大的已排序文件。移动指针: 在包含最小值的文件中向前移动指针,读取下一个值。写入结果文件: 将找到的最小值写入一个新的结果文件。打开所有文件: 打开所有的已排序的小文件。
2024-08-28 20:04:34 334
原创 机器学习和深度学习中常见损失函数,包括损失函数的数学公式、推导及其在不同场景中的应用
损失函数在模型训练中的角色是衡量模型的预测结果与真实标签之间的差异。损失函数的输出通常是一个非负数,越接近0表示模型预测越准确。
2024-08-28 19:42:26 1528
原创 大模型训练框架 DeepSpeed 详解
DeepSpeed 是一个由微软研究院开发的深度学习优化库,它主要针对大规模分布式训练进行了优化,尤其是在使用大量 GPU 进行训练时可以显著提高效率。DeepSpeed 旨在降低模型并行和数据并行的通信开销,同时提供了一系列工具来帮助研究人员和开发者更容易地训练大型模型。
2024-08-26 20:33:29 928
原创 Jupyter notebook的更改工作目录、更改内核
通过ipykernel指定conda配置好的虚拟环境,(你的env name),如下图所示,很快配置成功;如果以后还想加入配置好的其他环境,再用这个命令指定即可,方便快捷。目标后两个%%括起来的删除,起始位置改成新的工作目录。关闭所有jupyter,然后重启jupyter。先找到配置文件,一般是在user目录下的。添加jupyter的ipykernel包。打开jupyter的快捷开始图标,打开。然后关闭jupyter后重启就行了。然后引号后面改成自己的目录。
2024-07-01 23:25:53 356
原创 三种集成学习范式详解:Boosting、Bagging、Stacking
集成学习是机器学习中一个非常强大的范式,通过结合多个模型的预测来提升整体的预测效果。主要的集成学习方法包括Boosting、Bagging和Stacking,每种方法都有其独特的策略和优点。本文将详细介绍这三种集成学习方法,包括它们的数学原理、具体的算法实现,以及应用场景。
2024-06-16 23:02:21 955 2
原创 常见的损失函数及其数学公式和应用场景以及优缺点
在机器学习中,损失函数是评估模型预测能力的关键,它用于计算预测值和真实值之间的差异。不同的损失函数适用于不同的模型和应用场景。本文将介绍几种常见的损失函数,包括它们的数学表达式、应用场景及各自的优缺点,并展示如何在Python中实现这些损失函数。
2024-06-16 22:48:30 1117
原创 解决神经网络中过拟合和欠拟合的几种方法详解
在深度学习中,过拟合和欠拟合是训练神经网络时常遇到的两个问题。这两个问题会严重影响模型的泛化能力和性能。本文将从基础概念入手,逐步深入,详细探讨解决这两个问题的几种方法。
2024-06-14 22:27:12 811
原创 解决神经网络中梯度消失和梯度爆炸的几种方法详解
在深度学习中,梯度消失和梯度爆炸是训练神经网络时常遇到的两大问题。这两个问题会严重影响模型的训练效果和收敛速度。本文将从基础概念入手,逐步深入,详细探讨解决这两个问题的几种方法。
2024-06-14 22:20:40 744
原创 Java PriorityQueue(优先队列)详解
在Java中,`PriorityQueue` 是一种基于优先级的队列,它的元素按照自然顺序或者由比较器指定的顺序进行排序。`PriorityQueue` 是 Java 集合框架的一部分,提供了在处理需要按照优先级顺序访问元素的场景时的极大便利。
2024-06-10 00:19:20 675
原创 L1正则化和L2正则化在机器学习中的详细介绍及Python代码实现
L1正则化的一个重要特性是它会产生稀疏模型,即一些权重参数会被驱动为零,这对于特征选择非常有用。L2正则化的一个重要特性是它会产生平滑的模型,使得所有权重参数都尽可能小,但不会完全为零。接下来,我们将通过Python代码展示如何在实际中应用L1正则化和L2正则化。过拟合指的是模型在训练数据上表现良好,但在新数据上的表现较差。L1正则化,又称为Lasso正则化,其惩罚项是模型参数的绝对值之和。L2正则化,又称为Ridge正则化,其惩罚项是模型参数的平方和。最常见的两种正则化技术是L1正则化和L2正则化。
2024-06-08 16:09:48 1115
原创 Tomcat、Servlet 和 Java Socket:从基础概念到实际应用
当 Tomcat 接收到 HTTP 请求时,它会使用 Java Socket 来接受请求数据,并将其传递给相应的 Servlet 进行处理。开发者通常不直接在 Tomcat 应用中使用 Java Socket,因为 Tomcat 已经处理了底层的 Socket 通信细节,开发者可以专注于编写业务逻辑(Servlet)。Servlet 是运行在 Tomcat 中的 Java 程序,Tomcat 负责管理 Servlet 的生命周期和处理 HTTP 请求。是 Java 提供的用于网络编程的类,
2024-06-05 21:07:03 642
原创 Java Socket的基础编程及深入理解
Socket编程是网络编程中的重要部分,它允许不同计算机之间通过网络进行通信。本文将从基础开始,逐步深入讲解Java中的Socket编程。涵盖基础概念、基础示例代码、以及一些高级的主题。
2024-06-04 01:28:52 466
原创 使用screen实现本地关闭仍然能远程运行代码
screen 是一个终端多路复用器,允许你在单个终端会话中运行多个终端会话,并在不同会话之间切换。使用 screen,即使关闭终端或发生断线,程序仍可以继续运行。
2024-05-27 23:32:42 305
原创 linux多用户安装Anaconda教程
在文本末尾添加:Anaconda environment。提示是否需要执行conda init,输入yes。用一个有sudo权限的账号执行安装。创建组anaconda。
2024-04-09 13:10:20 487
原创 Ubuntu重启后找不到NVIDIA-GPU驱动
以往的解决方法是修改Ubuntu默认开机启动的内核版本:需要找到之前使用的内核版本(查看系统已安装内核版本时发现有好几个,也忘记之前安装驱动时内核版本是哪个),并修改grub开机配置,之后便是删除无用内核并禁止内核更新(记得之前已做过这个步骤,但这次内核还是更新了?$ sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info //把以前的info文件夹重新改回名字。鉴于上述方法过于复杂,这次采用新的方法:基于新的内核重新生成GPU的驱动模块。
2023-12-21 16:18:17 1894
原创 MySQL Adaptive Hash Index详解
还是先来放一张MySQL的InnoDB体系架构图:(MySQL 5.7)。它是一个纯内存结构,今天就来盘它。
2023-11-24 11:26:33 769
原创 MySQL Change Buffer详解
上一篇文章我们学习了InnoDB Buffer Pool的工作原理,其作用是减少MySQL时直接与磁盘打交道的次数。那么写入数据时MySQL是否做了减少IO的优化呢?答案是肯定的,Change Buffer闪亮登场。先放一张官档中Change Buffer的架构图:官档中对Change Buffer的概念是:更改缓冲区是一种特殊的数据结构,当二级索引页不在缓冲池中时,它会缓存对二级索引页的更改。可能由INSERTUPDATE或操作导致的缓冲更改,稍后在其他读取操作将页面加载到缓冲池时合并。
2023-11-23 21:34:47 377
原创 MySQL InnoDB Buffer Pool详解
MySQL InnoDB Buffer Pool,从字面意思理解就是:MySQL InnoDB缓冲池,既然是缓冲池,那么它的作用就是缓存表数据与索引数据,把磁盘上的数据加载到缓冲池,避免每次访问都进行磁盘IO,起到加速访问的作用。(把“最热”的数据放到“最近”的地方,以“最大限度”的降低磁盘访问。也可以理解成InnoDB缓冲池中缓存着大量的数据,使CPU读取或者写入数据时,不直接和低速的磁盘打交道,直接和缓冲区进行交互,从而解决了因为磁盘性能慢导致的数据库性能差的问题,弥补了两者之间的速度差异)。
2023-11-23 21:29:50 100
原创 pycharm中连接远程服务器同步修改和使用远程解释器
然后点击左上角的加号,选择SFTP,然后点击下图中的红框地方来设置连接信息,填好之后Test Connection测试连接情况,点击Autodetect自动选择Root path,连接成功后选择下面的Apply。完成上述步骤之后就可以实现在pycharm中实时修改远程服务器中的代码了!可能运行环境会有问题,如果服务器运行的环境是服务器的环境但是文件是本地文件的话,也可以用下面这个方式来解决。在服务器中新建好存放代码的文件夹,并且在同步之前,要把。,服务器上的代码和本地的代码要保持一致。
2023-11-15 15:14:52 1749
原创 Jupyter Notebook修改系统默认工作路径
每次我们打开Jupyter Notebook时,在弹出的浏览器界面上是系统默认的文件位置(工作路径),有时候我们想保存写好的Python文件到自己想要的位置时就非常的不方便,那么我们该如何修改Jupyter Notebook默认的工作路径呢?5.修改Jupyter Notebook的快捷方式,删掉目标中的%USERPROFILE%并在后面添加上刚才设置好的默认工作路径。2.在我的文档里如下路径找到刚才生成的配置文件(nickw是我的电脑的用户名)
2023-11-14 20:19:14 205
原创 Q-learning
在Q-learning中,智能体通过与环境交互来学习。其中,s表示当前状态,a表示当前行动,s'表示下一个状态,a'表示在下一个状态下可选择的行动。r表示在当前状态下选择当前行动获得的立即奖励,γ是一个介于0和1之间的折扣因子,用于指导智能体长期考虑即将发生的事件。它的目的是通过学习最优的Q值函数来选择最优的行动,在不知道环境转移概率的情况下,让智能体(agent)学习如何做出最优的行动。Q-learning算法的核心在于在智能体不断与环境交互的过程中,更新Q表中的Q值函数,从而指导智能体做出正确的决策。
2023-09-20 17:07:49 189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人