AI宝库

AI宝库首页 › AI 资讯 › Qwen重量为~1GB的任天堂工作

Qwen重量为~1GB的任天堂工作

来源:Hacker News · 发布时间:10-31 · 由 AI宝库每小时自动聚合

文章 URL:https://github.com/dbreunig/nesformer 评论 URL:https://news.ycombinator.com/item?id=50306442 点:104#评论:83

一个NES CPU被编译成股票Qwen3.5型号的权重。

NES的6502 CPU (其2A03芯片的核心),工作RAM的2 KB,以及一个弹匣的程序

ROM运行在标准Qwen3 5ForCausalLM检查站内。 没有人训练这些重量;a

编译器计算每一个。 当玩游戏时,模型会预测CPU的执行日志

一次一个标志。 一个小主机程序在它周围播放休息台:它绘制

图片,读取控制器,并发射vblank中断。

Nesformer以Divyansh Agrawal所著的"Qunputer"为基础,将一款CHIP-8并再将一款RISC-V CPU编成Qwen3.5-4B. 它再利用了Quenputer的编译器及其中心把戏:模型的Gated DeltaNet状态是机器的记忆。

这些运行中的每个CPU符号都来自模型。 对于捆绑的测试游戏,每个帧也完全匹配传统的6502仿真器的输出(参见如何被检查).

Unzip nesformer.zip 和 nesformer-qu量.zip 进入同一文件夹。 重量在旁边

阴源/ 包件,不在其中:

nesformer/ <- 从这里运行命令

QQ Nesformer/ <- Python 软件包

QQ 芯片格式/ <- Quenputer' 编译器

& > roms/ < -- 测试ROMs( 也放在这里)

示例/ <-样本GIF和框架表

* 测试/

自由主义

翻译:

读取

{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}我很高兴见到你

权重/ <- 从 nesformer- weights.zip (英语).

├── config.json

QQ 生成 config.json

* 型号。

(原始内容存档于2019-10-21) (英语). Nesformer.json.

SHA256SUMS (英语).

CLI 在 Nesformer/ 包件旁边寻找重量。 把重量放在别处

通过 -- -- 权重/路径/到/权重以运行、检查或跟踪,或给以信息路径。

为了确认未正确分解的重量,从中运行shasum -a 256-c重量/SHA256SUMS

顶部文件夹。

你需要Python 3.11或更新。

python3 - m venv.venv (英语).

来源.venv/bin/激活 #Windows:.venv\脚本并激活

pip 安装 numpy scipy 麻木枕头平通 - m Nesformer 运行 roms/thwaite.nes -- frames 600 -- sshow \

-按钮"开始@90-95+200-205,a@230-233+250-253+270-273+290-293+310-313+330-333+350-353+370-373+390-393+410-413+430-433+450-453+470-473+490-493+510-513+530-533+570-573+590-593".

当模型生成时,显示您的终端中的每一帧。 当运行结束时,CLI

保存当前文件夹中以ROM(这里为thwaite.gif)命名的动画 GIF。

希望它慢一点。 第一次运行花费了大约20秒用麻木来编译引擎。 之后一帧需要一至六秒,因此600帧(NES时间为10秒)需要25分钟左右。

点运行于任意使用 NROM board (iNES mapper 0) 的.nes 文件,如 Super Mario

兄弟们驴子金刚还是跑车您提供ROM; Nesformer 只能自由运送三艘

特许测试ROM 以 roms/.

python - m Nesformer 运行 roms/ smb.nes -- frames 600 -- sshow \

- 按钮"启动@60-65,右转@200-600,a@250-265+300-315+360-375+420-435+480-495+540-555"

这个剧本开始游戏,然后走马里奥右转,每秒跳出一次左右。 CLI在启动时将ROM加载到模型的状态中,因此相同的权重在没有重建的情况下运行任意一款NROM游戏。 其他棋盘上的游戏以信息停止:参见"限制".

--按钮需要一个逗号分隔的条目列表。 每个条目名称加入一个或多个按钮

由 +,然后@,然后由 + 加入的一个或多个帧范围:

开始@ 60- 65 个按在框架60至65期间开始

右侧@ 200-600 从框架 200 到框架 600

a@250-265+300-315 新闻一两次

right+b@200-600 hold Right and B together (运行,在"超级马里奥兄弟"中).

按钮是 a, b,选择,启动,上,下,左和右。 框架计数从

电源在每秒60秒,所以600帧是10秒。 游戏忽略屏幕上的输入

你动不了的所以早点按下按钮不会有事在"超级马里奥兄弟"中,更长的时间

媒体会跳得更高

运行选项:

运行、检查和跟踪所有接收 -- -- 重量、 -- -- 引擎、 -- -- 按钮和 -- -- 不滑动。

检查 --tokens N 设置比较距离( 默认为 50,000)。 跟踪 -- tokens N 设置数量

打印符号( 默认 40 )。 建 -- 出 DIR 在其它地方写检查点

权重/.

这种分化遵循了Quenputer的CHIP-8构建,其主机会注入计时器滴出并从跟踪中抽取显示。 主机除了通过微量外,从未看到CPU的登记册或RAM.

记忆的把戏是这样的每个 DeltaNet 头都有一个128×128的状态矩阵,三角洲规则在每个符号上更新。 闸门开着,有一个一热键,更新完全覆盖了该矩阵的一行,一个一热查询读回来。 所以每行都是内存单元格,而墨盒,RAM和登记器都以行为单位活。

