0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用OpenVINO加速LangChain中LLM任務(wù)

OpenCV學(xué)堂 ? 來(lái)源:OpenCV學(xué)堂 ? 2023-12-05 09:58 ? 次閱讀

LangChain簡(jiǎn)介

LangChain 是一個(gè)高層級(jí)的開源的框架,從字面意義理解,LangChain 可以被用來(lái)構(gòu)建 “語(yǔ)言處理任務(wù)的鏈條”,它可以讓AI開發(fā)人員把大型語(yǔ)言模型(LLM)的能力和外部數(shù)據(jù)結(jié)合起來(lái),從而去完成一些更復(fù)雜的任務(wù)。簡(jiǎn)單來(lái)說(shuō),LangChain 可以讓你的 LLM 在回答問(wèn)題時(shí)參考自定義的知識(shí)庫(kù),實(shí)現(xiàn)更精確的答案輸出。例如在以下這個(gè)Retrieval Augmented Generation (RAG)任務(wù),LangChain 可以根據(jù)問(wèn)題從已有的知識(shí)庫(kù)中進(jìn)行檢索,并將原始的檢索結(jié)果和問(wèn)題一并包裝為Prompt提示送入 LLM 中,以此獲得更加貼近問(wèn)題需求的答案。

LangChain 的核心能力主要由以下幾個(gè)模型所構(gòu)成。

提示(prompts): 包括提示管理、提示優(yōu)化和提示序列化。

大語(yǔ)言模型(LLM): 提供調(diào)用大預(yù)言模型生成文本的接口。

檢索(Retrieval): 該模塊用于構(gòu)建自定義的知識(shí)倉(cāng)庫(kù),從而基于LLM實(shí)現(xiàn)基于文檔數(shù)據(jù)檢測(cè)的文本生成任務(wù)(RAG),這也是LangChain最核心的能力之一。

代理(agents): LLM作為代理其他工具的代理,通過(guò)LLM來(lái)判斷可以調(diào)用什么工具(tool)來(lái)解決用戶提出的特殊需求。此處的工具需要被封裝成API接口,供LangChain調(diào)用,比如一個(gè)返回文本長(zhǎng)度的函數(shù),就可以是一個(gè)工具。

記憶(memory): 記憶主要用來(lái)存儲(chǔ)多輪對(duì)話中的歷史數(shù)據(jù),以便在后續(xù)的回答任務(wù)中可以對(duì)之前的交流記錄進(jìn)行參考。

基于以上這些模塊,LangChain可以被應(yīng)用于一些更復(fù)雜的任務(wù)中,例如:個(gè)人AI郵件助手,AI學(xué)習(xí)伙伴,AI數(shù)據(jù)分析,定制公司客服聊天機(jī)器人,社交媒體內(nèi)容創(chuàng)作助手等,做為L(zhǎng)angChain任務(wù)部署過(guò)程中的底座,LLM的推理任務(wù)勢(shì)必是重點(diǎn)可以被優(yōu)化的方向,那如何利用OpenVINO來(lái)加速LangChain的中LLM任務(wù)呢,這里為大家整理了以下兩個(gè)方法:

方法一:利用 Huggingface pipeline

調(diào)用 Optimum 后端

鑒于langchain.llm對(duì)象已經(jīng)支持了huggingface_pipeline來(lái)直接調(diào)用huggingface上的LLM

同時(shí)Huggingface的Optimum-intel組件可以將huggingface pipeline中的LLM推理任務(wù)通過(guò)OpenVINO進(jìn)行加速。因此我們的第一種方案就是利用Optimum-intel的pipeline來(lái)替換原本的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)

紅色部分是標(biāo)準(zhǔn)Transformers (第3、5行)庫(kù)在 huggingface_pipeline 中的調(diào)用方式,綠色部分為Optimum-intel(第4、6行)的調(diào)用方式,可以看到我們僅僅只需修改兩行代碼就可以把 LangChain 原生的 LLM 任務(wù),通過(guò) OpenVIN 進(jìn)行加速,并且 Optimum-intel 提供的 API 也支持將 LLM 部署到不同的硬件平臺(tái),例如 Intel 的 CPUGPU 系列產(chǎn)品。

方法二:構(gòu)建新的 OpenVINO pipeline 類

第一種方法固然簡(jiǎn)單,但如果遇到 Optimum-intel 中還未適配的 LLM,那依然無(wú)法奏效,因此這里的第二種辦法就是參考 HuggingFacePipeline 這個(gè)類對(duì)象,重新構(gòu)建一個(gè)基于 OpenVINO 的類對(duì)象,以此來(lái)支持自定義的模型類別。

倉(cāng)庫(kù)中的ov_pipeline.py就是用來(lái)構(gòu)建 OpenVINO pipeline 的代碼,為了方便演示,示例中底層還是調(diào)取 Optimum-intel 進(jìn)行推理,但不同與第一種方式,這里我們可以選擇脫離 Optimum-intel 的束縛,自行定義pipeline中的關(guān)鍵方法。這里有兩個(gè)關(guān)鍵方法:

1. from_model_id函數(shù)用于讀取本地或者遠(yuǎn)端的LLM以及其對(duì)應(yīng)的Tokenizer,并利用OpenVINO runtime 對(duì)其進(jìn)行編譯以及初始化。這里的函數(shù)名僅供參考,大家可以根據(jù)自己的習(xí)慣自行修改,此外在這個(gè)函數(shù)中,我們還可以對(duì)模型的配置進(jìn)行調(diào)整,比如指定不同的硬件平臺(tái)進(jìn)行部署,修改硬件端性能配置,例如供推理任務(wù)線程數(shù)(tread),并行任務(wù)數(shù)(stream)等,該函數(shù)預(yù)期返回一個(gè)可以直接運(yùn)行的模型對(duì)象。

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

2. _call函數(shù)繼承自父類 LLM,用于根據(jù)提升生成本文,根據(jù)父類中的定義,他的輸入為 prompt文本,輸出同樣也是一個(gè)文本,因此在這個(gè)函數(shù)中就要求我們實(shí)現(xiàn)三個(gè)功能,Tokenizer分詞編碼->LLM推理->tokenizer 解碼,其實(shí)這也是LLM 問(wèn)答任務(wù)中必須經(jīng)歷的三個(gè)步驟,所以這里的實(shí)現(xiàn)方式大家可以根據(jù)自己LLM模型對(duì)于輸入輸出的要求自行定義。

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

3. 這個(gè)倉(cāng)庫(kù)中提供了一個(gè)簡(jiǎn)單的 LangChain 示例sample.py,用于展示自定義 OpenVINO pipeline 在 LangChain 中的調(diào)用方式,核心部分可以參考以下代碼片段。

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=prompt,llm=llm)

總結(jié)

LangChain 做為當(dāng)前最受歡迎的自然語(yǔ)言系統(tǒng)框架之一,可以幫助開發(fā)者快速構(gòu)建起基于LLM的上層應(yīng)用方案。而 OpenVINO 2023.2 新版本的發(fā)布又進(jìn)一步提升了LLM的性能表現(xiàn),同時(shí)降低了部署門檻,兩者的結(jié)合可以幫助開發(fā)者更便捷地在英特爾平臺(tái)上部署基于大語(yǔ)言模型的服務(wù)系統(tǒng),豐富本地化 AI PC 應(yīng)用場(chǎng)景的落地。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3125

    瀏覽量

    42067
  • 語(yǔ)言模型
    +關(guān)注

    關(guān)注

    0

    文章

    487

    瀏覽量

    10201
  • OpenVINO
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    139

原文標(biāo)題:如何在 LangChain 中調(diào)用 OpenVINO? 加速大語(yǔ)言模型

