双手沾泥,大模型应用并不神秘

【引子】感谢图灵出版社英子老师赠书——《大模型应用开发极简入门》,读过之后,正好和自己的大模型系列文章相互印证,于是将读后感汇成此文。

c63752b743d31fcadd40fe62810acd3b.jpeg

如今,大模型应用已经渗透到各个领域,从自然语言处理到计算机视觉,再到推荐系统。这些复杂而强大的模型,如 GPT-3.5/4、文心一言 和 Claude3,成为科技领域的瑰宝,引领着人工智能的浪潮。然而,对于许多初学者来说,这些大模型应用似乎充满神秘色彩,仿佛只有少数专家才能参与其中。事实上,深入了解这些模型的原理和应用,并付诸实践,并不遥不可及。

类比一下, 对于程序员而言,如果学习前端开发,应该怎么做?可能,我们要先学习HTML/Javascript/CSS 的基本原理,然后动手跟着教程写一些例子,最后在实际的前端应用中去不断实践,形成循环迭代,进而真正掌握这门技术。面向大模型的应用开发也是一样的,理解大模型的基本原理,实际动手实践,在具体应用中对大模型进行微调,同样是一个循环迭代的过程。

双手沾泥,探索大模型应用的世界,将为我们揭示更多的乐趣。

82e3758022c9cc3b4573147a7d92fbf9.jpeg

1. 大模型的基本原理

谈到大模型一般会从AI 说起,什么是程序员视角中的AI呢?可以参见《老码农的AI漫谈》和《老码农眼中的简明AI》。

人工智能在一定程度上是可以通过自然语言体现的,可以追溯到图灵测试。而通过大模型通常是指大型语言模型,确切地说,大概应该叫大型基础模型,是参数规模庞大、拥有深层结构的神经网络,能够处理复杂的任务。关于大模型的更多理解可以参考《老码农眼中的大模型(LLM)》。GPT-3/4、Claude3等类似的大模型与AI、机器学习和深度学习的关系如下图所示:

b7b9a98697f2cba4c3c7d5b91f4c47d1.jpeg

大模型的以 GPT-3 为例,这是一个由数十亿个参数组成的深度神经网络,通过无监督学习在大规模文本数据上进行预训练,从而具备了惊人的语言生成能力。这主要归功于Transformer架构,它能够处理长文本序列并记住上下文。Transformer的核心支柱是自注意力机制,即关注一句话中最相关的词,交叉注意力和自注意力是其中两个广泛使用的模块。其中,自注意力机制的示意图如下:

3f18b2b93b59797381be0a9a016c1fbb.jpeg

GPT-X等大模型充分利用了Transformer架构的潜力,而chatGPT可以看作融入了对话管理的大模型应用,背后的模型应该是gpt-3.5-turbo,它根据制定的输入提示词逐个预测下一个词,进而生成问答。另外,GPT-4同时支持插件功能。

OpenAI 提供的很多模型都会不断更新,但都是涉及到一些基本概念,例如提示词、token和嵌入。其中,提示词可以参考《解读提示工程(Prompt Engineering)》,进一步,还可以参考《Agent 应用于提示工程》;token 可以参考《解读大模型(LLM)的token》,同时注意token和tokenization的区别;嵌入可以参考《《深入浅出Embedding》随笔》。

2.动手体验

要想真正掌握大模型应用,光有理论知识是不够的。我们必须深入实践,通过亲手操作、不断尝试,才能真正理解其内在的逻辑和规律。这就像农民种地一样,只有双手沾泥,亲身感受土地的温暖和湿润,才能种出丰收的庄稼。同样,只有我们亲手搭建模型、调整参数、处理数据,才能真正掌握大模型应用的精髓。

对于大模型在各种任务上的表现, 可以在其厂商提供的控制台直接体验。例如, OpenAI Playground 就是一个很好的体验途径。

对程序员而言, 新技术的学习一般都会始于“永远的hello world”,大模型应用也不例外,只不过是基于Python这种编程语言而已,关于Python 的一些基础用法可以参考《全栈Python 编程必备》。

