ARTI
示例CMRC2018

在自己的电脑上读材料

中文材料里的答案, 在自己的电脑上找。

先在 CPU 上加载保存的程序,回答自己的材料。需要改变可学习组件时,再进入完整训练案例与实测比较。

Qwen3-0.6B · 第一次问答 / CPU · 重新训练 / GPU

阅读问答示例Qwen3-0.6B + ARTI
你提供的材料
北城图书馆工作日上午九点开馆,周六上午十点开馆,周日闭馆。图书可以借阅21天,每本图书允许续借一次。
你的问题

图书可以借阅多久?

模型生成的答案21天

使用上手包中的已训练程序。示例展示实际输出,回答自己的材料时请与原文核对。

先拿到答案的短路径

加载已保存的程序, 先问你的问题。

上手包包含已训练中英文 Formula 推理程序、分词器和 CPU 脚本。先运行它,无须下载训练数据或创建 GPU 环境。

ZIP 为 5.2 MB。第一次运行另需下载固定的约 1.2 GB Qwen 基座与 Python 依赖。后续运行复用已经下载的模型文件。

CPU 示例使用自编材料,与 benchmark 评分分别记录。这个小模型可能误读材料,需要将答案与原文核对。

01 / 要做什么

读一段材料, 回答一个问题。

知识助手的第一步,是先把材料读准确。这个案例使用中文机器阅读理解数据,让模型从给定材料中找出答案,减少解释和绕话。

输入
完整材料与一个问题。
输出
模型实际生成的简短答案。
训练
只监督最终答案和原生结束标记。材料、问题和补齐部分不计入损失。
程序
在最后两层 MLP 后挂载 rank-32 非线性残差程序。训练 131,072 个值,固定基座。
Qwen3固定基座
down → SiLU → up可学习 Formula 程序
残差相同隐藏维度

这个案例使用 ARTI 公开的 Formula adapter 配置;评测范围未覆盖架构搜索或前向可塑性。

02 / 可选:重新训练配置

改变可学习组件, 再检查效果。

下面的 GPU 步骤复现训练配置和比较,与上方 CPU 上手分别进行。

1

建一个自己的工作目录。

将上面的 Python 文件和依赖文件下载到同一目录。训练需要 CUDA GPU 和兼容的 PyTorch 安装。依赖文件固定了复现脚本使用的软件版本。

终端 / 安装到独立环境
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install torch==2.11.0 --index-url https://download.pytorch.org/whl/cu128
.\.venv\Scripts\python.exe -m pip install -r reading-requirements.txt

后面的训练与预测命令,会自动使用所选环境的解释器路径,不需要激活环境。

2

准备问题,再开始训练。

脚本下载固定的公开模型和作者托管数据,保留原始 ID,并构建这里使用的 512 / 128 / 256 训练、验证、留出切片。不静默截断材料或答案。

终端 / 运行这个案例
.\.venv\Scripts\python.exe reading_qa.py prepare --work reading-qa-work
.\.venv\Scripts\python.exe reading_qa.py run --work reading-qa-work --language cmrc --method arti --seed 17

第一次准备会下载约 1.2 GB 模型权重,以及分词器和数据。它们保存在 reading-qa-work,后续复用。训练 200 次更新,批量 8;不使用留出集选择检查点。

3

看懂留下来的文件。

native-run/model/
推理资产、Formula 声明和分词器。固定基座作为单独的版本化依赖。
native-run/checkpoints/
用于继续训练的参数、优化器、随机状态和数据游标。
predictions.json
每个留出 ID、实际生成答案、参考答案、EM 与 F1。
result.json
实测效果、参数数量、资源测量范围与来源身份。

可下载脚本内部使用原生 recipe。如果你已有 chat JSONL 数据,可以直接从它的配置开始。

Python / CausalLMRecipe
from pathlib import Path
from huggingface_hub import snapshot_download
from transformers import AutoTokenizer
from arti.language_recipe import CausalLMRecipe
from reading_qa import BASE, REVISION, config, load_base

work = Path("reading-qa-work").resolve()
base = snapshot_download(BASE, revision=REVISION,
    cache_dir=work / "hub-cache", local_files_only=True)
settings = config(work, "cmrc", 17, work / "my-native-run")
recipe = CausalLMRecipe(settings, model=load_base(base),
    tokenizer=AutoTokenizer.from_pretrained(base))
print(recipe.plan())
result = recipe.fit()
print(result["model"])

了解训练配置 →

03 / 真实回答

看答案, 也留下依据。

固定相同基座和参数预算。结果来自实际贪心生成答案,使用对应数据集的官方评分规则。

