ollama

ollama配置环境变量

ollama地址与镜像

C:\Users\DK>curl http://10.208.10.240:11434
Ollama is running
C:\Users\DK>ollama list
NAME ID SIZE MODIFIED
bge-m3:latest 790764642607 1.2 GB 28 hours ago
deepseek-coder-v2:latest 63fb193b3a9b 8.9 GB 2 days ago
gemma:latest a72c7f4d0a15 5.0 GB 2 days ago
qwen:14b 80362ced6553 8.2 GB 2 days ago
llama3:latest 365c0bd3c000 4.7 GB 2 days ago
deepseek-r1:70b 0c1615a8ca32 42 GB 2 days ago
nomic-embed-text:latest 0a109f422b47 274 MB 3 days ago
deepseek-r1:32b 38056bbcbb2d 19 GB 3 days ago
deepseek-r1:14b ea35dfe18182 9.0 GB 3 days ago C:\Users\DK>

参数的基本概念

大模型中的token

token 是模型输入和输出的基本单位。它通常代表一段文本的某个小部分,例如单词、字符或子词(subword)。在自然语言处理(NLP)中,token化(tokenization)是将文本分解为这些基本单元的过程。在许多现代语言模型(如GPT系列)中,一个token可能是一个词、部分单词、标点符号或一个字母。

1. 本地AI大模型的token设置
在本地部署AI大模型时,token的设置通常由模型的架构和训练配置决定。设置token数量时的一个关键考虑是显存(GPU memory)和推理性能之间的平衡:
token数量越高,处理的上下文越多:增加token数量可以使模型能够考虑更长的文本上下文,可能有助于提高模型的表现,尤其在处理长文档或复杂推理任务时。
显存需求增加:然而,token数量越高,需要的计算资源(尤其是显存)就越多。GPU显存有限,因此增加token数量可能导致内存不足,特别是在本地部署时。 1. token设置的影响
通常,token的设置并不是越高越好,而是需要根据任务的性质和硬件资源来优化:
对于短文本或较简单的任务,较低的token数量可能已经足够,甚至有助于提高处理速度。
对于长文本或需要复杂推理的任务,增加token数量可能会提升模型的表现,但需要确保有足够的硬件资源来支撑。

每个模型定义的token不一样,有的可以扩容有的不行

本地大模型附带RAG

RAG(检索增强生成)是一种结合了外部知识库的生成模型。它通过从知识库中检索相关信息,并基于这些信息生成回答。这种方式通常提高了生成模型的知识范围和准确性。

在这种情况下,token设置可能受到以下因素的影响:

输入token的限制:RAG模型的输入通常包含两部分:一个是查询文本,另一个是从知识库中检索到的文档。在设置token数量时,必须同时考虑查询文本和检索的文档的总token数。过多的token可能会导致超出模型的最大上下文长度限制,尤其是当知识库中包含较大文档时。
知识库大小和文档长度:如果知识库中的文档非常长,需要确保有足够的token来处理这些内容,同时也要平衡查询和检索信息的token数量。
因此,对于包含RAG知识库的大模型,token的设置应根据以下考虑: 查询文本的长度:查询通常是问题或请求,需要设置足够的token来表示查询信息。
文档的上下文:从知识库检索到的文档也会占用token,确保模型能处理这些信息。
硬件资源的限制:提高token数量虽然可以提高生成的上下文,但也会增加内存使用,可能导致性能下降或显存溢出。

token数量的设置是一个平衡:需要根据任务复杂度、硬件资源和模型能力来合理选择。对于包含RAG知识库的模型,还需考虑文档检索和查询文本的合适token配比。

显存的计算

每个token的显存占用:每个token的显存占用通常在 0.5MB到1MB 左右,具体取决于实现和优化。
以0.7MB每个token计算,10240token的显存需求大约为: 10240tokens x 0.7MB/token = 7168MB 约7GB
14B模型 的显存需求已经达到 10GB到20GB 左右
大约27GB的显卡可以带动 10240token + 14B模型
RAG,文件上传的越多。大模型的token就必须设置的越大

Max Embedding Chunk Length

