赞
踩
昇思MindSpore公开课大模型专题第二季课程火爆来袭!未报名的小伙伴抓紧时间扫描下方二维码参与课程,并同步加入课程群,有免费丰富的课程资源在等着你。课程同步赋能华为ICT大赛2023-2024,助力各位选手取得理想成绩!
上周六的课程中我们学习了LLaMA2原理及推理部署方式并用代码进行演示,同时也讲解业界SOTA模型。相信大家都有对LLaMA2产生浓厚兴趣,下面让我们一起回顾下课程内容吧:
一、课程回顾
1、LLaMA2课程回顾
1.1 LLaMA2和Transformer结构对比
1.2 LLaMA1到LLaMA2的变化
1)增加训练数据
2)增加context length
3)大规格用GQA
1.3 LLaMA2结构详解
1)RMSNorm:减少LayerNorm的计算量
2)RoPE:复数空间变换的实现
- def apply_rotary_emb(
- xq: mindspore.Tensor,
- xk: mindspore.Tensor,
- freqs_cis: mindspore.Tensor,
- ) -> Tuple[mindspore.Tensor, mindspore.Tensor]:
- """
- Apply rotary embeddings to input tensors using the given frequency tensor.
- This function applies rotary embeddings to the given query 'xq' and key 'xk' tensors using the provided
- frequency tensor 'freqs_cis'. The input tensors are reshaped as complex numbers, and the frequency tensor
- is reshaped for broadcasting compatibility. The resulting tensors contain rotary embeddings and are
- returned as real tensors.
- Args:
- xq (mindspore.Tensor): Query tensor to apply rotary embeddings.
- xk (mindspore.Tensor): Key tensor to apply rotary embeddings.
- freqs_cis (mindspore.Tensor): Precomputed frequency tensor for complex exponentials.
- Returns:
- Tuple[mindspore.Tensor, mindspore.Tensor]: Tuple of modified query tensor and key tensor with rotary embeddings.
- """
- xq_ = view_as_complex(xq.float().reshape(*xq.shape[:-1], -1, 2))
- xk_ = view_as_complex(xk.float().reshape(*xk.shape[:-1], -1, 2))
- freqs_cis = reshape_for_broadcast(freqs_cis, xq_)
- xq_out = ops.view_as_real(xq_ * freqs_cis).flatten(3)
- xk_out = ops.view_as_real(xk_ * freqs_cis).flatten(3)
- return xq_out.astype(xq.dtype), xk_out.astype(xk.dtype)
复制
3)KV-Cache:解决大模型推理的性能和显存消耗问题
4)Grouped Multi-Query Attention:在推理效果和推理速度之间的trade-off
Multi-Head Attention:效果好、推理慢
Multi-Query Attention: 效果变差,推理快
Grouped Multi-Query Attention: 效果几乎无影响,推理速度较快
5)SwiGLU:更加平滑的激活+Linear层
1.4 业界LLM改进方式
1)性能优化:使用FlashAttention、PagedAttention、MQA、GQA等方法优化Attention计算效率
2)增加训练数据:最有效提升LLM效果的手段
3)加大context长度:增强长文本能力
4)提高训练的稳定性:由于大模型预训练可能出现各种训练不稳定的问题(如Loss跑飞,具体可以参考bloom预训练实验日志),因此长稳训练对于基础模型十分重要,部分模型开源了自己的稳定性增强设计,如Baichuan设计的NormHead和Max-z loss。
二、
下节课预告
新的一年即将开启!昇思MindSpore技术公开课也将在下周六(1月6日)迎来我们的第七讲,本期特邀鹏城实验室高效能云计算所的算法工程师陶恒韬老师讲解《鹏城·脑海模型的训练过程》,鹏城·脑海200B模型是具有2千亿参数的自回归式语言模型,在中国算力网枢纽节点‘鹏城云脑Ⅱ’3456卡上基于MindSpore的多维分布式并行技术进行长期大规模训练。在课程期间我们将为大家展示鹏城·脑海200B模型的各项功能,欢迎大家准时收看昇思MindSpore技术公开课第七讲!我们1月6日14点不见不散!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。