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集群的研究人员提供了一个试验场。

如何开始

  1. 克隆仓库并创建一个Python虚拟环境。
  2. 安装MLX:
    # macOS (Apple Silicon)
    pip install mlx
    # Linux with GPU
    pip install "mlx[cuda]"
    # Linux without GPU
    pip install "mlx[cpu]"
    
  3. 训练(或继续训练)一个模型:
    python main.py <path-to-dataset> train
    
    • 脚本会自动保存权重,并可以通过 Ctrl-C 中断。
  4. 聊天 / 推理:
    python main.py <path-to-weights> chat
    
    • 选项包括 --ce-only(仅交叉熵损失)、--no-save 和 --frozen(运行时不更新权重)。
  5. 在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上运行的模型的开发者。

链接

以上所有信息直接取自仓库的README。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目