ChatRWKV对标 ChatGPT 的开源项目
ChatRWKV 类似于 ChatGPT,但由 RWKV(100% RNN)语言模型提供支持,并且是开源的。希望做“大规模语言模型的 Stable Diffusion”。
目前 RWKV 有大量模型,对应各种场景、各种语言:
- Raven 模型:适合直接聊天,适合 +i 指令。有很多种语言的版本,看清楚用哪个。适合聊天、完成任务、写代码。可以作为任务去写文稿、大纲、故事、诗歌等等,但文笔不如 testNovel 系列模型。
- Novel-ChnEng 模型:中英文小说模型,可以用 +gen 生成世界设定(如果会写 prompt,可以控制下文剧情和人物),可以写科幻奇幻。不适合聊天,不适合 +i 指令。
- Novel-Chn 模型:纯中文网文模型,只能用 +gen 续写网文(不能生成世界设定等等),但是写网文写得更好(也更小白文,适合写男频女频)。不适合聊天,不适合 +i 指令。
- Novel-ChnEng-ChnPro 模型:将 ChnEng-ChnPro 在高质量作品微调(名著,科幻,奇幻,古典,翻译,等等)。
HuggingFace Gradio Demo (14B ctx8192):https://huggingface.co/spaces/BlinkDL/ChatRWKV-gradio
Raven (7B 在 Alpaca 等上微调) Demo:https://huggingface.co/spaces/BlinkDL/Raven-RWKV-7B
RWKV pip package:https://pypi.org/project/rwkv/
更新 ChatRWKV v2 和 pip rwkv 包(0.7.3):
使用 v2/convert_model.py 将模型转换为策略,以加快加载速度并节省 CPU 内存。
### Note RWKV_CUDA_ON will build a CUDA kernel ("pip install ninja" first).
### How to build in Linux: set these and run v2/chat.py
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
### How to build in win:
Install VS2022 build tools (https://aka.ms/vs/17/release/vs_BuildTools.exe select Desktop C++). Reinstall CUDA 11.7 (install VC++ extensions). Run v2/chat.py in "x64 native tools command prompt".
下载 RWKV-4 权重: https://huggingface.co/BlinkDL(使用 RWKV-4 模型。勿使用 RWKV-4a 和 RWKV-4b 模型。)
RWKV Discord https://discord.gg/bDSBUMeFpc
Twitter: https://twitter.com/BlinkDL_AI
RWKV LM: https://github.com/BlinkDL/RWKV-LM (解释、微调、训练等)
RWKV in 150 lines (模型、推理、文本生成): https://github.com/BlinkDL/ChatRWKV/blob/main/RWKV_in_150_lines.py
ChatRWKV v2:具有 "stream" 和 "split" 策略,以及 INT8。3G VRAM 足以运行 RWKV 14B https://github.com/BlinkDL/ChatRWKV/tree/main/v2
os.environ["RWKV_JIT_ON"] = '1' os.environ["RWKV_CUDA_ON"] = '0' # if '1' then use CUDA kernel for seq mode (much faster) from rwkv.model import RWKV # pip install rwkv model = RWKV(model='/fsx/BlinkDL/HF-MODEL/rwkv-4-pile-1b5/RWKV-4-Pile-1B5-20220903-8040', strategy='cuda fp16') out, state = model.forward([187, 510, 1563, 310, 247], None) # use 20B_tokenizer.json print(out.detach().cpu().numpy()) # get logits out, state = model.forward([187, 510], None) out, state = model.forward([1563], state) # RNN has state (use deepcopy if you want to clone it) out, state = model.forward([310, 247], state) print(out.detach().cpu().numpy()) # same result as above
https://huggingface.co/BlinkDL/rwkv-4-raven/blob/main/RWKV-4-Raven-14B-v7-Eng-20230404-ctx4096.pth: