您现在的位置是:网站首页> AI人工智能

AI大模型、数据集相关应用技术

摘要

AI大模型、数据集相关应用技术

常逛huggingface,魔塔社区

标签数据与QA(一问一答)数据

一个 7b 的模型通常是指该模型具有 70 亿个参数

模型增量微调、外挂知识库

手里有一个AI大模型只知道扩展名,如何调用呢

1.jpg

输入文字,自回归,逐个猜下一个 token(文字碎片),核心是 Transformer

大语言模型LLM文字推理原理:输入文字转数字 token → 转为向量 + 位置编码 → 多层注意力 + 前馈网络,利用海量权重做矩阵运算,捕捉上下文关联 → 算出下一个词的概率 → 采样选出一个词 → 把新词放回上下文,循环计算,逐字输出,直到结束。


大模型一些常见问题

用通俗的语言介绍大模型权重

AI数据标注一般使用的软件

AI模型的格式有哪些文件后缀分别是啥及各种格式模型的使用方法

AI模型格式转换

AI人工智能模型YOLO创建训练等知识积累

搭建AI本地知识库相关技术收集

AI视频教程收集

基础知识

一般企业选模型训练





大模型一些常见问题

大模型权重的数量是一开始训练大模型时就设计好了吗?

大语言模型工作过程详细介绍下比如输入:你好北京。模型如何输出




大模型权重的数量是一开始训练大模型时就设计好了吗?

**总数是一开始就定死的**,训练过程不会增加、也不会减少权重的数量

### 大白话讲

搭神经网络的时候,先设计网络结构:有多少层、每层有多少神经元、层和层之间怎么连接。

这套结构一敲定,**权重的总个数直接算出来,固定死了**。


举个简单例子:输入 100 个信号,下一层有 50 个神经元,全连接,那这里权重就是 100 × 50 = 5000 个。

放到大模型里:Transformer 的头数、隐藏层维度、层数(比如 32 层,隐藏维度 4096)这些参数定下来,70 亿个权重就已经确定了。

这就是我们说的 **7B、13B、70B**。

> ✅ 训练做的事情:**只改格子里面的数字(权重值),不新增、不删除格子**

> 就像一本固定行数、固定列数的笔记本,本子大小(格子总数)出厂就做好了;训练只是反复擦掉、改写每一格里面的数字。



大语言模型工作过程详细介绍下比如输入:你好北京。模型如何输出

先定好固定不变的东西(推理全程不动)

1. 词表(tokenizer,独立小文件):翻译字典:文字 ↔ token 数字 ID,**不参与乘法计算**

2. 模型权重(gguf/safetensors 里的一堆张量矩阵:embedding、Q/K/V、FFN、LM Head):只读,**只用来做乘法**;权重的格子数量固定不变,只是数字可以是 f16 / Q4_K_M 等版本。

3. 网络图纸 config:层数、隐藏维度、注意力头数,告诉程序矩阵长啥样。


> 一句话主线:

> 模型不能直接看懂汉字。它只认识一串数字 ID。每一轮,它**只预测紧接着后面 1 个 token**,然后把这个 token 加到尾巴,再预测下一个,循环。

> 输入:你好北京;我们目标:看它怎么吐出第一个字,再持续生成。


---


# 步骤 1:分词翻译(Tokenizer,不碰权重)

输入文本:`你好北京`

分词器(BPE)按它自带的词表切成 token,假设结果:

你 → ID: 2341

好 → ID: 5720

北 → ID: 8811

京 → ID: 9005


✅ 本步输出:一串数字序列

`[2341, 5720, 8811, 9005]`


✅ 记住:这一步只是查表翻译,**没有神经网络计算**。



# 步骤 2:ID → 向量(Embedding 查表 + 位置编码,第一次用到权重)

我们有一张权重矩阵:embedding 矩阵(在模型文件里)

行号 = token ID;一行 = 一串小数向量(比如 4096 个小数)。


操作:

拿每个 ID,取出对应那一行数字:

2341 → 向量 A(“你”)

5720 → 向量 B(“好”)

8811 → 向量 C(“北”)

9005 → 向量 D(“京”)


现在我们得到 4 个向量:`[A, B, C, D]`

> 神经网络不知道先后顺序!

> 再加【位置编码】:给 A 打上标记:第 1 位;B:第 2 位;C:第 3 位;D:第 4 位。


