Skip to content

About

Luna Tanka — multilingual mnemonic LoRA for Chinese-speaking learners. Experimental Qwen3.5-9B adapter, data, runtime and evaluation.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

license apache-2.0
base_model mlx-community/Qwen3.5-9B-4bit
library_name peft
language
zh
en
ja
ko
fr
de
es
ru
tags
lora
mnemonic
language-learning
experimental

Luna Tanka

为中文学习者生成多语言词汇助记场景的实验 LoRA 模型。

Luna Tanka v0.1.0 来自 Lunaword 的最新多语言续训候选,支持英语、日语、韩语、法语、德语、西班牙语和俄语输入,输出中文联想画面与回忆线索。日语输入使用给定假名读音,保留完整词形;示范重点包含借入/借出、寄存/代管、返回/归还、寻找/找到等区别。

本仓库包含实际适配器权重、推理入口、训练数据、续训入口和原始评估输出。当前版本仍有漏字、重复和场景逻辑问题,作为实验候选发布。尚未证明真实记忆效果,也没有替换 Lunaword 当前运行的模型。

An experimental multilingual mnemonic LoRA for Chinese-speaking learners. This is an adapter release, not a standalone 9B checkpoint. See the raw evaluation outputs and known limitations below.

模型文件

项目 内容
名称/版本 Luna Tanka / v0.1.0
发布日期 2026-10-27
格式 PEFT LoRA,Safetensors
当前权重 adapter/adapter_model.safetensors,6,852,160 字节
SHA-256 7c4eae5d6d06d38130a2a52e327d0d2221e81021771c7cc0db7b29b8221b908a
对应实验 multilingual-v5,第二轮,182 次参数更新
适配器设置 rank 8,alpha 32,dropout 0,最后四层中的 14 个线性模块
输出协议 method、decomposition、derivation、soundHint、text、cue 六个字符串字段

名称与发布路径已经整理为 Luna Tanka,权重字节未修改。适配器配置只将本机基座绝对路径改为相对路径,原配置哈希记录在 adapter/origin.json。

基座来自 mlx-community/Qwen3.5-9B-4bit,固定 revision 为 8b2b98c00a6b4d291155e4890773ca8f769aee53。运行时将其文本权重还原到 BF16,并以原始 affine4 字节保存冻结前缀,词嵌入和 FP32 输出投影在 CPU 上。此转换还原的是已经量化的权重,不等同于原始未量化 Qwen 权重。普通 AutoModel.from_pretrained 不能直接加载这个 MLX 基座;请使用下方准备脚本和配套运行时。

完整基座不在本 GitHub 仓库或 Release 内;使用时从上述固定来源获取。基座来源、转换步骤及权重哈希见 provenance/base-conversion.json。

快速使用

参考环境为 Windows、Python 3.12、RTX 4090 24 GB、64 GB 内存。当前配套运行时需要 NVIDIA CUDA,未验证 CPU-only 或 macOS 推理。保留量化源文件和转换文件需要约 25 GB 磁盘空间,安装环境另计。

以下命令在 D 盘的仓库目录执行;虚拟环境、pip 缓存和模型文件均放在该目录中。推理和准备脚本也会将 CUDA、CuPy、Torch、Hugging Face 与临时缓存放在当前仓库的 .cache/。

Set-Location D:\
git clone https://github.com/ergou-yu/Luna-Tanka.git
Set-Location D:\Luna-Tanka
$env:PYTHONDONTWRITEBYTECODE = "1"
$env:PYTHONUTF8 = "1"
$env:TEMP = "$PWD\.cache\tmp"
$env:TMP = $env:TEMP
New-Item -ItemType Directory -Force $env:TEMP | Out-Null
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --cache-dir .cache/pip torch==2.6.0 --index-url https://download.pytorch.org/whl/cu124
.\.venv\Scripts\python.exe -m pip install --cache-dir .cache/pip -r requirements.txt
.\.venv\Scripts\python.exe training/mnemonic/infer_luna_tanka.py --verify-only

首次下载基座并转换:

.\.venv\Scripts\python.exe training/mnemonic/prepare_base.py

生成日语词汇的记忆方法:

