<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何利用OpenVINO加速LangChain中LLM任務

OpenCV學堂 ? 來源:OpenCV學堂 ? 2023-12-05 09:58 ? 次閱讀

LangChain簡介

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

LangChain 的核心能力主要由以下幾個模型所構成。

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

大語言模型(LLM): 提供調用大預言模型生成文本的接口。

檢索(Retrieval): 該模塊用于構建自定義的知識倉庫,從而基于LLM實現基于文檔數據檢測的文本生成任務(RAG),這也是LangChain最核心的能力之一。

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

記憶(memory): 記憶主要用來存儲多輪對話中的歷史數據,以便在后續的回答任務中可以對之前的交流記錄進行參考。

基于以上這些模塊,LangChain可以被應用于一些更復雜的任務中,例如:個人AI郵件助手,AI學習伙伴,AI數據分析,定制公司客服聊天機器人,社交媒體內容創作助手等,做為LangChain任務部署過程中的底座,LLM的推理任務勢必是重點可以被優化的方向,那如何利用OpenVINO來加速LangChain的中LLM任務呢,這里為大家整理了以下兩個方法:

方法一:利用 Huggingface pipeline

調用 Optimum 后端

鑒于langchain.llm對象已經支持了huggingface_pipeline來直接調用huggingface上的LLM

同時Huggingface的Optimum-intel組件可以將huggingface pipeline中的LLM推理任務通過OpenVINO進行加速。因此我們的第一種方案就是利用Optimum-intel的pipeline來替換原本的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 中的調用方式,綠色部分為Optimum-intel(第4、6行)的調用方式,可以看到我們僅僅只需修改兩行代碼就可以把 LangChain 原生的 LLM 任務,通過 OpenVIN 進行加速,并且 Optimum-intel 提供的 API 也支持將 LLM 部署到不同的硬件平臺,例如 Intel 的 CPUGPU 系列產品。

方法二:構建新的 OpenVINO pipeline 類

第一種方法固然簡單,但如果遇到 Optimum-intel 中還未適配的 LLM,那依然無法奏效,因此這里的第二種辦法就是參考 HuggingFacePipeline 這個類對象,重新構建一個基于 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=prompt,llm=llm)

總結

LangChain 做為當前最受歡迎的自然語言系統框架之一,可以幫助開發者快速構建起基于LLM的上層應用方案。而 OpenVINO 2023.2 新版本的發布又進一步提升了LLM的性能表現,同時降低了部署門檻,兩者的結合可以幫助開發者更便捷地在英特爾平臺上部署基于大語言模型的服務系統,豐富本地化 AI PC 應用場景的落地。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源
    +關注

    關注

    3

    文章

    3029

    瀏覽量

    41814
  • 語言模型
    +關注

    關注

    0

    文章

    463

    瀏覽量

    10151
  • OpenVINO
    +關注

    關注

    0

    文章

    63

    瀏覽量

    103

原文標題:如何在 LangChain 中調用 OpenVINO? 加速大語言模型

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    對比解碼在LLM上的應用

    為了改進LLM的推理能力,University of California聯合Meta AI實驗室提出將Contrastive Decoding應用于多種任務LLM方法。實驗表明,所提方法能有效改進
    發表于 09-21 11:37 ?424次閱讀
    對比解碼在<b class='flag-5'>LLM</b>上的應用

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

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

    基于OpenVINOLangChain構建RAG問答系統

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

    LangChain:為你定制一個專屬的GPT

    LangChain 可以輕松管理與語言模型的交互,將多個組件鏈接在一起,并集成額外的資源,例如 API 和數據庫。其組件包括了模型(各類LLM),提示模板(Prompts),索引,代理(Agent),記憶等等。
    的頭像 發表于 04-24 11:27 ?1129次閱讀
    <b class='flag-5'>LangChain</b>:為你定制一個專屬的GPT

    如何利用LLM做多模態任務?

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

    在AI愛克斯開發板上用OpenVINO?加速YOLOv8目標檢測模型

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

    如何利用LLM做一些多模態任務

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

    AI愛克斯開發板上使用OpenVINO加速YOLOv8目標檢測模型

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

    LLM在各種情感分析任務中的表現如何

    ? 最近幾年,GPT-3、PaLM和GPT-4等LLM刷爆了各種NLP任務,特別是在zero-shot和few-shot方面表現出它們強大的性能。因此,情感分析(SA)領域也必然少不了LLM的影子
    的頭像 發表于 05-29 17:24 ?1693次閱讀
    <b class='flag-5'>LLM</b>在各種情感分析<b class='flag-5'>任務</b>中的表現如何

    在AI愛克斯開發板上用OpenVINO?加速YOLOv8-seg實例分割模型

    《在 AI 愛克斯開發板上用 OpenVINO 加速 YOLOv8 目標檢測模型》介紹了在 AI 愛克斯開發板上使用 OpenVINO 開發套件部署并測評 YOLOv8 的目標檢測模型,本文將介紹在 AI 愛克斯開發板上使用
    的頭像 發表于 06-05 11:52 ?679次閱讀
    在AI愛克斯開發板上用<b class='flag-5'>OpenVINO</b>?<b class='flag-5'>加速</b>YOLOv8-seg實例分割模型

    在AI愛克斯開發板上用OpenVINO?加速YOLOv8-seg實例分割模型

    《在 AI 愛克斯開發板上用 OpenVINO 加速 YOLOv8 目標檢測模型》介紹了在 AI 愛克斯開發板上使用 OpenVINO 開發套件部署并測評 YOLOv8 的目標檢測模型,本文將介紹在 AI 愛克斯開發板上使用
    的頭像 發表于 06-30 10:43 ?500次閱讀
    在AI愛克斯開發板上用<b class='flag-5'>OpenVINO</b>?<b class='flag-5'>加速</b>YOLOv8-seg實例分割模型

    LangChain跑起來的3個方法

    使用 LangChain 開發 LLM 應用時,需要機器進行 GLM 部署,好多同學第一步就被勸退了,
    的頭像 發表于 07-05 09:59 ?1014次閱讀
    把<b class='flag-5'>LangChain</b>跑起來的3個方法

    LangChain 0.1版本正式發布

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

    探索LangChain:構建專屬LLM應用的基石

    LangChain通過Loader加載外部的文檔,轉化為標準的Document類型。Document類型主要包含兩個屬性:page_content 包含該文檔的內容。meta_data 為文檔相關的描述性數據,類似文檔所在的路徑等。
    發表于 01-30 10:33 ?349次閱讀
    探索<b class='flag-5'>LangChain</b>:構建專屬<b class='flag-5'>LLM</b>應用的基石

    解鎖LLM新高度—OpenVINO? 2024.1賦能生成式AI高效運行

    LLM 的發展仍保持著驚人的速度。盡管現有的 LLM 已經具備強大的功能,但通過 OpenVINO? 的優化和推理加速,可以對這些復雜模型的執行進行精煉,實現更快、更高效的處理,減少計
    的頭像 發表于 05-10 10:36 ?239次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>