轻小说写作模型(Alpha版)
本模型大小为0.16B,使用轻小说数据进行训练,可用于轻小说写作。
使用说明
下载模型model_sft.pt, tokenizer tokenizer.model和必要的脚本 model.py, tokenizer.py, generate.py ,并且安装python和pytorch后,在文件所在目录下使用命令
python generate.py --prompt "写一篇轻小说,讲述少女组建乐队的故事"
即可得到结果,例如
序章:最后的希望
清晨的草原上,我趴下,看着夕阳把自己染成血红色,手心冒汗的林中
清晨的草地上,我站在一片广袤的草地,呼吸均匀,像是在寻找什么重要的东西
“林君,你到底是什么人?”
清晨的阳光透过树叶洒进来,轻柔而富有弹性,林中的草地发出沙沙的声响,像是一具尸体走进坟场。
我叫林晨,今年十五岁,毕业于旧时代摇滚摇滚家事务所,负责作曲。
准确地说,是所有人的命运。
(等等,这不就是我在演唱会上演过的最后一次演出吗?如果我能找到那条奏者的命,那他就永远无法找到我了?)
我正想转身离开,却听到了身后传来一阵刺耳的刹车声。
等等,那是林晨的脚步声?
我猛地转身,看到一个穿着华丽长裙的少年正朝我跑来,手里拿着一根棒棒,动作优雅,声音温柔,带着明显的委屈。
“我是林晨!你叫什么名字?”
“林君?”少年转过头,用那双仿佛能看穿一切的眼睛看着我,“从小一起长大,从小一起长大,从幼儿园开始。”
“小林……?”
“我的天赋是钢琴,能弹吉他,能唱歌,能唱绝大多数普通高中生。”少年的表情变得有些复杂,“我能弹五百首曲子,能在今天的生日换取一切。”
“生日?你确定不是唱得太烂了吗?”
“林君,你知道的。上周我唱了整整三年,那首曲子唱的很特别,让我在演唱会上被观众嘲笑,然后就彻底消失了。”
我环顾四周。草地上,长着三棵树的少年,脸上挂着标准的乐队的笑容,但那笑容让我后背一阵发凉。
(这算什么?我上辈子是乐队成员吗?这算什么?我的人生不应该是出门练唱演唱会吗?)
三个月后,我站在了一座小山上,周围是草地的树木,月光洒在树上,像是在嘲笑我。
参数说明
词表大小为50306, 其中最后三个<|endoftext|>, <|im_start|>, <|im_end|> 是特殊符号。 本模型使用标准的ChatML格式,目前只支持单轮对话,格式如下所示:
<|im_start|>user
写一篇轻小说,讲述少女组建乐队的故事<|im_end|>
<|im_start|>assistant
# 序章:最后的希望
清晨的草原上,我趴下,看着夕阳把自己染成血红色,手心冒汗的林中...(省略中间文本)...<|im_end|>
本模型使用Transformer架构,嵌入维度为768,层数为12,注意力为多头注意力,有12个注意力头。
准确来说,本模型总参数量为163,949,186.
训练时的序列长度为2048,超出该长度的生成效果可能会大幅度下降。
训练说明
使用脚本 train_tokenizer.py 训练tokenizer; 使用脚本 pretrain.py 预训练; 使用 train_sft.py 进行指令微调。
训练和推理需要安装的python包有pytorch, jsonlines, tqdm等,不依赖于transformers等huggingface框架。
本模型预训练时对多个数据集按照指定比例进行混合采样训练。混合采样数据集类在 dataset_loader.py 中实现。
本仓库不包含预训练数据,可自行收集。训练前需要自行修改训练脚本调整数据路径。
本模型预训练数据包括:
中英文维基百科
fineweb-edu
zhihu-KOL
本人收集的一些轻小说和其他小说数据
本模型SFT数据是使用deepseek v4 pro生成的1018条小说创作数据集
