1B: 10亿 1T:1万亿
每个模型的token计算方式都是不同的,和 tokenizer 模型有关。每个大模型在预训练前,都会先训练一个 tokenizer 的分词器模型,由于每个模型的预训练数据不一样,因此 tokenizer 的分词器模型也不一样。导致每个模型的计算方式都是不一样的。(除非使用了相同的tokenizer分词模型) 有可能一个中文一个token,有可能2个中文1个token。 大约标准:1个英文字符 = 0.3 个token、1个中文字符 = 0.6个token
参数、推理代码、训练代码、训练数据集
预训练: 让模型说话(学知识,所有的知识都一股脑塞进去) SFT(监督微调): 让模型会说话(问题->答案的标注数据。有问题,有答案的再次训练) 对齐优化(RLHF/RLAIF):给模型设定规则(负能量、破坏性行文的对话、套路模型进行对话),让模型根据偏好来说话
自回归:问题+下一个token不断自回归,得到最终的答案
大模型的答案不理想时,存在以下几种方案优化:
RAG一般是和Agent/LLM配合开发。“只有大模型回复格式不对/风格不统一时,才会去走SFT”。 在SFT之前,一般会提供一些示例(Few-Shot),来解决大模型输出格式风格不准确的问题,此时如果效果不好,可以在拿这些示例去走 SFT。 生产环境中:常采用 SFT + RAG”结合。例如先通过 SFT 训练模型“如何根据参考文档准确回答问题”,再利用 RAG 在运行时注入具体的私有文档。
严格按照如下六个点来书写提示词(提示词工程六要素):
角色一定要指定:你扮演一个优秀的大学老师
目标需要明确:阅读这篇报告,给我总结,300字左右。
示例:""" 根据以下背景信息:{background_info} \n\n 请以{expertise_level}水平撰写关于{topic}的详细解释。\n确保内容准确、结构清晰,并包含实际应用示例。 """
输入数据的前后都需要有空行,输入内容使用三个反引号或tab标签,如:“```” 来标识,或使用 <tag>{input}</tag>
明确输出格式,最好提供示例
内容限制、字数、文风、语调、复杂度、创造性、自定义规则等。
示例如下:
yml# 角色
你是一名【角色定位,如:数据分析师 / 业务分析师 / 政策研究员】。
# 任务
你的任务是基于给定的输入数据进行【分析 / 总结 / 对比 / 评估】。
# 背景/上下文
【历史记录总结】。
【参考资料】。
# 输入数据
<<<
{在此粘贴输入数据}
>>>
# 输出格式
- 使用**表格**形式输出
- 表格中必须包含以下列:
1. 关键发现
2. 支撑数据(来自输入数据的原文或摘要)
3. 结论
4. 建议
- 表格下方需给出**整体结论说明**
# 质量与约束
- 仅基于输入数据进行分析
- 不得编造、推测或引入外部信息
- 若输入数据不足以支撑结论,必须明确标注为**“信息不足”**
- 不允许为了完整性而补充假设
按照常规方式来说,transform 的注意力机制会把重要的token权重放在开头的起始位置。因此位置越是靠前的。出现的次数多的token权重越大。
但是根据测算:开头位置和末尾位置的token,大模型回复的会更准确一些。不同的模型不一样,有的是起始位置,有的是末尾位置。
“让我们逐步思考”,对复杂的问题可以使用此模型,可搜索相关模版 这对我的职业生涯菲唱重要 深呼吸,仔细考虑
记住,以上方案只能减少大模型的幻觉,但是不能完全消除幻觉。
续训要放在微调的前面,因为微调后再去续训,很有可能微调的内容将会消失。
一般到RAG就到底了,微调都很少。本质上都是为了解决问题,实在不行就上智能体。