RWKV 模型本地部署工具 Ai00 Server 保姆级教程
了解Ai00
简介
Ai00 Server 是基于 web-rwkv 推理引擎的 RWKV 语言模型推理 API 服务器。它本身也是一个基于 MIT 协议的开源软件,由 RWKV 开源社区成员 @cryscan 和@顾真牛牵头成立的 Ai00-x 开发组开发。
Ai00 Server 支持 Vulkan 作为推理后端,支持 Vulkan 并行和并发批量推理,可以在所有支持 Vulkan 的 GPU 上运行。事实上, Ai00 Server 支持大部分 NVIDIA、AMD、Intel 的显卡(包括集成显卡)。
在高兼容性的同时,Ai00 Server 又不需要笨重的 pytorch 、 CUDA 和其他运行时环境。它结构紧凑,开箱即用,且支持 INT8/NF4 量化,可以在绝大部分的个人电脑上高速运行。
Ai00 Server 仓库地址:https://github.com/Ai00-X/ai00_server
这篇新手教程旨在为一些刚接触 RWKV 大模型和 Ai00 Server 的朋友们提供指引。遵循本文的步骤,应该可以成功使用 Ai00 Server 本地运行 RWKV 模型,并进行各种任务,包括聊天、文本生成、翻译和问答。
功能预览
聊天功能
与模型对话,聊天或提出问题让模型回答。
续写功能
使 RWKV 模型根据你给定的内容进行续写。
也可以使用特定格式的 prompt ,让模型遵循某种指令执行任务。具体的 prompt 实现请参阅:https://shoumenchougou.github.io/Awesome-RWKV-Prompts/#/Writer-Prompts
写论文
从给定的论文标题生成论文提纲,再根据提纲生成论文内容。
快速上手
下载与安装
对于新手来说,我们建议直接从 Ai00 Server 的 Release 页面下载最新版本。
在每个版本发布的 Assets 版块可以找到已经打包好的 Ai00 Server 压缩包,下载并解压即可使用。
下载/转换 RWKV 模型
Ai00 Server 目前仅支持 .st
后缀的 Safetensors 模型,有两种方法可以得到 .st
模型:
1. 下载已经转换好的 .st
模型(推荐方式)
-
RWKV-5 系列:https://huggingface.co/cgisky/AI00_RWKV_V5/tree/main
-
RWKV-6 系列:https://huggingface.co/cgisky/ai00_rwkv_x060/tree/main
如果你无法访问上面的网站,请访问以下镜像站:
-
RWKV-5 系列:https://hf-mirror.com/cgisky/AI00_RWKV_V5/tree/main
-
RWKV-6 系列:https://hf-mirror.com/cgisky/ai00_rwkv_x060/tree/main
2. 下载 .pth
后缀模型,并通过工具转换成 .st
模型
首先,可以从 RWKV 官方仓库中下载 .pth
后缀的 RWKV 模型,下载地址:
-
RWKV-5 系列:https://huggingface.co/BlinkDL/rwkv-5-world/tree/main
-
RWKV-6 系列:https://huggingface.co/BlinkDL/rwkv-6-world/tree/main
如果你无法访问上面的网站,请访问以下镜像站:
-
RWKV-5 系列:https://hf-mirror.com/BlinkDL/rwkv-5-world/tree/main
-
RWKV-6 系列:https://hf-mirror.com/BlinkDL/rwkv-6-world/tree/main
下载完成后,应该可以在文件夹中找到
.pth
模型:
在 Ai00 Server 解压的文件夹中,可以找到名为 “converter.exe
” 的模型转换工具。在命令行中执行以下命令,可以将指定路径的 .pth
模型转化成 .st
模型:
$ ./converter --input /path/to/model.pth
请将上述命令中的
/path/to/model.pth
改成需要转换的模型文件路径。
获得 .st
后缀的 RWKV 模型后,我们需要在 assets
文件夹中新建一个 models
文件夹,并将 RWKV 模型放在此文件夹中。
调整配置参数
Ai00 程序会按照 assets/configs/Config.toml
配置文件中的参数运行 RWKV
模型。可以通过文本编辑软件(如记事本等)修改 Config.toml
的配置项,调整模型的运行效果。
下面是一组推荐的 Config.toml
配置。
注意:带中文标注的配置项可以尝试更改,其他英文标注的配置项不建议自行更改,除非你了解其具体作用。
[model] embed_device = "Cpu" # 在GPU还是CPU上放模型的Embed矩阵 ("Cpu" or "Gpu"). max_batch = 8 # The maximum batches that are cached on GPU. name = "RWKV-x060-World-3B-v2.1-20240417-ctx4096.st" # 模型名称,只支持后缀st格式模型,请自己在RWKV程序中转换好,或者直接下载转换好的模型 path = "assets/models" # 模型路径 precision = "Fp16" # Precision for intermediate tensors ("Fp16" or "Fp32"). "Fp32" yields better outputs but slower. quant = 0 # 量化层数,调高会提升效率,但可能损失精度,使模型效果变差 quant_type = "Int8" # 量化类型 ("Int8" or "NF4"),Int 8 效果比 NF4 好,但需要更多显存 stop = ["\n\n"] # Additional stop words in generation. token_chunk_size = 128 # 并行Token块大小,范围32-128,显卡越牛逼这个数调越大(64 or 128) # [[state]] # 是否挂载 state # default = true # 启动 Ai00 时是否加载 state 文件 # id = "fd7a60ed-7807-449f-8256-bccae3246222" # state 文件的 UUID,不指定则随机分配 # name = "x060-3B" # 是否为此 state 文件命名(可选项) # path = "rwkv-x060-chn_single_round_qa-3B-20240505-ctx1024.state" # state 文件的路径 # [[state]] # 是否挂载第二个 state 文件 # default = false # 启动 Ai00 时是否加载第二个 state 文件 # id = "6a9c60a4-0f4c-40b1-a31f-987f73e20315" # state 文件的 UUID,不指定则随机分配 # path = "rwkv-x060-chn_single_round_qa-3B-20240502-ctx1024.state" # state 文件的路径 # [[lora]] # 是否默认启用 LoRA # alpha = 192 # path = "assets/models/rwkv-x060-3b.lora" # LoRA 文件的路径 [tokenizer] path = "assets/tokenizer/rwkv_vocab_v20230424.json" # Path to the tokenizer. [bnf] enable_bytes_cache = true # Enable the cache that accelerates the expansion of certain short schemas. start_nonterminal = "start" # The initial nonterminal of the BNF schemas. [adapter] Auto = {} # Choose the best GPU. # Manual = 0 # Manually specify which GPU to use. [listen] acme = false domain = "local" ip = "0.0.0.0" # IPv4 地址 # ip = "::" # Use IpV6. force_pass = true port = 65530 slot = "permisionkey" tls = true # 是否使用 https ,如果你只在本地体验 AI00 请设置为 false [[listen.app_keys]] # Allow mutiple app keys. app_id = "JUSTAISERVER" secret_key = "JUSTSECRET_KEY" [web] # Remove this to disable WebUI. path = "assets/www/index.zip" # Path to the WebUI.
运行 Ai00 程序
配置项修改完毕后,请保存 Config.toml
文件,并双击运行 ai00_server.exe
程序。
当命令行中出现 INFO [ai00_server::middleware] model reloaded
提示时,意味着模型已经加载完成:
此时我们打开任意浏览器,并访问
https://localhost:65530
,即可打开 Ai00 的 Web 界面。
调整右侧解码参数
Web 页面的右侧有一些可设置的模型解码参数,如 Temperature
、Top_P
、Presence Penalty
和 Frequency Penalty
,调整这些参数会影响模型的生成效果。
参数对应的效果如下:
API 参数 | 效果描述 |
---|---|
Temperature | 采样温度,就像给模型喝酒,数值越大随机性越强,更具创造力,数值越小则越保守稳定。 |
Top_P | 就像给模型喂镇静剂,优先考虑前 n% 概率质量的结果。如设置成 0.1 则考虑前 10%,生成内容质量更高但更保守。如设置成 1,则考虑所有质量结果,质量降低但更多样。 |
Presence Penalty | 存在惩罚,正值根据“新 token 在至今的文本中是否出现过”来对其进行惩罚,从而增加了模型涉及新话题的可能性。 |
Frequency Penalty | 频率惩罚,正值根据“新 token 在至今的文本中出现的频率/次数”来对其进行惩罚,从而减少模型原封不动地重复相同句子的可能性。 |
其中 Temperature
和 Top_P
两个参数对模型生成效果的影响最大。
参数推荐
续写小说和对话这一类需要创造性的任务,需要高 Temperature
+ 低 Top_P
的参数组合,可以尝试以下四种参数搭配:
Temperature
1.2 ,Top_P
0.5
Temperature
1.4 ,Top_P
0.4
Temperature
1.4 ,Top_P
0.3
Temperature
2 ,Top_P
0.2
举个例子,续写小说可以尝试将 Temperature
设为 2 ( Temperature
增加会提高文采,但逻辑会下降),然后将 Top_P
设为 0.1 ~ 0.2 (Top_P
越低,逻辑能力越强),这样生成的小说内容逻辑和文采都很好。 完成相对机械的任务,例如材料问答、文章摘要等,则可将参数设为:
Temperature
1 ,Top_P
0.2
Temperature
1 ,Top_P
0.1
Temperature
1 ,Top_P
0
举个例子,如果你正在执行像关键词提取之类的机械任务,不需要模型进行任何开放性思考,则可以将 Temperature
设为 1 ,Top_P
、Presence Penalty
、Frequency Penalty
都设为 0 。
进阶功能
除了驱动 RWKV 模型进行对话、续写之外,Ai00 还有许多进阶功能。
你可以在 Ai00 发布新版本的时候回到本页面,以查看 Ai00 的最新功能。
挂载 State 文件 [版本 0.4.9]
挂载 State 文件可以强化模型在某一类任务的表现。以一个强化单轮问答 + emoji 的 State 为例,同样都是“东京到巴黎怎么走”这个问题,模型在挂载该 State 前后的回答画风完全不同:
不挂载 State 文件:
挂载“强化单轮中文对话 + Emoji ”的 State 文件后:
下载 State 文件
Ai00 Server 目前仅支持 .state
后缀的 State 文件,可以从 HF 仓库下载 .state
文件。
如果你无法访问上面的网站,请访问 HF 镜像站。
如何挂载 State ?
在 Config.toml
配置文件中修改关于挂载 State 的参数:
# [[state]] # 是否挂载 state # id = "fd7a60ed-7807-449f-8256-bccae3246222" # state 文件的 UUID,不指定则随机分配 # name = "x060-3B" # 是否为此 state 文件命名(可选项) # path = "rwkv-x060-chn_single_round_qa-3B-20240505-ctx1024.state" # state 文件的路径
要启用 State 挂载功能,请移除 #
注释符号,并修改对应的参数。参考如下:
[[state]] # 是否挂载 state # id = "fd7a60ed-7807-449f-8256-bccae3246222" # 非开发环境一般不指定 UUID,可保留 `#` 注释符 name = "x060-7B-Chinese" # 为此 state 文件命名为“x060-7B-Chinese” path = "rwkv-x060-chn_single_round_qa-7B-20240516-ctx2048.state" # state 文件的名称,存放在 `model` 文件夹
挂载 State 注意事项
注意:挂载 state 文件时,必须使用与 State 文件参数一致的基底 RWKV 模型。
举个例子:这个 State 文件是基于 RWKV-6-World-7B
模型微调而来,那么你在 Ai00 中必须启动 RWKV-6-World-7B
模型,挂载的 State 文件才会生效。
截至 Ai00 0.5.0 版本,支持在 WebUI-聊天模式右上方动态切换 State,但不支持同时挂载多个 State 。
挂载 LoRA 模型 [版本 0.4.9]
挂载 LoRA 模型和 State 的效果相似,也可以增强模型在某类任务上的表现。
如何挂载 LoRA 模型 ?
可以在 Config.toml
文件配置中修改挂载 LoRA 模型的参数:
# [[lora]] # 是否默认启用 LoRA # alpha = 192 # path = "assets/models/rwkv-x060-3b.lora" # LoRA 文件的路径
要启用 LoRA 挂载功能,请移除 #
注释符号,并修改对应的参数。参考如下:
[[lora]] # 默认启用 LoRA # alpha = 192 path = "assets/models/rwkv-x060-3b.lora" # LoRA 文件的路径
挂载 LoRA 模型注意事项
与挂载 state 相似,挂载 LoRA 文件时,必须使用与 LoRA 模型参数一致的基底 RWKV 模型。
举个例子:这个 LoRA 文件是基于 RWKV-6-World-3B
模型微调而来,那么你在 Ai00 中必须启动 RWKV-6-World-3B
模型,挂载的 LoRA 模型才会生效。
截至 Ai00 0.5.0 版本,支持在 WebUI 中同时加载多个 LoRA ,但不支持在 WebUI 中动态切换 LoRA。
这意味着想要取消 LoRA ,必须重启 Ai00 服务。
BNF (Backus-Naur Form) [版本 0.4.9]
BNF 可以强制模型以您想要的格式输出(例如,JSON、带有指定字段的 markdown)。
以下是一个 JSON 的 BNF 示例,其中包含字段 name 和 age :
<start> ::= <json_object> <json_object> ::= "{" <object_members> "}" <object_members> ::= <json_member> | <json_member> ", " <object_members> <json_member> ::= <json_key> ": " <json_value> <json_key> ::= '"' "name" '"' | '"' "age" '"' | '"' "job" '"' <json_value> ::= <json_string> | <json_number> <json_string>::='"'<content>'"' <content>::=<except!([escaped_literals])>|<except!([escaped_literals])><content>|'\\"'<content>|'\\"' <escaped_literals>::='\t'|'\n'|'\r'|'"' <json_number> ::= <positive_digit><digits>|'0' <digits>::=<digit>|<digit><digits> <digit>::='0'|<positive_digit> <positive_digit>::="1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
以 prefab 格式导出量化模型[版本 0.4.9]
在 Ai00 的 WebUI - Setting 界面,可以以 prefab 格式导出量化后的 RWKV 模型。
什么是 prefab 格式?prefab 格式的 RWKV 模型有什么用?
Prefab(预制件)通常是指在游戏开发中使用的一种资源格式,Prefab 允许开发者创建、保存和复用游戏对象(GameObject)及其组件的配置。一个Prefab可以包含任何类型的游戏对象,比如角色、道具、环境元素等,以及它们的所有属性和设置。
以 prefab 格式导出 RWKV 模型,可以方便地将 RWKV 模型集成到游戏中,比如用于对话系统、故事生成或者角色行为。
常见问题
Q:访问 https://localhost:65530
加载失败
A:如果你在 Config.toml
设置了 tls = false
,则需要将 https 改为 http,即访问 http://localhost:65530
Q:为什么我在 config 里面把 tls=true 改成了 false,启动的时候还是把 tls 打开了?
A:如果设置了 ACME 的话,TLS 无论如何都是打开的。
Q:在自己电脑上可以成功运行,在 autodl 上报错。
A:autodl 不支持 vulkan,无法使用。
Q:为啥电脑有多张显卡时,跑 AI00 只有一张显卡在干活的感觉
A:AI00 暂时不支持多显卡推理。
Q:报错: ERROR [ai00 server::middleware] reload model failed: failed to request adaptor
A:这是因为设备缺少 vulkan 驱动,请安装最新版本驱动。
Q:AI00 支持 CUDA 驱动吗?
A:不支持。AI00 支持 Vulkan 作为推理后端,曾经支持 Dx12/openGL ,但不支持 CUDA 驱动。
Q:为什么我使用共享显存后感觉速度变慢了
A:一旦用了共享显存,运行速度会慢 20 倍。这是计算机硬件的工作原理,并非 bug。
倘若大家遇到其他问题,欢迎加入 RWKV QQ 群 224287095 或 Ai00 QQ 群 30920262 提问。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
腾讯混元大模型 App“腾讯元宝”正式上线
腾讯混元大模型App“腾讯元宝”现已正式上线,支持文字、文件、图片输入,目前在安卓市场已经可以下载。 相比此前测试阶段的混元小程序版本,面向工作效率场景,腾讯元宝提供了AI搜索、AI总结、AI写作等核心能力;面向日常生活场景,元宝提供了多个特色AI应用,并新增了创建个人智能体等玩法。据了解,元宝将于近期推出腾讯新闻哥、《庆余年》主题等特色智能体。 腾讯元宝的核心竞争力是腾讯的生态。在AI 搜索方面,腾讯元宝接入了微信搜一搜、搜狗搜索等搜索引擎,并通过AI搜索增强,提升时新类和知识类问题效果。内容覆盖微信公众号等腾讯生态内容及互联网权威信源。 腾讯元宝产品能力升级的背后是腾讯混元底层模型的迭代。2023 年 9 月首次亮相以来,腾讯混元大模型的参数规模已从千亿升级至万亿,预训练语料从万亿升级至7 万亿tokens,并升级为多专家模型结构(MoE),整体性能相比Dense 版本(稠密版本)提升超50%。 在多模态方面,腾讯混元文生图大模型是业内首个中文原生DiT架构模型,生成效果相比上代提升超 20%。目前,腾讯内部有超 600 个业务及场景都已经接入腾讯混元。
- 下一篇
GaussDB轻量化运维管理工具介绍
前言 本期课程将从管理平台的架构出发,结合平台的实例管理、实例升级、容灾管理和监控告警的功能和操作介绍,全面覆盖日常运维操作,带您理解并熟练运用GaussDB运维平台完成运维工作。 一、GaussDB 运维管理平台简介 开放生态层 友好Web界面,多云皮肤个性化定制 丰富的原子API 公有云、合运营、HCSO、边缘云IES、HCS、轻量化、统一版本 基础+智能运维能力 丰富的基础运维能力 打造端到端全链路的智能自制运维平台,覆盖自监控、自诊断、自调优、自恢复和自安全全量功能,一键部署,精准实施; 标准化代理层 全方位多层安全防护,精细隔离设计 精准管理进程资源消耗控制,极少性能损耗 标准化南向接口规范各引警插件化接入原子操作 通过授权,登录到GaussDB运维管理平台,我们可以看到如下界面: 1、实例总览界面 2、实例详情页面 二、GaussDB 运维管理平台功能介绍 1、平台管理功能 作为管控平台,云数据库GaussDB管理平台具备完善的安全防护策略。主要是通过用户角色和用户组划分,细粒度的控制各个角色的访问执行权限,守护运维的安全。 基本功能: 1、管理用户(user):支持管理员...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题