✅ 本步输出:带先后顺序标记的向量序列 `[A₁, B₂, C₃, D₄]`

下标数字 = 位置编号。



# 步骤 3:送入 Transformer 多层主干(核心,大量矩阵乘法)

假设模型有 32 层 Transformer 层,一层一层接力处理这一组向量。

**每一层内部固定两个模块:多头自注意力 → FFN 前馈网络**

输入给一层的是:`[A₁, B₂, C₃, D₄]`


### 3.1 多头自注意力(找词和词之间的关联)

用 3 套权重矩阵 Wq、Wk、Wv(都在模型文件里)做乘法:

每个向量分别算出:

Q(查询:这个词想去匹配谁)

K(键:这个词可以被谁匹配)

V(值:这个词携带的内容信息)


然后计算:Q 和 K 的相似度。

例子:

对于向量 D(京,第 4 个):它会发现 C(北)和它相似度很高,A、B(你、好)相似度低。


⚠️ 因果掩码(单向约束,非常关键)

处理第 4 号向量的时候,**只能看 1、2、3、4 号,看不到后面还没生成的内容**。防止作弊偷看未来。

相似度分数 × V,得到一组融合了上下文关系的新向量。


### 3.2 FFN 前馈网络(学习语言规律)

注意力只负责找谁和谁有关系;

FFN 负责单独改造每一个向量,把训练学到的语言习惯、常识、句式规律编码进去,依然是权重矩阵乘法。


✅ 一层处理完,输出一组更新后的向量,交给下一层。

✅ 32 层全部跑完之后,我们只取**最后那一个向量,也就是 “京” 经过全部上下文融合后的向量**。

 

> 为什么只拿最后一个?我们要预测【京后面紧跟着的下一个 token】。

> KV 缓存(优化,不改变原理)

> 这一轮算出的 K、V 向量存起来。后面新增 token 的时候,前面这 4 个词的 K、V 不再重算,直接复用,提速。


✅ 本步输出:一个 4096 维的融合向量



# 步骤 4:LM Head 输出头,算出全部候选 token 的分数

拿上面这个融合向量,乘上最后一套权重矩阵 LM Head。

输出一长串数字,叫 logits。

长度 = 词表总大小(例如 32000 个)

每一个位置对应词表里一个 token 的原始得分。


举例:

索引 1205(逗号) → 分数最高

索引 4421(欢) → 分数第二

索引 6633(啊) → 分数第三

……


logits 只是相对高低分,**不是概率**。


✅ 本步输出:长度 32000 的分数列表 logits



# 步骤 5:Softmax + 采样,选出 1 个 token

1. Softmax:把 logits 转换成概率,全部概率相加 = 1

逗号:0.38

欢:0.11

啊:0.05

……

2. 根据温度 temperature、top_p 规则,从概率分布里挑出一个 token。

温度低:优先选最高分;温度高:允许选低分,更有创意。


假设这次选中:逗号,ID=1205


✅ 本步输出:第一个生成 token:ID=1205,对应文字 `,`

> 到这里,模型吐出了第一个输出字符!


---


# 步骤 6:自回归循环(反复执行步骤 2~5,这是 LLM 最独特的地方)

把刚刚生成的 token 追加到原来序列尾巴:

旧序列:`[2341, 5720, 8811, 9005]`

新序列:`[2341, 5720, 8811, 9005, 1205]`


现在上下文变成:你好北京,

现在只需要计算新增的这个逗号对应的向量,前面四个词的 K/V 直接读缓存,不用重算。

再跑一遍 Transformer → LM Head → 采样,选出下一个 token,比如 `欢`。


序列变长:你好北京,欢

继续循环,选出 `迎`

序列:你好北京,欢迎

继续循环……


循环停止条件二选一:

1. 抽到特殊 EOS 结束符(结束标记 token)→ 停止

2. 达到你设置的最大生成长度 → 强制停止


---


# 步骤 7:全部生成结束后,反向翻译


把所有生成出来的 token ID,一次性交给 tokenizer,转回汉字。

比如最终 ID 序列翻译成文字:

`你好北京,欢迎来到这座城市。`


---


## 极简流水线(可以直接对照)