文本的平均长度与分块策略
文本长度:如果大多数文本都较短,设置更小的 Max Embedding Chunk Length(比如1024或2048)可以提高处理效率。这有助于在不需要处理整个长文本的情况下,快速完成嵌入计算。
长文本:如果你的文本普遍较长,设置 4096 或更大的 Max Embedding Chunk Length 可以减少不必要的切割,避免频繁分块带来的额外计算开销。 计算效率与内存消耗
每个token占用的内存是固定的,但文本切割成多个块时,内存和计算消耗会成倍增加。因此,在设置时需要平衡 计算效率 和 内存消耗。
较小的块大小(如1024 token) 可以提高计算的并行性,但需要更多的计算和内存资源来处理多个块。
较大的块大小(如4096 token) 减少了块的数量,可能会提高效率,但也会增加每个块的处理负担,特别是在GPU显存有限的情况下。 对于一个 1000字的中文文档,确实不需要将其分成 4096 tokens 大块。如果希望减少GPU功耗和显存消耗,使用较小的块(如 512 token 或 1024 token)是一个更优的选择。这样做可以在保证计算效率的同时降低资源消耗,尤其是在需要处理大量文档时效果更为明显。

配置Anythingllm

docker运行

export STORAGE_LOCATION="$HOME/anythingllm" \
&& mkdir -p "$STORAGE_LOCATION" \
&& touch "$STORAGE_LOCATION/.env" \
&& docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
-v "$STORAGE_LOCATION:/app/server/storage" \
-v "$STORAGE_LOCATION/.env:/app/server/.env" \
-e STORAGE_DIR="/app/server/storage" \
--privileged \
--restart unless-stopped \
--memory 64g --cpus 32 \
mintplexlabs/anythingllm

进入anythingllm配置模型全局选项



要做rag这里的token可以高一点

嵌入数据库可以将上传的文件变为向量存在向量数据库里,向量数据库为默认LanceDB



最大切块为2048降低GPU效率,我上传的简历没有特别大的文件



预指令必须设置。且把聊天模式改为查询增加查询文档精确度



增加向量数据库准确性



增加文件到rag

deepseek7b对话测试

大体方向不会错,会有小错误且嘴硬

张亮英语流利是7B编的

王芳不是中专

张伟编了工作经验

以文档出现的腾讯工作经验对峙,仍然嘴硬

deepseek:14b的失误更少,非常不错,14B适合rag

token在rag中的设置非常重要,过小的token,会让deepseek胡言乱语

其他事项

RAG 检索出来的东西会变成上下文context

大模型会各具特色注意大模型自身token大小和与中文适配度

嵌入式模型不一样会导致嵌入质量不一样

小图钉,固定文档,增加优先级

聊天提示词非常重要,下定义:

你是一位核电的资料员,曾就职于漳州核电,现从事核电资料管理工作。使用知识库回答问题,并用中文回答,必须中文。如果你不知道答案,就直说不知道。不要尝试编造答案。

温度越高,创新度越高。越低越简洁、简短,越接近事实

最大上下文片段。上下文片段是指在数据向量化过程中,将文本拆分成多大。建议将片段数量保持在4-6,以壁面信息过载和干扰。片段的大小和数量会影响模型的理解和生成能力。过多片段可能导致模型混淆,而过少的片段可能无法提供足够的信息。例子百个菜谱要3个高热菜谱会被拒绝

开启精确优化

文档相似性阈值考虑设置为高,排除低质量文本片段

分块大小

