大型语言模型中的链式思维(CoT)提示及Python和PyTorch代码实现
2024/10/10 21:03:17
本文主要是介绍大型语言模型中的链式思维(CoT)提示及Python和PyTorch代码实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Chain-of-Thought (CoT) 提示法是一种在大型语言模型中使用的技巧,生成中间推理步骤来解决复杂问题。CoT 不是直接提供答案,而是将任务分解成更小的逻辑部分,模仿人类解决问题的方式。这种方法在需要深度推理的任务中显著提高了性能,例如算术、常识推理和符号任务。例如,在 PaLM 模型中应用 CoT 提示,帮助在 GSM8K 数学题目基准上达到了最先进的表现。CoT 提示在足够大的模型中特别有益,其有效性在这种规模的模型中显现出来,使这些模型能够处理更复杂的多步骤问题,而标准提示难以应对。
思维链?
Chain-of-Thought (CoT) 指引是一种为增强大型语言模型(LLM)的推理能力而开发的新技术。传统的大型语言模型,如 GPT-3 及其后续版本,在自然语言理解和生成方面表现出色。然而,它们处理复杂推理任务的能力仍然有限,这一直是一个问题。最近的进展引入了 Chain-of-Thought 指引,通过这种方法改善这一状况。这种技术在数学问题解决、常识推理和符号推理等领域中获得了广泛应用。
本质上,Chain-of-Thought(CoT)提示方法通过引导语言模型逐步推理而不是直接给出答案来工作。这类似于人类解决问题的方式:人类不会直接猜答案,而是将任务分解为中间步骤,每个步骤都建立在前一个步骤的基础上,最终得出结果。例如,在解决数学问题时,人类可能会先解决数学问题的小部分(如执行减法或乘法操作),然后得出最终答案。类似地,CoT 提示方法鼓励大型语言模型模仿人类解决问题的方法,通过提示模型生成中间推理步骤,这些步骤称为“思考链”。
CoT提示法的科学突破基于LLM设计和架构中的几个基础原则,包括令牌预测机制、神经缩放法则和少量样本学习法。要理解链式思维提示法如何提高模型性能,理解这些底层机制如何与语言模型的推理能力相结合至关重要。
语言模型,特别是像GPT-3这样的基于变压器架构的模型,旨在预测序列中的下一个标记。该模型通过选择最可能的下一个单词(或标记)来生成文本,其选择基于前一个单词的上下文。这种机制被称为自回归建模,在生成流畅且上下文适当的文本方面非常有效,但在推理方面则显得力有不逮。对于简单的任务——如生成对事实性问题的回答或继续叙述——直接的序列预测方式表现良好。然而,对于需要深层次推理或多步问题解决的任务,标准的语言模型往往失败,特别是在没有生成中间步骤时。
此限制在模型仅通过输入-输出对(传统的小样本学习方法)进行提示时更加严重,这些提示指示模型直接给出答案而无需通过中间步骤进行推理。尽管语言模型的规模已经大幅增加(例如,GPT-3有1750亿参数,PaLM有5400亿参数),仅仅增加模型规模并不能根本解决推理难题。事实上,正如研究中所指出的,即使在适当增大模型的情况下,大型模型在推理任务上的表现改善不大。
Chain-of-Thought(CoT)提示法背后的关键创新之处在于它能够通过结构化的输入提示“激发”大规模语言模型的推理能力。通过将输入提示结构化,不仅包含问题和解决方案,还包含中间推理步骤,CoT 让模型可以将复杂任务分解成可管理的部分。这种分解对于解决多步骤问题非常重要,尤其是在需要中间计算或推理的领域,例如算术和符号推理中。
从技术角度来说,CoT 通过在提示中嵌入一些推理步骤的示例来工作。这些示例由三元组组成,格式如下 <输入, 思维链, 输出>,其中思维链(CoT)包括自然语言解释或逻辑上通向最终答案的中间步骤。当模型接触到这样的示例后,它会学会模仿这种结构,为新的输入生成自己的推理链。CoT 方法利用了模型的自然语言处理能力,以一种流畅且易于理解的方式构建这些中间推理步骤。
思维链推理过程
例如,考虑下面的数学问题:“罗杰有5个网球。他又买了2筒网球。每筒有3个网球。他现在总共有多少个网球?”通过CoT提示方法,模型会被引导首先进行单独的计算,例如“罗杰开始有5个网球。2筒网球每筒有3个网球,共6个网球。”最后得出答案是5 + 6 = 11。
支持链式思维提示法的实证证据非常稳健。在实验中,链式提示法在算术推理(GSM8K数据集)、常识推理(CSQA和StrategyQA)和符号推理(硬币翻转测试)等多个基准测试中显著优于标准提示法。在某些任务上,传统模型难以胜任,而链式提示法则能将性能提升一倍,表明这种技术对LLM解决问题能力的影响显著。
有趣的是,研究者发现大型语言模型在使用链式思维提示时会出现一种特性,即“涌现特性”。这种特性通常只在参数达到数十亿级别的模型中出现。要让逐步推理提示起作用,模型需要达到一定规模,能够理解和生成连贯的中间推理链。然而,较小的模型在这一任务上往往表现不佳,因为它们会生成流畅但逻辑混乱的推理链,导致错误的答案。
这种在大规模上推理的能力是一项深刻的发现,因为它意味着模型的规模是解锁更复杂的认知功能(如推理)的关键因素,而这些功能是小型模型无法实现的。围绕CoT提示的研究强调了这一点,即参数少于100亿的模型在使用推理链提示时往往没有明显改进,而参数超过这一门槛的模型,如GPT-3(175亿)和PaLM(540亿),在推理任务中表现出显著的提升。
2022年4月,谷歌研究团队推出了Pathways语言模型(PaLM),这是一个拥有5400亿参数的模型,在自然语言处理(NLP)领域设立了新的基准。在PaLM之前,GPT-3是非常著名的语言模型之一,以出色的自然语言生成能力著称。然而,PaLM在数百个NLP基准测试中均取得了最先进的成果,超过了之前的模型的表现。
PaLM 基于 Transformer 架构,采用仅解码器的架构,其中每个时间步可以参考自身及之前的所有步骤。该模型有三种不同的规模,分别是最大的包含 5400 亿个参数,并在 7800 亿个高质量文本令牌上进行训练。
训练数据集是一个多样化的混合,包含50%的多语种社交媒体对话,27%的多语言过滤后的网页,13%的英文书籍内容,5%的GitHub上的代码,4%的多语言维基百科文章,以及1%的英文新闻报道。
PaLM 使用 Google 的 Pathways 系统在两个通过数据中心网络连接的 TPU v4 集群上进行了训练。每个集群由 3,072 个 TPU v4 芯片组成,连接了 768 台主机,并且训练利用了模型和数据的并行性,并且不需要流水线。有关模型和训练基础设施的更多详细信息,请参阅相关研究论文。
这个模型有5400亿参数
在进行NLP的推理任务时,通常需要进行多个步骤的算术或常识逻辑推理。例如,在算术推理的任务中可能包括……
- 示例 1:
- 输入: “Roger 有 5 个网球。他又买了 2 罐网球。每罐有 3 个网球。现在他有多少个网球?”
- 答案: “所以他现在总共有 11 个网球。”
类似地,常识推理可能涉及这样的情况:
- 示例 2:
- 输入: “肖恩急着回家,但红绿灯变成了黄色,他被迫怎么做?”
- 答案选项: (a) 慢慢来,(b) 磨蹭,© 减速,(d) 大海,(e) 慢下来
- 答案: “答案是 (e) 慢下来。”
在PaLM的论文中,作者介绍了链式思维指引来增强推理任务的准确性。该技术是在问题和最终答案之间加入手动编写的中间推理步骤,采用少量样本的学习方法。通过为几个示例提供这些推理步骤的过程,模型因此能够更好地应对多步骤推理任务。
神经网络已知会记住一部分训练数据,这种现象通常与过拟合有关。论文指出,较大的模型比较小的模型更容易记住更多的训练数据。具体来说,那些只出现过一次的例子比多次出现的例子更有可能被记住。这表明随着模型的增大,它更可能记住训练数据集中罕见的或不常出现的例子。
链式思维引导能帮助提升语言模型的推理能力,具有几个关键优势。
1. 分解多步问题:链式思考提示使模型能够将复杂的多步问题分解为更易处理的中间步骤。这种方法让模型可以为需要更复杂推理的问题分配更多计算资源。
2. 模型行为可解释性:思维链为模型如何得出特定答案提供了更清晰、更易理解的视角。它帮助识别推理过程并指出潜在的错误点,不过,完全理解支撑这些答案的模型运算仍是一个难题。
3. 多任务适应性:链式思维提示具有广泛的适用性,可以应用于各种任务,包括数学应用题、常识判断和符号处理。它可以应用于任何人类通过语言推理解决的任务。
4. 大型模型中的链式思维推理的易诱发性:通过在少量样本学习示例中加入此类推理序列的例子,可以在大型预训练语言模型中轻松触发链式思维推理。这使得它成为提升现成的语言模型推理能力的有效方法。
注:思维树提示是指一种利用思维树进行思考引导的方法。
思维链条
思维之树(ToT)通过扩展链式思维提示的概念,引入更复杂的树搜索技术,从而改进了大型语言模型(LLMs)的提示方式。这种方法使模型能够探索多条潜在的推理过程,通过状态评估和回溯确保更准确的结果。在简单任务上的实验表明,与传统的提示方法和链式思维提示方法相比,该方法取得了显著的改进效果。
大型语言模型,特别是解码器模型,是顺序生成文本的,一次生成一个标记。当它们开始生成答案时,它们并不总是知道如何合理地结束自己的推理。在选择下一个词(如采用贪心解码)时,它们可能会走错路,并且往往难以从错误中恢复过来。然而,在生成初步回应后,可以通过提示让它们检查自己的答案,从而实现自我纠正。
这是思想树机制发挥作用的地方。它利用了思维链的提示方法,但允许模型在推理过程中生成多个潜在的“初步想法”。从这些想法中,模型会选择最有潜力的一个。一旦找到最佳的初步想法,它会为下一步思维链生成替代选项。就像人类推理一样,这个过程需要时间,模型会被多次调用。不准确或错误的答案会被剔除,确保最终结果更加可靠和准确。
在Chain-of-Thought(CoT)提示的背景下,算术推理指的是模型通过将其分解为一系列逻辑步骤来解决多步骤的算术问题的能力。传统上,大型语言模型在算术任务方面通常表现不佳,尤其是那些需要按照特定顺序执行多个操作的词题。然而,CoT提示通过引导模型完成解决这些类型问题所需的中间步骤,使其在这一领域表现出色,就像人类解决数学问题一样。
在使用CoT解决算术问题时,模型被提示显式生成中间推理步骤,这些步骤最终导向解决方案,相比之下,不是直接给出答案。这个过程类似于人类解决数学问题的自然方法,即拆分问题为更小的部分,逐一计算,最后合并结果。例如,对于这样的问题:“罗杰有5个苹果,他又买了7个,然后送出了4个。他现在有多少个苹果?”时,CoT提示鼓励模型一步一步地解决问题:
- “罗杰开始有5个苹果。”
- “他又买了7个,所以他现在有5 + 7 = 12个苹果。”
- “他送走了4个苹果,所以他现在有12 - 4 = 8个苹果。”
- “所以他最后有8个苹果。”
这种逐步推理过程对于确保模型不遗漏或混淆任何步骤至关重要。
算术思维
逐步推理提示(CoT)已经被证明可以显著提升大型模型在算术推理任务中的表现。例如,在像GSM8K这样的数据集,该数据集包含数学应用题的基准测试中,像PaLM(540B)这样的经过逐步推理提示增强的模型达到了目前的最佳表现。这些模型能够正确理解和解决需要多个算术步骤的问题,甚至超过了那些专门针对这些任务进行微调的模型。这种改进在那些需要一系列推理步骤,而不仅仅是简单答案的复杂问题上表现尤为突出。
- 错误减少:通过鼓励模型详细列出推理过程中的每一步,CoT有助于减少一次性回答问题中常见的错误,这种错误可能是因为模型误解了问题或遗漏了步骤。
- 理解加深:CoT通过要求模型清晰地解释计算过程中的每一部分来加深对问题的理解。这也有助于处理更复杂的算术问题,这些问题可能涉及多个操作或复杂结构。
- 可解释性:CoT提示在算术推理中的一个主要优点是提供了清晰的过程。逐步分解让使用者更容易跟随模型的思维过程,从而更容易识别错误或误解。
总之,通过CoT提示,算术推理能力变得更加强大,使大型语言模型能够更准确且更易理解地解决复杂的多步数学问题。通过将问题分解为几个步骤,CoT显著增强了模型解决算术难题的能力,使其成为提高AI系统数学能力的强大工具。
在链式思维(CoT)提示的背景下,常识推理指的是大型语言模型具备处理需要基本日常知识的任务的能力,这些任务通常涉及解读物理或社会情境、推导逻辑推断以及连接不同信息片段。传统语言模型在处理这些任务时有时会遇到困难,尤其是在需要多步骤推理或概念之间建立联系的情况下。然而,CoT提示通过明确地引导模型生成中间推理步骤来增强其解决常识性推理问题的能力,从而产生更准确和易于理解的结果。
在常识推理中,CoT提示通过将问题拆解为更小的推理步骤来操作。模型不会仅根据输入立即给出答案,而是被提示详细说明其思考过程。例如,如果模型被问到:“萨米想去一个有很多人的地方。他可能会去哪里?(a)沙漠,(b)赛道,(c)人多的地方,(d)公寓”,CoT提示会引导模型一步步推理如下:
- 初始理解 :萨米想找个有很多人的地方。
- 评估选项 :沙漠和赛道上人都不多。公寓里虽然有人,但相比其他地方也不多。
- 结论 :人口多的地方人很多,所以答案是©人口多的地方。
这个过程将推理过程分解为几个中间步骤,使模型更易于处理需要进行推理而不仅仅是回忆事实的任务。CoT方法确保模型不会忽略关键的逻辑联系,从而确保推理更加稳健和准确。
链式思考提示 (CoT)(链式思考提示,即CoT,是一种引导思考过程的方法。)
- 处理复杂场景:常识推理通常涉及多个逻辑步骤,它需要结合事实或推断,理解不同概念之间的关系。CoT提示帮助模型通过确保推理过程中的每一步都明确来导航这些任务。这种结构化的做法使模型更容易应对复杂场景,例如推断因果关系、解读人类意图或预测物理结果。
- 提高准确性:CoT提示通过鼓励模型仔细解决每个问题的每个组件,而非依赖表面的关联来减少错误。例如,当被问及涉及多个条件或步骤的问题时,CoT帮助模型仔细考虑每个元素,从而得出更准确的预测。
- 可解释性和透明度:CoT提示在常识推理中的另一个关键优势是,它增加了模型响应的可解释性。由于模型需要生成中间步骤,用户可以追踪模型得出结论所使用的逻辑过程。这种透明度在使用AI的领域中至关重要,其中推理背后的决策与决策本身同样重要。
- 适用于不同领域:常识推理任务涵盖广泛的主题,从理解人类行为到推断物理环境的状态。CoT提示具有高度的灵活性,使模型在各种常识推理领域表现更好,包括理解社会互动、因果关系和空间推理。
在链式思维(CoT)提示的背景下,符号推理指的是模型执行涉及抽象符号、规则和结构的逻辑运算和推理任务的能力。与算术或常识推理不同,符号推理要求模型处理通常涉及形式逻辑、代数或具有明确规则的操作的任务——这些任务对人类来说通常很简单,但这些任务对机器学习模型来说一直很难稳定处理。
Chain-of-Thought 提示法增强了大型语言模型 (LLMs) 的符号推理能力,通过鼓励它们将问题分解成一系列易于管理的步骤,帮助它们按照规则或逻辑步骤得出正确的结论。
符号推理涉及的任务包括在变量上执行操作、处理符号序列或遵循抽象规则等。例如,考虑这样一个问题:“将单词‘Apple’和‘Banana’的最后一个字母连接在一起。”正确答案是将‘Apple’中的‘e’和‘Banana’中的‘a’连接在一起,结果为“ea”。如果没有逐步推理(CoT),模型可能会犯简单的错误,例如误解任务或跳过某些步骤。但是,使用逐步推理提示,模型会一步步明确地思考。
- 第一步: “‘Apple’ 的字母是 ‘e’。”
- 第二步: “‘Banana’ 的字母是 ‘a’。”
- 第三步: “把 ‘e’ 和 ‘a’ 连起来,就成了 ‘ea’。”
- 最后: “答案是 ‘ea’。”
CoT (Chain of Thought) 促使模型清晰地展示其推理过程,帮助其避免因省略中间步骤或未能理解规则而产生的错误。
符号逻辑
- 抽象问题的分解:CoT提示在符号推理中的一个主要优势是它能够将复杂的抽象任务分解为一系列操作。这一点尤为关键,当任务需要遵循一系列规则或逐步操作符号时。例如,在涉及代数操作或逻辑谜题的任务中,CoT确保模型能够有条不紊地处理问题的每个部分。
- 超越训练数据的泛化:符号推理经常涉及与自然语言任务不同的任务,这些任务是LLMs训练时所涉及的。CoT提示通过鼓励模型使用推理技能而不是仅仅依赖于记忆的模式来帮助模型超越训练数据。这使得模型在涉及符号操作的任务中表现更好,例如解决谜题或进行逻辑推断,这些任务在模型直接训练过程中并未直接遇到。
- 处理更长的序列:CoT提示还促进了模型处理更长推理序列的能力,特别是在域外(OOD)场景中,例如,如果模型是在两步的符号推理任务上训练的,CoT允许它推广到涉及更多步骤的任务——例如,连接四个单词的最后字母,而不仅仅是两个单词的。
受益于CoT提示的符号推理任务包括:
- 逻辑推理题:模型需要遵循一系列逻辑步骤以得出结论。
- 字符串操作:如连接、反转或修改符号或字母等任务。
- 状态追踪问题:例如,确定一系列硬币翻转后的结果,每次翻转都会改变硬币的状态。
例如,在一个抛硬币的任务中,模型可能面临这样一种情况:硬币开始时是正面朝上,经过一系列抛掷后,判断硬币是否仍然是正面朝上或反面朝上。CoT提示会引导模型逐次思考每次抛掷,从而得出正确的答案。
Chain-of-Thought 提示技术的应用潜力非常大。在教育技术领域,增强的 CoT 大型语言模型可以作为强大的辅导工具,通过解释中间步骤来帮助学生解决多步骤的问题。在商业和金融界,Chain-of-Thought 提示可用于生成更准确的预测和分析,尤其是在需要逻辑推理或多方面分析的问题上。
此外,基于 CoT 的提示开启了人工智能可解释性的新可能性。由于 CoT 用自然语言生成中间推理步骤,模型的推理过程变得更加透明和容易调试。研究人员和从业人员可以检查模型的中间步骤来找到推理错误的位置,这将进一步促进开发既准确又易于解释的人工智能系统。
尽管Chain-of-Thought提示具有潜力,但它并非没有局限性。主要挑战之一在于,虽然CoT提示有效,但它的计算成本高昂。生成逐步推理增加了模型需要处理的令牌数量,进而需要更多的计算资源和时间。虽然CoT可以提高推理的准确性,但它并非绝对可靠。特别是在任务超出了模型训练范围时,模型仍然可以生成错误或不合逻辑的推理链。
另一个限制是,为了有效进行链式推理提示,需要依赖于非常大的模型。正如之前提到的,模型必须达到一定的规模才能让链式推理有效工作,这使得该技术无法应用于较小的、资源较少的模型。这使得链式推理提示仅限于那些拥有大规模计算资源的组织使用。
最后,模型生成的推理链的质量会根据任务的不同而有所变化。虽然在算术和结构化推理任务方面,链式推理提示表现良好,但在更抽象的推理任务中,其有效性仍然是一个未解决的问题。需要进一步的研究来探索如何调整或改进链式推理,以处理主观或创造性的推理任务。
简洁的思维链(CCoT)是一种用于大型语言模型(如GPT-3.5和GPT-4)中的新型提示工程技术,旨在在提高效率的同时保持解决问题的准确性。该技术结合了两种已确立的提示工程技术:思维链(CoT)提示和简洁提示。为了更好地理解CCoT的工作原理及其影响,让我们分解这些概念及其背后的机制,让我们看看CCoT是如何运作的。
另一方面,简洁的提示旨在减少LLM响应的冗长。它指导模型生成尽可能简洁的答案,同时不牺牲正确解决方案所需的重要推理和内容。简洁提示的主要优势在于减少了生成的字符数量,这直接与降低计算和财务成本相关。简洁的提示还有助于减少LLM系统的能耗,并通过缩短生成答案的时间来提高模型的响应速度。
然而,简洁的指令有时可能降低LLM的性能,特别是在需要更详尽推理步骤的任务中,比如中间步骤对准确度至关重要的问题解决任务。
注:简洁思维链(CCoT)是指一种简洁明了的思维链条。
Concise Chain of Thought (CCoT) 结合了 CoT 分步解决问题的思路和简洁高效的提示方法。它的目标是通过让模型“分步骤思考”并“简洁地解释”来实现同时提供两种方法的优势。
这种方法确保模型经历推理过程,但采用最简短的方式,仍然传达所有必要的步骤。在提示时,向模型提供少量示例问题及其答案,但与冗长的CoT示例不同,CCoT中的少量示例则是简明扼要的。
思考过程
CCoT的工作机制相对简单。当向一个大规模语言模型提示CCoT时,它会同时收到两条指令:
- 分步推理:模型被指示将问题分解为一系列逻辑步骤,确保问题的每个部分都被仔细分析。
- 简洁明了:除了要求详细推理之外,模型还被要求在解释其推理时要简洁明了。目标是去除所有不必要的冗余,同时保持逻辑推理过程的完整性。
提示通常以结合这两种指令的方式来构建。比如说,提示可能会这样说:“一步一步地思考来解决这个问题,但解释时要简明扼要。”
在一项比较(Chain-of-Thought 提示,简称 CCoT)与(标准思考过程提示,简称 CoT)的研究中,研究人员发现,将GPT-3.5和GPT-4的平均响应长度显著减少了约48.70%,而没有显著降低大多数任务的解题表现。例如,GPT-4在多个问题领域中的表现使用链式思考时几乎与使用标准详尽的思考过程时相同,这表明链式思考在不牺牲准确性的情况下有效地缩短了响应长度。
然而,该研究确实发现,某些任务在遵循简洁的要求时产生了负面影响。特别是,数学问题在使用GPT-3.5时似乎因简洁性要求而受到影响,导致准确率降低了27.69%。这表明某些类型的推理解释,特别是在需要高精度的领域,比如数学,可能需要更详细的解释以维持性能。有趣的是,GPT-4在这些任务上却未表现出类似的性能下降,表明更先进的模型可能更适合处理所有类型任务的CCoT。
- 减少令牌成本:CCoT的主要优势之一是减少了令牌的使用量,这意味着使用如GPT-3.5和GPT-4这样的按令牌计费的模型的成本会减少。CCoT平均每令牌成本降低了22.67%,使用户在使用大型语言模型(LLMs)解决问题时更经济。
- 更快的响应:通过缩短响应长度,CCoT减少了生成答案所需的时间。这提供更快的响应而无需冗长的解释,从而提升用户体验。
- 效率而不显著损失性能:在大多数问题领域中,尤其是对于GPT-4,减少冗长并没有显著降低准确性。这意味着用户可以在不损失答案质量的情况下节省成本和时间。
虽然CCoT是一种有前景的技术,但它也有一些局限性:
- 特定领域中的性能惩罚:如在GPT-3.5处理数学问题的例子中所示,某些任务可能需要更多的详细解释来实现准确的推理。因此,CCoT可能并不适合每一种问题类型,尤其是那些需要详细推理步骤以避免错误的任务。
- 依赖于模型的复杂性:更先进的模型,如GPT-4,处理CCoT的效果更好,而早期版本如GPT-3.5则相对较弱。这表明CCoT的有效性可能取决于模型的架构和能力。
- 跨模型的泛化能力:CCoT的有效性主要在GPT模型上进行了测试。它在其他模型上的表现如何,比如专有或开源的LLM,仍需进一步研究。
简洁的思维链(CCoT)是一种有价值的提示工程技术,适用于大型语言模型,它在解决问题的任务中提供了效率和准确性的平衡。通过将逐步推理和简洁表达相结合,CCoT降低了成本并缩短了响应时间,同时在大多数情况下保持了高性能。虽然某些任务可能因过于简洁而受到影响,特别是在早期版本如GPT-3这样的模型中,更先进的模型,如GPT-4,展示了CCoT在更广泛的应用中的潜力。
这里是如何使用Hugging Face模型构建一个基本的推理管线来进行链式思维(CoT)推理过程。我们将使用Hugging Face的transformers
库来实现,该模型可以利用链式思维提示来处理推理任务。
- 安装所需库:如果尚未安装,请先安装
transformers
和torch
。 - 导入必要的模块:我们需要从Hugging Face的
transformers
包中导入AutoModelForCausalLM
和AutoTokenizer
。 - 加载模型和分词器:从Hugging Face模型库中加载适合的LLM模型,用于推理任务。
- 定义输入提示:定义一个包含嵌套链式思考的输入提示。
- 生成输出:使用模型进行推理,根据提示中的思维过程生成答案。
- 打印输出:显示模型的推理过程及最终输出结果。
# 步骤 1:安装必要的库(如果未安装,请取消注释) # !pip install transformers torch # 步骤 2:导入所需的模块 from transformers import AutoModelForCausalLM, AutoTokenizer import torch # 步骤 3:加载模型和分词器 # 您可以选择任何具备推理能力的模型(如 GPT-3、GPT-4 类型的模型)。这里我们使用 GPT-NeoX。 model_name = "EleutherAI/gpt-neox-20b" # 您也可以使用其他模型,如 'gpt-3.5-turbo' 等。 tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) # 步骤 4:定义包含推理步骤的输入提示 prompt = """\ Q: 有3个苹果,你拿走2个。现在你有多少个苹果? 让我们一步一步地思考。 首先,总共有3个苹果。 然后,你拿走了2个苹果。 所以,你拿走了2个苹果。 因此,答案是2。 A: 2 Q: 如果一列火车在下午3点离开车站,以每小时60英里的速度行驶,到下午6点它会行驶多远? 让我们一步一步地分析。 首先,火车从下午3点到下午6点行驶了3个小时。 每个小时,它行驶60英里。 因此,在3个小时内,它会行驶60 * 3 = 180英里。 因此,到下午6点,火车会行驶180英里。 A: 180 Q: 如果一家店卖一打鸡蛋的价格是3美元,那么8打鸡蛋的价格是多少? 让我们一步一步地解决。 首先,一打鸡蛋的价格是3美元。 因此,8打鸡蛋的价格是8 * 3 = 24美元。 因此,8打鸡蛋的价格是24美元。 A: 24 Q: 约翰的兄弟是他的姐妹数量的两倍。他的姐姐安的兄弟数量与她的姐妹数量相同。这个家庭里有几个兄弟和姐妹? 让我们一步一步地推理。 """ # 步骤 5:对输入提示进行编码并生成模型的回复 inputs = tokenizer(prompt, return_tensors="pt").to("cuda" if torch.cuda.is_available() else "cpu") output = model.generate(**inputs, max_length=300, do_sample=False) # 步骤 6:解码生成的回复 generated_text = tokenizer.decode(output[0], skip_special_tokens=True) # 步骤 7:打印结果 print(generated_text)
解释:
- 提示结构:通过提问,然后逐步分解解决方案并提供答案的方式,在提示中反映了链式思维推理(CoT)。
- 模型选择:以
EleutherAI/gpt-neox-20b
为例。您可以根据需要为推理任务选择更合适的模型,例如OpenAI的GPT-4或其他在Hugging Face上可用的模型。 - 推理:模型处理提示并生成相应的回答,在每一步推理中模仿,最终得出答案。
- Python 3.x
- Hugging Face 的
transformers
和torch
库。
- 如果模型在您的用例中表现不佳,可以尝试在特定推理数据集上进行微调。
- 优化提示以提升特定推理任务的表现。
大语言模型参加测试时为什么带了记事本?
因为它需要一个思考链条来保持与答案的链接!😄
这篇关于大型语言模型中的链式思维(CoT)提示及Python和PyTorch代码实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识