信息量-信息熵-交叉熵—KL散度
信息量 信息量被看作是用来度量事件发生时携带信息的多少,或描述事件消除不确定性程度的量。事件发生的概率越大,则事件发生的确定性越高,能带来的新信息越少,信息量越小。反之,事件发生的概率越小,信息量就越大。 1.信息量为正数,信息量与实践发生的概率相关,表征信息量的数学函数\(I(P)\),应当是一个单调递减函数。 2.P(事件)=0时,I(P(事件))=正无穷;P(事件)=1时,I(P(事件))=0; 3.多个独立事件联合发生的信息量,应当等于多个单独事件信息量的和,即: \[ I(P(事件1), P(事件2)) = I(P(事件1)) + I(P(事件2)) \] 举一个例子: \[ \begin{aligned} I(黑桃牌) &= I(P(黑色牌)*I(黑桃牌|黑色牌)) =...
最大似然估计及其对损失函数的推导
似然估计 对于一个神经网络,损失函数是整个反向传播过程的起点。也是网络训练任务的核心,然而我们得到均方误差、交叉熵等损失函数的过程,本质上都可以看成是最最大似然估计的过程。 假设我们一直抛掷一枚硬币时正面朝上的概率为 0.5,反面朝上的概率也为 0.5。现在连续抛 10 次影片,求出现 7 次正面朝上,3 次反面朝上的可能性。 在这个描述中,我们可以把整个抛硬币的环境看作一个模型,硬币正反面出现的概率看作为模型的参数,抛 10 次硬币得到的结果看作是实际发生的事件。这种已知模型参数预测事件发生可能性的过程,为求概率过程。 假如我们不知道硬币正面反面朝上的概率,但是通过随机抛 10 枚硬币,发现其中有 7 次正面朝上,3 次反面朝上,可以尝试根据抛硬币的结果,预测出硬币正反面出现的概率值。这种已知事件发生的结果,反向推理出模型的参数值的过程,为求似然的过程。 假设硬币正面朝上的概率为 \(\theta\),则反面朝上的概率为...
单层VAE原理与置信下界
VAE的原理大概为,给定一个 \(x\),我们认为其是由一个隐变量 \(z\) 生成的,这个隐变量 \(z\) 则是通过一个后验网络 \(q_{\phi}(z|x)\) 预测出来的,而在推理的时候,则是通过 \(z\) 去预测 \(x\). 如果用公式描述\(p(x)\)的生成过程,则大概可以分为以下几步 \[ p(x) = \int_z p_{\theta}(x|z)p(z) \tag{1} \] 可以理解为在所有 \(z\) 上进行积分得到每一个 \(p(z)\) 发生的概率乘以每一个 \(p(z)\) 发生的时候 \(p(x)\) 也发生的概率 \(p_\theta(x|z)\),此时我们同时乘以和除以一个 \(q_\phi(z|x)\),则可以得到: \[ p(x) = \int_z q_\phi(z|x) \frac{p_{\theta}(x|z)p(z)}{q_\phi(z|x)} \tag{2} \] 我们可以把这个边缘计算进行期望表示 \[ logp(x)=logE_{z \sim...
时间真的越走越快吗
...
大规模GPU集群训练LLMs
概览 这本开源书籍旨在引领变革。从基础出发,我们将引导你掌握将大型语言模型训练从单 GPU 扩展到数十、数百甚至数千 GPU 所需的知识,并通过实际代码示例和可复现的基准测试来阐述理论,使内容更加自然易懂。 成排的GPU集群发出整齐划一的轰鸣,这正是训练当代顶尖AI模型所需的场景——一场算力交响曲的演绎,而这般景象在不久前还只是顶尖实验室的专利。开源运动虽然打破了技术垄断,却未能完全消弭核心壁垒。如今,任何人都能自由下载最新的Llama或DeepSeek模型,研读其技术文档和实验报告。但真正的精要所在——那套驾驭GPU集群训练庞然智能体的工程体系,那些在分布式系统中精妙调谐万千计算单元的核心技艺——仍如深藏云端的圣殿,其奥义散落在晦涩难懂的学术论文与彼此割裂的私有代码库之间,构筑着难以逾越的技术鸿沟。``` 随着训练模型所用的集群规模不断扩大,人们发明了多种技术,包括数据并行(Data Parallel, DP)、张量并行(Tensor Parallel, TP)、流水线并行(Pipeline Parallel, PP)和上下文并行(Context Parallel,以及...
工作自由度与社会公益的双赢
几乎所有关于无条件基本收入的社会研究都指向了一个非常相似的结果: 在开始发放无条件基本收入的最初几个月,人们确实会倾向于减少工作多休息。这是因为在发放无条件基本收入之前,大多数人都在咬着牙超时做着自己并不满意的工作,当基本生活有保障之后,这些人会倾向于少工作一些,修复自己疲惫不堪的身心状态。 而在身心状态恢复之后,这些人当中的大多数都会开始寻找对自己来说有意义的工作。很多人会开始做公益的事情,比如给有需要的人派发食品,或者无偿教授自己已有的技能。总体来说,人们有了更多社交的机会,也更快乐了。而且平均而言,因为找到了自己更喜欢的工作,所以人们其实会倾向于花更多时间工作,而不是更少。 但社会发放无条件基本收入对很多雇主来确实是一个很大的变化!这些雇主很难再找到愿意拿着很差的工作待遇然后超时工作的人了,因为员工永远可以选择辞职而不用担心生计。为了留住员工,雇主们开始给员工提供更好的工作待遇。这也反过来说明了,没有无条件基本收入的时候,有很多员工其实是因为担心生计而不得不痛苦地做着自己并不愿意做的工作。也就是说,没有无条件基本收入,我们也就没有真正的自主和自由。
CentOS glibc 升级
最近在安装 Nvidia Rapids 用于更为高效的科学计算。 安装代码如下: 1conda create -n rapids-25.04 -c rapidsai -c conda-forge -c nvidia rapids=25.04 python=3.12 'cuda-version>=12.0,<=12.8' 但是发现 rapids-25.04 需要 GLIBC 的版本 在 2.28 及之上, 2.30 之下,但是我使用的是 CenOS 7, 默认的 GLIBC 版本相对较低,故需要对 GLIBC 进行升级。 经过阅读相关的博客,如 CSND, STACK_OVERFLOW,大概了解了 GLIBC 如何升级。 包含有 gmp, mpfr, mpc, isl的安装, gcc 的安装,binutils, bison, make 的安装,最后我安装的是 GLIBC-2.29 版本的。以下是我安装的 shell 脚本,部分的安装包更换为了...
正义的残缺
见义勇为是充满正义的行为,不为交换任何资源的行为。 柏拉图认为我们对“正义”这种理念(原相)的认识不可能是凭空出现的,这只能是我们“前世的残存记忆(内心OS:是本人灵魂残存还是肉体DNA残留呢?),是在一个理念世界中生存时,遗留下来的模糊记忆”。 而当一个人目睹另外一个人做正义的事情,就是唤醒记忆的过程。正义必须“被看见”,才能发挥它的作用。我眼前的对象(存放理念的拟像化身)其实都是“不完整的、有残缺的理念碎片”,但通过这些碎片,我们可以圆满的回忆起自己的理念具体是什么。 罗马破碎之时,民不聊生,大家渴望得到精神上的救赎。不管什么“正义”、“善”、“勇敢”,还是什么“物理规律”、“逻辑大前提小前提结论”,这些东西全部汇聚到一个点上,那就是 Oh My God。 这是把理念全部存放到一起汇总了。你觉得有些事情不正义,那么你身上一定存了对应的正义公平的概念。你没吃食物饿了,那么你一定知道可以具体找那些可以吃的安全的食物。(你不会去吃让你呕吐生病的烂水果腐肉) 但如果有人身上就是从来没有这种“正义”理念的残留呢?他从未有Oh My...
PyTorch手写多头注意力
上回说到了 self-attention 的四种写法,这次更新一下 multi-head attention 的写法。multi-head attention 与 self-attention 最主要的不同是,我们输入的 X (Batch_size, seq_size, emb_size) 在 self-attention 的 QKV 均为 (Batch_size, seq_size, emb_size), 而在 multi-head attention 中,我们需要将 emb_size 拆分为 num_head 和 head_dim。 多头注意力通过并行地运行多个独立的注意力机制来获取输入序列的不同子空间的注意力分布,从而更全面地捕获序列中潜在的多种语义关联。 代码如下所示: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061import torchimport torch.nn as...