AI summary
type
status
date
Jul 30, 2024 01:58 AM
slug
summary
tags
category
icon
password

引言

本文旨在帮助大家更好地了解 AIGC,使用LLM。场景和工具限定在LLM范畴内,也就是利用自然语言引导模型输出的形式,其他类型的算法模型和工程应用本文不讨论
文章内容偏向于科普实操,同时也无关于行业,相信对所有岗位的朋友都有所帮助
另外,任何涉及个人观点和主观内容的部分,请大家自行根据资料判断
💡
【大纲】 1、LLM定义 2、LLM能为我做什么? 3、如何优化LLM生成效果?
首先从 LLM 的基本概念说起

LLM 定义

谈到AI,或许很多人会感到模糊,因为好像知道它是什么,但是好像又不知道它具体是什么(万物皆混沌……lol just a joke)
其实主要是因为AI,或者说人工智能,这个领域本身覆盖领域就很广(参考 wiki),现在流行的GPT等大语言模型(LLM)其实只算是AI的一个小分支
更准确的说LLM应该算一种综合应用(Application),LLM的训练过程往往结合了多个AI领域的研究技术(例如Transformer+RL),而LLM的其中一种落地场景,或者说能赋能的行业,是 AIGC
狭义上来说,大众认为的AI就是AIGC,其实也没有太大问题,因为目前看潜力最大,最前沿的模型就是LLM,最能赋能的领域就是AIGC
💡
那么,什么又是AIGC? AIGC(Artificial Intelligence Generated Content)是指通过生成式模型的技术(注意不限于LLM,通常是LLM+其他领域技术)生成文字、语音、图片等多媒体内容的领域。往往AIGC都是和落地场景一起提及,例如AIGC+传媒/电商/影视/教培等
这里提到了一个词——生成式模型,也称为 GAI
GAI(Generative artificial intelligence)是深度学习下的一个研究领域( wiki )。
机器学习中通常有两大类模型,一个是判别式模型,一个是生成式模型。
判别式模型很容易理解,就是要模型给出判断,例如对或者错,这张图片是猫还是狗等等;而生成式模型GAI则比较模糊,不指定生成的结果(即无监督训练),因此通常来说GAI复杂度比分类模型高,而GAI的应用价值也相应更高
而LLM也只能算是GAI的一个分支,在LLM流行之前也存在一些经典的GAI模型,例如RNN、LSTM、GAN等
P.S. 其实下面的图关于 LLM也只是大致的分类,例如 LLM中利用到的 RL技术不属于 DL的范畴
notion image
 
2017年,一篇经典的paper - 《Attention is All you Need》横空出世,闪亮登场。其实Attention当年就算是DL届的关注重点,只是没想到甚至这个title都预测了未来(目前GPT、GPT4、GPT4o、Sora这些主流LLM,其中最重要的训练机制之一就是Attention)
另外GAI中除了LLM,还有Diffusion Model、VAE等模型,仍在CV领域流行(也就是Midjourney/SD用到的技术)
 
关于AIGC的介绍,中信院出品了一本白皮书,是从高层角度介绍科普AIGC的,感兴趣可以去读读
比较有科研精神,严谨的朋友,可以读下面2篇Survey(读Survey是了解一个研究领域的捷径!)
 

LLM 能为我做什么?

