Total Pageviews

Wednesday, 13 July 2022

AI-Writer


AI 写小说,生成玄幻和言情网文等等。中文预训练生成模型。采用我的 RWKV 模型,类似 GPT-2 。AI写作。RWKV for Chinese novel generation.

AI 写小说,支持 N/A/I卡 GPU 加速。采用我的 RWKV 模型,比 GPT 更快,训练代码:https://github.com/BlinkDL/RWKV-LM 。

小白用户请用网页版: https://blinkdl.github.io/AI-Writer/ (弱一些,但手机点开就能写)

另外请大家看,本页面的最后,我会解释模型的原理,不懂电脑也能懂。

Python版安装方法(比网页版强):

  1. 先看下面的【安装方法】。下载模型,在右边 Release(或者看QQ群文件),解压到 model 目录。
  2. 运行 python run.py(或双击run.bat),建议在cmd运行,看出错提示。有问题请看【安装方法】和【常见问题】。

也支持 CPU exe 生成,下载请加:技术和用户 QQ 群 143626394(加入时请简单自我介绍)。还有用户TG群:https://t.me/ai_writer 。

Python版网页界面:执行 python server.py(或双击server.bat)然后打开 web-client 中的 index.html(推荐用Chrome)。

Screenshot

注意:模型的训练数据全部来自网文,缺乏生活常识。生成的文字仅供娱乐。请遵守法律法规。

同时使用了特殊采样方法,改善小模型的生成质量(介绍见 https://zhuanlan.zhihu.com/p/394766831 )。

我的知乎是 https://www.zhihu.com/people/bopengbopeng 。

网友移植的 Paddle 版:https://github.com/JunnYu/Paddle-AI-Writer 。

安装方法(请装精确版本。例如python装3.8.x;Windows请升级win10 64位21H1):

Windows小白:先试QQ群文件的【纯CPU exe版】,但CPU需要AVX2(例如intel四代以上),不支持AVX2就用【WindowsCPU版】
Windows有N卡:装python3.8,CUDA 11.1,CUDNN,torch1.9.1+cu111(在QQ群文件都有)。用940mx也能跑。用1050ti就挺快。目前只需要2G显存,以后需要4G显存
Windows有A/I卡:装python3.8,pip install torch onnxruntime-directml。用A/I卡模型。在 run.py 和 server.py 设置为 dml 模式
WindowsCPU版:装python3.8,pip install torch,用N卡模型。在 run.py 和 server.py 设置为 cpu 模式
Linux有N卡:和【Windows有N卡】相同
Linux有A/I卡:可以用https://onnxruntime.ai/加速,自己研究。不懂就用CPU版
LinuxCPU版:和【WindowsCPU版】相同
Mac:目前只能CPU版。和【WindowsCPU版】相同。某些Mac需要用pip3装包,用python3运行。

常见问题:

1. 先打开 run.py 和 server.py 看里面的设置。例如,玄幻和言情模型,需要在里面手工切换。
2. no module named 'xxx' --> 执行 pip install xxx 缺什么就装什么。注意N卡GPU版需要装pytorch的cuda版。注意A/I卡GPU版需要装onnxruntime-directml。
3. module 'torch' has no attribute 'tile' --> 需要 pytorch 1.9 以后版本。
4. no such file or directory: 'model/xxx' --> 先确定模型解压到 model 目录。然后在命令行需要先进入项目所在的目录,再用python运行py。
5. 怎么设置每次续写多少字 --> 修改run.py和server.py的LENGTH_OF_EACH。可以设置9999999也没问题,但是,单次写很长,容易出现无限循环。
6. 怎么训练 --> https://github.com/BlinkDL/RWKV-LM 不懂就加QQ群143626394(加入时请简单自我介绍)。
7. 写作原理 --> 每次分析最后的512个字,得到下一个字的概率分布(xx%概率是x字,等等),根据概率写一个字。这样一个个字写下去。
8. ctx_len是什么意思 --> 模型的记忆长度,就是每次只看最后的多少个字。越大效果越好也越慢。目前最大512。

群友写的训练教程:

https://zhuanlan.zhihu.com/p/432263234

https://zhuanlan.zhihu.com/p/432715547

https://zhuanlan.zhihu.com/p/435972716

训练后怎么运行:

1. 默认 RWKV-LM 训练的模型很小,所以,需要修改 AI-writer 的 run.py,设置 ctx_len n_layer n_head 和 RWKV-LM 的 train.py 一致。还有 WORD_NAME(json词表) MODEL_NAME。
2. 在 run.py 的 UNKNOWN_CHAR,将 \ue083 改成词表中一个不可能在正常文字出现的\uxxxx乱码,或某个最罕见的字(字不需要\符号)。意思是,如果看见不在词表里面的字,就用 UNKNOWN_CHAR 代表。
3. 如果用 server.py,也同样修改。
from https://github.com/BlinkDL/AI-Writer

No comments:

Post a Comment