SONUB
ZH English 한국어 日本語 中文 हिन्दी বাংলা اردو Español Português Français Deutsch Русский العربية Bahasa Indonesia Tiếng Việt ไทย Türkçe

如何开启通知

此浏览器或网址无法使用通知。请使用支持通知的浏览器,通过安全连接访问SONUB。

如果通知被屏蔽,请在浏览器设置中允许通知。

  1. 打开地址栏旁的站点设置或浏览器的站点设置,将此网站的通知设为允许。
  2. 在设备设置中允许浏览器发送通知,并检查勿扰模式或专注模式。
  3. 返回SONUB并刷新页面。通知开启后,铃铛将不再显示。

在iPhone或iPad上,将SONUB添加到主屏幕,从主屏幕打开后允许通知。

登录 退出登录 显示主题 默认主题 深色主题 粉色主题 聊天 1:1 聊天 群聊 论坛 公告 新闻区 建议区 自我介绍 主菜单

现在,让我们打造属于你自己的人工智能吧。

不使用或外部 ,在此中亲手输入一个小型 ,再用自己做的 和 对话。先了解整个开发过程。

一排词语积木的最后是一个空格。空格上方有三块候选积木,各带一根高低不同的柱子;其中一块被选中,接到这一排的末尾,一个箭头又绕回去,再选下一个。
1

XSLM概述

意为Extra Small Language Model,是SONUB为学习开发自创的术语。 thruthesky.github.io/xslm

只在网页浏览器中开发人工智能

在本课程中开发 XSLM 时,必须 100% 只使用网页。不能使用其他,例如自己电脑上的程序或其他终端,一切都在网页浏览器里完成。

XSLM 的开发从头到尾都只在 sonub.com 人工智能页面里的这个终端中完成。这里做的非常小,用手机也能只靠网页浏览器开发。

了解更多
  1. XSLM 可以用多种方式构建,也可以在自己的电脑上开发。

  2. 但 SONUB 最初构想 XSLM 时,是为学习而设计的:只用网页浏览器中的 就能开发全部内容。

  3. 为了让任何人都能轻松亲手做出人工智能,整个学习过程只在网页浏览器中进行。

  4. 终端是在网页浏览器中运行的 Linux(v86),所以在电脑、平板和手机上用的都是同一个终端。手机屏幕键盘上没有的 Tab、 等键,用终端上方的按键栏来按。

你在网页浏览器中亲手打造的 XSLM ,将通过 公开,让全世界的人都能使用。 发布我的模型

从零开始完成一个语言模型,并理解从准备、训练到生成文本、连接自己的聊天机器人的每个阶段。这是非常小的学习用模型,最初的回答会乱七八糟,但你会弄懂每个部件如何运转。

文本变成,学习预测下一个编号,加载权重,发送问题。每个部分都由你编写;提供计算和文件功能。

什么是 XSLM——比 LLM、SLM 再小一级的语言模型

XSLM(Extra Small Language Model,超小型语言模型)比大型语言模型(LLM)和小型语言模型(SLM)再小一级,指参数只有几百万到几亿个的非常小的人工智能模型。这是 sonub.com 自己提出的名称。

  • LLM:参数几百亿到几千亿个。在的 上运行。
  • SLM:参数几十亿个左右。在性能好的电脑或一张 GPU 上运行。
  • XSLM:参数几百万到几亿个。在智能手机这样的小设备上也能运行。

XSLM 有三个核心特点。

  • 为端侧()优化:模型非常轻,即使在智能手机、可穿戴设备、(IoT)设备这类计算能力很有限的设备上,也能不连网独立运行。
  • 成本很低:一般的 SLM 光是加载模型就需要几 的 ,而 XSLM 只用几百 MB 以下的就能运行。所以和运营几乎不花钱。
  • 只做一件事的专家(Specialized Worker):和像百科全书一样什么都懂的 LLM 不同,XSLM 只为把一件事做好而做,比如句子摘要、文本分类、函数()、为 AI 分配去向(Router)。

本课程里你亲手做的 XSLM 比这些还要小得多,是只有 1,248 个参数的学习用模型。为了能用眼睛跟着看懂原理,才把它缩到最小,但零件是一样的。把同样的结构做大,再用某一件事的数据来训练,就成了上面说的实用 XSLM。

