提示工程-RAG-微调



工程当中也是这个次序 提示词工程 RAG 微调

  1. 先问好问题
  2. 再补充知识
  3. 最后微调模型

RAG相关技术细节

  • 选择合适的 Chunk 大小对 RAG 流程至关重要。
  • Chunk 过大:检索精度下降、浪费 Prompt(token) 空间;过小:信息太碎、检索和拼接(embedding)成本高。
  • 综合文档结构、任务需求和模型限制等因素,通常选择数百到一千字左右进行切分。



将文档拆分为合适大小的 Chunk 并向量化存入向量数据库;当用户提出问题时,也将问题向量化并检索相关片段,然后与提示一起传给大语言模型生成答案。

需注意事项,可改变rag结果

  1. 文档选择(ppt pdf excel)
  2. chunks大小
  3. embeding选择
  4. 用户的问题需要进一步处理
  5. 向量数据库检索
  6. raking拿到精排的信息,对相关信息进行排序
  7. prompt设计
  8. 使用什么样的大模型LLM (通用大模型还是开源大模型+微调)
  9. 回复直接返回还是二次处理

LoRA微调vs全量调整

模型微调,有些时候发现模型在某一个方面能力不够,对模型的改动



全量微调 每个参数都要通过学习的方法得出来 100亿参数要找100亿数得到新的结果

张三写文章,写了2000字,他本人比较啰嗦,还写了重复性的内容。不够简洁,传达的内容是有限的。

怀疑大模型的千亿参数的价值性

大模型学到的千亿参数,但他传达的信息是否还是非常有限?那么全量微调的话可能会浪费资源