权重/ 是普通的Hugging Face文件夹。 它装入

Qwen3 5ForCausalLM. from pretrained 不需要自定义代码。

Nesformer.json记录了机器每个部分的层层和头部运行写着

墨盒登记和记录进入这些 DeltaNet 状态,然后贪婪地解码。

每一个指示都变成记录,记录的最后一种表示承诺。 和Quenputer的RISC-V核心一样,PC是隐含的而不是被写入的:每个最终的符号带有其指令的长度,三个DeltaNet计数自上次跳出以来每个长度的指示,PC是跳出目标外加被抵消。 Full Game 摘录:

SEI P (000100 px0 L1) (英语).

LDX # 40 X (40 c0 v0 px0 L2) (中文(简体) ).

STX 4017 IOW(4017美元=40 L3美元)

TXS S( FF L1美元)

BIT 2002 IOR(2002年美元) IN(00美元) P(000110 px0 L3) <- 主机注入IN

BPL 8017 J (8017美元)

JSR 8279美元 PSH($FE) PSH($FD) J($8279) < -- 返回地址被推入电路

RTS PUL($FC) LO($7B) PUL($FD) J($827C)

STA (72美元),Y LO(08美元) HI (03美元) ST (00 a7=0 L2美元) <-指向字节已挂上,然后是商店

STA 4014 IOW(4014美元=02 L0) DM(0:$FF). DM(255:$00) NT(L3) < -- OAM DMA

大多数指令都取一个单一的符;真实的游戏代码平均每个指令有1.1-1.3个符。

Nesformer/spec.py 记录每个象征性的家庭。

- 参考CPU(nesformer/cpu.py)与巢鸟金木相匹配,用于3,348个指令

和570万个游戏代码的 py65 模拟器

- 准确的回路,在Quenputer的评审员中运行,用其bf16精确度检查,预测每个参考符:所有最窝外加283,610个位置的两款游戏后缀序列。

- 库存变压器中的检查站(bf16,CPU)预测有2,651个最窝和Full Game的位置没有不匹配。

- 重量,自由运行,产生与参考CPU相同的痕迹:

- 空闲- loop 跳过不改变任何可见之处:帧和 I/ O 写出,包含周期时间戳,匹配一个没有它的运行。

默认的引擎会计算出Qwen3.5从型号传出。 安全器,用麻木编译

并跳过所有零块。 它运行在一台CPU核心上的大约1,650个令牌/秒

这是建立在。 平平型数字发动机的功率约为210,而股票变压器的功率约为10. 一个真实的

NES每秒需要约70万个令牌。

游戏将每个帧的大部分花在一个循环中,等待vblank. 当主机看到一个循环正文完全重复,没有RAM或 I/O 写入时,它将时钟推进到下个PPU事件之前,剩下的迭代仍然运行。 削减的代号为 2.6x到4.2x 总的来说,Nesformer运行的150–290×比真正的控制台慢。

- 只有NROM弹匣(iNES映射器0). CPU一次只能处理32个程序ROM的KB. Bigger游戏搭载了一款银行开关芯片(一个映射器,例如MMC1或MMC3)来交换CPU所看到的部分ROM. Nesformer的ROM读取在模型内部发生,从一个固定的32 KB表,所以它还不能跟随银行开关。 支持一个映射器意味着将整个ROM存储在州内,将银行登记册也保存在那里,并增加一个阶段,将每个CPU地址变成ROM地址。

- 只有官方密码一个非官方的操作码释放出HALT。

- 代码必须从弹匣ROM运行。 一跃而入的RAM发布HALT。

- 没有IRQs(APU框架IRQ,DMC). BRK和NMI的工作。

- I/O登记册上的读取-修改-写作指示不产生一/O写作,4020-7FFF读作0(没有PRG-RAM).

- PPU和APU没有在重量。 PPU一次制造一条扫描线,所以中扫描效应没有被复制。 Sprite -0击出和sprite溢出是相近的,没有声音。

管道安装 pytest py65

python - m pytest - q 测试

测试需要几分钟。 他们检查了参考CPU与巢斯的日志,回路与参考文献的对比,权重自由运行与参考文献的对比,并检查了闲闲-loop跳过。

pip 安装"torch->= 2.6" "transfers->= 5.22"

python - m Nesformer 运行 roms/thwaite.nes -- -- 框架 3 -- -- 引擎 hf

Nesformer/hfcheck.py 显示整个程序:装入检查站,解码出一个贴花符

将机器状态写入缓存的 DeltaNet 状态,然后一次输入一个符号。

- Quenputer及其芯片前导编译器:麻省理工学院

2026 Divyansh Agrawal (LICENSE.chipformer) (英语). 该许可证也涵盖经过修改的代码

来自nesformer/core.py和nesformer/重量.py的文普特人。 它的最后一段提到:

Quenputer的CHIP-8 ROM,这个寄存器不包括。

- 测试ROMs:由凯文·霍顿(Kevin Horton;由道格·弗雷克(麻省理工学院)出品的全能游戏;由达米安·耶里克出品的Thwaite(GPL-3.0,来源于pinobatch/thwaite-nes).

根据麻省理工学院许可(见LICENSE),nesformer为发布。 ROM 装入ROMs/ 保留自己的

许可证,列于ROS/Sources.md。

本文由 AI宝库自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(github.com)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI宝库首页 · 提交工具 · 商务合作 · 关于本站 · 599 款 AI 工具分类导航 · 每日 AI 热门项目与动态