什么是语言模型——给出下一个词元概率的函数

语言模型是一个函数:看前面的文字,给接下来可能出现的每个片段(词元)打上。在 "the sun is" 之后,例如它可能给 warm 0.6、hot 0.2、blue 0.01,再把剩下的 0.19 分给里的其他词元。整个词表的概率加起来等于 1。

写文章就是反复调用这个函数。

  • 把目前为止的文字变成词元编号。
  • 模型计算下一个词元的概率。
  • 按概率选出一个词元。
  • 把选出的词元接到文字后面,回到第一步。

、 这样的巨大模型,基础也一样。不同的是规模(数千亿个权重)、训练资料的数量,以及为了擅长对话而加的额外训练。XSLM 用最小的规模从零做出这个基础,亲眼确认每个部件的作用。

从零开始——从随机数字出发

从零开始(from scratch)是指不拿别人训练好的。XSLM 的 1,248 个权重全部从 random.gauss(0, 0.1) 抽出的小随机数开始。这时模型什么都不懂,所以给词表 40 个词元几乎相同的概率。

训练只做一件事:一点点修改数字,让资料里真正出现的下一个词元概率变高。仅凭这种下一个词元预测(next-token prediction),语法、格式和常见内容就会积累到数字里。不需要另外标注答案。文字本身既是题目也是答案。

所以模型会擅长什么,由资料的格式决定,而不是。XSLM 资料的每一行都是 Q: 问题后接 A: 答案的格式,所以模型学会在 A: 后面接上像答案的文字。没有专门加入对话能力的。

亲手用 Python 来做

你将亲自编写 Python 程序来开发人工智能。

因此你也会学一点 Python 编程。

运行 Python 程序只需一条。在 后面写上文件名,就会运行该文件中的代码。

python3 [文件名.py]
动手实践

在终端里写第一个 Python 程序

请按顺序把下面的命令亲手输入终端。每条命令后按 Enter。

  1. 查看版本

    在终端输入这条命令。如果出现以 Python 3 开头的号,就准备好了。

    python3 --version
  2. 打开 Python

    只输入 python3。出现 >>> 时,说明 Python 正在等待你的命令。

    python3
  3. 输入第一条命令

    在 >>> 后面输入这条命令并按 Enter。屏幕上会显示 Hello。

    print("Hello")
    Hello
  4. 退出 Python

    输入这条命令即可关闭 Python,回到终端。

    exit()
  5. 创建文件

    是在终端里使用的,会给 Python 代码加上颜色。这条命令会创建并打开 hello.py。

    micro hello.py
  6. 输入代码

    照原样输入这四行。最后一行开头的四个空格表示这一行由 for 重复执行,一定要保留。按 Tab 也会生成四个空格。

    name = "XSLM"
    print("Hello,", name)
    for step in range(1, 4):
        print("Step", step)
  7. 保存并关闭

    按 +S 保存。按 Ctrl+Q 关闭 micro。

    Ctrl+S Ctrl+Q

  8. 运行程序

    回到终端后,用这条命令运行。看到下面的结果就成功了。

    python3 hello.py
    Hello, XSLM
    Step 1
    Step 2
    Step 3
  9. 自己改一改

    用 micro hello.py 重新打开,把 XSLM 改成你的名字,保存后再运行一次。屏幕上会显示你的名字。

在终端中练习

整体流程——程序之间传递文件

XSLM 是一条链:每个程序读取前一个程序生成的文件,再生成下一个文件。

  • prepare.py —— 读取 data/raw.txt,生成 data/train.txt 和 data/val.txt。
  • tokenizer.py —— 用 train.txt 学习,生成 data/tokenizer.json。
  • engine.py、model.py —— 计算工具和 GPT 结构。自己不生成文件,由其他程序导入使用。
  • train.py —— 用资料和训练 GPT,生成 checkpoints/model.json。
  • generate.py —— 读取 model.json,接着写文字。
  • runner.py —— 把 generate 开放为 。
  • xchat.py —— 向 Runner 发送问题并显示回答。

前面的文件变了,后面的都要重新生成。比如修改了 raw.txt,就要依次重新运行 prepare → tokenizer → train。

