1作者: adinhitlore12 天前原帖
我刚刚注意到,在慢速CPU上训练数百万个参数实际上只需大约5分钟……但在你称呼Yudkowsky为“结束了”之前,有一点重要的说明:主要瓶颈是语料库的大小,参数只是“聪明才智”,但在信息有限的情况下,它是无能为力的。 无论如何,这是项目链接: [https://github.com/bggb7781-collab/lrnnsmdds/tree/main](https://github.com/bggb7781-collab/lrnnsmdds/tree/main) 几点说明: 1. 这是一个单一的C文件,没有依赖项。以下是所有的“依赖项”,甚至没有自定义头文件(直接从单个C文件的顶部复制粘贴): ```c #define _POSIX_C_SOURCE 200809L #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> #include <stdint.h> #include <stdbool.h> #include <float.h> #include <getopt.h> #include <errno.h> ``` 目前代码在一个文件中有4136行,仅此而已。 2. 在Windows上编译的最简单方法:下载Cygwin([https://www.cygwin.com/](https://www.cygwin.com/)),然后导航到你的lrnnsmdds.c文件所在的目录,运行gcc并加上一些优化,例如: ```bash gcc -std=c17 -O3 -march=native --fast-math -o lrnn lrnnsmdds.c -lm ``` 在Linux上只需运行gcc,如果由于某种原因你在Linux上没有gcc,可以运行`sudo apt-get install gcc -y`,或者其他类似的命令…… 在Apple上:我不知道,或者可以使用vmware安装ubuntu,然后运行它。 当然,你可以“git clone”并进入目录,但再说一次:这只是一个文件!直接复制它…… 这个仓库包含一个小的玩具语料库,我借用了(希望不是抄袭!)我最喜欢的书之一《星际王者》(Star Kings)中的名字“John Gordon”。仅复制了名字,内容是独特的(嗯,几句我自己写得很差的句子……)。显然,在如此小的语料库上,它会过拟合并导致抄袭,唯一的目标是检查一切是否正常运行,而不是它是否是AGI。如果你想生成独特且有意义的文本,你需要自己的100KB以上的语料库。 3. 为什么/什么/何时/如何? 我相信GitHub仓库在功能、用途和目标上是自解释的,但为了总结一下: 我主要的动机是创建一个仅在CPU上运行的快速替代品,因此你会看到在C而不是Python中完成这一任务的奇特/不易之处,以及缺乏依赖项。此外,我希望它也是一个聪明的替代品,因此你会看到所有这些功能堆叠得比90年代的宝马850还要多。不过,“水库”是最具新颖性的特征,它提供快速的精确回忆,可能与RWKV 8或最新的Mamba不同,实际上,架构SMDDS的名称来自于实现的特征的首字母: * S. SwiGLU通道混合(更连贯) * M. 多尺度令牌移动(更大的上下文) * D. 依赖数据的衰减与低秩(在大上下文中的速度) * D. 动态状态检查点(更快/线性生成) * S. 插槽记忆水库(完美回忆,类似于变压器)。 如果你遇到任何问题,直接给我发邮件(最简单)。 好、坏、丑: 这是一种或多或少有效的文本到文本的替代架构,它并不试图模仿变压器或LSTM、Mamba、RWKV,尽管它与它们共享许多特征——坏的一点是它并不是特别快,如果你有Ryzen/i7 16核或其他配置,并且有耐心,可以尝试通过单词标记器和低困惑度(低于1.2……)在几本小书上训练它,看看它是否看起来更聪明/更快。由于这是开源的,显然希望能够改进:使其支持CUDA,改进功能,移植到Python等。 根据许多因素,我可能会在7月、8月、9月推动版本2。目前我的重点将是测试和扩展,因为功能很多,在我测试的两台笔记本电脑(Windows/Cygwin和Ubuntu)上编译时没有任何警告,速度与变压器相当,快10倍!