• 了解当下大语言模型
  • 完成大模型部署,掌握大模型训练微调和推理
  • Python学习,Numpy与Pandas等数据处理,Pytorch与MindSpore框架学习
  • 掌握prompt提示词工程以提高大模型交互质量
  • 了解大模型开发工具(LangChain)
  • 大模型多模态功能,文生图/视觉语言模型/视频等项目
  • 多模态大模型的部署,训练,推理
  • 大模型的优化技巧,如减少模型大小,硬件加速,并行处理等
  • 大模型的量化方法
  • 部署在华为昇腾服务器上与ARM服务器相关部署
  • Arm服务器相关部署
  • 掌握调用Agent功能及其开发流程,独立开发Agent功能

day01

大模型相关的参数调整:
alt text
alt text

相关调参方法,涉及到大模型生成答案的策略:

文本解码策略

  1. 当 num_beams=1 而且 do_sample=False 时,,每个step生成条件概率最高的词,因此生成单条文本。代码中,调用 greedy_search()方法
  2. 随机贪婪搜索:当 num_beams=1 且 do_sample=True 时,每个单步时会根据模型输出的概率进行采用,而不是选条件概率最高的词,增加多样性。调用 sample() 方法
  3. 贪婪柱搜索:当 num_beams>1 且 do_sample=False 时,做一个 num_beams的柱搜索,每次都是贪婪选择top N个柱。调用 beam_search() 方法
  4. 采样柱搜索:当 num_beams>1 且 do_sample=True 时,相当于每次不再是贪婪选择top N个柱,而是加了一些采样。调用 beam_sample() 方法
  5. 多组柱搜索搜索:当 num_beams>1 且 num_beam_groups>1 时,多组柱搜索同时进行,最后返回num_beam_groups个结果。调用 group_beam_search() 方法

day02

tips: AnythingLLM-外挂知识库,能够直接将文档转化为向量存储和聊天平台兼容的数据。

语言模型的适应:从语言模型到任务模型的转换

两种方式让语言模型进行适应:

  1. 训练(标准的有监督学习):训练一个新模型,使其能将输入映射到输出。这可以通过创建一个新模型并利用语言模型作为特征(探针法),或者从现有的语言模型出发,根据训练实例进行更新(微调),或者在这两者之间找到平衡(轻量级的微调)。
  2. 提示(上下文)学习:根据对任务的描述建一个或一组提示/上下文信息,将其输入到语言模型中以获取基于该任务的生成结果。根据提示/上下文信息的数量,我们还可以进一步细分:
  • 零样本学习(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中