LLM 优化方向
【2023-6-16】知乎专题:大模型LLM领域,有哪些可以作为学术研究方向?
- 模型层:
- GPT系列,多模态系列,视觉类SAM:原生的工具调用能力;
- 安全性:加密,可信任,联邦学习;
- 新模型,新范式:长文本建模,不需要RLHF等;
- 涌现问题的研究、黑盒的研究;
- 并行、运算、显存的优化。EL-Attention,ZeRo,剪枝部署,蒸馏压缩。
- 接口层:
- 私有化部署;
- Adapter,prefix,Lora;
- Fusing。
- 应用层:
- Visual ChatGPT,HuggingGPT,AutoGPT,LangChain;
- Prompt工程,向量库,dense retrieval;
- 自我纠错,自我迭代,chain of thought 加强;
- 评测数据集、新时代下的新任务,generatice agents等
假设已经有 GPT-3.5 基础模型,一千张卡,思考能做什么?然后用小模型,比如LLaMa 7B去验证,如果成功,再慢慢加大到13B,30B,画出一条上升的曲线;不一定要scale到最大的模型,只要自己的结论能划出一条上升的曲线,那么这条曲线就可外推到更大。
源自知乎:LessTalk
- 平台工具及工程化部署
- 小模型拟合大模型降低计算量
- 多模态的输入与输出
- Prompt Engineering
- 垂直领域应用 搜索+知识图谱、机器人、自动驾驶等
提纲
- 基础理论:大模型的基础理论是什么?
- 网络架构:Transformer是终极框架吗?
- 高效计算:如何使大模型更加高效?
- 高效适配:大模型如何适配到下游任务?
- 可控生成:如何实现大模型的可控生成?
- 安全可信:如何改善大模型中的安全伦理问题?
- 认知学习:如何使大模型获得高级认知能力?
- 创新应用:大模型有哪些创新应用?
- 数据评价:如何评估大模型的性能?
- 易用性:如何降低大模型的使用门槛?
作者:zibuyu9
其它
- reasoning 逻辑推理:目前llm能力还不够的地方。比如能不能让llm做leetcode hard。进一步的,能不能自己创造新的知识,解决哥德巴赫猜想。
- compression and acceleration 模型压缩与加速:怎么把一个10b的模型弄到手机上并高速运行
- agent:怎么更好的给llm加上眼睛与手脚,让llm变成agent执行任务,并构造各种各样全新的benchmark。比如让agent发知乎回答以点赞多为目标。能不能通过RL把这件事做了?就和当年搞游戏ai一样。
- multi-modal 多模态:GPT-4没有开源,甚至没有技术细节,怎么做一个开源的逼近gpt-4的模型。mini-gpt4, llava是个不错的尝试。
- Hallucination 幻觉问题:GPT-4已经好了很多,但仍然没有完全解决。所以因此马斯克说要做TruthGPT. 要让LLM知之为知之不知为不知。这个难度其实很大。
- Evaluation。开源世界需要一套新的Evaluation的方法来评估llm的效果,从而方便推进开源llm的进展。
- dataset。这个是chatgpt被创造出来的源头。所以,能否多构建一个专家的数据库来帮助优化llm呢?每一份开源数据都非常有价值。
论文:A PhD Student’s Perspective on Research in NLP in the Era of Very Large Language Models
模型融合
【2024-8-8】模型融合来袭!ChatGPT和Claude 杂交能变聪明10倍?
什么是模型融合
什么是模型融合?
- 把多个AI模型的参数混合在一起,生成一个新模型。
简单, 但效果却出奇的好
- 不需要额外的数据和算力,只要把模型权重加减一下就行了。
- 融合后的模型还真能集各家之所长,性能明显提升。
比如 Prometheus-2 模型用这招把几个评估模型的能力融合到一起的
融合方法
常见方法:图见原文
- 线性融合:最简单粗暴,直接对参数加权平均。虽然简单但出奇的有效。
- 任务向量:把微调后的模型减去原始模型,得到一个”任务向量”。用这个向量做加减法,比如减掉有毒内容的任务向量,模型就能生成更干净的内容了。
TIES
融合:在任务向量基础上加了三板斧 - 修剪、选举和分离,可以去掉冗余权重、解决任务向量间的分歧。DARE
融合:跟TIES思路类似,但用随机丢弃和重新缩放来去掉冗余权重。
论文链接:
工具 mergekit:
GaC
Gac: Generation as Classification
【2024-6-18】上海AI Lab 推出 融合多个大模型新思路 — Generation as Classification
常打比赛的人(如Kaggle)很熟悉, 很多时候拼的就是各种花式模型融合, 将多个model融合(ensemble)后可以突破现有瓶颈, 神奇地让融合后的性能超过任何一个参与ensemble的单一模型。
ImageNet 视觉分类任务, 分类模型会输出一个维度为 1000 向量代表预测每个类别的概率,仅仅将多个模型的分类向量加起来后取平均, 就可以取得不错的准确率提升
- 原本最高的是 RepGhostNet 78.81%, 将三个模型融合后就提升到了 80.62%.
类似地, 把LLM每个generation step都当成一次分类任务(Generation as Classification, GaC)去ensemble, 从而提升所生成的每个token的正确性, 并最终获得更好 response.
核心思想: LLM生成文本时, 每个generation step都由多个LLM共同决定下一个token要输出什么
- Paper Title: Breaking the Ceiling of the LLM Community by Treating Token Generation as a Classification for Ensembling
- GaC
如何实施?
问题
- LLM 每步生成跟其词汇表等长的概率向量, 而 LLMs 词汇表长度不一样
- 比如:
- Llama3 词汇表长度 128256
- Qwen2 词汇表长度 152064
- 这和ImageNet分类任务上所有模型都输出1000维度的向量不同.
直觉做法:
- 对所有参与ensemble的LLM词汇表取并集得到 Vu, 并用0-1矩阵记录下原本LLM词汇表和 Vu 对应关系.
- 一个generation step中, 将每个LLM生成的概率向量乘以各自的0-1矩阵转换到 Vu 维度
- 随后再取平均并得到ensemble后的概率向量
- 再根据该向量sample出下一个token, 此时这个token就是由所有参与ensemble的LLM决定的
- 当选出一个token后, 每个LLM会用各自的tokenizer将这个token转换为各自的 token id(s), 并拼回到各自的输入中以进行下一个generation step.
这种简单做法竟然打破现有的LLM社区天花板!(当然, 花费了更多计算量)
Qwen2 是 2024/06/07 退出, 拿它和实力相当的 llama3 进行融合, 各个指标上平均4%的提升! 达到 2024/06/07开源社区最好结果
该方法不受模型架构的限制, 随着新模型的释出还是可以不断的以新模型为基础继续推升天花板.
可控生成
【2023-7-10】LLM 可控生成初探
基于 LLM 的应用开发过程中,有几个挑战,包括:
- 如何避免“胡说八道”, 提升模型输出的可靠性/稳定性
- 控制模型的计算开销和响应速度等等
目前主流的解决手段包括:
- 更好的 prompt 设计
- 通过 retrieval 来做增强
- 与外部工具的结合
- 流程编排与产品设计
- 考虑使用 fine tune 模型或混合模型应用
Prompt优化类型 | latency | compute |
---|---|---|
Few-Shot CoT | ?? | ?? |
Zero-Shot CoT | ? | ? |
Decomposition | ?? | ?? |
Ensembling | ? | ???? |
Self-Criticism | ???? | ?? |
可控生成最直接的方案:
- 首先通过 prompt 告知 LLM 我们所需要的返回格式,并进行生成。
- 通过一些规则来检查返回结果,如果不符合格式,生成相关错误信息。
- 将上一次的生成内容和检查的错误信息告知 LLM,进行下一次的修正生成。
- 重复 2-3 步骤,直到生成的内容完全符合要求。
LLM 的可控性、稳定性、事实性、安全性等问题是推进企业级应用中非常关键的问题,下面这些项目在这方面做了很多探索,也有很多值得借鉴的地方。
总体思路上来说,主要是:
- 提供一套 prompt 模板定义,允许用户指定 LLM 生成的格式或内容主题。
- 在模板基础上,也有不少项目进一步设计了相应的编程语言,让 LLM 与确定性程序的交互更加直观。
- 提供各类 validator,保证生成内容符合预期,并且提供了自动处理/修正机制。
- 更进一步,也可以在生成前进行干预,例如在 prompt 中给近似案例,修改模型 decode 时的概率分布等。
- 其它在可控性基础上做的各种性能与开销的优化,例如缓存,减少 token 消耗量,对开源模型能力的挖掘等。
即使不直接使用上述的项目做开发,也可以从中学习到很多有用的思路。当然也非常期待这个领域出现更多有意思的想法与研究,以及 prompt 与编程语言结合能否碰撞出更多的火花。
详见原文:LLM 可控生成初探
guardrails
guardrails 项目将上述步骤做了进一步的抽象与封装,提供更加 high level 的配置与 API 来完成整个过程。其主要的组成部分包括:
- 定义了一套 RAIL spec,用来描述上面第 1 点提到的返回格式限定。除了 output schema 的定义外,RAIL目前也支持 input schema,prompt 模板,以及 instructions 等其它配置。
- 提供了一系列的 validation 机制,对应上面的第 2 点。对于 validate 失败的部分,会保留其在 output schema 中的位置,生成相应的错误信息。
- 通过 ReAsk 类来实现上面的第 3 点,发送给 LLM 的内容会更聚焦于错误信息部分,且保留了结构,更便于 LLM 理解和处理。
- 其它像常用 prompt 模板之类的功能。
NeMo-Guardrails
NeMo-Guardrails
- 来自 Nvidia 的一个同名项目,比 guardrails 更有野心,想要确保 LLM 应用整体的可信度,无害性以及数据安全性等,而不仅仅只是输出的结构化检查和修复。
- 因此其实现思路上也复杂不少,设计了一种专门的 Colang 语言,来支持更加通用多样的业务流,而不仅仅是生成 -> 检查 -> 修复。
- 这个项目会更专注于用户与 LLM 的对话式交互应用,主要的设计都是围绕这个前提展开。
guidance
guidance
- 微软推出的开源项目,几个作者看头像就很知名,分别是 shap,lime,checklist 的作者。之前有研究过 可解释机器学习的同学应该不会陌生。从 explainable ai 到 controlable llm,倒也是很说得通的发展路径
guardrails 中的做法是在 prompt 中给出说明和示范,希望 LLM 能够遵循指令来输出。但现实中往往会出现各种问题,例如额外带了一些其它的文字说明,或者生成的 json 格式不正确等,所以需要后续的 ReAsk 来进行修正。
LangChain 里也提供了各种 output parser 来帮忙提取回复中的结构化信息部分,但也经常容易运行失败。
在 guidance 中,同样是通过“模板语言”来定义 LLM 的输出结构,以确保输出格式的正确性。这个结构比起 xml 来说会更易写易理解些
guidance 将更加复杂的 Handlebars 模板 融入到了 prompt 中,使得原先需要复杂设计的 LLM 生成与程序处理交互过程可以很方便地在 prompt 中直接完成。
- 上面的例子中,只有当调用到
命令时,才会触发 LLM 的生成操作。另外也有像
,``,函数调用,逻辑判断,控制流等命令,有种结合了自然语言与编程语言两者长处的感觉。
除了 prompt 模板编程能力外,guidance 还有一系列高级特性,包括:
- 支持 hidden block,例如 LLM 的一些推理过程可能并不需要暴露给最终用户,就可以灵活利用这个特性来生成一些中间结果。
- Generation caching,自动把已经生成过的结果缓存起来,提升速度。
- 支持 HuggingFace 模型的 guidance acceleration,进一步提升生成速度。
- Token healing,不看这个我还不知道 LLM 有这种问题……
- Regex pattern guide,在模板的基础上进一步通过正则表达来限定生成的内容规范。
lmql
在 guidance 的基础上,lmql 项目进一步把“prompt 模板”这个概念推进到了一种新的编程语言,倒是有点像前面 guardrails 跟 NeMo-Guardrails 的关系。项目本身提供了很漂亮的 playground 方便试用,注意如果要在本地玩这个项目,需要升级到 Python 3.10 的版本。
Json 控制
【2024-8-6】程序员窃喜!卡了大模型脖子的Json输出,OpenAI终于做到了100%正确
大模型的 json 格式饱受诟病。经常遇到模型不遵循指令,不按格式输出,即使在 prompt 中明确说了要按照指定格式(比如Json、XML)返回结果,但是它就是不听话。
OpenAI 给 GPT-4o 模型升级到2024-08-06
版本,带来全新功能:
- API 中引入了
结构化输出
(Structured Outputs)
模型输出现在可靠地遵循开发人员提供的 JSON 模式, 实现输出JSON的100%准确率
之前开发者通过第三方开源工具,或在 prompt 上面做功夫,让大模型遵循你的命令,再或者反复重试请求来绕过LLMs在结构化处理的缺陷,现在都不需要
两种办法:
- (1)函数调用: 在函数定义中设置 strict:true进行结构化输出;
- (2)新增response_format 参数选项
如何实现?
- 对于特定复杂JSON架构进行模型训练,Openai通过这种方法能把模型准确率提到93%。
- 相较于最开始带JSON模式的GPT-4的40%准确率,已经高出很多了。
- 但是模型本质上还是不确定,无法保证JSON的稳定输出
- OpenAI使用了约束解码(constrained decoding)技术。
- 默认情况下,大模型在进行token输出时,可在词汇表中选择任意词汇,作为下一个输出token。而这种不可控性会让模型在输出一些固定格式的文本时犯格式错误。
- 而使用动态约束解码技术后,大模型在下一个token输出时,便增加了一些约束,将模型限制在有效的token内,而不是所有token。
- 比如:输入“
{"val
”后,下一个生成的文本一定不会是“{
”。 - 大模型不仅可以实现JSON格式正确,还可实现合适schema结构精确。
现在OpenAI已经通过这种方式实现了100% JSON输出准确率。
缺陷
- 额外增加Schema预处理时间,新模型在请求新的JSON Schema时慢些。
- 要使用结构化输出还有一些限制:
- 目前结构化仅支持输出一部分JSON模式,包括 String、Number、Boolean、Object、Array、Enum和anyOf。
- 同时,所有字段或者函数参数必须是“required”。
- 对象对嵌套深度和大小也有限制。
- 一个架构总共最多可以有 100 个对象属性,最多有 5 个嵌套级别。
- OpenAI还留了个底:结构化输出并不能防止所有类型的模型错误。模型可能仍会在JSON对象的值中犯错误(比如在数学方程式中步骤出错),如果出现错误,需要使用者在指令提示词中提供示例,或者将任务拆分为更简单的子任务。
- 安全。结构化输出功能将遵守OpenAI现有的安全政策,并且仍会拒绝不安全的请求。甚至他们在API响应上设置了一个新字符串值,让开发人员能以编程方式,检测模型是否拒绝生成。
知识植入
LLMs 依然会受到知识截断和谬误问题的限制。例如,ChatGPT 和 LlaMA 等 LLMs 仅具备截至训练最后时点的信息,也可能会因预训练数据中的偏见和差异生成不准确或误导性的输出。因此,高效更新 LLMs 的参数化知识进而调整特定行为,变得至关重要。
解决办法
- 尽管微调和参数高效微调可以修改 LLMs,但成本较高,还可能导致 LLMs 失去预训练所得能力,并且其修改也不总能泛化到相关输入。
- 使用手动编写或检索的提示影响 LLMs 的输出,但这类方法没有参数更新,可靠性不足。
知识编辑
为了使不相关输入的影响最小化,并迅速有效地修改 LLMs 的行为,一种可行的解决方案是知识编辑。关于 LLMs 的知识编辑研究在各种任务和设置下取得显著进展,包括 Memory based
、Meta-learning
和 Locate-Then-Edit
三类方法。
Methods
- ① Memory-based
- Memory-Based Model Editing at Scale (ICML 2022)
- Eric Mitchell, Charles Lin, Antoine Bosselut, Christopher D. Manning, Chelsea Finn. [paper] [code] [demo]
2. Fixing Model Bugs with Natural Language Patches. (EMNLP 2022)
Shikhar Murty, Christopher D. Manning, Scott M. Lundberg, Marco Túlio Ribeiro. [paper] [code] 3. MemPrompt: Memory-assisted Prompt Editing with User Feedback. (EMNLP 2022)
Aman Madaan, Niket Tandon, Peter Clark, Yiming Yang. [paper] [code] [page] [video] 4. Large Language Models with Controllable Working Memory.
Daliang Li, Ankit Singh Rawat, Manzil Zaheer, Xin Wang, Michal Lukasik, Andreas Veit, Felix Yu, Sanjiv Kumar. [paper] 5. Can We Edit Factual Knowledge by In-Context Learning?
Ce Zheng, Lei Li, Qingxiu Dong, Yuxuan Fan, Zhiyong Wu, Jingjing Xu, Baobao Chang. [paper] 6. Can LMs Learn New Entities from Descriptions? Challenges in Propagating Injected Knowledge
Yasumasa Onoe, Michael J.Q. Zhang, Shankar Padmanabhan, Greg Durrett, Eunsol Choi. [paper] 7. MQUAKE: Assessing Knowledge Editing inLanguage Models via Multi-Hop Questions
Zexuan Zhong, Zhengxuan Wu, Christopher D. Manning, Christopher Potts, Danqi Chen.
.[paper]
- ② Additional Parameters
- Calibrating Factual Knowledge in Pretrained Language Models. (EMNLP 2022)
Qingxiu Dong, Damai Dai, Yifan Song, Jingjing Xu, Zhifang Sui, Lei Li. [paper] [code] - Transformer-Patcher: One Mistake worth One Neuron. (ICLR 2023)
Zeyu Huang, Yikang Shen, Xiaofeng Zhang, Jie Zhou, Wenge Rong, Zhang Xiong. [paper] [code] - Aging with GRACE: Lifelong Model Editing with Discrete Key-Value Adaptors.
Thomas Hartvigsen, Swami Sankaranarayanan, Hamid Palangi, Yoon Kim, Marzyeh Ghassemi. [paper] [code] - Neural Knowledge Bank for Pretrained Transformers
Damai Dai, Wenbin Jiang, Qingxiu Dong, Yajuan Lyu, Qiaoqiao She, Zhifang Sui. [paper]
- Calibrating Factual Knowledge in Pretrained Language Models. (EMNLP 2022)
- ③ Change LM’s representation space
- Inspecting and Editing Knowledge Representations in Language Models
- Plug-and-Play Adaptation for Continuously-updated QA. (ACL 2022 Findings)
- Modifying Memories in Transformer Models.
- Chen Zhu, Ankit Singh Rawat, Manzil Zaheer, Srinadh Bhojanapalli, Daliang Li, Felix Yu, Sanjiv Kumar. [paper]
- Editing Factual Knowledge in Language Models.
- Fast Model Editing at Scale. (ICLR 2022)
- Editable Neural Networks. (ICLR 2020)
- Editing a classifier by rewriting its prediction rules. (NeurIPS 2021)
- Language Anisotropic Cross-Lingual Model Editing.
- Yang Xu, Yutai Hou, Wanxiang Che. [paper]
- Repairing Neural Networks by Leaving the Right Past Behind.
- Ryutaro Tanno, Melanie F. Pradier, Aditya Nori, Yingzhen Li. [paper]
- Locating and Editing Factual Associations in GPT. (NeurIPS 2022)
- Mass-Editing Memory in a Transformer.
- Editing models with task arithmetic .
- Gabriel Ilharco, Marco Tulio Ribeiro, Mitchell Wortsman, Ludwig Schmidt, Hannaneh Hajishirzi, Ali Farhadi. [paper]
- Editing Commonsense Knowledge in GPT .
- Anshita Gupta, Debanjan Mondal, Akshay Krishna Sheshadri, Wenlong Zhao, Xiang Lorraine Li, Sarah Wiegreffe, Niket Tandon. [paper]
- Do Language Models Have Beliefs? Methods for Detecting, Updating, and Visualizing Model Beliefs.
- Detecting Edit Failures In Large Language Models: An Improved Specificity Benchmark .
- Jason Hoelscher-Obermaier, Julia Persson, Esben Kran, Ioannis Konstas, Fazl Barez. [paper]
- Knowledge Neurons in Pretrained Transformers.(ACL 2022)
- Damai Dai , Li Dong, Yaru Hao, Zhifang Sui, Baobao Chang, Furu Wei.[paper] [code] [code by EleutherAI]
- LEACE: Perfect linear concept erasure in closed form .
- Nora Belrose, David Schneider-Joseph, Shauli Ravfogel, Ryan Cotterell, Edward Raff, Stella Biderman. [paper]
- Transformer Feed-Forward Layers Are Key-Value Memories. (EMNLP 2021)
- Mor Geva, Roei Schuster, Jonathan Berant, Omer Levy. [paper]
- Transformer Feed-Forward Layers Build Predictions by Promoting Concepts in the Vocabulary Space.(EMNLP 2022)
- Mor Geva, Avi Caciularu, Kevin Ro Wang, Yoav Goldberg. [paper]
- PMET: Precise Model Editing in a Transformer.
-
FRUIT: Faithfully Reflecting Updated Information in Text. (NAACL 2022)
Robert L. Logan IV, Alexandre Passos, Sameer Singh, Ming-Wei Chang. [paper] [code] -
Entailer: Answering Questions with Faithful and Truthful Chains of Reasoning. (EMNLP 2022)
Oyvind Tafjord, Bhavana Dalvi Mishra, Peter Clark. [paper] [code] [video] -
Towards Tracing Factual Knowledge in Language Models Back to the Training Data.
Ekin Akyürek, Tolga Bolukbasi, Frederick Liu, Binbin Xiong, Ian Tenney, Jacob Andreas, Kelvin Guu. (EMNLP 2022) [paper] -
Prompting GPT-3 To Be Reliable.
Chenglei Si, Zhe Gan, Zhengyuan Yang, Shuohang Wang, Jianfeng Wang, Jordan Boyd-Graber, Lijuan Wang. [paper] -
Patching open-vocabulary models by interpolating weights. (NeurIPS 2022)
Gabriel Ilharco, Mitchell Wortsman, Samir Yitzhak Gadre, Shuran Song, Hannaneh Hajishirzi, Simon Kornblith, Ali Farhadi, Ludwig Schmidt. [paper] [code] -
Decouple knowledge from paramters for plug-and-play language modeling (ACL2023 Findings)
Xin Cheng, Yankai Lin, Xiuying Chen, Dongyan Zhao, Rui Yan.[paper] [code] -
Backpack Language Models
John Hewitt, John Thickstun, Christopher D. Manning, Percy Liang. [paper] -
Learning to Model Editing Processes. (EMNLP 2022)
Machel Reid, Graham Neubig. [paper]
- Does Localization Inform Editing? Surprising Differences in Causality-Based Localization vs. Knowledge Editing in Language Models.
Peter Hase, Mohit Bansal, Been Kim, Asma Ghandeharioun. [paper] [code] - Dissecting Recall of Factual Associations in Auto-Regressive Language Models
Mor Geva, Jasmijn Bastings, Katja Filippova, Amir Globerson. [paper] - Evaluating the Ripple Effects of Knowledge Editing in Language Models
Roi Cohen, Eden Biran, Ori Yoran, Amir Globerson, Mor Geva. [paper] - Edit at your own risk: evaluating the robustness of edited models to distribution shifts.
Davis Brown, Charles Godfrey, Cody Nizinski, Jonathan Tu, Henry Kvinge. [paper]
FastEdit 北航
快速注入知识
- 【2022-2-10】Rank-One Model Editing (ROME): Locating and Editing Factual Associations in GPT, demo
This repo aims to assist the developers with injecting fresh and customized knowledge into large language models efficiently using one single command.
Supported Models
git clone https://github.com/hiyouga/FastEdit.git
conda create -n fastedit python=3.10
conda activate fastedit
cd FastEdit
pip install -r requirements.txt
# 或
pip install pyfastedit
Model Editing
CUDA_VISIBLE_DEVICES=0 python -m fastedit.editor \
--data data/example.json \
--model EleutherAI/gpt-j-6b \
--config gpt-j-6b \
--template default
EasyEdit 浙大 – 开源
【2023-8-16】浙大出品:大模型轻松获取“世界知识”,比传统微调效果更好
- 知识编辑 papaerlist: Knowledge Editing for LLMs Papers
- 【2023-5-23】Editing Large Language Models: Problems, Methods, and Opportunities
浙江大学和东海实验室的研究团队提出了一个易于使用的 LLMs 知识编辑框架——EasyEdit
,该框架支持各种知识编辑方法,且可以轻松应用于众多 LLMs,如 T5、GPT-J 和 LlaMA 等。
然而,目前关于 LLMs 知识编辑
的研究在实现和任务设置上的差异妨碍了知识编辑统一和综合框架的发展。值得注意的是,这种复杂性阻碍了不同方法之间有效性和可行性的直接比较,也使得创建新的知识编辑方法变得复杂。
EasyEdit 框架整合了各种编辑技术,支持在不同 LLMs 之间自由组合模块。通过统一的框架和接口,EasyEdit 能使用户迅速理解并应用包含在该框架中的主流知识编辑方法。EasyEdit 具有统一的 Editor、Method 和 Evaluate 框架,分别代表编辑场景、编辑技术和评估方法。
EasyEdit 还提供了五个评估编辑方法性能的关键指标,包括可靠性
(Reliability)、泛化性
(Generalization)、局部性
(Locality)、可移植性
(Portability)和效率
(Efficiency)。
为验证知识编辑在 LLMs 中的应用潜力,研究团队选用了参数庞大的 LlaMA 2 模型,并利用 ZsRE 数据集(QA 数据集)来测试知识编辑将大量一般事实关联整合进模型的能力。测试结果证明,EasyEdit 在可靠性和泛化性方面超越了传统的微调方法。
模型结构
详见 LLM 架构代码详解
Transformer 改进
详见站内: transformer 改进专题
放弃 Transformer
Transformer 构建灵活、易并行、易扩展等优势, 但问题是
- 并行输入的机制会导致模型规模随输入序列长度平方增长,导致其在处理长序列时面临计算瓶颈
传统 RNN 模型计算量小,理论上可以处理无限长序列,但存在序列依赖,难以捕捉长期依赖关系,且面临梯度消失、爆炸问题
- RNN 可以将历史状态以隐变量的形式循环叠加到当前状态上,对历史信息进行考虑,呈现出螺旋式前进的模式。
transformer 架构不是唯一
【2024-11-24】详见:浙大《大模型基础》
两类现代RNN 变体,分别为
- 状态空间模型(State Space Model,SSM)
- 测试时训练(Test-Time Training,TTT)
这两类范式都能实现关于序列长度的线性时间复杂度,且避免了传统RNN 中存在的问题
SSM
状态空间模型(State Space Model,SSM)范式可有效处理长文本中存在的长程依赖性(Long-Range Dependencies, LRDs)问题,并且可以有效降低语言模型的计算和内存开销。
SSM 范式
- SSM 思想源于控制理论中的动力系统。其通过利用一组状态变量来捕捉系统状态随时间的连续变化,这种连续时间的表示方法天然地适用于描述长时间范围内的依赖关系。
- 此外,SSM 还具有递归和卷积的离散化表示形式,既能在推理时通过递归更新高效处理序列数据,又能在训练时通过卷积操作捕捉全局依赖关系。
SSM 训练和推理非常慢。为了提高处理效率,需要对该方程进行离散化(Discretization), SSM 中最为关键的步骤,将系统方程从连续形式转换为递归形式和卷积形式,从而提升整个SSM 架构的效率。
- 训练时使用卷积形式
- 推理时使用递归形式
SSM 架构的系统方程具有三种形式,分别为
- 连续形式
- 离散化的递归形式
- 离散化的卷积形式
可应用于文本、视觉、音频和时间序列等任务
SSM 的优势在于能够处理非常长的序列,虽然比其它模型参数更少,但在处理长序列时仍然可以保持较快的速度。
两种基于SSM范式的代表性模型:RWKV
和Mamba
。
RWKV
RWKV(Receptance Weighted Key Value)是基于SSM 范式的创新架构,其核心机制 WKV 的计算可以看作是两个SSM 的比。
RWKV 设计结合了 RNNs 和 Transformers 的优点,既保留了推理阶段的高效性,又实现了训练阶段的并行化。(注:这里讨论的是RWKV-v4)
RWKV 模型的核心模块有两个:时间混合模块和通道混合模块。
- 时间混合模块主要处理序列中不同时间步之间的关系
- 通道混合模块则关注同一时间步内不同特征通道30之间的交互。
时间混合模块和通道混合模块的设计基于四个基本元素:接收向量R、键向量K、值向量V 和权重W,
Mamba
时不变性使得SSM 能够一致地处理不同时间步长的数据,进行高效的并行化训练,但是同时也导致其处理信息密集的数据(如文本)的能力较弱。
为了弥补这一不足,Mamba 基于SSM 架构,提出了选择机制(Selection Mechanism)和硬件感知算法(Hardware-aware Algorithm),前者使模型执行基于内容的推理,后者实现了在GPU 上的高效计算,从而同时保证了快速训练和推理、高质量数据生成以及长序列处理能力。
Mamba 的选择机制通过动态调整模型参数来选择需要关注的信息,使模型参数能够根据输入数据动态变化。
Mamba 在实际应用中展示了卓越的性能和效率,包括:
- (1)快速训练和推理:训练时,计算和内存需求随着序列长度线性增长,而推理时,每一步只需常数时间,不需要保存之前的所有信息。通过硬件感知算法,Mamba 不仅在理论上实现了序列长度的线性扩展,而且在A100 GPU上,其推理吞吐量比类似规模的Transformer 提高了5 倍。
- (2)高质量数据生成:在语言建模、基因组学、音频、合成任务等多个模态和设置上,Mamba 均表现出色。在语言建模方面,Mamba-3B 模型在预训练和后续评估中性能超过了两倍参数量的Transformer 模型性能。
- (3)长序列处理能力:Mamba 能够处理长达百万级别的序列长度,展示了处理长上下文时的优越性。
Mamba 在硬件依赖性和模型复杂度上存在一定的局限性,但是它通过引入选择机制和硬件感知算法显著提高了处理长序列和信息密集数据的效率,展示了在多个领域应用的巨大潜力
ttt
在处理长上下文序列时,基于SSM 范式的架构(例如RWKV 和Mamba)通过将上下文信息压缩到固定长度的隐藏状态中,成功将计算复杂度降低至线性级别,有效扩展了模型处理长上下文的能力。
然而,随着上下文长度的持续增长,基于SSM 范式的模型可能会过早出现性能饱和。
- 例如,Mamba 在上下文长度超过16k 时,困惑度基本不再下降。
出现这一现象的原因
- 可能是固定长度的隐藏状态限制了模型的表达能力,同时在压缩过程中可能会导致关键信息的遗忘。
测试时训练
(Test-Time Training,TTT)范式提供了一种有效的解决方案。
- TTT 利用模型本身参数来存储隐藏状态、记忆上文;
- 并在每一步推理中,对模型参数进行梯度更新,已实现上文的不断循环流入
这个过程不同于传统的机器学习范式中模型在完成训练后的推理阶段通常保持静态的方式,TTT 在推理阶段会针对每一条测试数据一边循环训练一边推理
TTT 范式的预训练阶段,训练过程包含内部循环以及外部循环两个部分。
- 外部循环遵循传统的下词预测任务,通过自回归方式优化模型全局权重参数。
- 内部循环则是基于自监督方式来优化隐藏状态。
模型需要在每个时间步动态地更新隐藏状态,使其能够不断适应新的输入数据。这种动态更新的机制类似于一个独立的机器学习模型在每个时间步对输入进行训练和优化
与Transformer 相比,基于TTT 范式的模型具有线性时间复杂度,这对于处理长序列数据至关重要。
- 相较于基于SSM 的RWKV 和Mamba 架构,TTT 通过模型参数来保存上下文信息,能够更有效地捕捉超长上下文中的语义联系和结构信息。
因此,TTT 在长上下文建模任务中展现出卓越的性能,特别是在需要处理超长上下文的应用场景中。
未来,TTT 范式有望在超长序列处理任务中发挥重要作用。
ttt 替代自注意力层
将 TTT 有效应用于 few-shot 学习的几个关键要素:
- 在与测试时类似的合成任务上进行初始微调;
- 用于构建测试时数据集的增强型 leave-1-out 任务生成策略;
- 训练适用于每个实例的适应器;
- 可逆变换下的自我一致性(self-consistency)方法。
两种不同的 TTT 数据生成方式:
- 一是 in-context learning(ICL)格式;从给定的测试演示中创建 leave-1-out 任务
- 另一种是端到端格式。将每个 i/o 对视为一个单独的任务
实验环节,研究者在抽象与推理语料库(ARC,抽象与推理语料库)中对这些方法进行了评估。ARC 语料库收集了很多极具挑战性的 few-shot 视觉推理问题,被认为是测试 LM 泛化极限的理想基准。目前的大多语言模型在 ARC 上均表现不佳。
TTT 可以显著提高 LM 在 ARC 上的性能 —— 在 1B 模型上将准确率提高到原来的 6 倍,使用 8B 模型时也超过其它已发布的 SOTA 纯神经模型方法。
【2024-11-12】连OpenAI都推不动Scaling Law了?MIT把「测试时训练」系统研究了一遍,发现还有路
OpenAI 下一代旗舰模型的质量提升幅度不及前两款旗舰模型之间的质量提升,因为高质量文本和其他数据的供应量正在减少,原本的 Scaling Law(用更多的数据训练更大的模型)可能无以为继。此外,OpenAI 研究者 Noam Brown 指出,更先进的模型可能在经济上也不具有可行性,因为花费数千亿甚至数万亿美元训练出的模型会很难盈利。
从预训练来看,Scaling Law 可能会放缓;
但有关推理的 Scaling Law 还未被充分挖掘,OpenAI o1 的发布就证明了这一点。它从后训练阶段入手,借助强化学习、原生的思维链和更长的推理时间,把大模型能力又往前推了一步。
- 这种范式被称为「
测试时计算
」,相关方法包括思维链提示、多数投票采样(self-consistency)、代码执行和搜索等。
还有个新概念 —— 测试时训练
( Test-Time Training ,TTT),二者都试图在测试(推理)阶段通过不同的手段来提升模型的性能,但 TTT
会根据测试时输入,通过显式梯度步骤更新模型。
这种方法不同于标准微调,因为在数据量极低的环境中运行的 —— 通常是通过单个输入的无监督目标,或应用于一个或两个 in-context 标注示例的有监督目标。
详见站内: transformer 专题
Yan
【2024-7-11】 RockAI 推出 Yan 模型,放弃transformer架构, 探索类脑思路
改进点
- (1) transformer 换成 MCSD
- (2) 局部模态激活
- transformer架构: 问 1+1=?, 会激活所有参数, 算力消耗太大, 人脑不是这样
- 类脑机制: 人脑按听说看等功能分区, 根据任务激活对应区域,其它区域处于抑制状态, 这样功耗很低, 才20w, 相当于电灯泡
整体水平接近主流的transformer,部分性能超越
- 3b 模型, 大小5G,优化后,内存占用仅1G
- 端侧设备上运行,性能超过 transformer 30% 以上
问题
- 如何判断激活哪个区域? 仿真神经元选择算法, 一个单独的小型神经网络, 随着训练的进行,从随机选择迭代到针对性选择
- 训练上有什么技巧?
Yan 1.3
: 群体智能单元大模型
- 训练效率提升7倍、推理吞吐量提升5倍、记忆能力提升3倍
- 秒级影响、非transformer结构、端到端多模态、满足大部分端侧设备
- 国内能在手机cpu上运行LLM的公司不超过3家
现在大模型训练反常识:训练一个模型,花费的计算资源太多,有的甚至要启动核电站训练。
视频介绍
- 站起来了!国内这家AI公司用新技术挑战ChatGPT权威 RockAI联创邹佳思
OpenAI GPT 在attention路上深耕,并非唯一出路。
改进
- 量化?
- 文本模态上量化,能保留80-90%的效果,而图像、视频大幅度下滑
- 量化后,权重固定,无法再学习
国内大模型机会
- 基础创新: 弯道超车的机会,卡脖子问题
- deepseek 推出 MLA/O1复现
- RockAI(岩山科技) 目标:把attention拿掉; 国内能在手机上运行的LLM不超过3家, Yan 模型解决端侧推理资源开销大的问题
- 国内蹦出来一批LLM,原因是 Llama 开源了。。。META 计划闭源
- 人才要求: 数学+算法都强,且愿意坐冷板凳
- 应用创新
- 国内做应用很强
- 人才要求:交叉学科背景,如 懂医学+AI
斑马鱼
- 只有几百万神经元,但避障能力非常强,这对智能驾驶很有启发
- 还不清楚大脑神经有没有量子效应。 如果斑马鱼神经网络有量子效应,那么鱼脑计算效率肯定是高效的,这在需要投入多少算力可能有的参考。
机器人
- 宇树科技、智源,机器人行业还需要5年沉淀
图解
总结LLM各阶段优化方向