“LoRA 微调不会直接修改原有的大模型参数,而是通过在其上叠加一组可训练的低秩矩阵(和,用较小的参数量来完成微调,从而在推理时得到新的有效权重(原权重 + ×)。”

二次训练有可能削弱原始能力

成本



针对大模型要处理的问题 收集合理的数据

微调需要多少gpu

全量微调的消耗

微调1B模型(10亿参数),16bit=2byte(fp16)

微调时哪些会用到显存

  1. 模型本身(模型多大就需要多少显存): 2GB
  2. Gradient: 2GB(和model weight类似)
  3. Optimizer state: 8G(保守为Gradien4倍)
  4. Activation: ~

    model size x (~6) = 12GB

高效微调 估算

原模型保持不变 + 更少量参数(2%,<%1) => 新模型

  1. model weight 保持不变 一样载入GPU
  2. 小模块为Adapter weight 0.05GB
  3. Grandient Optimizer 0.25GB

    QLoRA量化模型进一步缩小

SFT模型训练

  1. 模型预训练 被海量数据训练 通用大模型
  2. 微调,私有化数据改良大模型 SFT(想要什么答案,放大模型),SFTmodel上线后 点赞或点踩 然后对其这些数据,然后再优化

大模型生成

被训练的大模型对文本有一定的理解能力

当你输入文字,会被大模型转化为向量,来对应

最后一个字会生成一个黑盒子,来决定下一个词是什么,黑盒子会一直嫁接到最后一个词

生成模型每个字都是一个个蹦出来的。具有随机性意味着不可控 不可控->产生幻觉

大模型调参

TopK 筛掉不可能出现的单词,控制随机性。从黑盒子里考虑概率最大

Topk每次从单个盒子中取出概率最大的前几 k=数量

TopP 加大候选集,让所有token出现的概率加起来等于P值,列如等于0.7

P=0.7表示黑盒子里前30%被圈定

大模型量化与蒸馏

量化(Quantization):降低精度(FP16 → INT8 → INT4)或减少参数(671B → 70B)来减少显存占用(降低精度会带来一定的信息损失)。

蒸馏(Distillation):用大模型训练小模型,使其在低参数量的情况下保持较高性能。

DeepSeek vs Qwen:DeepSeek 产生的数据被 Qwen 用于学习,因此 Qwen 无法超越 DeepSeek。

在部署 LLM 时,可以 先量化(降低精度),再蒸馏(减少参数),从而在显存占用和推理速度之间找到最优平衡点。

模型推理需要的显存

  1. 模型大小 多少参数 x 多少精度
  2. KV Cache 加速生成,随着每个单词的生成,会增加缓存->每个token显存 x token数
(base) root@DESKTOP-GP1B0QA:~/.cache/huggingface/hub# du -sh models--deepseek-ai--DeepSeek-R1-Distill-Qwen-14B/
28G models--deepseek-ai--DeepSeek-R1-Distill-Qwen-14B/
(base) root@DESKTOP-GP1B0QA:~/.cache/huggingface/hub# cd models--deepseek-ai--DeepSeek-R1-Distill-Qwen-14B/
(base) root@DESKTOP-GP1B0QA:~/.cache/huggingface/hub/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-14B# ls
blobs refs snapshots
(base) root@DESKTOP-GP1B0QA:~/.cache/huggingface/hub/models--deepseek-ai--DeepSeek-R1-Distill-Qwen-14B#

huggingface deepseek-14b fp16未量化14B有 28G

PS C:\Users\DK> ollama show deepseek-r1:14b
Model
architecture qwen2
parameters 14.8B
context length 131072
embedding length 5120
quantization Q4_K_M
Parameters
stop "<|begin▁of▁sentence|>"
stop "<|end▁of▁sentence|>"
stop "<|User|>"
stop "<|Assistant|>" License
MIT License
Copyright (c) 2023 DeepSeek PS C:\Users\DK> ollama show deepseek-r1:32b
Model
architecture qwen2
parameters 32.8B
context length 131072
embedding length 5120
quantization Q4_K_M Parameters
stop "<|begin▁of▁sentence|>"
stop "<|end▁of▁sentence|>"
stop "<|User|>"
stop "<|Assistant|>" License
MIT License
Copyright (c) 2023 DeepSeek PS C:\Users\DK> ollama list
NAME ID SIZE MODIFIED
haimianbb:latest ec9919f2d5e3 3.6 GB 3 days ago
deepseek-qwen16b:latest 4d3e7e769b60 29 GB 9 days ago
deepseek-r1:7b 0a8c26691023 4.7 GB 11 days ago
bge-m3:latest 790764642607 1.2 GB 12 days ago
deepseek-coder-v2:latest 63fb193b3a9b 8.9 GB 2 weeks ago
gemma:latest a72c7f4d0a15 5.0 GB 2 weeks ago
qwen:14b 80362ced6553 8.2 GB 2 weeks ago
llama3:latest 365c0bd3c000 4.7 GB 2 weeks ago
deepseek-r1:70b 0c1615a8ca32 42 GB 2 weeks ago
nomic-embed-text:latest 0a109f422b47 274 MB 2 weeks ago
deepseek-r1:32b 38056bbcbb2d 19 GB 2 weeks ago
deepseek-r1:14b ea35dfe18182 9.0 GB 2 weeks ago
PS C:\Users\DK>
#Q4_K_M 代表的是 4-bit 量化,使用了一种高效的量化方法 (GPTQ Q4_K_M 量化方案)

ollama int4量化需要9GB



Token 数量 FP16 KV Cache(2 Byte) FP8 KV Cache(1 Byte) INT4 KV Cache(0.5 Byte)
512 3GB 1.5GB 0.75GB
1024 6GB 3GB 1.5GB
2048 12GB 6GB 3GB
4096 24GB (OOM) 12GB (勉强) 6GB
8192 48GB (OOM) 24GB (OOM) 12GB
1. 适合使用这个 KV Cache 计算表的模型
7B 级别 Transformer 模型:
LLaMA 2-7B / LLaMA 3-7B
DeepSeek 7B
Mistral 7B
ChatGLM3-6B
Baichuan 7B
Qwen-7B
这些模型通常有 64 个 Attention Heads,每个 Head 维度为 128

RAG 增加了输入 Token 数

  • RAG 需要从外部知识库(如向量数据库)检索相关信息,并将其作为额外的上下文提供给 LLM。
  • 这意味着 输入序列(prompt + retrieved context)变长了,从而 需要存储更多 KV Cache。

Ai 文本生成式大模型 基础知识的更多相关文章

  1. OSI七层模型基础知识及各层常见应用

       OSI Open Source Initiative(简称OSI,有译作开放源代码促进会.开放原始码组织)是一个旨在推动开源软件发展的非盈利组织.OSI参考模型(OSI/RM)的全称是开放系统互 ...

  2. 【数据库上】 第四讲 E-R模型基础知识

    第四讲 E-R模型基础知识 一.数据库设计过程 数据库设计的关键阶段? 各个阶段设计的主要任务? 基础条件:清楚一个应用系统的功能需求与数据需求(直接与用户交互.数据流程图示例/UML类图等) 核心阶 ...

  3. 大数据基础知识问答----spark篇,大数据生态圈

    Spark相关知识点 1.Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架 dfsSpark基于mapredu ...

  4. AI探索(一)基础知识储备

    AI的定义 凡是通过机器学习,实现机器替代人力的技术,就是AI.机器学习是什么呢?机器学习是由AI科学家研发的算法模型,通过数据灌输,学习数据中的规律并总结,即模型内自动生成能表达(输入.输出)数据之 ...

  5. 大数据基础知识:分布式计算、服务器集群[zz]

    大数据中的数据量非常巨大,达到了PB级别.而且这庞大的数据之中,不仅仅包括结构化数据(如数字.符号等数据),还包括非结构化数据(如文本.图像.声音.视频等数据).这使得大数据的存储,管理和处理很难利用 ...

  6. 大数据基础知识问答----hadoop篇

    handoop相关知识点 1.Hadoop是什么? Hadoop是一个由Apache基金会所开发的分布式系统基础架构.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速 ...

  7. JMM模型基础知识笔记

    概述 内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Java虚拟机也有自己的内存模型,即Java内存模型(JavaMem ...

  8. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  9. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  10. HTML+CSS基础知识(2)选择器的使用、盒子模型的讲解、列表的使用

    文章目录 1.CSS基础知识 2.css样式 2.1.代码: 2.2 测试结果 3.CSS的语法 3.1 代码 4.块元素和行内元素 4.1 代码 4.2 测试结果 5.常用的选择器 5.1 代码块 ...

随机推荐

  1. MySQL said: Authentication plugin 'caching_sha2_password' cannot be loaded

    OUTLINE问题描述解决方案问题描述在mac下,用sequel pro连接数据库,出现以下问题: MySQL said: Authentication plugin 'caching_sha2_pa ...

  2. 从 $PGDATA 到文件组:深入解析 PostgreSQL 与 SQL Server 的存储策略

    从 $PGDATA 到文件组:深入解析 PostgreSQL 与 SQL Server 的存储策略 在数据库领域,数据存储和管理的效率与可靠性是决定系统性能.可扩展性和易于管理的关键因素.Postgr ...

  3. 聊一聊 C#线程池 的线程动态注入 (下)

    一:背景 1. 讲故事 前面二篇我们聊到了 Thread.Sleep 和 Task.Result 场景下的线程注入逻辑,在线程饥饿的情况下注入速度都不是很理想,那怎么办呢?有没有更快的注入速度,这篇作 ...

  4. 融云技术分享:基于WebRTC的实时音视频首帧显示时间优化实践

    本文由融云技术团队原创投稿,作者是融云WebRTC高级工程师苏道,转载请注明出处. 1.引言 在一个典型的IM应用里,使用实时音视频聊天功能时,视频首帧的显示,是一项很重要的用户体验指标. 本文主要通 ...

  5. Python中的zip/unzip:像拉拉链一样组合数据的艺术

    今天让我们一起探讨Python中一个优雅而强大的内置功能: zip 和 unzip .听名字就知道,它就像我们衣服上的拉链一样,能把两边的数据完美地咬合在一起. 从一个有趣的例子开始 想象你正在开发一 ...

  6. Github + Jekyll 搭建项目wiki

    网站托管 创建新仓库 创建以自己名字为前缀, .github.io​为后缀的仓库 ​​ 在仓库的Settings中的Pages里设置Build and deployment​为Github Actio ...

  7. CDS标准视图:设备 I_Equipment

    视图名称:I_Equipment 视图类型:基础视图 视图内容: 设备编码和设备内容 设备来源及详细信息 有效期 事务代码: IE03,IH08 视图代码 点击查看代码 @EndUserText.la ...

  8. Python串口实现dk-51e1单相交直流标准源通信

    Python实现dk-51e1单相交直流标准源RS232通信 使用RS232,信号源DK51e1的协议帧格式如下: 注意点 配置串口波特率为115200 Check异或和不需要加上第一个0x81的字段 ...

  9. w3cschool-Linux 教程

    https://www.w3cschool.cn/linux/ Linux 安装 本章节我们将为大家介绍 Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果自己不想搭建, ...

  10. Docker的安装和配置

    1.在CentOS上安装Docker 在CentOS上安装Docker的过程相对简单,可以通过官方提供的安装包安装.以下是详细的安装步骤. 1.安装依赖包 在安装Docker之前,确保安装了一些必要的 ...