添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

README_ZH.md

File metadata and controls

RWKV Runner

本项目旨在消除大语言模型的使用门槛,全自动为你处理一切,你只需要一个仅仅几MB的可执行程序。此外本项目提供了与OpenAI API兼容的接口,这意味着一切ChatGPT客户端都是RWKV客户端。

English | 简体中文 | 日本語

RWKV官方文档 | 视频演示 | 疑难解答 | 预览 | 下载 | 懒人包 | 简明服务部署示例 | 服务器部署示例 | MIDI硬件输入

你可以在服务器部署 backend-python ,然后将此程序仅用作客户端,在设置的 API URL 中填入你的服务器地址

如果你正在部署并对外提供公开服务,请通过API网关限制请求大小,避免过长的prompt提交占用资源。此外,请根据你的实际情况,限制请求的 max_tokens 上限: https://github.com/josStorer/RWKV-Runner/blob/master/backend-python/utils/rwkv.py#L567 , 默认le=102400, 这可能导致极端情况下单个响应消耗大量资源

预设配置已经开启自定义CUDA算子加速,速度更快,且显存消耗更少。如果你遇到可能的兼容性(输出乱码) 问题,前往配置页面,关闭 使用自定义CUDA算子加速 ,或更新你的显卡驱动

如果 Windows Defender 说这是一个病毒,你可以尝试下载 v1.3.7_win.zip , 然后让其自动更新到最新版,或添加信任 ( Windows Security -> Virus & threat protection -> Manage settings -> Exclusions -> Add or remove exclusions -> Add an exclusion -> Folder -> RWKV-Runner )

