理解llama.cpp怎么完成大模型推理的

打印 上一主题 下一主题

主题 1857|帖子 1857|积分 5575

译者的话: llama.cpp出道以来,很少有官方文档,但是本文通过代码驱动的解说, 讲清楚了llama.cpp的原理,个人推荐一读。
在这篇文章中,我们将深入探究大型语言模型(LLMs)的内部结构,以便更好地理解它们是怎样工作的。为资助我们进行这次探索,我们将使用 llama.cpp 的源码,它是 Meta 的 LLaMA 模型的纯 C++ 实现。作者个人以为,llama.cpp 是理解 LLM 深层原理的一个优秀学习工具,它的代码简洁明白,不涉及过多的抽象。我们将使用特定的提交版本。
本文的重点是 LLM 的推理部门,即:已训练好的模型怎样基于用户输入的提示天生相应。这篇文章主要写给那些非机器学习和人工智能领域的工程师,旨在资助他们更好地理解 LLM,本文从工程角度而非 AI 角度探究 LLM 的内部工作原理,因此不要求读者具备深厚的数学或深度学习知识。(译者:这正是本文最妙的地方)在文章中,我们将从头到尾介绍 LLM 的推理过程,涵盖以下主题:

  • 张量:概述数学运算怎样以张量的形式实现, 并可能潜在转移到 GPU 上处理处罚。
  • 分词:将用户输入的提示分解为令牌列表,LLM 使用这些令牌作为输入。
  • 嵌入Embedding:将令牌转换为高维向量的过程。
  • Transformer:大语言模型架构的焦点部门,负责实际的推理过程,我们将重点介绍自注意力机制。
  • 采样:选择下一个预测令牌的过程,我们将探究两种采样技术。
  • KV 缓存:一种常见的优化技术,用于加快长提示的推理速率,我们将介绍一个根本的 kv 缓存实现。
通过阅读本文,你将有望对 LLM 的工作过程有一个端到端的理解,并且能够探索更高级的主题,这些主题将在末了一节中详细分析。

   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

东湖之滨

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表