当前位置: 首页 > news >正文

Gemma 2 2B:针对小型 LLM 提示工程关注点

大型语言模型的有效性在很大程度上取决于我们给出的指令。提示工程是指以从 LLM 获得最佳输出的方式设计问题的过程。这是实现基于 LLM 的功能的关键步骤。提示工程是一个迭代过程。如果尝试过不同的 LLM,那么发现为了获得更好的结果,需要微调提示。

这同样适用于不同尺寸的模型。

由大型 LLM(例如 Gemini 或 ChatGPT)提供支持的聊天界面通常只需极少的提示工作即可生成令人满意的结果。但是,在使用未经微调的默认较小 LLM 时,需要调整相应的方法。

较小的 LLM 功能较少,可供选择的信息池也较小。
在这里插入图片描述

小型LLMs的定义与应用场景

定义“小型LLMs”

在人工智能领域,语言模型(LLMs)根据其参数的数量可以分为不同规模。小型LLMs通常指的是参数数量在数百万到数十亿范围内的模型。这些模型相较于拥有数十亿甚至数千亿参数的大型模型,虽然在处理能力和知识广度上有所限制,但它们在资源消耗和部署灵活性上具有优势。

参数范围

小型LLMs的参数范围通常在几百万到30亿以下。这个参数量级的模型能够实现基本的语言理解和生成任务,但可能在复杂度和准确性上不如大型模型。

应用场景

小型LLMs的典型应用场景包括:

  • 设备端/浏览器中的生成式AI:例如,使用Gemma 2B模型与MediaPipe的LLM Inference API结合,即使在仅支持CPU的设备上也能运行。
  • 自定义服务器端生成式AI:开发者可以在自己的服务器上部署如Gemma 2B、Gemma 7B或Gemma 27B等小型模型,并根据需要进行微调。

开始使用小型LLMs

大型与小型LLMs的差异

大型LLMs如Gemini或ChatGPT通常能够通过简单的提示生成满意的结果,而小型LLMs则需要更精细的提示设计来实现最佳效果。小型LLMs在信息处理能力和上下文理解上相对有限。

设计详细、具体的提示

为小型LLMs设计提示时,需要提供更多的上下文信息和具体的格式要求。这有助于模型更准确地理解任务需求并生成合适的输出。
提供上下文和精确的格式指令,详细提示示例
例如,当需要根据用户评价给出产品评分时,可以提供如下的提示模板:

Based on a user review, provide a product rating as an integer between 1 and 5.Only output the integer. Review: "${review}"
Rating:
一次、少数和多示例以及思维链提示技术

通过提供具体的评分示例,可以帮助模型更好地理解评分标准。例如,展示积极评价与高评分的对应关系,以及消极评价与低评分的对应关系。
在这里插入图片描述

思维链提示技术通过展示问题解决的步骤来引导模型进行逻辑推理,这有助于提高小型LLMs在复杂任务上的表现。举例来说:

Analyze a product review, and then based on your analysis give me the corresponding rating (integer). The rating should be an integer between 1 and 5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied review that only mentions issues should have a rating of 1 (worst). A strongly satisfied review that only mentions positives and upsides should have a rating of 5 (best). Be opinionated. Use the full range of possible ratings (1 to 5). \n\n \n\n Here are some examples of reviews and their corresponding analyses and ratings: \n\n Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor use, but it's perfect for urban exploring.' Analysis: The reviewer appreciates the product's style and basic functionality. They express some uncertainty about its ruggedness but overall find it suitable for their intended use, resulting in a positive, but not top-tier rating. Rating (integer): 4 \n\n Review: 'It's a solid backpack at a decent price. Does the job, but nothing particularly amazing about it.' Analysis: This reflects an average opinion. The backpack is functional and fulfills its essential purpose. However, the reviewer finds it unremarkable and lacking any standout features deserving of higher praise. Rating (integer): 3 \n\n Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.' Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company. Rating (integer): 1 \n\n Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!' Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating. Rating (integer): 5 \n\n Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.' Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw. Rating (integer): 1 \n\n Now, here is the review you need to assess: \n Review: "${review}" \n;

预期手动输出解析

虽然应该交由LLM自动生成,但是鉴于不准确性,需要手动清理并解读 LLM 的输出,尤其是对小型 LLM 来说,因为小型 LLM 生成的结果可能不太精确,可能需要思维链提示。

在第一个示例中,我们使用了思维链提示,因此输出同时包含分析和评分,我们需要手动解析评分。另请注意,上一部分的输出格式不一致:模型有时会输出 Markdown,但并非每次都会输出。

小型LLMs的输出可能需要手动解析,以确保结果的准确性。例如,使用正则表达式从输出中提取评分,并进行进一步的验证。

