目录
大模型推理实现最常用方法——提示工程(Prompt Engineering)
大语言模型的概念
大语言模型(英文:Large Language Model,缩写LLM),也称大型语言模型,是一种人工智能模型,旨在理解和生成人类语言。
通常,大语言模型 (LLM) 指包含数十亿(Billion或更多)参数的语言模型,这些模型在大量的文本数据上进行训练,例如国外的有GPT-3 、GPT-4、PaLM 、Galactica 和 LLaMA 等,国内的有ChatGLM、文心一言、通义千问、讯飞星火等。
大模型的能力
大语言模型(LLM)与以前的预训练语言模型(PLM)的主要区别在于其涌现能力。这种能力在小型模型中不明显,但在大型模型中显著。例如:
-
上下文学习:首次由GPT-3引入,允许模型在提供自然语言指令或多个任务示例的情况下,通过理解上下文并生成相应输出来执行任务。
-
指令遵循:通过指令微调,LLM可以根据任务指令执行未见过的任务,展示出强大的泛化能力。
-
逐步推理:通过"思维链(Chain of Thought, CoT)"策略,LLM能够解决多步推理任务,例如数学问题。
-
大模型的特点
-
巨大的规模:参数规模达数十亿甚至数千亿,使其能捕捉更多语言知识和复杂语法结构。
-
预训练和微调:在大规模无标签文本数据上预训练,然后通过有标签数据微调,适应特定任务。
-
上下文感知:具备强大的上下文感知能力,能够理解和生成依赖前文的文本内容。
-
多语言支持:支持多种语言,促进跨文化和跨语言的应用。
-
多模态支持:一些LLM支持文本、图像和语音的多模态数据。
-
涌现能力:在大规模模型中表现出明显的性能提升,能处理更复杂的任务。
-
多领域应用:广泛应用于文本生成、自动翻译、信息检索、摘要生成、聊天机器人等多个领域。
-
伦理和风险问题:需要谨慎处理生成有害内容、隐私问题和认知偏差等伦理和风险问题。
大模型推理介绍
大语言模型,简称LLM。想象一下,如果有一个超级大脑能听懂你的话,还能跟你聊天、写故事、甚至帮你做决定,是不是很神奇?这就是LLM的魔力所在!
话说回来,在过去的几年里,这些超级大脑们在各种各样的任务上都取得了惊人的进步。比如说,它们现在不仅能回答你关于天气的问题,还能帮你写出一篇关于气候变化的文章呢!而且,随着这些超级大脑变得越来越大(不是说它们真的会长成巨人哦),它们开始展现出了一些真正了不起的能力——推理能力!
推理能力是什么呢?简单来说,就是能够理解一些基本的逻辑,然后根据这些逻辑去思考问题。比如,如果你知道“所有猫都喜欢吃鱼”,并且还知道“汤姆是一只猫”,那么你应该可以推断出“汤姆喜欢吃鱼”。这就是推理的魅力所在!
不过,虽然我们的超级大脑们已经开始展现出这种能力,但它们究竟是怎么学会的,这背后的技术细节可就复杂多了。科学家们正在夜以继日地研究这个问题,试图找到让AI模型变得更聪明的秘密武器。各大研究机构和公司都在这个领域投入了大量的资源,因为谁要是能解开这个谜题,谁就能引领未来的AI潮流啦!
所以,下次当你和朋友聊起人工智能的时候,你可以骄傲地说:“你知道吗?现在的超级大脑不仅能听懂你说的话,还能自己思考问题呢!”当然,别忘了提醒他们,这些超级大脑还在成长中,就像我们小时候学数学一样,有时候也会犯点小糊涂哦。
大模型推理实现最常用方法——提示工程(Prompt Engineering)
提示工程(Prompt Engineering)是一门较新的学科,关注提示词开发和优化,帮助用户将大语言模型(Large Language Model, LLM)用于各场景和研究领域。 掌握了提示工程相关技能将有助于用户更好地了解大型语言模型的能力和局限性。
研究人员可利用提示工程来提升大语言模型处理复杂任务场景的能力,如问答和算术推理能力。开发人员可通过提示工程设计、研发强大的工程技术,实现和大语言模型或其他生态工具的高效接轨。
提示工程不仅仅是关于设计和研发提示词。它包含了与大语言模型交互和研发的各种技能和技术。提示工程在实现和大语言模型交互、对接,以及理解大语言模型能力方面都起着重要作用。用户可以通过提示工程来提高大语言模型的安全性,也可以赋能大语言模型,比如借助专业领域知识和外部工具来增强大语言模型能力。
输入问题:
这里选取了train的第一个问题。可以看到有问题背景、提问、以及选项这样结构的数据字典。
{ 'problem': '有一群人和一些食物类型。下列是关于这些个体和食物的已知信息:\n\n1. 鸡肉是一种食物。\n2. 苹果是一种食物。\n3. 如果X吃了Y,且X活着,则Y是一种食物。\n4. Bill存活。\n5. Bill吃了花生。\n6. John吃所有食物。\n7. Sue吃所有Bill吃的食物。\n8. John喜欢所有食物。\n\n根据以上信息,回答以下选择题:', 'questions': [ { 'question': '选择题 1:\n谁喜欢吃花生?', 'options': ['Bill', 'Sue', 'John', 'None of the above'] } ], 'id': 'round1_test_data_000' }
转化后的prompt:
我们通过数据处理,将上面的问题字典转化为MD格式的prompt。这就是我们让大语言模型能理解并做分析的秘诀。
你是一个逻辑推理专家,擅长解决逻辑推理问题。以下是一个逻辑推理的题目,形式为单项选择题。所有的问题都是(close-world assumption)闭世界假设,即未观测事实都为假。请逐步分析问题并在最后一行输出答案,最后一行的格式为"答案是:A"。题目如下: ###题目: 有一群人和一些食物类型。下列是关于这些个体和食物的已知信息: 鸡肉是一种食物。 苹果是一种食物。 如果X吃了Y,且X活着,则Y是一种食物。 Bill存活。 Bill吃了花生。 John吃所有食物。 Sue吃所有Bill吃的食物。 John喜欢所有食物。 根据以上信息,回答以下选择题: ###问题: 选择题 1: 谁喜欢吃花生? A. Bill B. Sue C. John D. None of the above
大模型回答:
这里为了大家方便起见使用了尚未微调的开源模型Qwen2-1.5b-instruct的api。(虽然赛题要求使用大模型后上传环境,大家可以先在低成本的api上做好试验,最后提交前把环境打包到docker文件上传即可。)
我们可以看到大模型在output'choices'['content']返回了推理的结果。我们通过这样的方式让大模型完成了我们的推理任务。
{ "status_code": 200, "request_id": "18d43478-2aec-92be-8840-cd3bb08009cf", "code": "", "message": "", "output": { "text": null, "finish_reason": null, "choices": [ { "finish_reason": "stop", "message": { "role": "assistant", "content": "我们可以通过分析给出的信息来解答这个问题。\n\n首先,我们知道Bill吃了花生(根据第5条信息),并且Bill还活着(根据第4条信息)。根据第3条规则,“如果X吃了Y,且X活着,则Y是一种食物”,我们可以推断出花生是一种食物。\n\n接下来,我们知道John吃所有食物(根据第6条信息),并且John喜欢所有食物(根据第8条信息)。既然花生是一种食物,那么John应该也吃花生,并且喜欢花生。\n\nSue吃所有Bill吃的食物(根据第7条信息),既然Bill吃了花生,那么Sue也应该吃花生。\n\n所以,喜欢吃花生的人有Bill、Sue和John。\n\n答案是:C. John\n\n但是,题目要求选择一个选项,而实际上Bill、Sue和John都喜欢吃花生。然而,在给出的选项中,只有John被明确列出作为喜欢吃花生的人(选项C)。因此,虽然Bill和Sue也喜欢吃花生,但根据题目要求,正确答案应当是包含在选项中的那个,即John。\n\n答案是:C. John" } } ] }, "usage": { "input_tokens": 210, "output_tokens": 223, "total_tokens": 433 } }