当我尝试用 Ai 给我写了”不可描述“的小说…… cover image

当我尝试用 Ai 给我写了”不可描述“的小说……

使用工具:
1. open-webui:

2. T8star 收集的 json 文件
3. ollama 最新阿里的开源大模型 qwq,现更新新模型:deepseekV3,有免费API可调用 也很不错:DeepSeek V3 0324 (free) - API, Providers, Stats | OpenRouter

思路是进 open-webui 的社区安装Model,也可以自行创建,可以尝试下不同的现成的, 我选了一个NSFW的,按照建议进行设置,给ai一个json文件进行分析,然后提出写小说的要求,不断改进优化就可以得到你想要的小说了。

Image in a image block

有些很天马行空的创意和想法,我看的很欢乐 ……有合理的也有不合理的……到后面有些不适合发出来了,不过不管是自娱自乐还是技术研究都有一定的可操作性

现在讨论一些技术问题,也可以拉到最后看总结

我在本地配open-webui的时候,重复输出很多字,或者输出被截断,每个模型的表现还不太一样,当然越贵的会越好,如果我回复的很简单,到最后就会无限趋近于同一个回复

1. 重复输出很多字

可能的原因:

  • 采样参数问题:如 temperature 过低,top_p 设得不合理,导致模型倾向于重复内容。
  • Prompt 设计问题:如果你的输入本身就容易引导模型重复,它可能会“模仿”你的风格。
  • 流式输出 Bug:某些 WebUI 版本的流式输出可能会错误地重复部分文本。

🔹 解决方案

  • 提高 temperature(如 0.7~1.0 之间),增加输出的多样性。
  • 调整 top_p(如 0.8~0.95)来让模型更随机但不过分发散。
  • 检查 WebUI 版本,尝试更新到最新版本。

2. 输出被截断

可能的原因:

  • 最大 Token 限制:Open-WebUI 可能限制了 max_new_tokens,导致回复长度受限。
  • 显存不足:显存吃紧时,某些 WebUI 实现可能会中途截断输出,避免崩溃。
  • 模型本身的限制:一些小模型(如 7B 或更小)可能在长文本生成时表现不稳定。

🔹 解决方案

  • 增大 max_new_tokens(比如 512 或更高)。
  • 关闭一些占用显存的 WebUI 功能(如高精度推理)。
  • 试试更大、更稳定的模型(如 13B、30B 或 GPT-4 级别)。
3. 简短回复导致输出无限趋近于同一个答案

可能的原因:

  • temperature:如果 temperature 设得很低,模型会尽可能给出最“确定性”的答案,导致输出高度一致。
  • 模型记忆短期历史:有些模型(特别是本地部署的小模型)对上下文的记忆有限,导致短回复时倾向于重复模式。

🔹 解决方案

  • 提高 temperature,增加 top_p,让输出更随机一些。
  • 适当增加 context length(如果模型支持的话)。
  • 换更强的模型(如 MistralLlama 3)。

高精度推理(High Precision Inference) 通常指的是使用更高精度的数值计算方式(如 fp16bf16fp32)来执行推理,以提高模型的准确性和稳定性,但可能会增加显存占用。

Open-WebUILLM 推理框架(如 text-generation-webuiOllamaLM Studio)中,高精度推理通常涉及以下设置:


1. 精度模式

在 Open-WebUI 的后端(如 text-generation-webuillama-cpp-python),可能会有以下几种精度模式:

模式 说明 优点 缺点
fp32(单精度) 32 位浮点计算 最高精度,最稳定 需要最多显存,速度较慢
bf16(脑浮点) 16 位浮点,但有更好的动态范围 精度较高,速度快 需要 GPU 支持(如 A100、4090)
fp16(半精度) 16 位浮点计算 占用显存少,速度快 可能会降低精度
int8(量化) 8 位整数计算 省显存,适合低端显卡 可能损失一部分质量
int4(极端量化) 4 位整数计算 极致省显存,适合 CPU 精度损失明显

🔹 如何设置?

  • 如果你用的是 llama.cpp,可以在启动参数里加 -f16-f32 来控制精度。
  • 如果你用的是 text-generation-webui,可以在 加载模型时选择 bf16fp16 量化
  • 如果你用的是 Ollama,可以选择 format:fp16 来降低显存使用。

2. 高精度模式可能导致的问题
  • 显存不足:如果你的 GPU 显存小于 12GB,fp32 可能导致 OOM(显存溢出)。
  • 性能下降:在低端 GPU(如 3060 6GB)上,fp32 计算可能会拖慢推理速度。
  • 输出被截断或重复:有时高精度计算会意外导致 Open-WebUI 输出异常,比如 重复生成相同内容中途截断

3. 应该怎么做?

如果 显存充足(>=16GB),可以试试:

  • bf16(最推荐,兼顾精度和性能)
  • fp16(如果 bf16 不支持)

如果你的 显存有限(<12GB),可以:

  • 使用 int8int4 量化模型
  • 选择 fp16 并降低 max_new_tokens

关注 precision 相关选项

总结

之前本地跑小模型哪怕是70b的,调了很久的参数,后来发现换了Google大模型问题什么都解决了,所以还是模型被精简量化的太厉害了,要么付费买API ,要么有一个强力的电脑上强力模型,才能达到想要的效果。差距很大的,甚至可以说是老人机和智能机的区别,用完会有明显的感觉。

申明:以上仅做技术分享