原文:You don’t need Prompt Engineering! Try this instead!
像我们中的许多人一样,我认为要想在AI上取得好结果,你需要一个非常强大的语言模型和prompt工程方面的特殊训练。
我把从Hugging Face收到的低质量回复归咎于我缺乏提示技巧,花了几个小时进行prompt微调(真的很耗时),而不是创建新的python应用程序(无论如何都很耗时)。
我必须承认:只要尝试一种全新的方法,prompt工程就毫无用处。这就是我们要在这篇文章中一起验证的。
我们需要什么?
通常我们认为,要获得好的结果,模型是最重要的: 这当然是正确的!但是我们真正需要的是什么呢?
我是说它是模型权重吗?数十亿个参数的数量?
我开始探索在仅CPU上运行推理模型的所有可能性,以便我们能够与它们进行交互。我想看看更多的参数是否立即等于更好的模型。几个月前,我读到了LaMini-LM,这真是一件幸事,因为它们很小,可以仅仅在CPU上运行。
在这一点上,重要的是开始思考目标是什么。必须根据我们希望它执行的任务来选择模型。例如,在私有文档集上的问答是一个非常具体的任务,不需要像我们期望的OpenAI GPT等通才模型那样在NLP任务上具有相同的性能。
让我们以这些模型为例:它们建立在一个特定的数据集上
根据论文,如果你用一个小的语言模型来训练,就可以获得惊人的表现。所提出的模型达到了与Alpaca相当的性能,而尺寸却小了近十分之一,这表明了训练高效而有效的语言模型的潜力。
从哪里开始?
那么为什么我们不从指令数据集开始看看这些模型是如何训练的呢?幸运的是,在LaMini模型的Hugging Face模型卡上,我们有所有的细节,甚至数据集本身!
模型卡片页 https://huggingface.co/MBZUAI/LaMini-Flan-T5-77M
该项目的官方GitHub页面描述了他们如何收集和使用数据集:
我们通过执行句子/离线蒸馏从大型语言模型中提取知识(Kim和Rush, 2016)。基于几种现有的prompts资源,我们使用gpt-3.5 turbo生成了总共258万对指令和响应,包括自我指导(Wang等人,2022)、P3 (Sanh等人,2022)、Flan (Longpre等人,2023)和Alpaca (Taori等人,2023)。关于生成指令数据集的更多信息,请参考我们的论文。
lamini指令数据集是用于指令微调模型的数据库。如果我们仔细观察它们,我们可以看到一些惊人的事情:
https://huggingface.co/datasets/MBZUAI/LaMini-instruction/viewer/default/train?row=0
数据集包含指令和响应的列表(260万行),以及源(alpaca、self_instruct_without_topic,等等…)。现在,这意味着模型已经经过训练,可以执行指令中要求的任务。
这对我们来说是个好消息!!这里是终极prompt工程破解!
事实上,如果我想让模型执行一条指令,我只需要检查训练数据集,看看模型是如何训练的。
让我们一起测试一下
我将在两个不同的端口上运行248M Flan模型和77M Flan模型。你可以这样做:
1.创建stapp77.py
的副本,并将副本重命名为stapp77.py
2.在stapp77.py
中将检查点更改为 “./model77M/“我建议下载https://huggingface.co/MBZUAI/LaMini-Flan-T5-77M的模型权重
1 | ### INITIALIZING LAMINI MODEL |
3.打开2个不同的终端窗口,并在其中激活venv。
4.然后运行如下命令启动248M型号的聊天机器人:
1 | python3.10 -m streamlit run stapp.py --server.port 8501 |
5.运行如下命令启动77M型号的聊天机器人:
1 | python3.10 -m streamlit run stapp77.py --server.port 8502 |
截图来自作者——这里有一个将会发生的例子…
我们要做的是测试训练说明,然后根据我们的需要尝试改变它们。真正的提示将基于数据集prompts。
注意调整模型参数(max_length, temperature和repetition_penalty)可能会改变响应
根据其中一个训练指令生成2个模型
从这个例子中我们已经可以观察到,77M模型给出的答案比248M模型更长。如果您测试其他指令,您将看到这是一致的。
然而,对于一些特定的任务,248M型号将更加顺从,提供我们所要求的。
例如:
248M型号根据说明给出了更准确的回复
这里我们要求写一个关于主题的1句总结:更大的模型在现场为我们提供了一个句子的描述。
诀窍在哪里?
最困难的部分是遍历数据集并找到您将在日常任务中使用的典型指令。我邀请你直接在hugging Face Hub网站上查看它们:这是一个700 Mb的数据集,直接从网络上浏览更容易。
在你确定了他们之后,试着根据你的兴趣改变话题。这里有一个例子
原来的指示:重写这首诗,使它更生动有趣……
如果你是一个作家,它可以这样使用:重写这篇文章,让它更有趣…
结论(目前)
有很多与prompt工程相关的免费和付费资源。这个话题真的很受欢迎,它被认为是NLP和图像生成任务的未来工作。
但是,您不认为亲自了解训练说明是最大限度地利用模型的更好方法吗?
考虑一下来自微型LaMini-Flan-T5-77M:的答案,你不觉得300Mb的型号有多大帮助吗?
如果你有兴趣学习如何创建自己的API推理来为你的本地网络提供一个模型,并有多个应用程序与之合作,请继续关注,因为我将向你展示从a到Z如何在你的PC上运行一个Hugging Face模型。