public-sft-qwen9b-v2 · Qwen3.5-9B × Aya Dataset (日文子集) LoRA 适配器(实验产物)
English TL;DR. A LoRA adapter (r=32, alpha=64) for Qwen/Qwen3.5-9B, trained with QLoRA for
3 epochs / 450 optimizer steps on a 2,400-example subset of the Japanese split of
CohereLabs/aya_dataset (apache-2.0, revision f9ea04583f02a8f86404ff6c58bf75fe637df8a2,
https://huggingface.co/datasets/CohereLabs/aya_dataset).
Read the "short-comings" section first: of the 6149 Japanese original-annotations rows, 6144 come
from a single annotator (likely sourced from an external article corpus), and 54.2% of the training
answers are ≤10 characters. No benchmark evaluation was run — do NOT treat this as a Japanese-capable
model. The adapter weights are released under apache-2.0; the dataset's own license is not changed by this
release. This is a lab experiment, not a product.
本仓库是一个 LoRA 适配器:在 Qwen/Qwen3.5-9B 上,用公开数据集 CohereLabs/aya_dataset 的日文子集(language_code == "jpn")的 2400 条做了一轮指令微调(SFT)。
只做了训练,没有做任何基准评测。 本卡所有数字都取自这一轮训练的实际产物(训练记录、训练元数据、适配器文件本身)以及对数据的复算;没有估算值。
这份数据/模型的短板(请先读,别软化)
- 几乎全部出自单一标注者:日文
original-annotations 共 6149 行,其中 6144 行出自同一个 user_id(9881e959…),另一个标注者只有 5 行(整个日文 original-annotations 只有 2 个标注者)。这些内容里有大量「模板指令 + 一段やさしい日本語体的时事新闻(NHK NEWS WEB EASY 体,2022–2023 年)」,疑似搬自外部文章库而非标注者原创;用 WebSearch 对若干特征句做过核对,既未找到逐字一致的原文、也无法排除(相关旧文多已下线)。
- 回答普遍很短:训练子集(2400 条)里 assistant 回答 54.2% 在 10 字以内、78.3% 在 50 字以内(多为问答题式的极简短答)。训练后模型很可能偏向极简短答。
- 未做任何评测,且不得被当成「有日文能力」的模型:本轮只跑了训练,没有任何基准评测,也没有验证集;日文表现完全没有被测过。请不要把本适配器当成一个日文模型——它只是一次在公开日文数据上的小规模 SFT 实验。
上面三点在下文「数据」与「已知局限」里再次展开,不是角落备注。
Provenance 一览
| 项 |
内容 |
| 基座模型 Base model |
Qwen/Qwen3.5-9B,HF 快照 commit c202236235762e1c871ad0ccb60c8ee5ba337b9a(训练机本地缓存中唯一的快照,refs/main 指向它)。基座自身许可为 apache-2.0 |
| 数据集 Dataset |
CohereLabs/aya_dataset(Aya Dataset v1.0,Cohere Labs 的 Aya Open Science Initiative 众包人工标注),只取日文子集 language_code == "jpn":https://huggingface.co/datasets/CohereLabs/aya_dataset |
| 数据快照 Revision |
commit f9ea04583f02a8f86404ff6c58bf75fe637df8a2;用其中的 data/train-00000-of-00001.parquet(上游 LFS sha256 51baa85043b569ba117f41516b32d1b0e4e2647fb203a08933f98a556fb1fb06) |
| 数据许可 Data license |
apache-2.0(上游数据卡 YAML 头 license: 标签逐字如此;正文 "Licensing Information" 一节逐字为 "This dataset can be used for any purpose, whether academic or commercial, under the terms of the Apache 2.0 License.")。原数据集许可不因本发布而改变。 |
| 权重许可 Weights license |
apache-2.0(仅指本仓库的 LoRA 适配器权重) |
| 训练配置 Training |
QLoRA(基座以 4-bit NF4 加载)· LoRA r32 / α64 / dropout 0.05 / targets auto · seq 1024 · batch 4 × grad_accum 4 · lr 1e-4(cosine)· warmup 0.03 · 3 epoch = 450 步(steps) · seed 42 · bf16 + Liger kernel · 单卡 |
| 已知局限 Limitations |
单一标注者为主、回答极短、未做任何评测、不代表日文能力;只训 3 epoch / 450 步 / 2400 条;单一 seed;不是产品。详见下文 |
文件 Files
| 文件 |
说明 |
adapter_model.safetensors |
LoRA 适配器权重,fp32,496 个张量 / 86,556,672 个参数,346,302,176 字节,sha256 cec0388ca0207247dd00e286e2d7448d657f31b54c3dbff60d234a4f48a06a52(= 第 450 步,也就是最终 checkpoint) |
adapter_config.json |
PEFT 配置(由 peft 0.20.0 写出) |
tokenizer.json / tokenizer_config.json / chat_template.jinja |
训练时实际使用的 tokenizer 与对话模板,由 transformers 5.15.0 随适配器一起保存(见下文「tokenizer 说明」) |
不包含:合并后的完整权重、中间 checkpoint、优化器状态、训练语料或其副本。训练数据请从上游获取。
数据 Data
- 数据集:
CohereLabs/aya_dataset(Singh et al. 2024, arXiv:2402.06619),只取日文子集 language_code == "jpn";来源 URL:https://huggingface.co/datasets/CohereLabs/aya_dataset
- 快照:revision
f9ea04583f02a8f86404ff6c58bf75fe637df8a2,取其中 data/train-00000-of-00001.parquet(上游 LFS sha256 51baa85043b569ba117f41516b32d1b0e4e2647fb203a08933f98a556fb1fb06)。
- 许可:上游数据卡 YAML 头逐字
license: apache-2.0;正文 "Licensing Information" 逐字为 "This dataset can be used for any purpose, whether academic or commercial, under the terms of the Apache 2.0 License." Apache-2.0 允许再分发与商用,非 NC、非 research-only。原数据集许可不因本发布而改变。
- 筛选(CPU 复算,口径与训练读取一致):
- 全语种 202,362 行 →
language_code == "jpn":6,259
- → 只留
annotation_type == "original-annotations":6,149(丢 re-annotations 110 行——那是对开源数据集生成内容的人工改写,其上游各有许可、未逐一核到,故不用)
- → 去空 0 → 去
inputs 完全重复 3 行(保留首条)→ 可用 6,146
- → 用 Qwen3.5-9B chat template 实测 token 长度,>1024 丢弃 0 条(全量最长 881 token)
- →
random.Random(42).shuffle 后取前 2,400 条写入训练文件
- 训练文件:2,400 行,逐行
json.loads 全通过,sha256 3f3500ab8251bc0fc8e414fe26947a7c1c6904f857d64d61d4397a723a5b24f8。
- 映射:
inputs → user,targets → assistant,两轮消息({"messages":[{role,content}...]})。
- 同源与短答的实测(本次复算):日文 original-annotations 6149 行里 6144 行出自单一
user_id(另一标注者 5 行);训练子集 assistant 回答 54.2% ≤10 字、78.3% ≤50 字。这些内容多为「模板指令 + やさしい日本語时事新闻」或问答题,疑似源自外部文章库;WebSearch 对特征句核对未能逐字证实也未能排除。
- loss 只算在 assistant 回复 token 上(
all_tokens_loss=false)。
训练配置 Training
| 参数 |
值 |
| 方法 |
QLoRA:基座经 bitsandbytes 以 4-bit NF4(double quant)加载,计算 dtype bf16;训练 bf16=True |
| LoRA |
r=32,lora_alpha=64,lora_dropout=0.05,bias=none,task_type=CAUSAL_LM |
| target_modules |
auto:q/k/v/o_proj、gate/up/down_proj、in_proj_qkv/z/a/b、out_proj;exclude_modules 排除 vision/audio/visual/mtp(只覆盖文本解码器) |
| 可训练参数 |
86,556,672(496 个 fp32 张量) |
| max_seq_len |
1024(训练集中 0 条被截断;最长 881 token) |
| batch |
每卡 4 × grad_accum 4 = 有效 batch 16 |
| optimizer |
paged_adamw_8bit |
| lr / schedule |
1e-4,cosine;warmup_ratio 0.03 |
| epochs / steps |
3 epoch;2400 条 / 有效 batch 16 = 150 步/epoch,共 450 步 |
| seed |
42 |
| loss 范围 |
只算 assistant 回复 token(all_tokens_loss=false) |
| kernels |
Liger kernel;attention sdpa;开启 gradient checkpointing |
| 硬件 / 显存峰值 |
单卡;显存峰值 11.38 GiB |
| 时长 / 吞吐 |
4,161 秒(约 1.16 小时),219.2 tok/s;每 epoch 304,050 token |
| 软件 |
transformers 5.15.0、peft 0.20.0 |
| 训练日期 |
2026-10-15 |
训练集 loss:第 5 步 2.893,第 450 步 0.608。这只是训练集上的 loss,不是验证或评测指标;本轮没有验证集。
怎么用 Usage
import torch
from transformers import AutoModelForImageTextToText, AutoTokenizer
from peft import PeftModel
base_id = "Qwen/Qwen3.5-9B"
adapter_id = "alfaplus/public-sft-qwen9b-v2"
tok = AutoTokenizer.from_pretrained(adapter_id)
# 用 AutoModelForImageTextToText 加载基座(与训练时一致)。Qwen3.5 的 checkpoint 是 *ForConditionalGeneration,
# 用 AutoModelForCausalLM 加载可能静默漏掉文本解码器权重(只打警告),LoRA 也就挂不对地方。
base = AutoModelForImageTextToText.from_pretrained(
base_id, revision="c202236235762e1c871ad0ccb60c8ee5ba337b9a",
dtype=torch.bfloat16, device_map="auto")
model = PeftModel.from_pretrained(base, adapter_id)
msgs = [{"role": "user", "content": "次の文章を一文で要約してください。"}]
inputs = tok.apply_chat_template(msgs, add_generation_prompt=True, enable_thinking=False,
return_tensors="pt", return_dict=True).to(model.device)
out = model.generate(**inputs, max_new_tokens=256)
print(tok.decode(out[0, inputs["input_ids"].shape[1]:], skip_special_tokens=True))
- 这段示例代码没有在本发布流程中实际运行过(准备发布时不占用 GPU)。加载方式(
AutoModelForImageTextToText + PEFT)与训练脚本一致,但请自行验证。
- 训练样本采用
enable_thinking=False 的格式(空思考块);思考模式下的行为没有评测。
- 训练时基座是 4-bit NF4 加载的;挂到 bf16 基座上的差异没有测过。
tokenizer 说明(对本仓库实测)
本仓库附带的 tokenizer.json 不是基座 tokenizer.json 的逐字节副本。实测对比本仓库这份与基座那份:
- 本仓库这份的预切分(pre-tokenizer)正则是
\p{L}+,而基座文件写的是 [\p{L}\p{M}]+(基座含 \p{M} 组合附加符类、本仓库这份不含)。这是 transformers 5.15.0 保存 Qwen3.5 tokenizer 时的已知行为。
- 行为探针:直接用
tokenizers 库分别读取基座与本仓库的 tokenizer.json,对 10 条多语种/组合字符探针切分,有 3 条不同(都含组合附加符)。
- 也就是说,训练时实际使用的切分就是本仓库附带的这份 tokenizer。如果推理栈不经过 transformers、直接读取基座的 tokenizer 文件,含组合字符的文本会被切得和训练时不同。
已知局限 Limitations
- 数据几乎来自单一标注者:日文
original-annotations 6149 行中 6144 行出自同一个 user_id。标注者构成、题材与文体都高度集中,不代表一般日文分布;内容疑似搬自外部文章库(NHK NEWS WEB EASY 体时事新闻、问答题),出处未能逐字证实也未能排除。
- 回答极短:子集 54.2% ≤10 字、78.3% ≤50 字;训练后模型可能偏向极简短答,不要用它来期待长篇、细致的日文生成。
- 不代表日文能力,且没有任何评测:只跑了训练,没有做任何基准评测,也没有验证集。上面的 loss 只是训练集 loss,不能说明泛化或与基座的优劣。请勿把本适配器当成日文模型。
- 训练量小:只训了 3 epoch / 450 步 / 2400 条。
- 交付形态:交付 LoRA 适配器本体,未合并权重;合并 / 低比特量化(如 GGUF)之后的效果未验证,低比特量化可能削弱适配器的作用。
- 单一 seed,未做超参搜索。
- 训练与推理条件:训练时基座 4-bit NF4;其他精度 / 思考模式未测。
- 只有文本:只训练了文本解码器;挂上适配器后基座的图像 / 视频能力是否受影响未测。
- 没有任何保证:未做安全评测或红队测试。这是实验室的实验产物,不是产品。
许可 License
- 适配器权重:apache-2.0。 本仓库 YAML 中的
license: apache-2.0 指适配器权重与本卡。
- 训练数据:apache-2.0(上游数据卡 YAML 头逐字
license: apache-2.0)。原数据集许可不因本发布而改变。 本仓库不包含 aya 数据或其衍生副本;如需使用数据,请从上游按其许可获取。
- 基座模型:
Qwen/Qwen3.5-9B 按其自身许可(apache-2.0,https://huggingface.co/Qwen/Qwen3.5-9B/blob/main/LICENSE)发布;使用本适配器需另行获取基座并遵守其条款。
引用 / 出处 Citation
@misc{singh2024aya,
title={Aya Dataset: An Open-Access Collection for Multilingual Instruction Tuning},
author={Shivalika Singh and Freddie Vargus and Daniel Dsouza and others},
year={2024},
eprint={2402.06619},
archivePrefix={arXiv}
}
基座模型:https://huggingface.co/Qwen/Qwen3.5-9B