赞
踩
源自脉脉上面刷到的大模型业务工程落地可以做的方向。其实如果不是接触相关工作,有的人可能不会想了解这方面,自己实习做的方向与之相关,因此想调研总结一下行业热点方向与基础入门知识,还有一些的专业词汇的解释。包括但不限于Prompt工程、模型微调finetune(如multi lora)、Code Interpreter、LangChain、VectorDB、SFT、RAG、MultiAgent、Embedding Search、RLHF、DPO、PPO、数据飞轮、推理加速、LLMOps等,感兴趣就都可以了解一下。
之前理解是给大模型加魔法的入口,提示工程(Prompt Engineering,简称 PE),是通过一些技巧和手段,让模型可以输出更准确、更相关、且更容易被下游代码处理的内容的过程。GPT 是 Generative Pre-trained Transformer 的缩写,是 OpenAI 开发的大语言模型。它将文本视为一个 token 序列,预测序列下一个可能出现的token 。因为模型不能理解知识,只是在尝试输出序列,所以一个好的引导词,能够在不需要调节模型参数的基础上,产生更接近理想的输出,并且可以节省token占用(更省钱)。常见的一些技巧:如CoT(Chain of Thought)/ Few or Zero-Shot CoT / In-Context Learning(ICL)/ PAL(Program-aided Language models)/ Self-Consistency等, 此外还要注意模型幻觉、数学运算差和注入安全问题以及对应的解决方案。
一套适用于工程场景的框架be like:背景、角色、指令、输出。
另外openAi关于prompt的有专门的介绍,参考官方的cooking book以及问答实践专区
https://platform.openai.com/docs/introduction
https://help.openai.com/en/collections/3675942-prompt-engineering
可以思考一下大模型和传统机器学习或者深度学习解决nlp问题的区别,为什么有的场景就推荐用LLM来解决。个人觉得openAi家的数据与资源是强大的,普适性强,涉及范围广,有些场景不需要我们从头训练,用人家的预训练模型,在我们的工程业务场景上面进行finetune(微调),能够降低成本更快速并且输出更接近理想的结果。
并且传统的nlp也存在一些问题:(1)这些任务都需要大量的标注数据进行训练才有不错的模型效果,但针对特定任务的高质量标注数据难以获取,通常都需要花费大量的人力物力才能得到数量不多的有效数据;(2)而且某一个任务训练的模型很难泛化到其它任务中;(3)更重要的是在目前的互联网上有海量的文本,只是这些文本是没有针对特定任务做标注的,被称为无标注文本,很难将这些文本应用到特定任务的训练,这未免有些遗憾和浪费。
大模型的出现弥补了传统nlp的这些不足,它可以通过生成方式进行零样本自监督学习。
大模型微调有一些相关的策略,比如有名的低秩自适应(LoRA)方法、量化(Quantization)QLoRA、Adapter、prompt-tuning等。
参考下面的链接,里面有详细描述
https://zhuanlan.zhihu.com/p/644122818?utm_id=0
https://zhuanlan.zhihu.com/p/650287173
https://zhuanlan.zhihu.com/p/627642632?utm_id=0
https://zhuanlan.zhihu.com/p/669865795
代码解释器(Code interpreter),模型内置一个代码解释器,赋予其执行代码的能力。代码解释器(Code Interpreter)可以让普通用户(非程序员)用自然语言完成以前需要写代码来完成的复杂工作。比如使用 Python 进行编程,chatGPT模型内置一个沙箱解释器,可以运行Python代码。我们也可以给自研模型平台定制化开发Code Interpreter,方便业务侧使用来执行代码并分析。这就意味着不需要程序员对象,你也能随时随地拥有自动化编程助手。通过代码解释器,用户可以解决定量和定性的数学问题、进行数据分析和可视化,在不同文件格式之间进行转换。它功能强大有便捷之处,但是同时也有一些限制需要注意。
参考官方API https://platform.openai.com/docs/assistants/tools/code-interpreter
https://zhuanlan.zhihu.com/p/643192667
https://zhuanlan.zhihu.com/p/643024084
https://baijiahao.baidu.com/s?id=1771907200390315425&wfr=spider&for=pc
这个功能是在23年6月份推出的,Chat Completions API新增了函数调用功能,让 GPT 模型拥有调用外部接口的能力。从人机交互上来说, Function Call 本质上实现了准确识别用户的语义,将其转为结构化的指令输出,以便与工程代码更好衔接。其他意义理解:
OpenAI的function call功能,相当于开放了自定义插件的接口。
通过接入外部工具极大的改善了模型幻觉(一本正经的胡说八道)问题。
一定程度上缓解了数据安全问题,私有数据可以尽量自行处理。
参考https://sspai.com/post/81986
https://zhuanlan.zhihu.com/p/656786574
https://zhuanlan.zhihu.com/p/638089428?utm_id=0
http://www.ai2news.com/blog/3058639/
GPT4新特性:Assistant + FunctionAll + Retrieval
博文参考地址 https://zhuanlan.zhihu.com/p/666198140
https://www.zhihu.com/question/629324504/answer/3283601731?utm_id=0
https://baijiahao.baidu.com/s?id=1781875118264816313&wfr=spider&for=pc
其实后续Chat Completion接口的API里面这个Function Call标识为Deprecated废弃了,取而代之的是tools和toolChoice,也就是支持更广义上调用外部的工具接口,只不过目前这个工具局限于function.参考https://platform.openai.com/docs/api-reference/chat/create
补充介绍:
LLM支持多种模型接口,比如 OpenAI、Hugging Face、AzureOpenAI等,FunctionCall在不同API里面的格式可能也不一样。之前在研究接入GPT-4V模型的时候,其API接口也有openAi官方和微软Azure的不同实现,之前它们传输请求body格式是有差别的,不过目前看来是对齐了。个人理解微软自从收购OpenAi以后两者产品侧应该都会趋于统一吧:
1.openAi的4V模型API
参考https://platform.openai.com/docs/guides/vision
请求body如下(示例):
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="gpt-4-vision-preview", messages=[ { "role": "user", "content": [ {"type": "text", "text": "What’s in this image?"}, { "type": "image_url", "image_url": { "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg", }, }, ], } ], max_tokens=300, ) print(response.choices[0])
2.Azure的4V模型API
参考https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/gpt-with-vision
https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/gpt-4-turbo-with-vision-is-now-available-on-azure-openai-service/ba-p/4008456
请求body如下(示例):
{ "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": [ { "type": "text", "text": "Describe this picture:" }, { "type": "image_url", "image_url": { "url": "<URL or base-64-encoded image>" } } ] } ], "max_tokens": 100, "stream": false }
LangChain是一个基于大语言模型(LLM)用于构建端到端语言模型应用的框架,它可以让开发者使用语言模型来实现各种复杂的任务,例如文本到图像的生成、文档问答、聊天机器人等。
相当于java里面的Spring框架, LangChain能够极大方便LLM相关的开发,结合了对接多种场景的工具,并且可以外部数据源进行连接,实现了开箱即用。
LangChain是一个让你的LLM变得更强大的开源框架。LangChain 就是一个 LLM 编程框架,你想开发一个基于 LLM 应用,需要什么组件它都有,直接使用就行;甚至针对常规的应用流程,它利用链(LangChain中Chain的由来)这个概念已经内置标准化方案了。
一个鹦鹉
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。