一文探秘LLM应用开发(1)
本文旨在让没有大模型开发背景的工程师或技术爱好者,能够轻松地理解大语言模型应用开发的核心理论与主流工具。所以,我们不会刻意追求极度严谨和完备,而是从直觉和本质出发,结合调研整理与消化理解,帮助大家更容易把握LLM技术的全貌。大家可以基于本文的脉络,结合自己感兴趣的领域深入研究。如果有不准确或错误的地方,也欢迎留言指正。
本文体系完整,内容丰富,分多次连载。
第一部分 基础概念
1. 机器学习场景类别
2. 机器学习类型(LLM相关)
3. 深度学习的兴起
4. 基础模型
第二部分 应用挑战
1. 问题定义与基本思路
2. 基本流程与相关技术
1) embedding与tokenization
2) 向量数据库
3) finetune(微调)
4) 模型部署与推理
5) prompt
6) 编排与集成
a. langchain
b. llama-index
7) 预训练
场景案例(语义检索系统)
常用参考(好工具/好网站/好文章)
第一部分 基础概念
1. 机器学习场景类别
AI 2.0时代已经到来,AI 1.0和2.0的区别在哪里?从场景类别入手,可以很直观地判断。过去以AlphaGo为代表的1.0时代,人工智能场景多以判别式AI为主。到了2.0时代,以LLM(大语言模型)为代表的生成式AI有了爆发式发展。两者各有特点,关注的问题也不同。判别式AI需要大量标注,模型泛化能力差,看起来不那么“AI”;而生成式AI在技术特点和场景应用上截然不同,尤其是OpenAI开发的ChatGPT让大众惊艳——这一次不再是简单炒概念,更像是接近AGI(通用人工智能),因此AI迎来了新一轮热潮。
- :分类/回归/识别/定位,传统机器学习应用场景,适合决策分析。
判别式(Discriminative AI)
- :LLM兴起,多模态、泛化性、创造力,具有智能涌现现象。
生成式(Generative AI)
来自ChatGPT:
生成式AI(Generative AI)和判别式AI(Discriminative AI)是两种不同的机器学习方法,它们在许多应用中都发挥着重要作用。……(此处保留原引用内容,为简洁起见省略,实际输出应保留)
2. 机器学习类型(LLM相关)
大模型应用涉及以下三类机器学习方法:
- 无监督学习(机器根据一定规则自己构造label)
- 监督学习(人为标注label)
- 强化学习(基于环境反馈)
其中,预训练阶段采用无监督学习的方法,通过在大量无标注语料(多来源于互联网、维基百科、GitHub等)中学习规律。这一过程并非真的无监督,而是通过一些设计——如BERT采用的句子填空,GPT采用的文字接龙——来达到自我训练的目的。可以理解为这是一个数据压缩的过程:海量数据被压缩到模型中,只要语料够多、模型够大,模型就能蕴含语料中暗藏的逻辑和知识。
不进行监督学习的大模型可以认为是“哑巴”,它无法完成特定任务。需要通过监督学习,给模型一些例子或步骤(数据集需要人工标注),帮助大模型知道如何输出、如何思考,从而应对不同的应用场景(如对话、翻译等)。这就是“对齐(alignment)”的概念。
强化学习则是在此基础上的再完善:不直接给出正确答案,而是由模型生成答案,然后对答案进行打分,从而使大模型更好地按照用户偏好工作。
3. 深度学习的兴起
为什么要用深度学习?
- 深度学习对特征工程要求更低,更强调模型架构的设计。
- 经典机器学习(如逻辑回归等)模型容量有限,存在模型bias,弹性不足。
- 深度学习模块化更好,能够以统一模式搭建复杂的模型结构。
- 深度学习其实由来已久,早期算力不足限制了其发展。
Transformer源起
发展轨迹:CNN(无记忆)→ RNN(串行,短期记忆)→ LSTM(较长期记忆)→ Transformer(位置编码、并行、快)。
特点:对位置和上下文进行编码,能够融会贯通。Transformer更利于并行计算,算力的提升推动了它的流行。
尽管如此,当前模型输入仍有token数量限制。所谓token,本质就是输入被拆分的字符,也可以是一个单词、一个标点符号、一个数字等,与切词方法有关。模型基于token进行embedding,模型本身的输入决定了token数量的多少(并不完全一致,当前一些模型的token限制更多是出于处理架构和软硬件性能的考虑)。
来自ChatGPT:……(此处保留原引用关于token限制的内容,为简洁省略,实际输出保留)
对抗生成的思想
对于生成式AI,对抗生成的思想尤其重要,它帮助我们理解文字生成和图像生成的内在原理,也是Stable Diffusion等新图像生成方法的源起。对抗生成可以理解为有两个模型:一个生成模型(Generator)和一个判别模型(Discriminator)。Generator基于用户的提示词生成图片,Discriminator判定图片是否满足要求。在此过程中,使用标记数据(文字-图片-得分)训练出Discriminator来判别图片质量,而训练Generator的过程则是让它生成的图片能够“骗过”Discriminator。Discriminator也在不断迭代,使自己不被骗过。这样的博弈经过若干轮,最终生成可满足需求的Generator。从这里也可以看出,增加参数的随机性就能提升生成的多样性——当前模型中的temperature正是基于这个概念(可参考熵增)。
那么,如何在没有标记数据的情况下做到呢?可以参考Cycle GAN的思想:本质是自己给自己做标签,训练一个Generator将图片变成向量,再训练另一个Generator将向量生成图片,然后计算原图和生成图的相似性。通过这种循环迭代训练,就能得到我们需要的模型。使用时只需按需取用其中一个即可。
换一个角度,模型训练和推理可以理解为压缩与解压缩的过程。比如,将图片压缩到一个高密度向量(文字),再基于该向量生成图片。其他例子还有:文字→语音、文章→总结、总结→文章等。自编码器的思想与Cycle GAN类似,通过这种思路可以实现无监督效果。这一思想在图片生成、风格转换、翻译等很多生成式场景中都有应用。
4. 基础模型
常见两类大语言模型
- BERT模型:完形填空,创造性不好。
- GPT模型:文字接龙,创造性好。
通俗理解
预训练大模型本身不具备特定的任务能力,需要结合实际领域能力进行微调(fine-tune),才能让大模型具备具体的能力。

常见开源模型
- chatGLM-6B / chatGLM-13B(清华出品)
https://github.com/THUDM - LLaMA(Meta出品)
https://github.com/facebookresearch/llama - Vicuna-13B(羊驼,基于LLaMA微调)
- Falcon LLM(阿布扎比政府研究院TII出品)
https://huggingface.co/tiiuae
更多大模型请参考:
可商用大模型列表:https://github.com/eugeneyan/open-llms
大模型评测
- 国内SuperCLUE排行榜:https://www.superclueai.com/
- UC伯克利排行榜:https://chat.lmsys.org/
- 斯坦福排行榜(AlpacaEval):https://tatsu-lab.github.io/alpaca_eval/
-
- 关于宇宙的好的网名有哪些
- 角色扮演 | 1
- 网名