安装环境的命令 pip install openai,5行代码实现hello world:

import openai
resp = openai.ChatCompletion.create{model="gpt-3.5-turbo",message =[{"role"= "user","content"="Hello World!"}], )
print(resp["choices"][0]["message"]["content"]

当然,这里默认设置了OPEN_API_KEY的环境变量。

GPT-3.5-turbo可能是最便宜且功能最多的模型,可以作为大模型应用开发的初始选择。

在广泛联系之前,要考虑一下成本和数据隐私。例如,OpenAI 是以每千个token定价的,且每个模型的定价不同。gpt-4模型的窗口大小是gpt-3.5-turbo的两倍,但成本会更高。另外,OpenAI会保留30天的用户输入,注意敏感信息的保护,管理好密钥。

3.尝试应用

开发基于大模型的应用,核心是将大模型与其提供的API结合起来,需要注意的是,应用要与模型解耦,绑定会带来紧耦合,不利于系统扩展。一个典型使用OpenAI API的web程序如下图所示:

88954f3876c8b31646dbad072117375f.jpeg

需要注意的是,大模型应用无法避免提示词注入,提示词的这一功能特性带来了安全风险。一般的应对策略包括:

  • 使用特定规则控制用户输入

  • 控制输入的长度

  • 控制输出

  • 监控与审计

  • 意图分析

提示工程专注于以最佳实践的方式来构建LLM的最佳输入,从而尽可能以程序化方式生成目标结果。

由于大模型将数字视为token,所以缺乏真正的数学逻辑和类似的推理能力。可以在提示词末尾添加“让我们逐步思考”这样的话,这种技术被称为“零样本思维链”。思维链是指使用提示词鼓励模型逐步思考的技术,one-shot 和 few-shot也是常见技术手段,总之,提示工程是一个反复试错的迭代过程。

另外,面向特定任务, 我们还需要微调大模型,示意图如下:

491b010c9d532a50013aa24bebffd638.jpeg

大多数时候,预训练的大模型需要在特定任务上进行微调,以适应具体应用场景。微调过程包括调整模型的超参数、选择合适的数据增强方法,以及解决过拟合等问题。微调要使用基础模型,而不能使用像InstructGPT系列中的模型。而且,微调通常也需要大量的数据,成本也不低。

通过深入研究微调的技术细节,我们能够更好地将大模型应用到实际问题中,提高模型的性能和泛化能力,更多有关微调的理解和思考可以参考《解读大模型的微调》。

《大模型应用开发极简入门》一书中给了一些不错的练手项目,都可以动手尝试。

4. 大模型应用框架的使用

站在巨人的肩膀上, 从零构建一个成熟且复杂的大模型应用并不是一件轻松的事。和web应用的开发类似, 是类似Spring 这样的应用框架, 给我们带来了极大的便利。对大模型应用而言也是如此,langchain就是一个当前看来还不错的应用框架。

关于Langchain的进一步了解,可以参考《解读LangChain》。Agent 及相关工具是LangChain框架提供的关键功能之一,让大模型能够执行各种操作并与各种功能集成,从而解决复杂的问题。在LangChain中使用Agent 的示意如下:

d610d78a7803198f996874c61150efb8.jpeg

关于Agent 的更多理解,可以参考《基于大模型(LLM)的Agent 应用开发》。

document_loaders 是Langchain中的一个重要模块,通过这个模块,可以快速将文本数据从不同的数据源加载到应用程序中,然后,对文本实现向量化,例如使用 OpenAIEmbeddings 模块,从而使搜索更加容易。这是RAG的典型应用模式,关于RAG的更多理解可以参考《大模型系列——解读RAG》。LangChain 以向量数据库为核心,有多种向量数据库可以选择,关于向量数据库可以参考《解读向量数据库》。

另外,GPT-4的插件功能重新定义了我们与大模型的交互方式,我们可以自行开发插件,进而提供更为广泛的功能。

5. 小结

当然,通过一本书实现大模型应用开发入门是可能的, 但和传统软件开发一样,如果要掌握大模型应用的开发技能, 实践仍然是不二的法门。

  • 通过阅读相关文献、参与在线课程,将有助于建立对大模型原理的深刻理解,就论文而言,《系统学习大模型的20篇论文》或许是个不错的起点;

  • 通过与社区和团队共同探讨,将为我们提供更多的机会和启示;

  • 通过亲自编写代码、搭建模型,我们能够深刻理解模型训练和推理的过程,可以与《如何构建基于大模型的App》相互印证。

双手沾泥,大模型应用并不神秘。选择一个熟悉的任务,让我们开始构建相应的大模型应用吧。

6c7030408fc3eaa6b00f4568a8a5c093.png

【关联阅读】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538675.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 核心原理 - UI 框架(UI Framework)

Flutter 既能保证很高的开发效率,又能获得很好的性能。 这两年 Flutter 技术热度持续提高,整个 Flutter 生态和社区也发生了翻天覆地的变化。目前Flutter 稳定版发布到了3.0,现在已经支持移动端、Web端和PC端,通过Flutter 开发的…

ssm蛋糕甜品商城系统(程序+文档+数据库)

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一、研究背景…

离线数仓(六)【ODS 层开发】

前言 今天开始正式的数仓搭建,所谓 ODS 层的工作就是把我们各种数据源采集发送来的各种类型的数据(Json、tsv类型)映射到 Hive 表中,映射时可以进行一些简单的处理,比如简单的数据清洗,舍弃一些没有必要的字…

设置浏览器显示小于12px以下字体

问题 我们在项目开发过程中有时候会遇到设计师给的小于12px的字体,IE、火狐浏览器、移动端等小于12px的字号大小还是可以正常显示的,但是谷歌浏览器上显示字体最小为12px,css设置font-size:10px,运行代码显示结果仍然…

Python环境搭建 -- Python与PyCharm安装

一、Python安装 我们先找到Python的官方网站,在浏览器中搜索Python即可,然后进入Python官网 点击Downloads,选择对应匹配的操作系统 点进去之后,Python的版本分为稳定的版本和前置版本,前置的版本就是还没有发行的版本…

冥想与AI:打造定制的放松体验

如今,在浏览网页或社交网络时,您似乎很难对一条条心理健康信息无动于衷。遇到这种情况的可不只是您。当今不断变化的时代给人们平添压力,企业纷纷利用智能技术满足人们的减压需求,让人们的生活多一些平和从容。 冥想就是一种练习呼…

科技云报道:两会热议的数据要素,如何拥抱新技术?

科技云报道原创。 今年全国两会上,“数字经济”再次成为的热点话题。 2024年政府工作报告提到:要健全数据基础制度,大力推动数据开发开放和流通使用;适度超前建设数字基础设施,加快形成全国一体化算力体系&#xff1…

2048.神、上帝以及老天爷

典型的错排问题 题解:计算所有人错排的种类数/阶乘 错排种类数: 1——0 2——1 3——2 第一个人两种选择假设1拿了2的,那么2只能拿3,因为2如果拿1,3就会拿3就不会拿错 4——9 3(12) 5——44 f(n)(n-1)*[f(n-1)…

未来城市:数字孪生技术助力智慧城市构建

目录 一、数字孪生技术的兴起与定义 二、数字孪生技术在智慧城市构建中的应用 1、城市规划与管理 2、智慧交通 3、智慧能源 4、智慧环保 三、数字孪生技术助力智慧城市构建的挑战与对策 四、结语 随着科技的飞速发展,未来城市正在经历一场前所未有的变革。数…

【LeetCode热题100】142. 环形链表 II(链表)

一.题目要求 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统…

【unity接入SDK案例】从0到1 如何接入百度地图SDK到unity中【一】

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:Uni…

AJAX 01 AJAX 概念和 axios 使用

2.27 AJAX 学习 AJAX 1 入门01 AJAX 概念和 axios 使用axios 使用案例 02 认识 URLURL组成 03 URL 查询参数axios-查询参数案例 :地区查询 04 常用请求方法和数据提交axios 请求配置axios 错误处理 05 HTTP协议-报文① 请求报文作用:错误排查…