Ai00 教程
快速使用

下载与安装

对于新手来说,我们建议直接从 Ai00 Server 的 Release 页面 (opens in a new tab)下载最新版本。

在每个版本发布的 Assets 版块可以找到已经打包好的 Ai00 Server 压缩包,下载并解压即可使用。

ai00-download

  • aarch64-apple-darwin: 适用于 Apple M 系列芯片的 macOS 系统
  • x86_64-apple-darwin: 适用于 Intel 芯片的 macOS 系统
  • x86_64-pc-windows-msvc: 适用于 Windows 64位系统
  • x86_64-unknown-linux-gnu: 适用于 Linux 64位系统

Ai00 的显存需求

以下是 Ai00 不同量化方式的显存需求:

ℹ️

测试环境:

  • CPU :i7-10870H
  • GPU: RTX 4090 ,24G 显存
  • 内存:32GB
量化方式1B6 模型3B 模型7B 模型14B 模型
FP163.2GB 显存6.5GB 显存14.4GB 显存约 29G 显存
INT82GB 显存4.4GB 显存8.2GB 显存14.8GB 显存
NF41.3GB 显存2.6GB 显存5.2GB 显存10.4GB 显存
⚠️

默认量化所有层。量化层数越高,显存占用越低,但模型效果可能变差。

下载/转换 RWKV 模型

Ai00 Server 目前仅支持 .st 后缀的 Safetensors 模型,有两种方法可以得到 .st 模型:

  1. 直接下载 .st 模型(推荐方式)

从以下仓库中下载已经转换好的 .st 模型:

  1. 下载 .pth 后缀模型,并通过工具转换成 .st 模型

从以下 RWKV 官方仓库中下载 .pth 后缀的 RWKV 模型:

下载完成后,在文件夹中找到 .pth 模型:

ai00-model-list

在 Ai00 解压的目录中,可以找到名为 “converter.exe” 的模型转换工具。在 Ai00 目录启动终端并执行以下命令,可以将指定路径的 .pth 模型转化成 .st 模型:

./converter --input /path/to/model.pth
ℹ️

请将上述命令中的 /path/to/model.pth 改成需要转换的 .pth 模型文件路径。

获得 .st 后缀的 RWKV 模型后,在 Ai00 的 dist/assets 目录中新建一个 models 文件夹,并将 RWKV 模型放在此文件夹中。

调整配置参数

Ai00 程序会按照 assets/configs/Config.toml 配置文件中的参数运行 RWKV 模型。可以通过文本编辑软件(如记事本等)修改 Config.toml 的配置项,调整模型的运行效果。

下面是一组示例 Config.toml 配置。

[model]
embed_device = "Cpu"                                 # 在 GPU 还是 CPU 上放置模型的 Embed 矩阵
max_batch = 8                                        # 【不建议更改】GPU 上缓存的最大批次
name = "RWKV-x060-World-3B-v2.1-20240417-ctx4096.st" # 模型名称,只支持后缀 .st 格式模型,请下载转换好的模型或自行转换
path = "assets/models"                               # 模型存放的路径
precision = "Fp16"                                   # 【不建议更改】中间张量精度 ("Fp16" or "Fp32"),Fp32 精度更高但速度更慢
quant = 0                                            # 量化层数,调高会提升效率,但可能损失精度,使模型效果变差
quant_type = "Int8"                                  # 量化类型 ("Int8" 或 "NF4"),Int 8 效果比 NF4 好,但需要更多显存
stop = ["\n\n"]                                      # 【不建议更改】添加额外的生成停止词
token_chunk_size = 128                               # 并行 Token 块大小,范围 32-128,显卡越牛逼这个数调越大(64 或 128)
 
# [[state]] # 是否挂载 state 文件
# id = "fd7a60ed-7807-449f-8256-bccae3246222"   #  state 文件的 UUID,不指定则随机分配 
# name = "x060-3B" # 是否为此 state 文件命名(可选项),可填 null
# path = "rwkv-x060-chn_single_round_qa-3B-20240505-ctx1024.state" # state 文件的路径,存放于 assets/models 目录下可填文件名称
 