XSLM 整体流程——文件与程序
  1. raw.txt 原始问答
  2. prepare.py 整理并分成训练与验证
  3. tokenizer.py 把文字变成词元编号的规则
  4. train.py 学习预测下一个词元
  5. model.json 保存学到的
  6. runner.py 通过 HTTP 提供生成
  7. xchat.py 终端对话界面

有多小——规模比较

模型的大小用要学习的数字(参数)的个数来算。

  • XSLM:1,248 个——词表 40,宽度 8,1 个块,1 个头。
  • 小型练习用 GPT(示例):约 2,800 万个——词表 24,000,宽度 384,6 个块,6 个头。
  • Small(2019):约 1.2 亿个。
  • GPT-3(2020):约 1,750 亿个。

XSLM 这么小是有原因的。所有数字都作为一个 (Value)来处理,并且在浏览器里的虚拟 上计算。把规模调大,一次训练就要几分钟。作为交换,可以亲自读到每一个数字的计算。结构和 GPT 一样,只有规模和计算方式不同。

用同样的方法做大,就成了 SLM

学会 XSLM 并不是终点。只要用同样的方法不断扩大规模即可。

  1. 在 sonub.com 学习 XSLM 在网页浏览器里
  2. 在自己的电脑上做更大的 XSLM 同样的方法,更大的规模
  3. 再做大就是 SLM 同样的方法,继续做大

制作步骤是一样的。规模越大,就需要越多的训练数据、更好的电脑和更长的时间,计算则交给 这样的工具。

实际在用的 XSLM——公开的模型和缩小模型的方法

这种大小的模型已经公开,并且正在被使用。

  • SmolLM2-135M(Hugging Face,2024 年):参数约 1.35 亿个。是接着往下写文字的 GPT 型模型,在智能手机上也能运行。
  • MobileBERT(Google,2020 年):参数约 2,500 万个。它不是用来写文字的,而是理解句子后做分类,或在一段文字里找出问题的答案。

把大模型缩小到 XSLM 大小,主要有两种方法。

  • (Knowledge Distillation):小模型(学生)跟着大模型(老师)给出的概率学习。比只看一个正确答案学得更多。
  • (Quantization):每个参数不再用 小数保存,而是用 8bit 或 4bit 数字保存。内存缩小到四分之一到八分之一,准确度会稍微下降。

这两种方法都建立在本课程里做的训练(第6阶段)和权重保存(检查点)之上。学完课程,你就能读懂这些方法的文档和代码了。

九个核心概念——各用一句话

先用一句话看看课程中会遇到的概念。每个阶段会详细讲解。

  • 数据格式:决定模型要做什么(第3阶段)。
  • 分词器:把文字变成词元编号,再还原(第4阶段)。
  • :把词元编号变成数字向量的表(第5阶段)。
  • :告诉模型是第几个位置的向量(第5阶段)。
  • :决定看前面哪些位置、看多少,并混合信息(第5阶段)。
  • ():在每个位置再加工混合后的信息(第5阶段)。
  • 、:保留原始信息,稳定数字大小(第5阶段)。
  • 下一个词元预测、:用正确词元的概率衡量做得多好(第6阶段)。
  • :从概率中选出实际的词元(第7阶段)。

四个常见误解

先纠正初次制作时常有的误解。

  • 模型里存着句子?不是。知识分散在所有权重的数字模式里。打开任何一个数字,都找不到句子。
  • 从里查下一个词?不是。模型每次都通过计算给出整个词表的分数,不做检索。
  • 损失低就会说事实?不是。只是说生成与训练资料相似文字的概率高。
  • 小模型原理不同?不是。XSLM 和巨大模型用的是相同的部件,只是规模、资料和额外训练不同。

还有一点。学到的内容在训练结束那一刻就固定了。想知道新消息,要么重新训练,要么像真实服务那样在提问时找来最新文档一起放进去(,第9阶段)。

动手输入并实验

打开终端输入命令,说明五个部分的作用。短英文示例以后可换成自己的语言。

python3 -c "print('XSLM: text -> tokens -> GPT -> Runner -> XChat')"
在终端中练习

检查理解

自己训练、保存、重新加载权重并用于XChat,就完成了整个链路。

遇到问题时