对于不同的任务,调整API参数会获得更好的效果,例如对于翻译任务,你可以尝试设置Temperature为1,Top_P为0.3

  • RWKV模型管理,一键启动
  • 前后端分离,如果你不想使用客户端,也允许单独部署前端服务,或后端推理服务,或具有WebUI的后端推理服务。 简明服务部署示例 | 服务器部署示例
  • 与OpenAI API兼容,一切ChatGPT客户端,都是RWKV客户端。启动模型后,打开 http://127.0.0.1:8000/docs 查看API文档
  • 全自动依赖安装,你只需要一个轻巧的可执行程序
  • 预设多级显存配置,几乎在各种电脑上工作良好。通过配置页面切换Strategy到WebGPU,还可以在AMD,Intel等显卡上运行
  • 自带用户友好的聊天,续写,作曲交互页面。支持聊天预设,附件上传,MIDI硬件输入及音轨编辑。 预览 | MIDI硬件输入
  • 内置WebUI选项,一键启动Web服务,共享硬件资源
  • 易于理解和操作的参数配置,及各类操作引导提示
  • 内置模型转换工具
  • 内置下载管理和远程模型检视
  • 内置一键LoRA微调 (仅限Windows)
  • 也可用作 OpenAI ChatGPT, GPT Playground, Ollama 等服务的客户端 (在设置内填写API URL和API Key)
  • 多语言本地化
  • Simple Deploy Example

    git clone https://github.com/josStorer/RWKV-Runner
    cd RWKV-Runner
    python ./backend-python/main.py #后端推理服务已启动, 调用/switch-model载入模型, 参考API文档: http://127.0.0.1:8000/docs
    cd RWKV-Runner/frontend
    npm ci
    npm run build #编译前端
    cd ..
    python ./backend-python/webui_server.py #单独启动前端服务
    python ./backend-python/main.py --webui #同时启动前后端服务
    # 帮助参数
    python ./backend-python/main.py -h

    API并发压力测试

    ab -p body.json -T application/json -c 20 -n 100 -l http://127.0.0.1:8000/chat/completions

    body.json:

    "messages" : [ "role" : " user " , "content" : " Hello "

    Embeddings API 示例

    注意: 1.4.0 版本对embeddings API质量进行了改善,生成结果与之前的版本不兼容,如果你正在使用此API生成知识库等,请重新生成

    如果你在用langchain, 直接使用 OpenAIEmbeddings(openai_api_base="http://127.0.0.1:8000", openai_api_key="sk-")

    import numpy as np
    import requests
    def cosine_similarity(a, b):
        return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
    values = [
        "I am a girl",
        "我是个女孩",
        "私は女の子です",
        "广东人爱吃福建人",
        "我是个人类",
        "I am a human",
        "that dog is so cute",
        "私はねこむすめです、にゃん♪",
        "宇宙级特大事件!号外号外!"
    embeddings = []
    for v in values:
        r = requests.post("http://127.0.0.1:8000/embeddings", json={"input": v})
        embedding = r.json()["data"][0]["embedding"]
        embeddings.append(embedding)
    compared_embedding = embeddings[0]
    embeddings_cos_sim = [cosine_similarity(compared_embedding, e) for e in embeddings]
    for i in np.argsort(embeddings_cos_sim)[::-1]:
        print(f"{embeddings_cos_sim[i]:.10f} - {values[i]}")

    MIDI Input

    小贴士: 你可以下载 https://github.com/josStorer/sgm_plus , 并解压到程序的 assets/sound-font 目录, 以使用离线音源. 注意, 如果你正在从源码编译程序, 请不要将其放置在源码目录中

    如果你没有MIDI键盘, 你可以使用像 Virtual Midi Controller 3 LE 这样的虚拟MIDI输入软件, 配合 loopMIDI , 使用普通电脑键盘作为MIDI输入

    USB MIDI 连接

  • USB MIDI设备是即插即用的, 你能够在作曲页面选择你的输入设备
  • Mac MIDI 蓝牙连接

  • 对于想要使用蓝牙输入的Mac用户, 请安装 Bluetooth MIDI Connect , 启动后点击托盘连接, 之后你可以在作曲页面选择你的输入设备
  • Windows MIDI 蓝牙连接

  • Windows似乎只为UWP实现了蓝牙MIDI支持, 因此需要多个步骤进行连接, 我们需要创建一个本地的虚拟MIDI设备, 然后启动一个UWP应用, 通过此UWP应用将蓝牙MIDI输入重定向到虚拟MIDI设备, 然后本软件监听虚拟MIDI设备的输入
  • 因此, 首先你需要下载 loopMIDI , 用于创建虚拟MIDI设备, 点击左下角的加号创建设备
  • 然后, 你需要下载 Bluetooth LE Explorer , 以发现并连接蓝牙MIDI设备, 点击Start搜索设备, 然后点击Pair绑定MIDI设备
  • 最后, 你需要安装 MIDIberry , 这个UWP应用能将MIDI蓝牙输入重定向到虚拟MIDI设备, 启动后, 在输入栏, 双击你实际的蓝牙MIDI设备名称, 在输出栏, 双击我们先前创建的虚拟MIDI设备名称
  • 现在, 你可以在作曲页面选择虚拟MIDI设备作为输入. Bluetooth LE Explorer不再需要运行, loopMIDI窗口也可以退出, 它会自动在后台运行, 仅保持MIDIberry打开即可
  • 相关仓库:

  • RWKV-5-World: https://huggingface.co/BlinkDL/rwkv-5-world/tree/main
  • RWKV-4-World: https://huggingface.co/BlinkDL/rwkv-4-world/tree/main
  • RWKV-4-Raven: https://huggingface.co/BlinkDL/rwkv-4-raven/tree/main
  • ChatRWKV: https://github.com/BlinkDL/ChatRWKV
  • RWKV-LM: https://github.com/BlinkDL/RWKV-LM
  • RWKV-LM-LoRA: https://github.com/Blealtan/RWKV-LM-LoRA
  • RWKV-v5-lora: https://github.com/JL-er/RWKV-v5-lora
  • MIDI-LLM-tokenizer: https://github.com/briansemrau/MIDI-LLM-tokenizer
  • ai00_rwkv_server: https://github.com/cgisky1980/ai00_rwkv_server
  • rwkv.cpp: https://github.com/saharNooby/rwkv.cpp
  • web-rwkv-py: https://github.com/cryscan/web-rwkv-py
  • web-rwkv: https://github.com/cryscan/web-rwkv
  • Preview

    小贴士: 你可以下载 https://github.com/josStorer/sgm_plus , 并解压到程序的 assets/sound-font 目录, 以使用离线音源. 注意, 如果你正在从源码编译程序, 请不要将其放置在源码目录中

    LoRA微调