# [[state]] # 继续挂载多个 state 文件
# id = "6a9c60a4-0f4c-40b1-a31f-987f73e20315"    # state 文件的 UUID,不指定则随机分配 
# name = "x060-7B" # 是否为此 state 文件命名(可选项),可填 null
# path = "rwkv-x060-chn_single_round_qa-3B-20240502-ctx1024.state" # 第二个 state 文件的路径,存放于 assets/models 目录下可填文件名称
 
# [[lora]] # 是否默认挂载 LoRA 文件
# alpha = 192 # LoRA 文件的 alpha 值
# path = "assets/models/rwkv-x060-3b.lora" # LoRA 文件的路径
 
[tokenizer]
path = "assets/tokenizer/rwkv_vocab_v20230424.json" # 【不建议更改】分词器路径
 
[bnf]
enable_bytes_cache = true   # 【不建议更改】是否启用缓存机制,以加速 BNF 某些短模式(schemas)的展开过程。
start_nonterminal = "start" # 【不建议更改】指定 BNF 模式中的初始非终结符。
 
[adapter]
Auto = {} # 【不建议更改】自动选择最佳 GPU。
# Manual = 0 # 手动指定使用哪个 GPU,可以通过 API (get)http://localhost:65530/api/adapters 获取可用的 GPU 列表
 
[listen]
acme = false # 【不建议更改】是否启用 acme 证书
domain = "local" # 【不建议更改】Ai00 服务域名
ip = "0.0.0.0"   # IPv4 地址
# ip = "::"        # 使用 IPv6
force_pass = true  # 是否强制通过鉴权步骤,改成 false 以使用密钥鉴权,从而控制 admin 系列 API 的访问权限
port = 65530 # Ai00 服务端口
slot = "permisionkey" 
tls = false  # 是否使用 https ,如果你只在本地体验 AI00 ,建议设置为 false
 
[[listen.app_keys]] # 添加多个用于管理员鉴权的密钥
app_id = "admin"
secret_key = "ai00_is_good"
 
[web] # 【不建议更改】移除此项以禁用 WebUI
path = "assets/www/index.zip" # 【不建议更改】web 界面资源的路径
 
# 【不建议更改】启用第三方的嵌入模型(使用 fast-embedding onnx 模型)
# 使用 API(post)http://localhost:65530/api/oai/embeds 可以调用第三方嵌入模型进行 embedding 操作
# [embed] # 取消 [embed] 及以下注释,启用第三方嵌入模型
# endpoint = "https://hf-mirror.com" # 第三方嵌入模型来源
# home = "assets/models/hf" # 第三方嵌入模型存放路径
# lib = "assets/ort/onnxruntime.dll"  # 仅在 windows 下使用
# name = { MultilingualE5Small = {} } # 第三方嵌入模型的名称

运行 Ai00 程序

配置项修改完毕后,请保存 Config.toml 文件,并双击运行 ai00_server.exe 程序。

当命令行中出现 INFO [ai00_server::middleware] model loaded 提示时,意味着模型已经加载完成:

ai00-model-loaded

此时我们打开任意浏览器,并访问 http://localhost:65530,即可打开 Ai00 的 Web 界面。

⚠️

如果你在 config 文件中设置了 tls = true , 请访问 https://localhost:65530

Ai00-homepage

调整右侧解码参数

Web 页面的右侧有一些可设置的模型解码参数,如 TemperatureTop_PPresence PenaltyFrequency Penalty ,调整这些参数会影响模型的生成效果。

参数对应的效果如下:

API 参数效果描述
Temperature采样温度,就像给模型喝酒,数值越大随机性越强,更具创造力,数值越小则越保守稳定。
Top_P就像给模型喂镇静剂,优先考虑前 n% 概率质量的结果。如设置成 0.1 则考虑前 10%,生成内容质量更高但更保守。如设置成 1,则考虑所有质量结果,质量降低但更多样。
Presence Penalty存在惩罚,正值根据“新 token 在至今的文本中是否出现过”来对其进行惩罚,从而增加了模型涉及新话题的可能性。
Frequency Penalty频率惩罚,正值根据“新 token 在至今的文本中出现的频率/次数”来对其进行惩罚,从而减少模型原封不动地重复相同句子的可能性。

其中 TemperatureTop_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_PPresence PenaltyFrequency Penalty 都设为 0 。

Ai00 推理视频教程

ℹ️

高画质视频请跳转到 B 站 (opens in a new tab)观看。