EM 按任务规则完全匹配的答案比例。 F1 预测与参考答案的词语 / 字符重合得分。

CMRC2018 · 256 个固定问题

固定基座

可学习值 · 0

EM ↑
46.88
F1 ↑
71.71
SiLU 残差 · PyTorch

可学习值 · 131,072

EM ↑
48.31 ± 0.23
F1 ↑
72.15 ± 1.23
LoRA · PEFT

可学习值 · 131,072

EM ↑
46.88 ± 1.95
F1 ↑
70.77 ± 1.40
SiLU 残差 · ARTI

可学习值 · 131,072

EM ↑
48.31 ± 0.23
F1 ↑
72.15 ± 1.23
CMRC2018 · 256 个固定留出问题
公式 / 实现参数EM ↑F1 ↑
固定基座单次固定基座046.88—71.71—
SiLU 残差 · PyTorch3 个随机种子131,07248.31± 0.2372.15± 1.23
LoRA · PEFT3 个随机种子131,07246.88± 1.9570.77± 1.40
SiLU 残差 · ARTI3 个随机种子131,07248.31± 0.2372.15± 1.23

EM / F1 为百分数;适配方案报告种子 17、29、43 的均值和样本标准差,固定基座测量一次。这是固定公开 dev 切片,不是官方隐藏测试榜成绩。

看清分数对应的计算。

这个案例选择最后两层 MLP 后的 SiLU 残差程序。PEFT 行使用 value projection 上的标准 LoRA。两者公式和挂载位置不同;分数比较的是所选配置,不是框架的表达能力。

LoRA 本身就可以是 Formula。要比较实现,必须对齐公式、A/B 权重、挂载、缩放和精度。同公式核对先完成这一步,再讨论更广的程序组合。

本案例保存的非线性程序保留声明与数值。两种语言的独立重载共复现 512 个留出答案;三次更新的续训对照保留相同参数与数据游标。

阅读第一个留出问题与全部答案
单星是不和任何其他同类星体组成聚星系统的单一天体。恒星、行星、小行星都存在单星系统。长久以来人们一直认为宇宙中大部分的恒星是聚星系统。以双星和三合星较为多见。单星反而较少。然而,根据2006年的一项研究,银河系中的主序星有2/3都是单星,改变了人们的传统认识。单星构成的恒星系统最为简单,围绕恒星运行的小星体(例如行星)的轨道比较简单,不会因为受到多个大天体的影响而走出怪异的路线,从而较容易维持合适的环境、温度和光照,有利于生命的存在。单星也可能因为位置的缘故,被人错认为和另一颗恒星组成双星。实际上两者之间并无相互旋转的运动关系。这样的双星被称为光学双星。太阳一般认为就是一个单星。尽管存在着未经证实的太阳伴星的传闻。可能是因为形成方式的不同,行星和小行星大多是单星。只有少数的小行星或者卫星构成双星系统。但是某些大型的卫星有时也被认为是与自己的母星构成双行星系统。例如:

单星的定义是什么?

固定基座 / seed 17

单星是不和任何其他同类星体组成聚星系统的单一天体。

SiLU 残差 · PyTorch / seed 17

单星是不和任何其他同类星体组成聚星系统的单一天体。

LoRA · PEFT / seed 17

单星是不和任何其他同类星体组成聚星系统的单一天体。

SiLU 残差 · ARTI / seed 17

单星是不和任何其他同类星体组成聚星系统的单一天体。

固定顺序的第一个问题,种子 17;没有按效果选取例子。 CMRC2018 · CC BY-SA 4.0 · DEV_479_QUERY_0

04 / 你的材料

换成你的材料, 问下一次的问题。

在 CPU 上手包中运行交互命令,粘贴一段短材料。继续提问,不必再次加载模型。

打开对应平台的完整交互命令 →
GPU 训练以后:用新资产预测

创建 questions.jsonl,每行一个完整 ID、材料和问题对象。这条路径使用可选 GPU 步骤生成的资产。

questions.jsonl
{"id":"my-question-001","context":"图书馆工作日上午九点开门,周六上午十点开门,周日闭馆。","question":"图书馆周六几点开门?"}

终端 / 已训练 GPU 资产
.\.venv\Scripts\python.exe reading_predict.py --work reading-qa-work --asset reading-qa-work/cmrc/arti-17/native-run/model --language zh --input questions.jsonl --output answers.jsonl

需要改变程序时,再训练。

换入自己的训练、验证切分,检查答错的问题,用未参与选择的问题评价。固定 benchmark 提供可复现协议,分数限定于相应切片。

继续已保存的训练 →