注意API差异

注意大型LLMs的云API(如Gemini API或OpenAI)与小型LLMs使用的浏览器AI API在功能上的差异

Gemini API 或 OpenAI 等 LLM 云 API 通常是大型 LLM 的入口点,可提供便捷的提示功能。例如,Gemini 1.5 Pro 提供系统说明和 JSON 模式。

目前,这些功能并非始终可用于自定义模型,也不适用于使用浏览器内 AI API(例如 MediaPipe LLM Inference API 或 Transformers.js)访问的较小 LLM。虽然这不一定是技术限制,但浏览器内置 AI API 往往更精简。

注意token限制

小型LLMs通常有更严格的输入token限制,这要求在设计提示时必须注意token的使用效率。

由于针对较小的 LLM 的提示需要包含示例或更详细的说明,因此可能会较长,并占用更多的输入token限制(如果有)。

此外,较小的模型往往具有较小的输入token限制。例如,Gemini 1.5 Pro 的输入token数量上限为 100 万个,而 Gemma 模型具有 8K 上下文窗口。

使用token计数函数可避免达到上限。

调整时间估计

在估算工程时间时,请考虑及时的设计和测试。

由于 API 差异和令牌限制,您可能需要投入更多的时间和精力来为较小的 LLM 编写提示,而不是为较大的 LLM 编写提示。测试和验证 LLM 的输出可能也会花费更多精力。

提示工程与微调的比较

提示工程的优势

讨论在何种情况下使用提示工程更为合适,例如快速原型设计或在数据不足时。

微调的使用场景

描述微调在需要高精度和重复使用模型的场景下的优势,以及如何利用已有的标注数据进行微调。

结论

对于 Web 开发者,提示工程是我们利用生成式 AI 而非自定义训练和微调的首选方式。但在某些用例中,即使是高级提示工程也可能不够,尤其是在使用较小的 LLM 时。

在以下情况下使用微调:

  • 对特定任务要求出色的准确率和性能。微调可直接调整模型的内部参数,以获得最佳结果。
  • 拥有与任务相关的精心挑选的数据,并且这些数据已经带有首选输出标签。需要此数据才能进行有效微调。
  • 反复使用该模型来达到相同的目的。一次微调可以完成一次,然后便可针对特定任务重复使用。
提示工程的最佳实践

总结在小型LLMs中进行有效提示工程的关键点,包括详细的上下文提供、精确的格式指令和持续的迭代测试。

持续迭代和测试的重要性

强调为了获得最佳性能,持续对提示进行迭代和测试是不可或缺的。这有助于不断优化模型的输出质量和准确性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Nginx+Tomcat负载均衡、动静分离群集
  • 基于HTML弹性布局做的支付宝界面
  • Mamba 永远不会忘记任何标记
  • 【iOS】OC关键字总结及底层原理(下)
  • 利用单张/多张图内参数标定 OpenCV Python
  • 大数据算法岗位分析推荐:基于Python的招聘大数据爬虫可视化分析推荐系统(完整系统源码+数据库+详细开发文档+万字论文+详细部署教程等全资料)
  • 数据结构-------队列
  • Dubbo框架实现RPC远程调用包括nacos的配置和初始化
  • 如何解决 windows11系统 使用中电脑突然自动休眠的问题
  • 使用消息队列、rocketMq实现通信
  • OpenAI 发布 GPT-4o 模型安全评估报告:风险等级为“中等”|TodayAI
  • C++——红黑树(图片+动图详解)
  • TCP Window Full TCP Zero Window
  • 【源码】Sharding-JDBC源码分析之Yaml分片配置文件解析原理
  • 【漏洞修复】Tomcat中间件漏洞
  • Android交互
  • Service Worker
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • XML已死 ?
  • 坑!为什么View.startAnimation不起作用?
  • 蓝海存储开关机注意事项总结
  • 码农张的Bug人生 - 初来乍到
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端面试之CSS3新特性
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 新版博客前端前瞻
  • 在Mac OS X上安装 Ruby运行环境
  • 说说我为什么看好Spring Cloud Alibaba
  • 通过调用文摘列表API获取文摘
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #android不同版本废弃api,新api。
  • #QT(TCP网络编程-服务端)
  • (3)(3.5) 遥测无线电区域条例
  • (6)设计一个TimeMap
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (Note)C++中的继承方式
  • (二)学习JVM —— 垃圾回收机制
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)甲方乙方——赵民谈找工作
  • ***利用Ms05002溢出找“肉鸡
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Framework杂记
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net6使用Sejil可视化日志
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /var/log/cvslog 太大
  • :“Failed to access IIS metabase”解决方法
  • ?
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @Responsebody与@RequestBody