初学者可先复习Python、、循环、、类,或做热身。

常见问题

做这么小的模型有什么用?

本课程里做的 1,248 个参数的模型几乎没有实用价值。目的是亲手组装一次引擎。把分词器、嵌入、注意力、损失、、采样、服务器都亲手做一遍,就会明白大模型的文档、论文、代码里那些名称指的是什么。转到 PyTorch 后,概念也完全一样。把同样的零件做大到几百万到几亿个参数,再用某一件事的数据来训练,就成了用于摘要、分类、分配去向(Router)的实用 XSLM。

回答很离谱,是失败了吗?

不是。默认训练 20 次,只是用来确认所有部件真的连起来运转。这点训练下概率几乎平均分布,文字会乱七八糟。只要训练损失比初始值(约 3.7)低,并且读取检查点的 Runner 能把真实的生成结果返回给 XChat,整个过程就完成了。提高质量的实验在第6、7阶段做。

不能下载预训练好的模型来用吗?

本课程不下载。下载的权重是已经算好的结果,看不到训练如何改变数字。实际开发中,常常下载公开模型,再用自己的资料多训练一点,这叫微调(fine-tuning)。在 XSLM 学到的训练循环也直接用于微调。

可选热身:用二元模型数词

通向亲手开发的计划

一开始像玩具一样做得小小的,理解原理之后再逐步做大。

1

收集句子

收集你想学习的主题的句子。一开始只有 10 个句子也可以。

第一次来?请按这些步骤做

这个实验会做一个非常小的,它只看前面一个词。它统计哪个词后面跟着哪个词,把这些次数变成,再掷一颗按次数加权的骰子来选下一个词。

左边是一张用计数线统计哪种颜色的点后面跟着哪种颜色的点的表格;箭头指向一颗各面颜色不同的大骰子,一排小方块显示它一个接一个掷出的点。
计数表(左)变成了骰子的权重。越常跟在后面的词,越常被掷出来。
  1. 训练句子保持不变,点击“再次生成”。会出现一个新句子,里面只有训练文本中的词。
  2. 看概率公式:下一个词跟在前一个词后面的次数,除以前一个词出现的次数,就是概率。
  3. 在计数表里,每一行是前一个词,每一列是下一个词。格子颜色越深,这一对出现得越多。
  4. 把选择方式换成,再点一次:每次都会得到同样的句子。换回并调高——句子会变得越来越奇怪。
  5. 在文本里加一句你自己的句子。表格和概率马上就会变,因为这个就只是这些次数。

想更进一步? 用 Python 亲手做一个(AI 课程) 下一个词是怎么选出来的

小小的概率计算器

生成的句子 选择方式并点击再次生成。
概率是这样算的
前一个词 下一个词 接在后面的次数 后面出现的总次数 概率

起始句子最后一个词后面还没有候选词。

下一个词候选

百分比经过四舍五入,显示总和可能略偏离 100%。

哪个词后面接了什么,接了几次?
前一个词下一个词

词太多了,只显示最先出现的 8 个

核心概念

思路很简单。读很多句子,数一数哪个词后面紧跟着哪个词——句子在哪里结束,也一起算上。这些次数就成了一张小表,光靠这张表,就已经能猜出下一个词。你在这一页要做的模型,就是这个。

真正的也靠同样的思路运转,只是规模大得多。它不用一张小小的次数表,而是从例子中学会几十亿到几千亿个数字,这些数字叫作。它看的也不只是前面那一个词,而是你的整个问题和到目前为止的对话。它也不是去查一句存好的句子。不过,最后一步和你做的一样——给每个候选打分,然后选一个。

本实验与真正的语言模型对比

本实验与真正的语言模型对比
本实验() 神经
看的范围 只看前一个词 给定的长
学的是什么 接续次数表 数值
与 否 是
自己核实事实 否 否
参考文档

本课程运行环境相关的官方文档。核对日期:2026-10-18。

学习指南

人工智能

智能体工具

Vibe 编程

AI 应用

AI证书

AI课堂

IT 基础

聊天

论坛

创作

社区

更多

术语词典

选一个你不认识的词吧,可以看到简单的解释和相关术语。

还没有匹配的术语。

选择一个术语即可查看解释。