```

文字【你好北京】

    ↓ tokenizer(查表,无计算)

ID序列 [2341,5720,8811,9005]

    ↓ Embedding权重查表 + 位置编码

带位置的向量序列 [A₁,B₂,C₃,D₄]

    ↓ 32层Transformer(注意力+FFN,矩阵乘法)

最后一个融合向量

    ↓ LM Head权重乘法

logits 全词表分数列表

    ↓ softmax + 采样

选出下一个token(比如逗号)

    ↓ 追加到序列尾部,循环上面流程

直到EOS / 达到长度上限

    ↓ tokenizer反向翻译

最终文字输出

```


## 重点易错点再强调一遍


1. 不是一次性算出整段回答!**一轮只产生 1 个 token**,循环变长。

2. embedding、QKV、FFN、LM Head 全都是权重矩阵,都在 gguf 文件里;量化(Q4_K_M)只是里面小数存得粗略一点,流程完全不变。

3. tokenizer 和权重是两套独立东西:tokenizer 只管文字↔ID,不参与神经网络乘法。

4. 模型没有 “理解语义”,只是用训练调好的权重,根据海量文本统计规律,算出 “这个位置后面最可能是什么片段”。





用通俗的语言介绍大模型权重

咱们用**一个猜答案的 AI 小助手**来打比方,通俗讲权重:

你可以把大模型想象成一张**超级巨大的打分表**,**权重就是表格里每一格的分数**。

举个最简单的例子:

AI 要判断一句话是不是在问天气。

它会看一堆词:

“下雨”、“气温”、“几点”、“吃饭”、“球赛”


AI 心里有打分:

- 看到 “下雨” → 加很多分(这个词和天气高度相关)

- 看到 “气温” → 加不少分

- 看到 “吃饭” → 几乎不加分

- 看到 “球赛” → 甚至减分


👉 **这里每一个加多少、减多少的数字,就是权重!**


---


再升级一点,不是简单单词匹配:

大模型不是只认单词,它看的是**成千上万种细微特征组合**:

某个词放在句子开头重要程度是多少、这个词跟着另一个词出现的时候要调高多少、问句结尾的语气该怎么加权……

每一条这种 “重要程度数值”,全部都是权重。


### 核心一句话

**权重 = AI 脑子里记住的「各个信息有多重要」的数字**

数字大 = 这个线索很关键;数字小 = 这个线索不重要;负数 = 这个线索会反向误导判断。


### 串联你前面学过的内容

模型训练的时候,就是不停调整这几十万、几十亿个权重数字,慢慢调到能答对问题。

- 7B 模型 = 一共有 **70 亿个权重数字**

- f16 / Q4_K_M / INT8 = 规定:这每一个 “重要程度数字”,用多大精度、多大盒子去存

  - f16:精细记录这个数字(比如 0.7352),准、占空间大

  - Q4_K_M:粗略近似存这个数字,省空间,轻微不准


### 补充两个很好懂的比喻,选一个你喜欢:


比喻 1(天平版):

AI 做推理就是一台有上亿个砝码的天平,**权重就是砝码的重量**。不同线索放上来,砝码重量不一样,最后天平偏向哪个答案,AI 就输出哪个。


比喻 2(听歌调音台):

调音台一大堆推子,每个推子代表一条信息,**推子的位置数值就是权重**。拉高推子 = 放大这个信息的影响,拉低 = 减弱它。大模型就是有几十亿根推子的巨型调音台。


### 一个误区纠正


权重**不是文字、不是知识本身**!

它不会直接存 “地球是圆的” 这句话。

它存的是一堆数字组合,当你提问的时候,靠这些数字互相运算,**推算出正确答案**。

就像厨师记住的不是成品菜,而是:盐放多少、糖放多少、火候多大(这些配比数字就是权重)。




基础知识

训练数据

模型大小与权重大小及量化

Q4_K_M  各字母数字含义


训练数据

标签数据与QA(一问一答)数据

标签数据:包含数据分类和分类标签


模型大小与权重大小

f16、Q4_K_M 不是模型的 “能力参数”(不是 7B、13B 这种),它是【存数字的盒子规格】。

先搞懂底层:

大模型本质就是一大堆**小数(权重数字)**,模型思考全靠这堆数字。

7B、13B = 一共有多少个数字(数字越多越聪明,这个是固定的,不会因为转换改变!)

👉 **f16 / Q4_K_M = 每个数字,用多大的盒子去装它。盒子越小,装得越粗糙,占地方越小、跑起来越快。**


再划重点,区分两套完全独立的东西,很多人就是这里搞混:

