MEDUSA: Detailed Explanation of the Mechanism

MEDUSA is an acceleration framework designed to optimize the inference process for large language models (LLMs), specifically targeting the decoding phase in text generation tasks. Its core innovation lies in leveraging multiple decoding heads, which can simultaneously generate multiple candidate outputs, significantly reducing the time required for inference. Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads Challenges in Traditional Decoding In conventional autoregressive decoding, the process typically involves the following steps: ...

Posted on 2025-01-03 ·  In NLP ·  4 min read  · <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:-2px"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>

大模型创业前必须想清楚的问题

在开始大模型创业之前,首先应该想清楚下面五个问题,否则人无远虑,必有近忧。 自ChatGPT面世以来,有两种趋势主导着初创公司和初创投资的世界,可惜这两种趋势都是错误的。首先,有一大批初创公司计划使用大模型(ChatGPT或GPT4)为已知问题提供更好的解决方案。这就像说他们正在拿一些预先烘焙的蛋糕之一,再在上面加点糖,就能使其更美味。其次,这些初创公司正在烘烤大量这些蛋糕,投资者已经开始关注糖本身的差异化——他们现在强调位于大模型之上的技术层的深度。最近一些成功融资的案例大多在宣扬糖本身拥有不同颜色、口味或质地。 不幸的是,这还远远不够。提前要说明的是,绝不是说一个团队不能克服这些问题,而是说除非克服了它们,否则可能会陷入麻烦。 大模型的输出不可预测 生成式AI以其不可预测性而臭名昭著。OpenAI已经提供了一个参数(温度),用于控制模型的创造力。即使设置为零,甚至使用新的函数调用功能,模型仍然会输出不确定的结果。只需尝试一遍又一遍地询问ChatGPT相同的问题就会发现这个问题。 对于人类来说无所谓,但实际上,差异性表现出机器人的某种个性,这让它看起来更像人类。然而,对于计算机来说,这种差异性很难管理。这可能有很多原因:提示的细微变化,用户消息的某些边缘情况,甚至没有明显原因。 虽然大模型为解决原始应用程序提供了大量的动力,但团队在使用大模型时通常更忙于适配大模型的输入输出格式,而不是实际开发下游应用程序。曾遇到多个团队,在一周内完成了他们的首个完全基于大模型解决方案。然后,随着他们尝试扩展规模,以及难于处理的不可预测性,他们开始回归更为传统、结构化的方法来解决问题。每一次这样的逆转都将解决方案从大模型所承诺的强大力量中夺走。 大模型提供商下场自己实现应用 自2022年11月30日推出ChatGPT以来,以及随后推出GPT4,OpenAI已向其API添加了多个功能,如插件、JSON构建、函数调用等。从表面上看,“这使大模型更可预测了。”然而,你错过了重点—— OpenAI的使命是使大模型更易于为每个人访问。这是它计划开发AGI的方式。为此,它不断推出新版本的GPT(4是最新的版本),并不断为每个版本添加新功能。例如,自ChatGPT或GPT4推出以来的几个月里,OpenAI已添加了插件、函数调用、更好的“引导”控件以及与Whisper模型的集成。 每次添加和增强都使你一直在进行的创新变得不那么必要。实际上,我敢打赌,你或其他初创公司创新的大多数成功的东西都会以某种形式被添加到GPT中。他们并不是在做恶,他们只是忠于他们的使命。其他大模型提供商也是如此。换句话说,一旦你成功了,大模型就会复刻这件事,以便下一个人,包括你的客户,能够轻松地做你正在做的事情。 基于大模型的解决方案可能并不值得 大模型是一项令人惊奇的发明,它将改变技术创新的步伐。然而,它们在可预测性、幻觉等方面面临着无数问题。如果您将大模型应用为解决现有问题的新方法而不重新构想问题本身,那么这确实欠考虑。 即使有了基于大模型的解决方案,也需要清楚竞争是很激烈的。您不仅在与其他大模型解决方案竞争,而且这些解决方案的门槛变得越来越低,你不仅需要与OpenAI竞争,而且还与对于该问题已存在的所有解决方案竞争。 我们还要承认,当前的解决方案可能没有解决问题的效果那么好。但是,当前的解决方案可能已经以低成本完成了很好的工作。如果它运作良好,那么没有理由颠覆它。如果它运作不好,那么它在客户心目中已经创造了一个巨大的期望障碍,你的市场营销或销售周期必须克服。 因此,除非你重新定义问题或创造了一种没有参照的体验,否则请暂停你的想法。即使是Open AI,也先后尝试了GPT1、GPT2、GPT3,然后是GPT3.5,才能解决行业中的一些实际问题。许多其他公司,根本无法说服市场或资本。 大模型看起来像捷径,然而并不是 尽管GPT改变了一切,但实际上什么也没改变。总结一下:即使使用大模型,要构建一个成功的业务,你仍然必须像以前一样投资于产品、工程和科学创新。出于上述原因以及我在文章中引用的一系列原因,这对于工作流程集成、用户体验、控制、成本、倡导、客户品牌等来说是必要的。 当您以那个数量级进行投资时,您正在构建的解决方案不再是基于大模型的解决方案。相反,它是依赖于产品、工程和科学方面的这些创新的解决方案。换句话说,大模型只是你旅程中的一个同伴,并不是目的地。你仍然需要像在大模型之前那样努力工作,以创造可持续的竞争优势。 大模型存在严重的安全问题 最后,但丝毫不可忽视的是企业安全的概念。到目前为止,我们已经讨论了对生成式人工智能的控制的问题,这已经够糟糕的了。另一个重要问题是大模型处理的所有内容都需要传输到云端,这是大部分企业所不能容忍的。 像Open AI和Anthropic这样的大模型提供商对安全问题有合理且透明的政策。然而,这并非百分之百可靠;他们不能保证他们自己不会查看数据。这是信息安全的古老格言——一旦离开你的防火墙,你就真的无法控制了。 一些初创公司考虑的另一种选择是将专有的大模型考虑在其(或客户的)防火墙内。这确实是一个合理的选择,但现在大模型不再是易于使用的工具。除了在产品、工程和与你的领域相关的科学方面进行创新,你还不得不在大模型上进行创新,。 再次强调,这篇文章绝不是为了阻止在大模型领域创业或启动大模型项目的论点。这只是一个提醒——在你着手计划之前,一些值得深思的内容。