目前看LLM的能力,更符合“模拟生成看似正确答案”的结果,而非真正依据原子推理生成结果,依据就是LLM生成的内容往往乍看正确,但是细节经不起推敲,甚至有可能模型出现“幻觉”
LLM 可以信心满满地生成毫无意义或不忠实于所提供的源内容的内容,这在LLM 中被称为幻觉
关于LLM的推理能力,其实是学术界这两年研究的重点,可想而知,这一点对于LLM的未来潜力评估影响重大,因此OpenAI也曾尝试对GPT的神经网络中的神经元进行解释(OpenAI用GPT-4解释了GPT-2三十万个神经元:智慧原来是这个样子 | 机器之心 (jiqizhixin.com)),但效果并不理想,该研究也没能推广深入;Claude3去年进一步扩大了解释神经元的规模(深度学习可解释性新进展!Claude团队利用字典学习分解大模型神经元-CSDN博客),但是仍然没有解决根本性的问题:对上游来说,基本还是黑箱,无法评估风险和控制细节。直至今日,LLM究竟是否具有推理能力,学术界也存在争议和两个流派,例如Hinton老爷子为主的“AI威胁论”派认为当前的AI已经或者即将具备推理能力,并且会对人类造成威胁,或者说AI不可控制;相对的如Lecun、吴恩达等大佬则认为LLM只是对数据分布进行拟合的概率模型,它更多是人类提效的工具 深度学习三巨头之一 Yann LeCun:大语言模型带不来 AGI - 华尔街见闻 (wallstreetcn.com)
💡
扯了这么多,LLM的可解释性对于我们应用AIGC有什么指导意义?
同样,先抛【结论】:
  1. AIGC可以帮助我们在专业领域进行提效,例如已知某大厂游戏设计师用AIGC技术提高工作效率,自己则用多余时间搞副业XD
  1. 非个人专业领域,用AIGC做副业,例如AI写小说、画漫画、影视解说、做游戏、数字人口播、以及AI主播等
  1. 还有一些人另辟蹊径,借助OpenAI的“政策”特点,做套壳AI盈利(不过这条路基本死了,尤其是最近OpenAI宣布要对中国的API调用流量进行整治 OpenAI 将采取额外措施,停止其不支持的国家和地区的 API 使用 - IT之家 (ithome.com)
 
由于 LLM 缺乏推理能力(尤其是小参数 LLM),因此 AIGC 或许不能做到专家系统的80分+,但是它可以很快的做到60分。因此,如果是工作岗位的辅助工具,往往仍需要本人做回归review,把控整体。并且由于LLM存在幻觉现象,很有可能生成Fake News等电子垃圾,关于这点,Redis的作者就有一篇blog专门总结了自己使用LLM的经验
 
另外,上文也提到,AIGC在图像、语音等领域的应用,工程上除了LLM,往往需要结合其他领域的技术来实现,例如:
  • 语音:ASR(黄学东大佬就是ASR领域老将)、TTS
  • 图像:建模、CV、Graphics
因为LLM本身也属于Encoder-Decoder的框架,所以也可以对LLM做以下分类:
  • Text → Image
  • Text → Text
  • Text → Voice
  • Image → Text
  • Image → Image
  • Image → Voice
  • Voice → Text
  • Voice → Image
  • Voice → Voice
 
以上技术只是常见和具有代表性的,更多的结合场景还有待创新和挖掘(例如跳舞,个人看好MMD+LLM的结合可能)
 
不过近期 gpt-4o 的出现,着实给众多AIGC的开发当头一棒,gpt-4o 支持多模态输入和输出的同时,官方说明了模型和 gpt-4-vision不同(Hello GPT-4o | OpenAI),没有用其他模型对非文本数据先进行转换,而是将所有类型的多模态数据丢到同一个神经网络,并且结果上比ASR/CV领域的SOTA要好。就研究领域来说,这着实是一个milestone(不过没有开源,也没有 paper,因此有些细节仍需质疑)

如何优化LLM生成效果?

在了解了LLM能做什么之后,下一个问题自然就是:我怎么能够更好地使用LLM
 
对于一个LLM模型,其优化技巧可以由下图概括
notion image
这里我们从下到上说明(因为我们通常会按照这个顺序去操作)
  1. 选择模型:每个LLM模型的能力,是由其预训练采用的语料和训练机制所决定的,即便通过后续的一系列工程优化(包括finetune、多agent、提示词优化等等),都无法根本解决模型能力。形象比喻的话,就是每个LLM的IQ不同,即便做后天的专项训练,也无法弥补先天差异
  1. 做模型微调Finetune,通常是指在预训练之后,让模型针对下游任务再次做小规模的训练,调整权重(weights)和偏移(biases)。Finetune训练的规模会远小于预训练,但是也对硬件资源有较高要求,通常业界成熟的模型,都是针对下游场景进行finetune过后的模型,可以在模型名字后面发现 -ft -chat -instruct ,就是代表做了对应的finetune,并且更适用于对应的任务
  1. Agents:其实在 RAG 之上,还有一个增强 LLM 能力的框架,就是 Agents,不过通常 Agents 是结合外部系统,也就是 ChatGPT 的 Plugin,增强 LLM 的能力。包括检索、查询 DB 等,Agents 技术可以帮助 LLM 快速搭建成 Application 应用
  1. RAG检索增强,概括说就是让 LLM 能够检索额外知识库(通常是私有本地的知识库),从而优化对特定领域的内容生成效果。其原理是将知识库进行embedding处理,让 LLM 根据 prompt 搜索最接近的 embedding 语句,集成到 context 中,从而优化结果。但可想而知,模型其实并未理解全量的知识库内容,因此优化效果有限,尤其对于知识库中包含复杂逻辑推理的内容(例如系统设计等)
  1. 提示词(prompt)优化:也称为 prompt 工程,更好的使用提示词,能提高模型的输出效果。其本质就是细化和明确需求,或者是优化输入的数据格式,毕竟自然语言并非是最适合 LLM 处理的格式。因此 prompt 的优化途径包括改用 markdown 格式,采用一些流行的框架(CRISPE、Role 模板、Expert 模板等),以及 CoT、ToT 等 trick,其实也是参考模型运行模式,调整输入的模式,从而获得优质输出
 
下面我会依次对每个点做一定拓展,另外关于 GAI 的系统学习,推荐下微软开源的 course:(不过现在 AZure 的 AI Service 个人已经申请不到了……)
generative-ai-for-beginners
microsoftUpdated Sep 12, 2024
 

Model selection

模型命名规范

首先,这里先科普一个知识点:model naming convention
如果你直接到 hugging face 找 model,大概率会被里面 model 的命名感到疑惑,例如同样是 llama-3,你能搜到14466 个 model
notion image
P.S. 虽然不是所有模型都遵循 naming convention,但是你需要知道,就好比不是每一个 git commit message 都有 feat fix 等,但是你不能看不懂吧
【核心模块】
  • 模型名称:这是核心标识符,通常具有描述性(例如,巴德)或品牌导向(例如,侏罗纪-1 巨型)
  • 版本号:指示模型的开发阶段(例如,v3.1)
【其他信息(通常包含)】
  • 架构:描述模型的内部结构(例如,Transformer-XL)。架构后面的数字可能表示特定配置(例如,12 层)
  • 参数数量:表示模型的大小和复杂性,通常以十亿为单位表示(例如,137B)。 上下文大小:指模型为每个预测考虑的文本量,会影响其捕获上下文的能力(例如,2048 个标记)
  • 量化格式:指示模型是否通过将权重转换为较低精度的格式来优化效率。 以下是常见的一些示例:
    • GGML:GPT 生成混合列表格式
    • GGUF:GPT 生成统一格式
    • GPTQ:GPT 量化格式
【量化细节(有时包含)】 量化参数:这可能会提供有关所选量化方法的详细信息,例如使用的位深度(例如,8 位)。然而,名称本身通常不包含这种详细程度的信息。
💡
ChatGPT 虽然所属 GPT-3.5 家族,但是是对 chat 进行微调的产物,并不是 gpt-3.5-turbo,不过也不能 100%确定,因为官方没有公开 ChatGPT 的细节。有意思的是,微软的一篇 paper 似乎泄露了 ChatGPT 的模型参数是 20B

模型选择因素

关于如何选择合适的模型来使用,关于这个问题,我想到了问下 Gemini:
如上述所言,Gemini 回答中的一些细节经不起推敲,并且和我下面提示的方法有一定差距,不过,它还是能为我带来一些参考价值,例如成本、社区支持性是我一开始遗漏的点
 
理论上最理想的情况是,你明确知道期望任务属于的任务领域(通常所属NLP范畴),再根据对应领域的leaderboard/rankings,查找最适合的LLM(例如在Hugging Face找到对应Task下的Model)
 
但是实践过程中由于各种条件的限制,你需要做 trade-off:
  • 【语言】你需要模型输出哪些语言,模型对一些目标语言的生成效果会差,通常非英语语言只有经过 finetune 才会对目标语言有较好的效果,从命名上可以看到,例如 llama-3-8b-Instruct-Chinese ,或者中文的话可以关注国内公司产出的 LLM,例如 ChatGLM、qwen2、kimi 等(中文可以用弱智吧问题测试 XD)
  • 【数据泄露】你要决定是否能够暴露你的数据给LLM,如果不能,那你只能考虑采用本地开源模型
  • 【模型大小】如果你选择使用网页或者 API 访问 LLM 服务,模型通常是最强大的(往往参数最大,finetune 也最好),而且网页在一个会话中,帮用户自动拼接了历史会话到 context,如果直接调 API 是无记忆的。但是也有一些缺点,一个是费用,二个是数据会泄露。如果是本地部署模型,则需要考虑GPU显存容量,通常来说,7B的模型有需要占用4G显存,70B的模型需要40G,而70B的模型基本只能对标GPT3.5(往往还不如)。不过你也可以考虑购买一些IaaS资源,例如Collab,阿里云,腾讯云等,个人推荐入门可以用Collab,因为免费版本也可以白嫖30G的GPU资源
  • 【问题领域】你是否有足够的时间成本去调研问题领域?如果你只是出于娱乐/副业等目的,不需要追求最优的生成效果,那么投入大量的时间去研究或许ROI较低。一个折中的方案是看一些流行的排名,例如
  • 【实测效果】另外,你可以根据自己实测的效果,主观判断最适合的模型,有一些适合对比多个模型的聚合工具或平台:
 

Finetune

传统模型微调的训练方法,包括监督学习、迁移学习等比较复杂,所以本文不会展开,通常来说 finetune 工作也是由炼丹岗的同学完成
现代 LLM,为了降低 finetune 成本,提出了低成本方案(one-shot、few-shot),只要你能准备下游任务的监督训练集,那就可以快速进行 finetune,但是估计效果有限,因为没有变更模型本身的 weights 和 biases
是否选择 finetune,主要考虑以下因素:
  • 硬件成本(GPU):显存需要大约为本地部署的 2 倍,也有一些线上 finetune 的平台
  • 人力成本(调研、开发)
  • 还需要准备 finetune 所需的下游任务 dataset
  • 风险:即便 finetune 也无法保证效果一定优化,甚至可能造成过拟合
 
另外 finetune 也不是银弹,很可能造成对 finetune dataset 的过拟合,如果选择不合适甚至会造成模型效果下降

Agents

Agents 这个概念火起来,还是由于一款开源项目——的诞生,可以快速利用 LLM 搭建一个应用,陆续有人用 AgentGPT 搭建网站、聊天应用、炒股软件、游戏等
可以把你想象成老板,多个 LLM 作为你的手下替你打工,这就是多 Agents 框架
notion image
(图引自 MetaGPT)
至于工程细节,我还没怎么折腾过,所以无法给出建议,感兴趣的朋友可以玩玩 AgentGPT 和 MetaGPT

RAG

RAG 会接受输入并检索出一组相关/支撑的文档,并给出文档的来源(例如维基百科)。这些文档作为上下文和输入的原始提示词组合,送给文本生成器得到最终的输出。这样 RAG 更加适应事实会随时间变化的情况。这非常有用,因为 LLM 的参数化知识是静态的。RAG 让语言模型不用重新训练就能够获取最新的信息,基于检索生成产生可靠的输出。
💡
可以使用 LangChain 快速搭建 RAG 的 QA bot
 

Prompt engineering

入门 prompt engineering,我建议花半天左右的时间过一遍Andrew大佬的课程,因为它是Andrew和OpenAI合作推出的,可以说是官方给的说明了,而且内容短小精悍,特别适合入门食用
除此之外openai也有一篇guides(Prompt engineering - OpenAI API),以及一个cookbook的开源项目:,该项目涵盖的内容更广泛,不仅限于prompt,也包括使用openai的模型,在工程项目上的一些指导建议,内容风格更偏向科研工程,适合进阶玩家
 
中文社区,推荐两个站点:
  • LangGPT:非常优质的整合站点,这一篇文章里,基本囊括了prompt engineering的相关技术
  • ,prompt 优化技术梳理得很系统,同时是中文资料
 
下面总结一下我认为实用的点
  • 老生常谈的 few-shot 和 one-shot,但是我感觉使用频率低,场景有限。因为大部分时候我需要 LLM 给出启发式的回答,自然会缺少相关的示例;不过,如果你有示例的情况下,能很好的约束模型输出结构和形式
  • 尽量使用精确的语言,能量化就量化,能加更多的限定词就加(想想你期望你的上游怎么告诉你需求)
  • 使用结构化语言,包括使用markdown语法,对不同类型的token用特殊符号标记
  • 利用CoT(相关 paper)和ToT,引导模型进行推理,并且最好将复杂的一个大任务,分割成几个相对简单的小任务,更有利于模型生成正确的内容(参考我的一篇blog
  • 最后就是,反复调整prompt+重试生成,根据我的使用经验,往往你很难一次就从LLM得到你想要的答案

结语

本文整体上对LLM进行了科普简介,以及对入门LLM的新人提供了一些实用建议。
虽然在实际商业应用中,除了可能要做语音、图像等其他领域工程的集成,就语言模型来说,其实也不止有LLM的技术,有些场景下传统的语言模型、ML、RL,甚至是Rule-based的专家系统,可能都更为适用
不过仍然希望本文对大家是有所帮助的,也欢迎有小伙伴一起交流分享
 
最后谈一下 AGI 的话题,对于AGI是否会到来,我认为两种结果都有可能,因为如果只从当前这个时间节点,静态地看,GAI仍不够智能,其表现更像是对高维数据的拟合;但是科技的发展是动态地,就好比5年前学术圈都认为NLP、CV子领域的模型各领风骚,无法大一统;40年前没人看好神经网络一样。难说GAI发展的量变引起质变,达到通往AGI的“奇点”了呢?
提到“奇点”,推荐一本书《奇点临近》,作者是雷蒙德·库茨魏尔,要知道这本书是05年写的,其中预言了AGI将于2029年来临,2045年进入科技发展的“奇点”。不过个人认为这个时间听听就好(作者最近的采访也对2029年的时间节点进行了否定人工智能科学家雷·库兹韦尔:“到 2045 年,我们将把智能化程度提高一百万倍” |人工智能 (AI) |《卫报》 (theguardian.com)),毕竟书中关于纳米机器人的预言就未言中。重点是作者对于科技发展的分析框架,个人认为是符合逻辑,比较合理的。同时作者自身也是发明家,现任谷歌工程总监,经历比较传奇,感兴趣的可以去了解一下
另外想到了两个大佬的喜爱作品,这里也分享下: Yoshua 喜欢的《2001:太空漫游》、《星际迷航》 Musk 喜欢的《银河系漫游指南》
相关文章
CSS 总结Vite Study