部署环境
操作系统:Windows10
显卡:RTX2060
内存:32GB
使用原则
注:我是6G显存。
日常翻译
1.Qwen3-8B本地模型
。(流畅)
代码注释
1.Qwen3-8B本地模型
。(流畅)
代码遇问题及补全
1.Qwen3-8B本地模型
。(流畅)
2.如Qwen3-8B本地模型
解决不了用deepseek
。(流畅)
写不隐私的短材料、通知及文章
1.Qwen3-8B本地模型
。(流畅)
2.如Qwen3-8B本地模型
解决不了用deepseek
。(流畅)
写不隐私的长材料、文章
1.Qwen3-8B本地模型
。(流畅)
2.如Qwen3-8B本地模型
解决不了用deepseek
。(流畅)
写隐私的短材料、通知及文章
1.Qwen3-8B本地模型
。(流畅)
写隐私的长材料、文章
1.Qwen3-8B本地模型
。(流畅)
综合性人文方面提问
1.Qwen3-8B本地模型
。(流畅)
2.如Qwen3-8B本地模型
解决不了用deepseek
。(流畅)
注:以后换电脑显存必须8G以上!
硬件配置要求
DeepSeek-R1-Distill-Qwen
DeepSeek-R1的优势:个人认为优势在于将模型思考的过程呈现给了用户。有时候结果并不重要,解决问题的过程和思路才是最重要的,通过学习和研究模型解决问题的思路,在学习、解决问题时能收获更多。
注:Distill表示使用了蒸馏技术,从一个更大的预训练模型中提取出更小、更专注的模型,即通过迭代优化过程,将大型模型的知识和参数细节转移到子模型中。Qwen指基于Qwen模型进行提取的。
总结:由于本人只有6G显存,因此只体验了7B Q4模型。其实看下载的.gguf模型文件大小也可以大概判断运行该模型需消耗多少显存;模型本质是经深度清洗和结构化处理的高维参数矩阵(可以通俗浅显理解为由大量整理清洗好的数据组成的巨型知识库),在运行模型时会被整体载入显存(显存相较于内存速度更快,能支撑高频数据吞吐),当用户进行提问时,模型会通过神经网络的前向传播计算生成回答(可以通俗浅显理解为特定的算法在显存中进行查询、读取生成回答);以qwen2.5-7b的.gguf文件为例,其4.7GB体积意味着运行时会占用相近的显存空间。
显存4G
1.5B Q4
模型
显存6G
7B Q4
模型(流畅)
14B Q4
模型(慢,1秒2字)
显存8G
14B Q4
模型
显存12G
32B Q4
模型
显存是16G
32B Q4
模型
显存是24G
注:例如3090TI显卡。
32B Q4
模型
显存是40G
注:例如专业级A100显卡。
70B Q4
模型
qwen2.5
总结:翻译效果不错,能够直出结果,语句通顺,中文文本对话及网页总结很好,应该是低配置机器小模型中最好用的了吧。
显存6G
7B Q4
模型(流畅)
14B Q4
模型(慢,1秒2字)
qwen2.5_coder
显存6G
7B Q4
模型(流畅)
14B Q4
模型(慢,1秒2字)
qwen3
显存6G
8B Q4
模型(流畅)
如何部署
1.安装Lm Studio。
2.下载模型,并加载模型即可。
本地模型用途
1.搭配VSCODE是注释、修改、解析代码。
2.生成材料、文章。
3.综合性提问。
4.翻译。
LM Studio使用心得
GPU卸载:拉满。
CPU Thread Pool Size:拉满。
CPU线程:拉满。
快速注意力:启用。
K Cache Quantization Type:启用。
V Cache Quantization Type:启用。
上下文溢出:截断中间。
上下文长度:4096。
评估处理大小:100000。
Ollama使用心得
注:Ollama默认api为11434。
个人体验:不推荐,个人感觉Lm Studio比它快多了,使用翻译软件进行翻译,ollama不停卡顿、半天无响应、中断,翻译一个网页5-10分钟没结果,质量还堪忧。Lm Studio一分钟不到翻译完成。折折腾腾下了2次ollama又装回Lm studio!!!
查看所有模型
ollama list
本地导出模型
1.打开控制台,CD
至模型所在文件夹。
2.查看模型名及位置。
#输入内容中会含有例如“FROM C:\Users\admin\.ollama\models\blobs\sha256-1a9a388336073f25f143cdd39abe37b306a367d031d6c04a79bbb545232ae113”即为模型文件及路径,拷贝出来重命名为.gguf即可
ollama show --modelfile 模型名
3.新建文件名叫Modelfile
的文件。输入以下代码查看导出模型的Modelfile
的文件内容,并将该内容copy
至你新建的Modelfile
文件。该文件非常重要,存储着模型的参数和配置,如果随便填写会导致模型胡言乱语。
ollama show --modelfile 模型名
本地导入模型
1.打开控制台,CD
至模型所在文件夹。
2.上传模型及Modelfile
文件。Modelfile
文件非常重要,如下为deepseek-7b
的Modelfile
文件。
FROM ./DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf
TEMPLATE """{{- if .System }}{{ .System }}{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1}}
{{- if eq .Role "user" }}<|User|>{{ .Content }}
{{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }}
{{- end }}
{{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }}
{{- end }}"""
PARAMETER stop <|begin▁of▁sentence|>
PARAMETER stop <|end▁of▁sentence|>
PARAMETER stop <|User|>
PARAMETER stop <|Assistant|>
LICENSE """MIT License
Copyright (c) 2023 DeepSeek
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""
注:OFROM为你的模型相对路径,改为你的模型即可。
3.运行指令,让ollama
按照Modelfile
文件编译gguf
。
ollama create deepseek-7b -f ./Modelfile
注:deepseek-7b为你要命名的模型名。
运行模型
ollama run 模型名称
删除模型
ollama rm 模型名称
修改模型存储位置
1.将用户环境变量OLLAMA_MODELS
设为D:\ollama\models
。
注:D:\ollama\models为你要设置的模型存储位置。
2.重启Ollama
服务。
3.进入C:\Users\admin\.ollama\models\
将文件夹下的所有文件复制至D:\ollama\models
。
4.删除C:\Users\admin\.ollama\models\
下的所有文件。
设置模型存活时间
1.将用户环境变量OLLAMA_KEEP_ALIVE
设为5m
则表示模型5分钟后会自动从内存中卸载。24h
表示永久存活。
2.重启Ollama
服务。
设置局域网访问
1.将用户环境变量OLLAMA_HOST
设为0.0.0.0
。
2.将用户环境变量OLLAMA_ORIGINS
设为*
。
3.设置本地防火墙开放11434
端口。
4.测试。访问http://<你的本机IP地址>:11434
查看日志
1.将win+r。输入以下内容进入日志目录。
explorer %LOCALAPPDATA%\Ollama
启用FlashAttention
注:Flash Attention 是一种优化技术,旨在减少 Transformer 模型中的注意力机制计算时间。这种技术通过优化内存访问模式,减少了计算过程中所需的内存带宽,并降低了内存占用,从而使得模型能够更快地处理大量数据,特别是在处理长序列时表现尤为显著。总之,启用吧,能略微加快模型回复速度。
1.将用户环境变量OLLAMA_FLASH_ATTENTION
设为1
。
2.重启Ollama
服务。
设置同时处理用户请求数
1.将用户环境变量OLLAMA_NUM_PARALLEL
设为5
。指同时允许处理5个人的对话。
设置同时加载模型数量
1.将用户环境变量OLLAMA_MAX_LOADED_MODELS
设为1
。指只能同时加载1个模型。
本地知识库
注:知识库软件用的是AnythingLLM。
技术原理概述
本地知识库系统通过嵌入模型
对用户上传的docx、txt、markdown
等文档进行智能化处理,核心流程包含:
文档解析与向量化处理:使用嵌入模型
对文档进行语义解析、文本切分及向量化转换,会将内容切成无数个小块。
向量存储与管理:将处理后的向量数据存入专用向量数据库。
智能检索机制:用户提问时通过相似度匹配算法检索相关文本片段,然后将命中的片段一起提交给模型,注意匹配的过程不占上下文长度,匹配成功后提交片段的过程会占用上下文长度。
答案生成:结合向量数据库提交过来的命中的片段,大语言模型生成最终回答。
使用体验分析
上传过程
上传文档后,嵌入模型
会将内容进行解析和切分成无数个小片段,并将其转化为向量形式存储。这个过程的质量直接影响后续查询的准确性。
提问效果
对于长文本(例如50万字的小说)
说明:当上传长文本,如50万字的小说时,向量数据库中切成片段的信息会非常多,而整本小说内容是非常大的,系统不可能将所有的片段信息提交给大模型,系统只会根据你的提问关键词命中部分频率高的片段,将此部分片段提交给模型,那么此时如果你提问非常模糊、笼统的话,模型在接收到的有限信息下根本不可能看到整本小说的内容,进而会引发两种不良情况。其一,向量数据库根据你提问的关键词确实命中到了对应的信息片段,但因为返回给模型的信息片段是有限的,你的问题确是例如让模型“总结小说全文“这种模糊、笼统的问题,那么就会导致模型生成的答案不准确,和实际文档内信息完全不一致;其二,根据你的提问关键词,向量数据库未命中相关信息,使知识库失效,模型没有接收到任何信息,自然回答错误。
总结:不要进行笼统、抽象、让模型总结式的提问。进行具体提问,最好提问的关键词在原文中能出现的。
中等长度的文档(如2万字的操作说明文档)
说明:上传约200kb、2万字
的服务器系统操作说明文档后,针对 如何截图、如何
关机等具体问题的回答均不正确。经分析,发现是因为在向量数据库中根本未能命中相关信息片段导致。
总结:同以上长文本的问题一样。
短小精悍的内容(如1万字的游戏攻略)
说明:上传一篇约200kb、1万字
的 P 社游戏群星
攻略文档后,针对介绍一下四大天灾?游戏群星中游戏的难度和天灾的关系?游戏群星中扎克兰的头颅有什么用?具体属性是什么?
等问题回答部分正确、部分错误,还会添加自身臆想内容或编造文档中不存在的信息。不过,在询问 “扎克兰的头颅” 相关问题时,模型回答准确且给出了具体属性。
总结:上传的文档内容越少,向量化后被切成片段的信息越少,由于提问和向量数据库中的片段信息匹配成功后提交给模型的片段数量是固定的,所以模型能够更容易根据提交过来的信息片段了解全文信息。
使用技巧
1. 精确提问:用词需准确、具体,关键词尽量能在文档内就出现过的。避免提问宏观、笼统、模糊问题,例如让模型总结上传的内容、分析全文。
2. 控制上传文档数量:建议不要上传不必要的文档,以减少向量数据库的负担,提高匹配精度。如某篇文档看不懂,实在需要上传知识库后向模型提问,请在领悟该文档内容后删除该文档。
3. 优化文档结构:在上传前先大概整理下文档结构,清理不必要的字数,有助于提高匹配成功率。
API及说明文档
文本块大小:300
注:每个信息片段的文字上限。
文本块重叠:50
注:相邻信息片段之间的最大字符重叠,类似抗锯齿,使切成块的文本内容之间联系不太生硬。
最大上下文长度:8
注:提问命中信息片段后发送给模型的信息片段的最大数量。
文档相似性阈值:中
注:越高,在拿提问的内容和向量数据库中内容进行比对时就越严格。如设置最高,可能提问很难命中信息片段,自然模型很可能接收不到任何信息。
聊天模式:聊天模式
注:查询模式将只在知识库内查询信息。聊天模式将同时在知识库及模型自身的知识内查询信息。
技术文档及个人心得
文本块大小:500
注:每个信息片段的文字上限。
文本块重叠:100
注:相邻信息片段之间的最大字符重叠,类似抗锯齿,使切成块的文本内容之间联系不太生硬。
最大上下文长度:8
注:提问命中信息片段后发送给模型的信息片段的最大数量。
文档相似性阈值:中
注:越高,在拿提问的内容和向量数据库中内容进行比对时就越严格。如设置最高,可能提问很难命中信息片段,自然模型很可能接收不到任何信息。
聊天模式:聊天模式
注:查询模式将只在知识库内查询信息。聊天模式将同时在知识库及模型自身的知识内查询信息。
书籍及长文本
文本块大小:按章节平均字数
注:每个信息片段的文字上限。
文本块重叠:按整段平均字数
注:相邻信息片段之间的最大字符重叠,类似抗锯齿,使切成块的文本内容之间联系不太生硬。
最大上下文长度:8
注:提问命中信息片段后发送给模型的信息片段的最大数量。
文档相似性阈值:中
注:越高,在拿提问的内容和向量数据库中内容进行比对时就越严格。如设置最高,可能提问很难命中信息片段,自然模型很可能接收不到任何信息。
聊天模式:聊天模式
注:查询模式将只在知识库内查询信息。聊天模式将同时在知识库及模型自身的知识内查询信息。
思路:每个信息片段文字上限需要合理设置,因为设置小了提交给模型的信息过少,设置大了一次提交给模型的信息量太大,导致计算量过大卡顿。信息片段数可以根据你的机器配置决定,越大模型收到的信息越多,答案越准。
字数限制
注:大多数模型最大输出是2000字左右,这是因为训练时数据集中输出长度上限导致或训练时长文本占比低。
上下文窗口:即num_predict(最大令牌数量)。单次交互上限。即单次和模型互动的信息容量(向模型发送信息+模型回复信息)。上下文窗口在模型制作的时候上限定好了,一般为128k,和上下文长度上限一致。一般需要注意这个数值要在聊天客户端设置大一些上限,我一般设置10万。
评估处理大小:模型一次处理的输入词元数量,和上下文窗口搭配作用,上下文窗口大,评估处理大小到上限也没有用。增加此值会提高性能但以增加内存使用为代价,我一般设置10万内存没占用多少。
上下文长度:记忆容量上限。即与模型长期对话的记忆容量。我一般设置4096。
遗忘机制:例如上下文窗口容量100万token,上下文长度容量1万token。
#第一轮对话
用户输入:50万token
模型输出:50万token
【开始状态检查】
上下文窗口容量:50万+50万=100万(未超限)
上下文长度容量:累计100万(立即触发遗忘,按“先进先出”原则,保留最后1万token)
#第二轮对话
当前记忆:1万token(第一轮残留)
用户输入:5000token
模型输出:5000token
【开始状态检查】
上下文窗口容量:5000+5000=1万(未超限)
上下文长度容量:1万(第一轮残留)+5000(新输入)+5000(新输出)=2万(立即触发遗忘,按“先进先出”原则,保留最后1万token)
心得
量化参数的影响
答:量化Q8和量化Q4区别很小,约在1%-3%左右。同时量化Q4及以上对模型损失很小。故模型最小只能量化至Q4,否则会损失很大(每个模型Q4就行)。
回答质量低
答:使用过程中我发现小模型有时候回答问题不对或者质量低的原因,大多数是因为本身规模小,缺乏数据而已。如果你提问前主动去粗浅的搜一下相关信息,复制粘贴作为材料一起发给它,他在获得足够信息后生成的答案质量会出乎意料的高。
如何下载模型
答:下载模型搜关键词gguf
即可,这是模型能直接运行的文件。
多人同时提问占用多少显存
答:增加的显存量取决于每个请求生成的token
数和使用的内存空间。例如,如果每个请求需要生成1024tokens
那么每增加一个请求可能会占用额外的几十MB
到几百MB
的显存。对于10个同时处理的请求,显存可能增加几百MB
到几GB
,具体取决于模型大小和请求复杂度。
评论区