Posted on 2023-12-21 ·  In NLP ·  1 min read  · <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:-2px"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>

Phi-2: 小型语言模型的惊人威力

微软发布了Phi-2,这是一个拥有27亿参数的语言模型,展示了出色的推理和语言理解能力,在小于130亿参数的基础语言模型中表现出最先进的性能。在复杂的基准测试中,由于模型扩展和训练数据精选方面的创新,Phi-2能够匹敌或超越大约25倍更大的模型。 由于其紧凑的规模,Phi-2成为研究人员的理想平台,可用于深入研究机械解释性、安全性改进或在各种任务上进行微调实验。微软已将Phi-2纳入Azure AI Studio模型目录,以促进语言模型研究和开发。 Phi-2的关键技术 将语言模型的规模大幅增加到数千亿个参数已经解锁了一系列新兴能力,重新定义了自然语言处理的格局。一个问题仍然存在,即是否可以通过战略性的训练选择,例如数据选择,在较小的规模上实现这种新兴能力。 使用Phi模型的工作旨在通过训练能够在性能上与规模更大的模型媲美(但仍远离前沿模型)的SLMs来回答这个问题。在打破传统语言模型缩放规律的过程中,通过Phi-2获得的关键见解有两个: 首先,训练数据的质量在模型性能中起着至关重要的作用。这个观点几十年来一直存在,但通过专注于“教科书级别”数据将这一观点发挥到了极致,延续了之前的工作“只需要教科书”。全部训练数据混合包含了专门用于教授模型常识推理和一般知识的合成数据集,包括科学、日常活动和心灵理论等。研究员还通过根据教育价值和内容质量进行过滤的精心选择的Web数据来增加训练语料库。其次,使用了创新技术进行扩展,从13亿参数模型Phi-1.5开始,并将其知识嵌入到27亿参数的Phi-2中。这种规模化的知识传递不仅加速了训练收敛,还显示出Phi-2基准测试分数的明显提升。 训练细节 Phi-2是一个基于Transformer的模型,具有下一个单词预测目标,使用了1.4T个标记进行训练,通过多次在合成和Web数据集上进行NLP和编码的混合。Phi-2的训练在96个A100 GPU上花费了14天。Phi-2是一个基础模型,没有经过通过人类反馈的强化学习对齐(RLHF)的调整,也没有进行指令微调。尽管如此,观察到在毒性和偏见方面,与经过对齐的现有开源模型相比,Phi-2表现更好(见图3)。这与Phi-1.5中看到的情况一致,这归因于量身定制的数据策划技术。 Phi-2 评估 以下是对Phi-2在学术基准上的性能总结,与流行的语言模型进行比较。基准涵盖了多个类别,包括 Big Bench Hard(BBH)(使用CoT进行3次射击),常识推理(PIQA、WinoGrande、ARC易和挑战、SIQA),语言理解(HellaSwag、OpenBookQA、MMLU(5次射击)、SQuADv2(2次射击)、BoolQ),数学(GSM8k(8次射击)),以及编码(HumanEval、MBPP(3次射击))。 仅有27亿参数的Phi-2在各种综合基准上超越了7B和13B参数的Mistral和Llama-2模型的性能。值得注意的是,在多步推理任务,如编码和数学上,Phi-2在性能上超过了25倍更大的Llama-2-70B模型。此外,尽管规模较小,Phi-2在性能上也与最近宣布的Google Gemini Nano 2相匹敌或更胜一筹。 当然,模型评估存在一些挑战,许多公共基准可能会泄漏到训练数据中。对于Phi-1已进行了详尽的净化研究,以排除这种可能性,详情可参见“Textbooks Are All You Need”。秉持这一精神,还使用了几个微软内部专有的数据集和任务评估了Phi-2,再次将其与Mistral和Llama-2进行了比较。研究员观察到相似的趋势,即在平均水平上,Phi-2优于Mistral-7B,而后者优于Llama-2模型(7B、13B和70B)。 除了这些基准测试之外,微软还对研究社区常用的提示进行了广泛测试。