5090D-deepseek-Anythingllm-Ollama运行测试的更多相关文章

  1. appium+Python真机运行测试demo的方法

    appium+Python真机运行测试demo的方法 一,    打开手机的USB调试模式 二,    连接手机到电脑 将手机用数据线连接到电脑,并授权USB调试模式.查看连接的效果,在cmd下运行命 ...

  2. Android JUnit Test——批量运行测试代码

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ Android测试三要素 写Android测试用例有三要素,一是我们用的“安卓模拟器device” ...

  3. Visual Studio 2010 单元测试--运行测试并查看代码覆盖率

    原文:Visual Studio 2010 单元测试--运行测试并查看代码覆盖率 运行测试并查看代码覆盖率对程序集中的代码运行测试时,可以通过收集代码覆盖率数据来查看正在测试的项目代码部分. 运行测试 ...

  4. 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本

    老李推荐:第8章5节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行测试脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化 ...

  5. Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e

    3:运行测试e2e 3.1.运行fabric-samples的问题说明 该问题说明能够解决6.1.平台特定使用的二进制文件配置第一步的问题.可以选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本 ...

  6. spring原理案例-基本项目搭建 03 创建工程运行测试 spring ioc原理实例示例

    下面开始项目的搭建 使用 Java EE - Eclipse 新建一 Dynamic Web Project Target Runtime 选 Apache Tomcat 7.0(不要选 Apache ...

  7. spark高可用集群搭建及运行测试

    文中的所有操作都是在之前的文章spark集群的搭建基础上建立的,重复操作已经简写: 之前的配置中使用了master01.slave01.slave02.slave03: 本篇文章还要添加master0 ...

  8. 二进制安装 kubernetes 1.12(五) - 运行测试实例

    检查集群状态 # 在 master 上 kubectl get node kubectl get cs 注册登录阿里云容器仓库 因国内无法获得 google 的 pause-amd64 镜像,我这里使 ...

  9. 解决VS2015单元测试“未能设置用于运行测试的执行上下文”问题

    VS的单元测试在进行测试时并不像普通Exe会为你提示xx文件未找到,而是类似下面这样: 测试名称: 部署文件到Linux测试全名: unittest::SmartDispatch::部署文件到Linu ...

  10. 使用Visual Studio Team Services持续集成(四)——使用构建运行测试

    使用Visual Studio Team Services持续集成(四)--使用构建运行测试 使用构建来运行测试来验证集成是一个很好的实践. MyHealth.API.IntegrationTests ...

随机推荐

  1. Adobe PS 2024 软件分享 torrent

    Adobe-Photoshop-2024-25.5.0.375 下载工具建议使用 qBittorrent-enhance,qBittorrent, Transmission, uTorrent 等. ...

  2. Consul 学习总结

    什么是Consul? Consul是一种服务网络解决方案,使团队能够管理服务之间以及跨本地和多云环境和运行时的安全网络连接.Consul提供服务发现.服务网格(service mesh).流量管理和网 ...

  3. 【COS 加码福利】COS 用户实践有奖征文,等你来投稿!

    COS用户实践征文活动火热进行中,本次征集主题为:如何在生态场景下使用 COS? 优质文章将有机会被编入腾讯云官方文档库,供广大用户学习参考.更有多重好礼等你来拿,速来围观投稿吧! 投稿说明: 1.投 ...

  4. Nginx基础使用

    Nginx Nginx是一个WEB服务 [1].安装nginx 1.官网安装 2.使用默认的仓库安装,版本较低 3.编译方式安装,需要其他功能模块的时候 自定义安装 # 基于官网仓库的安装方式,版本较 ...

  5. 基于 MediatR 和 FluentValidation 的 CQRS 验证管线

    基于 MediatR 和 FluentValidation 的 CQRS 验证管线 CQRS Validation Pipeline with MediatR and FluentValidation ...

  6. 【Python】2023年Python期末复习题

    Python百分百挂科指南 出题人,出的题,水平不咋样,给出的参考答案一堆错误,给出的正确选项单词都能拼错. 非本次考试人员不必看,没有参考价值 选择题 下列哪个标识符是不合法的()D A. Name ...

  7. 【前端】【H5 API】地理定位(获取经纬度)

    H5 API 地理定位 地理定位在日常生活中应用比较广泛,例如,互联网打车.在线地图等.在HTML 5的规范中,增加了获取用户地理位置信息的接口Geolocation,开发者可以通过经纬度来获取用户的 ...

  8. shell 获取进程号

    # Shell最后运行的后台PID(后台运行的最后一个进程的进程ID号) $! # Shell本身的PID(即脚本运行的当前进程ID号 $$

  9. Ubuntu22.04 LTS 安装nvidia显卡驱动

    准备跑老师给定的Github上的多模态源码,但是用了这么久ubuntu还没有尝试过安装nvidia驱动,好在也是一次成功,于是记录下来. 借鉴的是https://blog.csdn.net/Eric_ ...

  10. Qt编写的视频播放综合应用示例(qmedia/ffmpeg/vlc/mpv/海康sdk等)

    一.功能特点 1.1 基础功能 支持各种音频视频文件格式,比如mp3.wav.mp4.asf.rm.rmvb.mkv等. 支持本地摄像头设备,可指定分辨率.帧率. 支持各种视频流格式,比如rtp.rt ...