【探索】6G显存畅玩无限长度的LLM角色扮演
Last updated on March 19, 2024 pm
角色扮演的体验是否舒适主要受角色卡、大模型和生成时间三个因素的影响。
优秀的角色卡往往附带大量的设定,这会极大的拖慢第一次生成的时间,并且随着对话的进行,上下文长度很容易超过kv_cache的上限,这些很破坏沉浸式的体验。
此外,大模型在进行角色扮演时,除了进行必要的对话生成外,还需要生成旁白增加想象空间。
对博主这些相比填空更喜欢选项的玩家,给出提问建议也是非常必要的:在建议的基础上修改比自己从零写一个情景更简单,同时也完整保留了控制剧情走向的权力。
以上这些都让本就稀缺的kv_cache更加雪上加霜。
万幸,StreamingLLM 发现了kv_cache具有良好的平移性,而 llama.cpp 也提供了对kv_cache进行底层操作的api:可以指定范围的 kv_cache_seq_rm 和 kv_cache_seq_shift。基于这两个api,我们将实现对kv_cache的 token 级微操,榨干kv_cache的全部价值。
博主实践表明,在充分利用kv_cache的基础上,哪怕是 huggingface space 免费的2vCPU容器也可以游玩角色扮演,而笔记本端6G显存的1660Ti可以做到畅玩角色扮演。
体验 DEMO
- Limour/llama-python-streamingllm
- 同一时间仅支持一个人用,用之前点 Reset 按钮恢复初始的 kv_cache
- 按 Submit 没反应,说明有人在用,等一段时间后再 Reset
- 最好是 Duplicate 后,设为私密来使用
代码仓库
- llama-python-streamingllm
- 安装conda
- 学术上网(管理员权限)
- 使用前需要修改
rp_config.json
里的模型路径和参数,指定为你已经下载了的GGUF
格式模型的路径 - 推荐 causallm_7b.Q5_K_M.gguf
- 或者自己用 Galgame 解包的对话数据集微调一个合适的模型。
二选一:GPU版本的环境
1 |
|
二选一:CPU版本的环境
1 |
|
下载并运行
1 |
|
核心内容
Submit
会将 msg 发送给模型,然后流式生成回答Retry
会重新生成最近一次的 msg 所对应的回答旁白
会流式生成一份旁白到VO
框建议
会以 usr 的身份流式生成一份 msg 供修改- 上面四个功能的基础就是下面的基于 StreamingLLM 原理的 venv 开头的函数
1 |
|
【探索】6G显存畅玩无限长度的LLM角色扮演
https://hexo.limour.top/Enjoy-unlimited-length-LLM-role-playing-with-6GB-of-VRAM