文章出處:【微信號(hào):CVSCHOOL,微信公眾號(hào):OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    低比特量化技術(shù)如何幫助LLM提升性能

    針對(duì)大語(yǔ)言模型 (LLM) 在部署過(guò)程的性能需求,低比特量化技術(shù)一直是優(yōu)化效果最佳的方案之一,本文將探討低比特量化技術(shù)如何幫助 LLM 提升性能,以及新版 OpenVINO 對(duì)于低比
    的頭像 發(fā)表于 12-08 15:26 ?943次閱讀
    低比特量化技術(shù)如何幫助<b class='flag-5'>LLM</b>提升性能

    基于OpenVINOLangChain構(gòu)建RAG問(wèn)答系統(tǒng)

    隨著生成式 AI 的興起,和大語(yǔ)言模型對(duì)話聊天的應(yīng)用變得非常熱門,但這類應(yīng)用往往只能簡(jiǎn)單地和你“聊聊家常”,并不能針對(duì)某些特定的行業(yè),給出非常專業(yè)和精準(zhǔn)的答案。這也是由于大語(yǔ)言模型(以下簡(jiǎn)稱 LLM
    的頭像 發(fā)表于 12-25 11:10 ?757次閱讀
    基于<b class='flag-5'>OpenVINO</b>和<b class='flag-5'>LangChain</b>構(gòu)建RAG問(wèn)答系統(tǒng)

    如何利用LLM做多模態(tài)任務(wù)?

    大型語(yǔ)言模型LLM(Large Language Model)具有很強(qiáng)的通用知識(shí)理解以及較強(qiáng)的邏輯推理能力,但其只能處理文本數(shù)據(jù)。雖然已經(jīng)發(fā)布的GPT4具備圖片理解能力,但目前還未開放多模態(tài)輸入接口并且不會(huì)透露任何模型上技術(shù)細(xì)節(jié)。因此,現(xiàn)階段,如何利用
    的頭像 發(fā)表于 05-11 17:09 ?808次閱讀
    如何<b class='flag-5'>利用</b><b class='flag-5'>LLM</b>做多模態(tài)<b class='flag-5'>任務(wù)</b>?

    在AI愛(ài)克斯開發(fā)板上用OpenVINO?加速YOLOv8目標(biāo)檢測(cè)模型

    《在 AI 愛(ài)克斯開發(fā)板上用 OpenVINO 加速 YOLOv8 分類模型》介紹了在 AI 愛(ài)克斯開發(fā)板上使用 OpenVINO 開發(fā)套件部署并測(cè)評(píng) YOLOv8 的分類模型,本文將介紹在 AI 愛(ài)克斯開發(fā)板上使用
    的頭像 發(fā)表于 05-12 09:08 ?1148次閱讀
    在AI愛(ài)克斯開發(fā)板上用<b class='flag-5'>OpenVINO</b>?<b class='flag-5'>加速</b>YOLOv8目標(biāo)檢測(cè)模型

    如何利用LLM做一些多模態(tài)任務(wù)

    本文整理了近兩年來(lái)基于LLM做vision-lanuage任務(wù)的一些工作,并將其劃分為4個(gè)類別:
    的頭像 發(fā)表于 05-17 15:02 ?765次閱讀
    如何<b class='flag-5'>利用</b><b class='flag-5'>LLM</b>做一些多模態(tài)<b class='flag-5'>任務(wù)</b>

    AI愛(ài)克斯開發(fā)板上使用OpenVINO加速YOLOv8目標(biāo)檢測(cè)模型

    《在AI愛(ài)克斯開發(fā)板上用OpenVINO加速YOLOv8分類模型》介紹了在AI愛(ài)克斯開發(fā)板上使用OpenVINO 開發(fā)套件部署并測(cè)評(píng)YOLOv8的分類模型,本文將介紹在AI愛(ài)克斯開發(fā)板上使用O
    的頭像 發(fā)表于 05-26 11:03 ?1075次閱讀
    AI愛(ài)克斯開發(fā)板上使用<b class='flag-5'>OpenVINO</b><b class='flag-5'>加速</b>YOLOv8目標(biāo)檢測(cè)模型

    LLM在各種情感分析任務(wù)的表現(xiàn)如何

    地址 :https://arxiv.org/pdf/2305.15005.pdf 代碼 :https://github.com/DAMO-NLP-SG/LLM-Sentiment 這篇工作調(diào)查了LLM時(shí)代情感分析的研究現(xiàn)狀,旨在幫助SA研究者們解決以下困惑:
    的頭像 發(fā)表于 05-29 17:24 ?2036次閱讀
    <b class='flag-5'>LLM</b>在各種情感分析<b class='flag-5'>任務(wù)</b><b class='flag-5'>中</b>的表現(xiàn)如何

    LangChain跑起來(lái)的3個(gè)方法

    使用 LangChain 開發(fā) LLM 應(yīng)用時(shí),需要機(jī)器進(jìn)行 GLM 部署,好多同學(xué)第一步就被勸退了,
    的頭像 發(fā)表于 07-05 09:59 ?1152次閱讀
    把<b class='flag-5'>LangChain</b>跑起來(lái)的3個(gè)方法

    OpenVINO場(chǎng)景文字檢測(cè)與文字識(shí)別教程

    OpenVINO是英特爾推出的深度學(xué)習(xí)模型部署框架,當(dāng)前最新版本是OpenVINO2023版本。OpenVINO2023自帶各種常見(jiàn)視覺(jué)任務(wù)支持的預(yù)訓(xùn)練模型庫(kù)Model Zoo,其中支
    的頭像 發(fā)表于 09-24 15:31 ?1296次閱讀
    <b class='flag-5'>OpenVINO</b>場(chǎng)景文字檢測(cè)與文字識(shí)別教程

    如何快速下載OpenVINO Notebooks的AI大模型

    OpenVINO Notebooks是Jupyter Notebook形式的OpenVINO范例程序大集合,方便開發(fā)者快速學(xué)習(xí)并掌握OpenVINO推理程序,并通過(guò)Copy&Paste方式將范例
    的頭像 發(fā)表于 12-12 14:40 ?968次閱讀
    如何快速下載<b class='flag-5'>OpenVINO</b> Notebooks<b class='flag-5'>中</b>的AI大模型

    LangChain 0.1版本正式發(fā)布

    LangChain 由 Harrison Chase 于 2022 年 10 月推出,是一個(gè)開源編排框架,用于使用 LLM 開發(fā)應(yīng)用程序,推出后迅速脫穎而出,截至 2023 年 6 月,它是 GitHub 上增長(zhǎng)最快的開源項(xiàng)目。
    的頭像 發(fā)表于 01-10 10:28 ?814次閱讀

    探索LangChain:構(gòu)建專屬LLM應(yīng)用的基石

    LangChain通過(guò)Loader加載外部的文檔,轉(zhuǎn)化為標(biāo)準(zhǔn)的Document類型。Document類型主要包含兩個(gè)屬性:page_content 包含該文檔的內(nèi)容。meta_data 為文檔相關(guān)的描述性數(shù)據(jù),類似文檔所在的路徑等。
    發(fā)表于 01-30 10:33 ?515次閱讀
    探索<b class='flag-5'>LangChain</b>:構(gòu)建專屬<b class='flag-5'>LLM</b>應(yīng)用的基石

    解鎖LLM新高度—OpenVINO? 2024.1賦能生成式AI高效運(yùn)行

    LLM 的發(fā)展仍保持著驚人的速度。盡管現(xiàn)有的 LLM 已經(jīng)具備強(qiáng)大的功能,但通過(guò) OpenVINO? 的優(yōu)化和推理加速,可以對(duì)這些復(fù)雜模型的執(zhí)行進(jìn)行精煉,實(shí)現(xiàn)更快、更高效的處理,減少計(jì)
    的頭像 發(fā)表于 05-10 10:36 ?379次閱讀

    LLM大模型推理加速的關(guān)鍵技術(shù)

    LLM(大型語(yǔ)言模型)大模型推理加速是當(dāng)前人工智能領(lǐng)域的一個(gè)研究熱點(diǎn),旨在提高模型在處理復(fù)雜任務(wù)時(shí)的效率和響應(yīng)速度。以下是對(duì)LLM大模型推理加速
    的頭像 發(fā)表于 07-24 11:38 ?493次閱讀

    LangChain框架關(guān)鍵組件的使用方法

    LangChain,開發(fā)者可以輕松構(gòu)建基于RAG或者Agent流水線的復(fù)雜應(yīng)用體系,而目前我們已經(jīng)可以在LangChain的關(guān)鍵組件LLM,Text Embedding和Reranker中直接調(diào)用
    <b class='flag-5'>LangChain</b>框架關(guān)鍵組件的使用方法