public-sft-qwen9b-v10 · Qwen3.5-9B × kanhatakeyama/LogicalDatasetsByMixtral8x22b(日文合成逻辑 Q&A)LoRA 适配器(实验产物)
English TL;DR. A LoRA adapter (r=32, alpha=64) for
Qwen/Qwen3.5-9B, trained with QLoRA for 3 epochs / 192 optimizer steps on a 1,024-example subset ofkanhatakeyama/LogicalDatasetsByMixtral8x22b(apache-2.0, revisione9abd95ac462e56414e6785020d7db3c3d8b54c7, https://huggingface.co/datasets/kanhatakeyama/LogicalDatasetsByMixtral8x22b). The training data is synthetic: per the upstream card, it is Japanese Q&A (mainly logical problems) auto-generated bymistralai/Mixtral-8x22B-Instruct-v0.1(apache-2.0), seeded with randomly chosen Wikipedia article titles; it is not human-written data. The upstream card explicitly warns that fact-related content contains many hallucinations. This run targets the logical/reasoning answer style, not factual knowledge; do not rely on this adapter for facts. Training only: no evaluation of any kind was run, so no claim is made about Japanese or logical/reasoning ability (or any other ability). 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 上,用公开数据集 kanhatakeyama/LogicalDatasetsByMixtral8x22b(日文逻辑类 Q&A;以 Wikipedia 条目名为种子、由 Mixtral-8x22B-Instruct 自动生成的合成数据)随机抽取的 1024 条做了一轮指令微调(SFT)。
只做了训练,没有做任何评测。 本卡所有数字都取自这一轮训练的实际产物(训练记录、训练元数据、适配器文件本身)以及对数据筛选的复算;没有估算值。
⚠ 请先读这三条
- 事实关联内容幻觉较多,本轮意在逻辑/推理文体,非事实知识。 上游数据集卡原文明言:"事実関連については、ハルシネーションが多いので注意が必要です。"(事实相关的内容幻觉较多,需要注意。)训练数据中涉及事实的部分未经核对、可能是错的,本适配器可能把这些错误事实学进去。请勿把本适配器用作事实知识来源。
- 训练数据是合成数据,不是人工撰写。 上游数据集卡原文:"ランダムに選んだWikipediaに記事名をもとに、Mixtral 8x22bで自動生成したQ&Aです。" "ロジカルな問題を中心にランダム生成しています。" 即:以随机选取的 Wikipedia 条目名为种子,由
mistralai/Mixtral-8x22B-Instruct-v0.1(许可 apache-2.0;上游卡原文写作「Mixtral 8x22b」)自动生成、以逻辑类问题为主的 Q&A。文本是模型生成的,其中的事实错误、推理缺陷、文体偏好与偏差会原样进入训练;本轮没有对内容做任何人工核对或质量过滤。 - 不声称任何日文能力或逻辑 / 推理能力。 训练数据虽然是日文逻辑类 Q&A,但本轮没有做任何评测(没有基准、没有验证集、没有人工抽检生成结果),因此无法说明本适配器在日文、逻辑推理或任何其他方面比基座更好、更差或没有变化。
Provenance 一览
| 项 | 内容 |
|---|---|
| 基座模型 Base model | Qwen/Qwen3.5-9B,HF 快照 commit c202236235762e1c871ad0ccb60c8ee5ba337b9a(训练机本地缓存中唯一的快照,refs/main 指向它;adapter_config.json 的 revision 字段为 null,PEFT 未记录快照号)。基座自身许可为 apache-2.0 |
| 数据集 Dataset | kanhatakeyama/LogicalDatasetsByMixtral8x22b(日文逻辑类 Q&A 合成数据集):https://huggingface.co/datasets/kanhatakeyama/LogicalDatasetsByMixtral8x22b |
| 数据快照 Revision | commit e9abd95ac462e56414e6785020d7db3c3d8b54c7;用其中的 1.parquet(13,800 行)+ 1_tsubame.parquet(171,796 行),共 185,596 行 |
| 合成来源 Synthetic origin | 以随机选取的 Wikipedia 条目名为种子,由 mistralai/Mixtral-8x22B-Instruct-v0.1(许可 apache-2.0)自动生成的逻辑类 Q&A(上游数据集卡原文) |
| 数据质量 Data quality | 上游卡明言:事实关联内容幻觉较多。本轮意在逻辑/推理文体,非事实知识。 |
| 数据许可 Data license | apache-2.0(上游数据集卡 YAML 头逐字 license: apache-2.0)。原数据集许可不因本发布而改变。 |
| 子集 / 筛选 | parquet 全量 185,596 行 → 扫描 185,596 → 去坏结构 0 / 空 0 / 特殊 token 0 / 去重 0 → 可用 185,596 → 丢弃经 chat template 渲染后 >1024 token 的 1,670 条 → fit 183,926 → seed=42 洗牌后取 1,024 条 |
| 权重许可 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(有效 16)· lr 1e-4(cosine)· warmup 0.03 · 3 epoch = 192 步(steps) · seed 42 · bf16 + Liger kernel · 单卡 |
| 已知局限 Limitations | 事实关联内容幻觉较多;只训 3 epoch / 192 步 / 1,024 条;合成数据;未做任何评测;单一 seed;交付 LoRA 未合并;不是产品。详见下文「已知局限」 |
文件 Files
| 文件 | 说明 |
|---|---|
adapter_model.safetensors |
LoRA 适配器权重,fp32,496 个张量 / 86,556,672 个参数,346,302,176 字节,sha256 04767ad5b158fc3ffda940725d476f747c8421678cb0bce8a30d8581e5118fb5(= 第 192 步,也就是最终 checkpoint) |
adapter_config.json |
PEFT 配置(由 peft 0.20.0 写出) |
tokenizer.json / tokenizer_config.json / chat_template.jinja |
训练时实际使用的 tokenizer 与对话模板,由 transformers 5.15.0 随适配器一起保存(见下文「tokenizer 说明」) |
不包含:合并后的完整权重、中间 checkpoint(第 100 步)、优化器状态、训练语料或其副本。训练数据请从上游获取。
数据 Data
- 数据集:
kanhatakeyama/LogicalDatasetsByMixtral8x22b。来源 URL:https://huggingface.co/datasets/kanhatakeyama/LogicalDatasetsByMixtral8x22b - 快照:revision
e9abd95ac462e56414e6785020d7db3c3d8b54c7,取其中的1.parquet(13,800 行)与1_tsubame.parquet(171,796 行),共 185,596 行;列为question/answer。 - 合成来源:上游数据集卡原文为「ランダムに選んだWikipediaに記事名をもとに、Mixtral 8x22bで自動生成したQ&Aです。」「ロジカルな問題を中心にランダム生成しています。」——即以随机选取的 Wikipedia 条目名为种子,由
mistralai/Mixtral-8x22B-Instruct-v0.1(许可 apache-2.0)自动生成、以逻辑类问题为主的 Q&A。训练数据全部是模型生成的合成文本。 - 数据质量: 上游数据集卡原文「事実関連については、ハルシネーションが多いので注意が必要です。」——事实关联内容幻觉较多,本轮意在逻辑/推理文体,非事实知识。 本轮没有对事实正确性做任何核对或过滤。
- 许可:上游数据集卡 YAML 头逐字为
license: apache-2.0。Apache-2.0 允许再分发与商用。原数据集许可不因本发布而改变。 生成数据所用模型的使用条款,请以其上游为准。 - 筛选(CPU 复算,口径与训练读取一致,脚本
convert_logical_mixtral.py,统计convert_report.json):- parquet 全量 185,596 行 → 扫描 185,596
- → 每行
{question, answer}映射为一轮[user, assistant]对话;要求两侧内容非空、无 chat-template 特殊 token:不合格 0 条;按整段对话去重:重复 0 条 → 可用 185,596 - → 用 Qwen3.5-9B chat template(
apply_chat_template(..., add_generation_prompt=False))实测 token 长度,丢弃 >1024 的 1,670 条 - → fit 183,926 →
random.Random(42).shuffle后取前 1,024 条写入训练文件
- 训练文件:
train.jsonl1,024 行,sha256d849604cbb2a0a35b9a27749a0455f01f5f156487f9d1b64d3908081e7e731ed,逐行json.loads全通过。 - 子集长度(token,含 chat template):p50 291 / p90 571 / max 1023,均值 321.8,合计 329,507 token/epoch。
- 子集结构:无 system 指示;全部为单轮(user/assistant 各 1 条)。
- 映射:
{"messages":[{"role":"user","content":question},{"role":"assistant","content":answer}]}。 - loss 只算在 assistant 回复 token 上(
all_tokens_loss=false);user 部分与模板标记不计入。
训练配置 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;exclude_modules 排除 vision/audio/visual/mtp(只覆盖文本解码器) |
| 可训练参数 | 86,556,672(496 个 fp32 张量) |
| max_seq_len | 1024 |
| batch | 每卡 4 × grad_accum 4 = 有效 batch 16 |
| optimizer | paged_adamw_8bit |
| lr / schedule | 1e-4,cosine |
| warmup | warmup_ratio 0.03 |
| epochs / steps | 3 epoch;1,024 条 / 有效 batch 16 = 64 步/epoch,共 192 步 |
| seed | 42 |
| loss 范围 | 只算 assistant 回复 token(all_tokens_loss=false) |
| kernels | Liger kernel;attention sdpa;开启 gradient checkpointing |
| 硬件 / 显存峰值 | 单卡;显存峰值 11.9 GiB |
| 时长 / 吞吐 | 2,976 秒(约 0.83 小时),332.1 tok/s;每 epoch 329,507 token |
| 软件 | transformers 5.15.0、peft 0.20.0 |
| 训练日期 | 2026-10-19 |
训练集 loss:第 5 步 1.007,第 190 步(最后一个记录点)0.454。这只是训练集上的 loss,不是验证或评测指标;本轮没有验证集。对合成数据,训练集 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-v10"
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": "AはBより背が高く、BはCより背が高い。一番背が低いのは誰ですか。理由も説明してください。"}]
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 的逐字节副本(chat_template.jinja 则与基座逐字节相同)。本仓库这份的预切分(pre-tokenizer)正则是 (?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\r\n\p{L}\p{N}]?\p{L}+|\p{N}|…——其中 \p{L} 一处不含组合附加符类 \p{M},而基座文件写的是 [^\r\n\p{L}\p{N}]?[\p{L}\p{M}]+。这是 transformers 5.15.0 保存 Qwen3.5 tokenizer 时的已知行为。也就是说,训练时实际使用的切分就是本仓库附带的这份 tokenizer;如果推理栈不经过 transformers、直接读取基座的 tokenizer 文件,含组合附加符的文本会被切得和训练时不同。
已知局限 Limitations
- 事实关联内容幻觉较多:上游数据集卡明言「事実関連については、ハルシネーションが多い」。训练数据中涉及事实的内容未经核对,本适配器可能输出错误事实。本轮意在逻辑/推理文体,非事实知识;请勿用于需要事实正确性的场景。
- 训练量小:只训了 3 epoch / 192 步,只用了 1,024 条样例(取自 183,926 条满足长度限制的随机子集,不代表全量 185,596 行的分布)。
- 合成数据:训练数据全部是模型生成的(Mixtral-8x22B-Instruct 以 Wikipedia 条目名为种子自动生成),没有人工撰写或人工核对;生成模型的事实错误、推理缺陷、偏差和文体习惯会被学进去。上游数据集卡自述的局限同样适用。
- 没有任何评测:只跑了训练,没有做任何基准评测,没有留出验证集,也没有人工检查生成结果。上面的 loss 只是训练集 loss,不能说明泛化能力或与基座的优劣。不声称任何日文能力或逻辑 / 推理能力。
- 单一 seed,未做超参搜索:只有 seed 42 这一次运行,结果的稳定性未知。
- 交付形态:交付 LoRA 适配器本体,未合并权重;合并 / 低比特量化(如 GGUF)之后的效果未验证,低比特量化可能削弱适配器的作用。
- 训练与推理条件:训练时基座 4-bit NF4;其他精度 / 思考模式未测。
- 只训了单轮:训练数据全部是单轮 Q&A,多轮对话下的行为没有训练也没有评测。
- 没有任何保证:未做安全评测或红队测试。这是实验室的实验产物,不是产品。
许可 License
- 适配器权重:apache-2.0。 本仓库 YAML 中的
license: apache-2.0指适配器权重与本卡。 - 训练数据:apache-2.0(上游数据集卡 YAML 头逐字
license: apache-2.0)。原数据集许可不因本发布而改变。 本仓库不包含 LogicalDatasetsByMixtral8x22b 数据或其衍生副本;如需使用数据,请从上游按其许可获取。生成模型mistralai/Mixtral-8x22B-Instruct-v0.1为 apache-2.0,以其上游为准。 - 基座模型:
Qwen/Qwen3.5-9B按其自身许可(apache-2.0,https://huggingface.co/Qwen/Qwen3.5-9B/blob/main/LICENSE)发布;使用本适配器需另行获取基座并遵守其条款。
引用 / 出处 Citation
数据集:kanhatakeyama/LogicalDatasetsByMixtral8x22b,https://huggingface.co/datasets/kanhatakeyama/LogicalDatasetsByMixtral8x22b 。
生成模型:mistralai/Mixtral-8x22B-Instruct-v0.1,https://huggingface.co/mistralai/Mixtral-8x22B-Instruct-v0.1 。