jrz97619761/test-model-thing
A small proof-of-concept language model (not an LLM) that aims to incorporate latent-space prediction, internal state using recurrent trace units, and byte-by-byte output, built with MLX.
Test-Model-Thing (TMT) – 一个微型的语言模型概念验证
它是什么
- 一个研究级语言模型(约450万参数),使用 MLX 构建,这是一个能在Apple Silicon上高效运行并也支持Linux(CUDA/CPU)的库。它不是大规模LLM;它是一个小型实验模型,旨在探索几个想法:
- 潜在空间预测 – 模型尝试预测隐藏表示,而不仅仅是下一个词元。
- 循环迹单元(RTUs) – 内部状态在时间步之间传递信息,赋予模型超越常规Transformer上下文的记忆。
- 字节级输入输出 – 输入和输出是原始字节,因此模型可以生成任何字符序列(因此偶尔会出现拼写错误)。
- 连续数据流 – 架构设计用于处理永无止境的数据流,而不是固定大小的批次。
- 测试时训练 – 在模型用于推理时,你仍然可以继续学习。
为什么重要
- 展示了复杂的机制(潜在预测、循环状态)可以在一个运行在笔记本电脑上的微型网络中实现。
- 为那些想要实验字节级模型、在线学习或自定义记忆模块而无需大规模GPU集群的研究人员提供了一个试验场。
如何开始
- 克隆仓库并创建一个Python虚拟环境。
- 安装MLX:
# macOS (Apple Silicon) pip install mlx # Linux with GPU pip install "mlx[cuda]" # Linux without GPU pip install "mlx[cpu]" - 训练(或继续训练)一个模型:
python main.py <path-to-dataset> train- 脚本会自动保存权重,并可以通过
Ctrl-C中断。
- 脚本会自动保存权重,并可以通过
- 聊天 / 推理:
python main.py <path-to-weights> chat- 选项包括
--ce-only(仅交叉熵损失)、--no-save和--frozen(运行时不更新权重)。
- 选项包括
- 在CoLA语言可接受性任务上进行基准测试:
python benchmark.py <path-to-weights> <epochs> <slice>
数据集
- 作者在一个小型维基百科转储(
simplewiki-20260801-pages-articles.xml.bz2)上训练了演示模型。你可以使用任何文本数据集;代码期望提供原始文件的路径。
当前状态
- 该模型是一个概念验证:450万参数,512维隐藏大小,16层,仅训练了几个小时。它可以生成连贯的字节流,闭合括号/引号,并在CoLA上表现出适度的性能(远低于GPT-1的45.4分)。
- 不附带预训练权重(由于GitHub文件大小限制)。用户必须自行训练模型或从其他地方获取权重。
路线图 / 机会
- 扩大参数数量和训练时间以提高语言质量。
- 用分词器替换字节级解码器以获得更干净的文本。
- 探索更大的数据集或领域特定的语料库。
- 为RTU实现贡献改进或添加其他记忆机制。
- 将代码移植到Windows原生环境(目前仅WSL可用)。
谁可能会觉得这有用
- 学习语言模型内部结构的学生或爱好者。
- 对在线学习、潜在空间目标或记忆增强Transformer感兴趣的研究人员。
- 需要一个小型、自包含、无需GPU即可在MacBook上运行的模型的开发者。
链接
- YouTube演示视频
- 仓库中包含架构草图(Freeform图表)供参考。
以上所有信息直接取自仓库的README。
相关
- 项目
- 项目
- 项目
- 项目
- 项目