本文介绍: 点击蓝字关注我们,让开发变得更有趣作者| 杨亦诚排版 | 李擎OpenVINO™..♩~ ♫. ♪..LangChain简介LangChain一个高层级的开源框架,从字面意义理解,LangChain 可以用来构建语言处理任务的链条”,它可以让AI开发人员把大型语言模型(LLM)的能力外部数据结合起来,从而去完成一些更复杂任务简单来说,LangChain 可以让你的 LLM 在回…

点击蓝字

关注我们,让开发变得更有趣

作者 | 杨亦诚

排版 | 李擎

bd0db250101868f0a1f0299a49006c2d.png

OpenVINO™..♩~ ♫. ♪..

LangChain简介

LangChain 是一个高层级的开源框架,从字面意义理解,LangChain 可以用来构建语言处理任务的链条”,它可以让AI开发人员把大型语言模型(LLM)的能力外部数据结合起来,从而去完成一些更复杂任务简单来说,LangChain 可以让你的 LLM 在回答问题参考自定义知识库实现精确答案输出例如在以下这个Retrieval Augmented Generation (RAG)任务,LangChain 可以根据问题从已有的知识库中进行检索,并将原始的检索结果和问题一并包装为Prompt提示送入 LLM 中,以此获得更加贴近问题需求答案

e455a66476db3c37390c5479428a393a.png

图:RAG任务示例

LangChain 的核心能力主要由以下几个模型所构成。

基于以上这些模块,LangChain可以被应用于一些更复杂的任务中,例如个人AI邮件助手,AI学习伙伴,AI数据分析定制公司客服聊天机器人,社交媒体内容创作助手等,做为LangChain任务部署过程中的底座,LLM的推理任务势必是重点可以被优化方向,那如何利用OpenVINO™来加速LangChain的中LLM任务呢,这里大家整理了以下两个方法

方法一:利用 Huggingface pipeline

             调用 Optimum 后端

鉴于langchain.llm对象已经支持huggingface_pipeline直接调用huggingface上的LLM

https://python.langchain.com/docs/integrations/llms/huggingface_pipelines),同时HuggingfaceOptimumintel组件可以将huggingface pipeline中的LLM推理任务通过OpenVINO™进行加速。因此我们的第一种方案就是利用Optimumintelpipeline替换原本的Transformers pipeline如下代码所示

from langchain.llms import HuggingFacePipeline
from transformers import pipeline
- from transformers import AutoModelForCausalLM
+ from optimum.intel.openvino import OVModelForCausalLM
- model = AutoModelForCausalLM.from_pretrained(model_id)
+ ov_model = OVModelForCausalLM.from_pretrained(model_id)
pipe = pipeline("text-generation", model=ov_model, tokenizer=tokenizer, max_new_tokens=128, pad_token_id=tokenizer.eos_token_id)
hf = HuggingFacePipeline(pipeline=pipe)
llm_chain = LLMChain(prompt=prompt, llm= hf)
output = llm_chain.run(question)

红色部分标准 Transformers (第3、5行) 库在 huggingface_pipeline 中的调用方式,绿色部分Optimumintel (第4、6行)的调用方式,可以看到我们仅仅只需修改两行代码就可以把 LangChain 原生的 LLM 任务,通过 OpenVIN™ 进行加速,并且 Optimumintel 提供的 API 也支持将 LLM 部署到不同硬件平台例如 Intel 的 CPU 及 GPU 系列产品

方法二:构建新的 OpenVINO™ pipeline

第一种方法固然简单,但如果遇到 Optimum-intel 中还未适配的 LLM,那依然无法奏效,因此这里的第二种办法就是参考 HuggingFacePipeline 这个对象https://github.com/langchain-ai/langchain/blob/master/libs/langchain/langchain/llms/huggingface_pipeline.py),重新构建一个基于  OpenVINO™ 的类对象,以此来支持自定义模型类别

详细实现可以参考这个仓库https://github.com/OpenVINO-devcontest/langchain.openvino