Posted on 2023-12-14 ·  In NLP ·  1 min read  · <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:-2px"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>

Textbooks Are All You Need 精要

微软最近提出了一个有趣的方法,即使用合成教科书来教授模型,而不是通常使用的大规模数据集。 论文原文:https://arxiv.org/abs/2306.11644 这篇论文介绍了一个名为Phi-1的模型,它完全是在一本定制的教科书上进行训练的。研究人员发现,对于某些任务,这种方法和使用大量数据进行训练的规模更大的模型一样有效。 标题"Textbooks Are All You Need"巧妙地引用了人工智能领域中众所周知的概念“Attention is All You Need”。但在这里,他们颠覆了这个想法——与其专注于模型体系结构本身,不如展示像在教科书中找到的高质量策划训练数据的价值。 论文的关键思路:一个经过深思熟虑、设计良好的数据集对于教授人工智能模型可以和庞大而缺乏焦点的数据堆一样有用。因此,研究人员制作了一本合成教科书,精心为模型提供所需的知识。 这基于教科书的方法是一个引人入胜的新方向,可以有效地训练人工智能模型以在特定任务上表现卓越。它强调了对培训数据的策划和质量的重要性,而不仅仅是数据规模的强大。 主要观点 尽管Phi-1模型比GPT-3等模型要小得多,但在Python编码任务中表现出色。这表明在人工智能模型方面,规模并非一切。 研究人员使用合成教科书进行训练,强调了高质量、经过精心策划的数据的重要性。这种方法可能会改变我们对于培训人工智能模型的看法。 通过使用合成的练习和解决方案对Phi-1模型进行微调,其性能显著提高,表明有针对性的微调可以增强模型在特定任务之外的能力。 讨论 Phi-1模型具有13亿个参数,相对于拥有1750亿参数的GPT-3等模型来说,规模较小。尽管如此,Phi-1在Python编码任务中表现出色,突显了培训数据的质量对于模型的重要性,甚至可能比模型规模更为关键。 研究人员使用合成教科书来训练Phi-1模型,该教科书是使用GPT-3.5生成的,包含了Python文本和练习。使用合成教科书强调了在培训人工智能模型时高质量、精心策划数据的重要性。这一方法有可能将人工智能培训的焦点从创建更大模型转向策划更好的培训数据。 有趣的是,通过使用合成的练习和解决方案对Phi-1模型进行微调,其性能显著提高。这种改进并不仅限于其特定训练任务。例如,模型使用外部库(如pygame)的能力得到改善,尽管这些库并未包含在训练数据中。这表明微调可以增强模型在特定训练任务之外的能力。