.\.venv\Scripts\python.exe training/mnemonic/infer_luna_tanka.py --language ja --word "選ぶ" --definition "选择;挑选" --phonetic "えらぶ"

其他语言通过 --language en|ko|fr|de|es|ru 指定。--dry-run 只输出构造好的提示词,不加载模型。--verify-only 校验发布文件和权重,不下载基座、不占用 GPU。

若已有配套基座,可使用 --base-root D:\Lunaword,复用该目录下的 models/mnemonic/base-9b 和 models/mnemonic/base-9b-hf-cuda。CLI 使用固定贪心解码和相同 tokenizer 设置,返回原始文本及解析结果,不自动修补漏字或不合法 JSON。初始化日志写入 stderr,最后的生成结果写入 stdout。

数据与训练

语言 本轮新增示范
日语 60
韩语 30
法语 30
德语 30
西班牙语 30
俄语 30
英语 60
合计 270

135 个词条族各有两个场景,合并原有示范后共 499 条:训练 361 条、验证 69 条、测试 69 条。本轮新增示范中,198 条进入训练、72 条留作评估。同一语言、同一规范化拼写的全部词义、读音与场景属于同一分组,旧数据的分组和答案保持不变。没有未经核实的中文谐音或词源;英语拆解仅使用审核目录。

本轮从 V4 候选继续训练两轮,学习率 0.00003,每四个样本累积更新一次,共 182 次更新。仅监督 assistant completion,包括 EOS,prompt 部分不计入损失。提供的 training/initial-adapter/ 是该次续训的 V4 初始权重,不是 Luna Tanka 最终权重。

检查或重新进行这次续训:

.\.venv\Scripts\python.exe training/mnemonic/train_luna_tanka.py
.\.venv\Scripts\python.exe training/mnemonic/train_luna_tanka.py --train

训练输出到独立的 models/luna-tanka-retrained/,目录已存在时拒绝覆盖;默认只检查,不训练、不加载模型。基座须先准备好。发布用配置与代码做了路径和无关 import 的移植,记录在 data/manifest.json;历史训练清单原样保存在 provenance/original-training-manifest.json。相同硬件、软件和输入有助于复核,未承诺跨环境逐位重现生成。

评估与已知问题

固定 14 个验证输入,同提示词与贪心解码 训练前 训练后
通过结构检查 10 / 14 12 / 14
同时满足结构、正文长度等机械检查 3 / 14 7 / 14

七种语言的验证 token 损失下降约 4.1%–7.1%,日语约 5.0%。最终另生成 14 个保留测试输入,14 个通过结构检查,9 个同时通过正文长度等检查。上述数字是小样本格式和损失指标,不是语义正确率,也不是学习者记忆效果。

部分借出场景有改善,但当前模型仍有以下实际缺陷:

  • 日语「確かめる」有时输出「確かめ」,漏掉结尾的「る」。
  • 日语「犬」、法语 chat 等场景有重复句;pain 可能退化成只有“面包”的正文。
  • 德语 Haus 的场景出现开窗后雨停的不合理因果。
  • 俄语 продолжить 的场景出现“停下”与“没有停步”的矛盾。

原始输出完整保存在 evaluation/,具体观察见 evaluation/content-review.json。训练示范由同一助手编写并核查,尚无独立母语者或学习者验证。旧验证/测试样例此前已被查看,属于回归评估;新词条族也共享作者和任务模板。模型可能偏离完整拼写、给定义项及 JSON 约束,实际学习内容需要核对。

校验与许可

.\.venv\Scripts\python.exe -m unittest discover -s tests -v

发布文件 SHA-256 与大小列在 release-manifest.json,额外提供 SHA256SUMS。测试检查权重、全部 499 条输入的提示词一致性、词条分组边界和续训输入哈希。

发布内容使用 Apache License 2.0,见 LICENSE 与 NOTICE。上游 Qwen3.5-9B 的归属及许可保留;该项目与上游作者没有隶属或背书关系。

About

Luna Tanka — multilingual mnemonic LoRA for Chinese-speaking learners. Experimental Qwen3.5-9B adapter, data, runtime and evaluation.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages