├── 99~参考资料 ├── 2023~赵鑫~大语言模型综述 │ ├── 09~参考.md │ ├── 01~引言.md │ └── README.md ├── 2025~《AI Engineering, Building Applications with Foundation Models》 │ └── README.md ├── 2023~Ben Clarkson~Building an LLM from scratch │ └── README.md ├── 2024~《Build a Large Language Model (From Scratch)》 │ └── README.md ├── 2025~《Happy LLM,从零开始的大语言模型原理与实践教程》 │ └── README.md ├── 2025~《面向开发者的大模型手册》 │ └── README.md └── cohere~LLM University │ ├── 01~What are Large Language Models? │ ├── README.md │ └── 01.Text Embeddings.md │ └── README.md ├── README.md └── 语言模型微调 ├── 99~参考资料 ├── 2023-Prompt-Tuning:深度解读一种新的微调范式.md └── 2023-Finetuning Large Language Models.md └── LoRA └── 99~参考资料 └── 2023~LoRA From Scratch – Implement Low-Rank Adaptation for LLMs in PyTorch.md /99~参考资料/2023~赵鑫~大语言模型综述/09~参考.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 预训练模型 2 | 3 | # Links 4 | 5 | - https://mp.weixin.qq.com/s/zbkSw6VwmmbTQPSyRPlhEQ 6 | -------------------------------------------------------------------------------- /99~参考资料/2025~《AI Engineering, Building Applications with Foundation Models》/README.md: -------------------------------------------------------------------------------- 1 | > https://github.com/chiphuyen/aie-book 2 | -------------------------------------------------------------------------------- /语言模型微调/99~参考资料/2023-Prompt-Tuning:深度解读一种新的微调范式.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://wjn1996.blog.csdn.net/article/details/120607050) 2 | 3 | # Prompt-Tuning:深度解读一种新的微调范式 4 | -------------------------------------------------------------------------------- /99~参考资料/2023~Ben Clarkson~Building an LLM from scratch/README.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://bclarkson-code.github.io/posts/llm-from-scratch-scalar-autograd/post.html) 2 | -------------------------------------------------------------------------------- /99~参考资料/2024~《Build a Large Language Model (From Scratch)》/README.md: -------------------------------------------------------------------------------- 1 | # [Build a Large Language Model (From Scratch)](https://github.com/rasbt/LLMs-from-scratch) 2 | -------------------------------------------------------------------------------- /语言模型微调/99~参考资料/2023-Finetuning Large Language Models.md: -------------------------------------------------------------------------------- 1 | > [Origin](https://magazine.sebastianraschka.com/p/finetuning-large-language-models) 2 | 3 | # Finetuning Large Language Models 4 | -------------------------------------------------------------------------------- /99~参考资料/2025~《Happy LLM,从零开始的大语言模型原理与实践教程》/README.md: -------------------------------------------------------------------------------- 1 | # Happy-LLM,从零开始的大语言模型原理与实践教程 2 | 3 | 本项目是一个系统性的 LLM 学习教程,将从 NLP 的基本研究方法出发,根据 LLM 的思路及原理逐层深入,依次为读者剖析 LLM 的架构基础和训练过程。同时,我们会结合目前 LLM 领域最主流的代码框架,演练如何亲手搭建、训练一个 LLM,期以实现授之以鱼,更授之以渔。希望大家能从这本书开始走入 LLM 的浩瀚世界,探索 LLM 的无尽可能。 4 | -------------------------------------------------------------------------------- /语言模型微调/LoRA/99~参考资料/2023~LoRA From Scratch – Implement Low-Rank Adaptation for LLMs in PyTorch.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://lightning.ai/lightning-ai/studios/code-lora-from-scratch?view=public§ion=all) 2 | 3 | # LoRA From Scratch – Implement Low-Rank Adaptation for LLMs in PyTorch 4 | -------------------------------------------------------------------------------- /99~参考资料/2023~赵鑫~大语言模型综述/01~引言.md: -------------------------------------------------------------------------------- 1 | # 引言 2 | 3 | 语言是人类表达和交流的突出能力,它在儿童早期发展并在一生中不断演变 [1, 2]。然而,机器除非配备了强大的人工智能算法,否则不能自然地掌握以人类语言形式理解和交 4 | 流的能力。实现让机器像人类一样阅读、写作和交流的目标,一直是一个长期的研究挑战 [3]。从技术上讲,语言建模(LM)是提高机器语言智能的主要方法之一。一般来说,LM 旨在对词序列的生成概率进行建模,以预测未来(或缺失)tokens 的概率。语言建模的研究在文献中受到了广泛关注,可以分为四个主要发展阶段: 5 | 6 | - 统计语言模型 (SLM): SLMs [4–7] 基于统计学习方法开发,并在 20 世纪 90 年代兴起。其基本思想是基于马尔可夫假设建立词预测模型,例如根据最近的上下文预测下一个词。具有固定上下文长度 n 的 SLM 也称为 n 元语言模型,例如 bigram 和 trigram 语言模型。SLM 已被广泛应用于提高信息检索(IR) [8, 9] 和自然语言处理(NLP) [10–12] 的任务性能。然而,它们通常受到维数灾难的困扰:由于需要估计指数 7 | -------------------------------------------------------------------------------- /99~参考资料/2025~《面向开发者的大模型手册》/README.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://datawhalechina.github.io/llm-cookbook/#/README) 2 | 3 | # 面向开发者的大模型手册 - LLM Cookbook 4 | 5 | 本项目是一个面向开发者的大模型手册,针对国内开发者的实际需求,主打 LLM 全方位入门实践。本项目基于吴恩达老师大模型系列课程内容,对原课程内容进行筛选、翻译、复现和调优,覆盖从 Prompt Engineering 到 RAG 开发、模型微调的全部流程,用最适合国内学习者的方式,指导国内开发者如何学习、入门 LLM 相关项目。 6 | 7 | 针对不同内容的特点,我们对共计 11 门吴恩达老师的大模型课程进行了翻译复现,并结合国内学习者的实际情况,对不同课程进行了分级和排序,初学者可以先系统学习我们的必修类课程,掌握入门 LLM 所有方向都需要掌握的基础技能和概念,再选择性地学习我们的选修类课程,在自己感兴趣的方向上不断探索和学习。 8 | 9 | 如果有你非常喜欢但我们还没有进行复现的吴恩达老师大模型课程,我们欢迎每一位开发者参考我们已有课程的格式和写法来对课程进行复现并提交 PR,在 PR 审核通过后,我们会根据课程内容将课程进行分级合并。欢迎每一位开发者的贡献! 10 | -------------------------------------------------------------------------------- /99~参考资料/cohere~LLM University/01~What are Large Language Models?/README.md: -------------------------------------------------------------------------------- 1 | # What are Large Language Models? 2 | 3 | 你好!我是路易斯,你们这个模块的指导老师。 4 | 5 | 大型语言模型是机器学习模型,旨在处理和分析文本。它们在海量数据上进行训练,并学习语言中的模式,使它们能够对我们给它们的任何查询产生类似人类的反应。 6 | 7 | 大型语言模型通常是基于非常大的深度神经网络。它们的众多应用包括聊天机器人、语言翻译和文本总结等。 8 | 9 | 在本模块中,你将学习大型语言模型的架构。 10 | 11 | 首先,我们将讨论嵌入,它是单词和短语在高维空间中的代表,以及如何使用它们来衡量不同文本之间的相似性。 12 | 13 | 我们还将探讨注意力,它是一种机制,允许模型在处理过程中关注输入的特定部分。我们将研究 Transformer 模型架构,它是许多最先进的语言模型的骨干,以及它如何彻底改变了 NLP 领域。 14 | 15 | 最后,我们将深入研究语义搜索,即理解查询的含义并找到最相关的结果的过程。我们将讨论如何利用大型语言模型来进行语义搜索,以及这项技术是如何改变搜索行业的。 16 | 17 | 在整个模块中,我们将使用实际的例子和实践练习,以确保你对这些主题有一个全面的了解,并能够在现实世界的场景中应用它们。 18 | 19 | 我希望你和我一样,对学习大型语言模型的工作原理,以及如何获得它们的最佳效果感到兴奋。让我们开始吧! 20 | -------------------------------------------------------------------------------- /99~参考资料/2023~赵鑫~大语言模型综述/README.md: -------------------------------------------------------------------------------- 1 | # 大语言模型综述 2 | 3 | # 摘要 4 | 5 | 自从 20 世纪 50 年代图灵测试被提出以来,人类一直在探索如何用机器掌握语言智能。语言本质上是一种由语法规则支配的复杂的人类表达系统。开发有能力理解和掌握一门语言的人工智能(AI)算法是一个重大挑战。作为一种主要的语言理解和生成方法,语言建模在过去的二十年中得到了广泛的研究,并从统计语言模型逐步发展为神经语言模型。近年来,通过在大规模语料库上对 Transformer 模型进行预训练,人们提出了预训练语言模型(PLM),其在解决各种自然语言处理(NLP)任务方面表现出强大的能力。由于研究人员发现扩展模型规模可以提高模型能力,因此他们通过将参数增加到更大的尺寸来进一步研究该效应。有趣的是,当参数规模超过一定水平时,这些规模更大的语言模型的性能不仅得到了显著提升,而且还表现出一些小规模语言模型(例如 BERT)所不具备的特殊能力(例如上下文学习)。为了区分不同参数规模下的语言模型,研究界创造了术语——大语言模型(LLM)代指大型的 PLM(如包含数百亿或数千亿个参数)。近年来,学术界和工业界极大地推进了针对 LLM 的研究,其中一个显著的进展是推出了 ChatGPT(一种基于 LLM 开发的强大 AI 聊天机器人),它引起了社会的广泛关注。LLM 的技术发展对整个 AI 界产生了重要影响,这将彻底改变我们开发和使用 AI 算法的方式。考虑到这一快速的技术进步,在本篇综述中,我们通过介绍 LLM 的背景、主要发现和主流技术来回顾近年来的进展。我们特别关注 LLM 的四个主要方面,即预训练、适配微调、使用和能力评估。此外,我们还总结了开发 LLM 的可用资源,并讨论了 LLM 现有的问题和未来的发展方向。本文提供了关于 LLM 的最新文献综述,期望能为研究人员和工程师提供帮助 6 | -------------------------------------------------------------------------------- /99~参考资料/cohere~LLM University/README.md: -------------------------------------------------------------------------------- 1 | > [原文地址](https://docs.cohere.com/docs/llmu) TODO! 2 | 3 | ![](https://files.readme.io/60c937f-small-LLMUni_Docs_Banner.png) 4 | 5 | # Welcome to LLM University by Cohere! 6 | 7 | 我们很高兴你选择和我们一起学习自然语言处理和大型语言模型。 8 | 9 | 我们全面的课程旨在给你一个坚如磐石的 NLP 基础,使你具备开发自己的应用程序所需的技能。无论你想学习语义搜索、生成、分类、嵌入,还是其他任何 NLP 技术,这里都是你的理想之地我们迎合各种背景的学习者,涵盖从基础知识到大型语言模型(LLM)中最先进的主题,确保你能充分挖掘 LLM 的潜力。此外,你将有机会进行实践练习,使你能够建立和部署自己的模型。 10 | 11 | 该课程涵盖 LLMs,从基础知识开始,一直到建立和使用文本表示和文本生成模型。它的理论部分解释得很清楚,用的是类比和例子而不是公式,它的实践部分包含很多有用的代码例子,将帮助你巩固你的知识。它是一种一刀切的方法,学习者可以选择自己的道路。出于这个原因,它适合于任何对 NLP 感到兴奋的人,从 ML 的初学者,任何希望用语言 AI 构建应用程序的开发者,以及准备将其技能付诸实践的高级学习者。该课程有以下主题,根据你以前的知识和你的目标,它们都可以作为起点。 12 | 13 | # The Curriculum 14 | 15 | 在本课程中,你将学习有关大型语言模型(LLM)的一切,包括: 16 | 17 | - LLMs 是如何工作的?了解它们的架构和活动部件,包括转化器模型、嵌入、相似性和注意力机制。 18 | - 大型语言模型有什么用?:了解大型语言模型在现实世界中的许多应用,包括 19 | - 语义搜索 20 | - 文本生成 21 | - 文本分类 22 | - 使用嵌入技术分析文本 23 | - 我如何使用 LLM 来构建和部署我的应用程序?了解如何使用 LLM 来构建应用程序。本课程将教你 24 | - 如何使用 Cohere 的端点:分类、生成和嵌入。 25 | - 如何构建应用程序,包括语义搜索模型、文本生成器等。 26 | - 如何在许多平台上部署这些应用程序。 27 | 28 | 报名参加 LLM 大学,你就可以掌握 NLP,并在不断发展的语言技术领域开启一个充满机遇的世界。 29 | -------------------------------------------------------------------------------- /99~参考资料/cohere~LLM University/01~What are Large Language Models?/01.Text Embeddings.md: -------------------------------------------------------------------------------- 1 | # Text Embeddings 2 | 3 | 在古老的未来主义电影中,如《2001 太空漫游》,主计算机(HAL)能够与人类交谈,并能非常容易地理解他们所说的话。当时,让计算机理解和产生语言似乎是一项不可能完成的任务,但最新的大型语言模型(LLM)能够做到这一点,使人类几乎无法分辨他们是在与另一个人,还是在与一台计算机交谈。 4 | 5 | 自然语言处理(NLP)的精髓任务是理解人类语言。然而,那里有一个很大的断层。人类用文字和句子说话,但计算机只理解和处理数字。我们如何才能将单词和句子连贯地转化为数字呢?将单词分配给数字的做法被称为单词嵌入。我们可以把单词嵌入看作是对单词的分数分配,有一些很好的属性(我们很快就会学到)。 6 | 7 | # What is a Word Embedding? 8 | 9 | 在我们讨论什么是词的嵌入之前,让我测试一下你的直觉。在下图中(测验 1),我在平面上找到了 12 个词。这些词是以下内容: 10 | 11 | ```h 12 | Banana 13 | Basketball 14 | Bicycle 15 | Building 16 | Car 17 | Castle 18 | Cherry 19 | House 20 | Soccer 21 | Strawberry 22 | Tennis 23 | Truck 24 | ``` 25 | 26 | 现在,问题是,在这个平面上,你会把 Apple 这个词放在哪里?它有很多地方可以去,但我允许有三种可能性,分别标为 A、B 和 C。 27 | 28 | ![平面上词分布](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/329efd5-image.png) 29 | 30 | 我会做的,是把它放在 C 点,因为让 "苹果" 这个词靠近 "香蕉"、"草莓 "和 "樱桃",而远离 "房子"、"汽车 "或 "网球 "等其他词,这样才有意义。这正是一个词的嵌入。那么我们给每个词分配的数字是什么呢?很简单,就是该词位置的横坐标和纵坐标。这样,"苹果 "这个词被分配到数字[5,5],而 "自行车 "这个词被分配到坐标[5,1]。 31 | 32 | 为了冗余起见,让我们列举一下一个好的词嵌入应该具有的一些属性: 33 | 34 | - 相似的词应该对应于相近的点(或者等同于相似的分数)。 35 | - 不同的词应该对应于远处的点(或者说,对应于明显不同的分数)。 36 | 37 | # Word Embeddings Capture Features of the Word 38 | 39 | 上面的词嵌入满足了属性 1 和 2。就这样了吗?还不是。这些词嵌入还有更多的东西,那就是它们不仅能捕捉到词的相似性,而且还能捕捉到语言的其他属性。在语言中,单词可以被组合起来,得到更复杂的概念。在数学中,数字可以通过加减来得到其他数字。我们能不能建立一个词的嵌入,来捕捉词与词之间的关系,就像数字之间的关系一样? 40 | 41 | 让我们看一下四个词,"小狗"、"狗"、"小牛 "和 "牛"。这些词显然是相关的。现在,为了再次测试你的直觉,我要把 "小狗"、"狗 "和 "小牛 "这几个词放在平面上,然后我让你加上 "牛" 这个词。你会把它加在哪里,在标有 A、B 或 C 的地方? 42 | 43 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/5dc498c-image.png) 44 | 45 | 虽然把它放在 A 处是有道理的,因为它们都是牛,离 "小牛 "更近,或者放在 B 处,因为它是成年动物,像 "狗 "一样,但我要把它放在 C 处,坐标为[3,4]。为什么呢?因为这四个词所形成的矩形捕捉到了它们之间一些非常重要的关系。例如,这里捕获了两个类比。小狗之于狗就像小牛之于牛 "这个类比可以翻译成 "从小狗到狗的路径与从小牛到牛的路径相同"。狗对牛就像小狗对小牛一样 "的比喻也可以在这个矩形中得到体现,如下图所示。 46 | 47 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/17fcaa9-image.png) 48 | 49 | 然而,这还不是冰山一角。这里生效的词嵌入的主要属性是,两个轴(垂直和水平)代表不同的东西。如果你仔细观察,向右移动会把小狗变成狗,把小牛变成牛,这是年龄的增加。同样,向上移动会使小狗变成小牛,狗变成牛,这是动物体型的增加。看来,这个嵌入的理解是,其中的词有两个主要的属性,或特征:年龄和大小。此外,似乎这个嵌入物把年龄放在横轴上,把大小放在纵轴上。在这种情况下,你会想象 "鲸鱼" 这个词会在哪里?可能是在 "牛" 这个词上面的某个地方。如果有一个 "真正的老狗 "的词呢?这个词会在 "狗 "这个词的右边的某个地方。 50 | 51 | 一个好的单词嵌入不仅能够捕捉到年龄和大小,而且还能捕捉到单词的许多其他特征。由于每个特征都是一个新的轴或坐标,那么一个好的嵌入必须为每个词分配两个以上的坐标。例如,Cohere 的一个嵌入,有 4096 个坐标与每个词相关。这些由 4096 个(或多少个)坐标组成的行被称为向量,所以我们经常谈论对应于一个词的向量,并把向量内的每个数字作为一个坐标。这些坐标中的一些可能代表该词的重要属性,如年龄、性别、大小。有些可能代表各种属性的组合。但还有一些可能代表人类可能无法理解的晦涩的属性。但总的来说,单词嵌入可以被看作是将人类语言(单词)翻译成计算机语言(数字)的好方法,这样我们就可以开始用这些数字训练机器学习模型。 52 | 53 | # Sentence embeddings 54 | 55 | 因此,单词嵌入似乎相当有用,但实际上,人类语言要比简单地把一堆单词放在一起复杂得多。人类语言有结构,有句子,等等。例如,我们如何能够表示一个句子呢?嗯,这里有一个想法。所有单词的分数之和如何呢?例如,假设我们有一个词的嵌入,给这些词分配以下分数: 56 | 57 | ```s 58 | No: [1,0,0,0] 59 | I: [0,2,0,0] 60 | Am: [-1,0,1,0] 61 | Good: [0,0,1,3] 62 | ``` 63 | 64 | 那么句子 "No, I am good!" 就对应于向量[0,2,2,3]。然而,"I am no good" 这个句子也将对应于向量[0,2,2,3]。这不是一件好事,因为计算机对这两个句子的理解是完全相同的,然而它们是完全不同的,几乎是相反的句子!这就是为什么我们需要一个更好的嵌入!因此,我们需要更好的嵌入,考虑到单词的顺序、语言的语义和句子的实际含义。 65 | 66 | 这就是句子嵌入开始发挥作用的地方。句子嵌入就像单词嵌入一样,只不过它以一种连贯的方式将每个句子与一个充满数字的向量联系起来。所谓连贯性,我的意思是,它满足与单词嵌入相似的属性。例如,类似的句子被分配到类似的向量上,不同的句子被分配到不同的向量上,最重要的是,向量的每个坐标都标识了该句子的一些(无论是清晰的还是模糊的)属性。 67 | 68 | ![Sentence embeddings](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/6306a80-image.png) 69 | 70 | Cohere 嵌入就是这样做的。使用变换器、注意机制和其他尖端算法,这个嵌入将每个句子发送到一个由 4096 个数字组成的向量,而且这个嵌入的效果非常好。作为一个小例子,这里是一个嵌入的热图,每个句子包含 10 个条目,有几个句子(写下整个 4096 个条目会占用太多的空间,所以我们用一种叫做主成分分析的降维算法来压缩它。 71 | 72 | ![](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/f159eaa-image.png) 73 | 74 | 请注意,这些句子都非常相似。特别是,三个突出的句子几乎都有相同的含义。如果你看一下它们对应的向量,这些也是非常相似的。这正是一个嵌入应该做的事情。 75 | 76 | ### How to Use These Embeddings? 77 | 78 | Now that you’ve learned how useful these embeddings are, it’s time to start playing with them and finding good practical uses for them! The [Cohere dashboard](https://dashboard.cohere.ai/) provides a very friendly interface to use them. Here is a small example, with the following phrases: 79 | 80 | ``` 81 | I like my dog 82 | I love my dog 83 | I adore my dog 84 | Hello, how are you? 85 | Hey, how's it going? 86 | Hi, what's up? 87 | I love watching soccer 88 | I enjoyed watching the world cup 89 | I like watching soccer matches 90 | ``` 91 | 92 | To see the results of the sentence embedding, go to the “Embed” tab in the Cohere dashboard, and type the sentences (click here for an embed demo you can play with). 93 | 94 | ![img](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/18ecd8a-image.png) 95 | 96 | The results come out as vectors with 4096 entries for each sentence. These are obviously hard to visualize, but there is a way to bring them down to 2 entries per sentence in order to be easily visualized. This visualization is in the plot below. 97 | 98 | ![img](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/c50d08f-image.png) 99 | 100 | Notice that the embedding seemed to capture the essence of the sentences, and there are 3 clear clusters of sentences. In the top left corner you find the sentences that greet a person, in the middle, those that talk about a person’s dog, and in the bottom right corner, those that talk about soccer. Notice that sentences such as “Hey what’s up” and “Hello, how are you?” have no words in common, yet the model can tell that they have the same meaning. 101 | 102 | ### Multilingual Sentence Embeddings 103 | 104 | Most word and sentence embeddings are dependent on the language that the model is trained on. If you were to try to fit the French sentence “Bonjour, comment ça va?” (meaning: hello, how are you?) in the embedding from the previous section, it will struggle to understand that it should be close to the sentence “Hello, how are you?” in English. For the purpose of unifying many languages into one, and being able to understand text in all these languages, Cohere has trained a large multilingual model, that has showed wonderful results with [more than 100 languages](https://docs.cohere.com/docs/supported-languages). Here is a small example, with the following sentences in English, French, and Spanish. 105 | 106 | ``` 107 | The bear lives in the woods 108 | El oso vive en el bosque 109 | L’ours vit dans la foret 110 | The world cup is in Qatar 111 | El mundial es en Qatar 112 | La coupe du monde est au Qatar 113 | An apple is a fruit 114 | Una manzana es una fruta 115 | Une pomme est un fruit 116 | El cielo es azul 117 | The sky is blue 118 | Le ciel est bleu 119 | ``` 120 | 121 | The model returned the following embedding. 122 | 123 | ![img](https://ngte-superbed.oss-cn-beijing.aliyuncs.com/item/ff72def-image.png) 124 | 125 | Notice that the model managed to identify the sentences about the bear, soccer, an apple, and the sky, even if they are in different languages. 126 | --------------------------------------------------------------------------------