Posted on 2023-12-13 ·  In NLP ·  1 min read  · <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:-2px"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>

检索增强生成(RAG)简介

检索增强生成(Retrieval-Augmented Generation,简称RAG)是一种新的自然语言处理(NLP)方法,它将预训练的参数化和非参数化记忆相结合,旨在提高知识密集型NLP任务的性能。本文将探讨RAG框架及其在NLP领域的潜在应用。 大型预训练语言模型(如BERT和GPT-3)在许多NLP任务上取得了令人瞩目的成果。然而,当涉及到访问和操作外部知识时,这些模型存在局限性。虽然它们可以编码和解码自然语言文本,但它们缺乏推理世界和利用外部知识源的能力。 这对于知识密集型NLP任务是一个重要的限制,例如问答和对话生成,这些任务需要访问大量的外部知识。这些任务的现有方法通常涉及基于检索的方法,这些方法依赖于外部知识源来检索相关信息,或者生成方法,这些方法使用预训练的语言模型来生成响应。 RAG框架将这两种方法结合起来,通过将预训练的seq2seq transformer模型与Wikipedia的密集向量索引相结合,使用预训练的神经检索器来访问外部知识源。检索器提供与输入条件相关的潜在文档,seq2seq模型则在这些潜在文档和输入的条件下生成输出。 RAG的关键创新在于预训练参数化和非参数化记忆的结合。参数化记忆是预训练的seq2seq模型,它提供了闭书方法的生成灵活性。非参数化记忆是Wikipedia的密集向量索引,它提供了开书检索方法的性能。 RAG模型可以在任何seq2seq任务上进行微调,生成器和检索器都可以同时学习。RAG模型可以训练生成答案,即使可以提取答案。包含有关答案线索但不包含答案的文档仍然可以对生成正确答案做出贡献,这是标准提取方法所不可能的。 RAG模型在NLP领域有重要的潜在应用。其中一个潜在应用是在聊天机器人和虚拟助手中,RAG模型可以用于提供更复杂和有效的人机交流。RAG模型还可以用于信息检索系统,可以用于提供更准确和相关的搜索结果。 RAG模型的另一个潜在应用是在教育领域。RAG模型可以用于提供个性化的学习体验,学生可以提出问题并获得适合其个人需求的答案。RAG模型还可以用于提供书面作业的自动反馈,为学生提供比目前可能的更详细和有用的反馈。 总之,检索增强生成是一种有前途的自然语言处理方法,它将闭书方法的生成灵活性与开书检索方法的性能相结合。RAG模型在许多领域具有重要的潜在应用,包括聊天机器人、虚拟助手、信息检索和教育。随着NLP领域的不断发展,RAG模型在实现人机交流方面将发挥越来越重要的作用。

Posted on 2023-12-06 ·  In NLP ·  1 min read  · <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align:-2px"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>