工作日志-大模型
- 了解当下大语言模型
- 完成大模型部署,掌握大模型训练微调和推理
- Python学习,Numpy与Pandas等数据处理,Pytorch与MindSpore框架学习
- 掌握prompt提示词工程以提高大模型交互质量
- 了解大模型开发工具(LangChain)
- 大模型多模态功能,文生图/视觉语言模型/视频等项目
- 多模态大模型的部署,训练,推理
- 大模型的优化技巧,如减少模型大小,硬件加速,并行处理等
- 大模型的量化方法
- 部署在华为昇腾服务器上与ARM服务器相关部署
- Arm服务器相关部署
- 掌握调用Agent功能及其开发流程,独立开发Agent功能
day01
大模型相关的参数调整:
相关调参方法,涉及到大模型生成答案的策略:
- 当 num_beams=1 而且 do_sample=False 时,,每个step生成条件概率最高的词,因此生成单条文本。代码中,调用 greedy_search()方法
- 随机贪婪搜索:当 num_beams=1 且 do_sample=True 时,每个单步时会根据模型输出的概率进行采用,而不是选条件概率最高的词,增加多样性。调用 sample() 方法
- 贪婪柱搜索:当 num_beams>1 且 do_sample=False 时,做一个 num_beams的柱搜索,每次都是贪婪选择top N个柱。调用 beam_search() 方法
- 采样柱搜索:当 num_beams>1 且 do_sample=True 时,相当于每次不再是贪婪选择top N个柱,而是加了一些采样。调用 beam_sample() 方法
- 多组柱搜索搜索:当 num_beams>1 且 num_beam_groups>1 时,多组柱搜索同时进行,最后返回num_beam_groups个结果。调用 group_beam_search() 方法
day02
tips: AnythingLLM-外挂知识库,能够直接将文档转化为向量存储和聊天平台兼容的数据。
语言模型的适应:从语言模型到任务模型的转换
两种方式让语言模型进行适应:
- 训练(标准的有监督学习):训练一个新模型,使其能将输入映射到输出。这可以通过创建一个新模型并利用语言模型作为特征(探针法),或者从现有的语言模型出发,根据训练实例进行更新(微调),或者在这两者之间找到平衡(轻量级的微调)。
- 提示(上下文)学习:根据对任务的描述建一个或一组提示/上下文信息,将其输入到语言模型中以获取基于该任务的生成结果。根据提示/上下文信息的数量,我们还可以进一步细分:
- 零样本学习(Zero-shot):提示/上下文信息的数量为0,模型直接基于对任务的理解输出结果。
- 单样本学习(One-shot):提示/上下文信息的数量为1,一般来说模型基于1个例子可以更好的理解任务从而较好的生成结果。
- 少样本学习(Few-shot):提示/上下文信息的数量大于1,大模型可以看到更丰富的例子,一般来说获得比单样本学习更好的效果。
- 提示的局限性:Transformer只接受2048以下个tokens输入,可以以QA的形式进行问答。
分词器
Tips 词元(token)一般在NLP(自然语言处理)中来说,通常指的是一个文本序列中的最小单元,可以是单词、标点符号、数字、符号或其他类型的语言元素。通常,对于NLP任务,文本序列会被分解为一系列的tokens,以便进行分析、理解或处理。在英文中一个”token”可以是一个单词,也可以是一个标点符号。在中文中,通常以字或词作为token
- BPE分词器算法,步骤:
- Input(输入):训练语料库(字符序列)。
算法步骤 - Step1. 初始化词汇表 $V$ 为字符的集合。
- while(当我们仍然希望V继续增长时):
Step2. 找到$V$中共同出现次数最多的元素对 $x,x’$ 。 - Step3. 用一个新的符号 $xx’$ 替换所有 $x,x’$ 的出现。
- Step4. 将$xx’$ 添加到V中
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 学习杂记!