仓库中的ov_pipeline.py就是用来构建 OpenVINO™ pipeline 的代码,为了方便演示示例底层还是调取 Optimum-intel 进行推理,但不同与第一种方式,这里我们可以选择脱离 Optimum-intel 的束缚,自行定义pipeline中的关键方法。这里有两个关键方法

1. from_model_id函数用于读取本地或者远端的LLM以及其对应的Tokenizer,并利用OpenVINO™ runtime 对其进行编译以及初始化。这里的函数名仅供参考,大家可以根据自己的习惯自行修改,此外在这个函数中,我们还可以对模型配置进行调整,比如指定不同的硬件平台进行部署,修改硬件性能配置例如推理任务线程数(tread),并行任务数(stream)等,该函数预期返回一个可以直接运行模型对象

from_model_id(
        cls,
        model_id: str,
        model_kwargs: Optional[dict] = None,
        **kwargs: Any,
    ) -> LLM

2. _call函数继承父类 LLM,用于根据提升成本文,根据父类中的定义,他的输入prompt文本,输出同样也是一个文本,因此在这个函数中就要求我们实现三个功能Tokenizer 分词编码->LLM推理->tokenizer 解码其实这也是LLM 问答任务中必须经历的三个步骤,所以这里的实现方式大家可以根据自己LLM模型对于输入输出的要求自行定义。

def _call(
        self,
        prompt: str,
        stop: Optional[List[str]] = None,
        **kwargs: Any,
    ) -> str:

3. 这个仓库中提供了一个简单的 LangChain 示例sample.py,用于展示自定义 OpenVINO™ pipeline 在 LangChain 中的调用方式,核心部分可以参考以下代码片段

llm = OpenVINO_Pipeline.from_model_id(
    model_id=model_path,
    model_kwargs={"device":device, "temperature": 0, "trust_remote_code": True},
    max_new_tokens=64
    )
llm_chain = LLMChain(prompt=promptllm=llm)

总结

LangChain 做为当前最受欢迎的自然语言系统框架之一,可以帮助开发者快速构建起基于LLM的上层应用方案。而 OpenVINO™ 2023.2 新版本发布又进一步提升了LLM的性能表现,同时降低了部署门槛,两者的结合可以帮助开发者更便捷地在英特尔平台上部署基于大语言模型服务系统,丰富本地化 AI PC 应用场景落地

参考项目地址

https://github.com/OpenVINO-devcontest/langchain.openvino

https://github.com/langchain-ai/langchain

https://github.com/huggingface/optimum-intel

OpenVINO™

–END–

你也许想了解(点击蓝字查看)⬇️➡️ OpenVINO™ 2023.2 发布:让生成式 AI 在实际场景中更易用➡️ 开发实战 | 介绍OpenVINO™ 2023.1:在边缘端赋能生成式AI➡️ 基于 ChatGLM2 和 OpenVINO™ 打造中文聊天助手➡️ 基于 Llama2 和 OpenVINO™ 打造聊天机器人➡️ OpenVINO™ DevCon 2023重磅回归英特尔创新产品激发开发无限潜能➡️ 5周年更新 | OpenVINO™  2023.0,让AI部署和加速更容易➡️ OpenVINO™5周年重头戏!2023.0版本持续升级AI部署和加速性能➡️ OpenVINO™2023.0实战 | 在 LabVIEW 中部署 YOLOv8 目标检测模型➡️ 开发实战系列资源包来啦!➡️ 以AI作画,祝她节日快乐;简单三步,OpenVINO™ 助你轻松体验AIGC
➡️ 还不知道如何用OpenVINO™作画?点击了解教程
扫描下方二维码立即体验 
OpenVINO™ 工具套件 2023.2

点击 阅读原文 立即体验OpenVINO 2023.2

55b02f67e5c0adab02648bd83b5ebef4.png

文章这么精彩,你有没有“在看”?

原文地址:https://blog.csdn.net/OpenVINOCC/article/details/134725210

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_42840.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注