1. **7B / 13B / 34B**:模型有多少个数字(【智商规模】,转换的时候**永远不变**)

> 比如一个 7B 模型,不管转 f16 还是 Q4_K_M,它永远是 7B,不会变成别的。


2. **f16 / Q5_K_M / Q4_K_M / Q3_K_M**:装每个数字的盒子大小(【存储精度】,就是我们现在说的这个,转换工具就是换盒子)

> 换盒子,**不会增加或者减少数字的数量,只是每个数字记录的精细程度变了**


模型大小单位

这里的 B = Billion,十亿

- **K** = Kilo,千 → 1K = 1000 个参数

- **M** = Mega,百万 → 1M = 100 万参数

- **B** = Billion,十亿 → 1B = 10 亿参数

- **T** = Trillion,万亿 → 1T = 1 万亿参数


例子:

- 1.5M = 150 万参数(很小的小模型)

- 7B = 70 亿参数(最常见的家用模型)

- 70B = 700 亿参数

- 1T = 1 万亿参数(超大模型,个人电脑跑不动)


✅ 重点:这里的 K/M/B/T 是**数权重的个数**,和硬盘文件大小无关!

同一个 7B 模型,做成 f16、Q4_K_M,参数量依旧是 7B 不变,只是文件体积变了。


每个权重的单位除f16 Q4_K_M还有哪些

- f16 /bf16(int8 、int16、int32...):没有压缩,原盒,f32太大基本不用

- Q6_K/Q5_K_M/Q4_K_M/Q3_K_M:K 系列新式压缩,优先选

- Q4_0:古董压缩,别碰

- GPTQ/AWQ:是另外一套压缩标准,不是 GGUF 后缀


权重的原生与量化

###原生(bf16 /f16 /f32)

原生 = **模型训练完,出厂原本的存储方式,没有做有损压缩**

类比:相机直出的 RAW 原图,所有色彩信息都保留,画质最好,文件巨大。

注意:bf16、f16 都属于原生浮点,只是两种不同的 “原生记录格式”,它们本身**不属于量化**。


### 量化(Q4_K_M、Q5_K_M、IQ4_XS 这些带 Q 的)

量化 = **有损压缩**

量化工具就做一件事:**把一大堆相近的小数,合并成少数几个代表值,用更少的比特去记录**。

不再精准记录原始数字,只存一个近似值。


## 关键 2 句话,区分边界

1. **原生:不压缩,原汁原味,精度最高,体积大**(f16 / bf16)

2. **量化:压缩近似存储,省空间、提速,牺牲一点点精度**(所有带 Q 的)


Q4_K_M  各字母数字含义

拆开:**Q 4 K M**,逐个大白话解释

- **Q** = Quantize,量化(代表这是压缩版本,不是原生 f16/bf16)

- **4** = 基础是 **4 比特** 存储(每个权重用 4bit 来存,原生 f16 是 16bit)

- **K** = K-quant,llama.cpp 自研的一套新式量化算法

老版本是 Q4_0、Q4_1;K 算法更聪明:它会把权重分块,**每一块单独算缩放系数**,损失更小,现在主流都用 K。

- **M** = Medium,中等档位(K 系列固定三档:S / M / L)

  - S = Small 小块:压缩更狠,文件更小,质量稍微差一点

  - **M = Medium 中等:平衡体积、速度、效果,最通用首选 ✅**

  - L = Large 大块:保留更多细节,效果更好,但文件更大一点





一般企业选模型训练

模型大小(一般指参数大小)

1-3b  500条可见效果

6-8b   1000条可见效果

70b以上模型

模型常到huggingface,魔塔社区

模型私有定制化:

rag 外挂知识库(检索的方式来增强生成模型能力)

(离线处理:索引库开发,给出的答案:具备可解释性)

  点击查看视频教程

  文本向量化(OpenAI SDK 可以文本向量化维度可以达几千)

  文本转向量用到的模型文章:https://sbert.net/

  Sentence Transformers(又名 SBERT)是用于访问、使用和训练最先进的文本和图像嵌入模型的首选 Python 模块。

fine-tuning 模型微调【难】

( 预训练模型+私有化数据+训练-》微调后的模型 ,高质量数据,训练数据,验证数据,测试数据)

  微调1W数据可以看到效果

pre training 增量训练

       funtion calling 调用现有的企业业务接口api

主要时间用在数据准备:

数据采集,清洗,标注










Top