女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

    文章

    3673

    瀏覽量

    43797
  • 語言模型
    +關注

    關注

    0

    文章

    561

    瀏覽量

    10782
  • OpenVINO
    +關注

    關注

    0

    文章

    115

    瀏覽量

    480

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于OpenVINOLangChain構建RAG問答系統

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

    利用OpenVINO和LlamaIndex工具構建多模態RAG應用

    Retrieval-Augmented Generation (RAG) 系統可以通過從知識庫過濾關鍵信息來優化 LLM 任務的內存占用及推理性能。歸功于文本解析、索引和檢索等成熟工具的應用,為
    的頭像 發表于 02-21 10:18 ?2105次閱讀
    <b class='flag-5'>利用</b><b class='flag-5'>OpenVINO</b>和LlamaIndex工具構建多模態RAG應用

    如何在魔搭社區使用TensorRT-LLM加速優化Qwen3系列模型推理部署

    TensorRT-LLM 作為 NVIDIA 專為 LLM 推理部署加速優化的開源庫,可幫助開發者快速利用最新 LLM 完成應用原型驗證與產
    的頭像 發表于 07-04 14:38 ?613次閱讀

    請問如何通過OpenVINO?加速啟用穩定的擴散 Web UI?

    無法運行具有OpenVINO?加速的穩定擴散 Web UI。
    發表于 06-24 06:48

    如何利用LLM做多模態任務

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

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

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

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

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

    LangChain跑起來的3個方法

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

    LangChain 0.1版本正式發布

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

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

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

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

    LLM 的發展仍保持著驚人的速度。盡管現有的 LLM 已經具備強大的功能,但通過 OpenVINO? 的優化和推理加速,可以對這些復雜模型的執行進行精煉,實現更快、更高效的處理,減少計
    的頭像 發表于 05-10 10:36 ?876次閱讀

    LLM大模型推理加速的關鍵技術

    LLM(大型語言模型)大模型推理加速是當前人工智能領域的一個研究熱點,旨在提高模型在處理復雜任務時的效率和響應速度。以下是對LLM大模型推理加速
    的頭像 發表于 07-24 11:38 ?1792次閱讀

    LangChain框架關鍵組件的使用方法

    LangChain,開發者可以輕松構建基于RAG或者Agent流水線的復雜應用體系,而目前我們已經可以在LangChain的關鍵組件LLM,Text Embedding和Reranker中直接調用
    的頭像 發表于 08-30 16:55 ?1179次閱讀
    <b class='flag-5'>LangChain</b>框架關鍵組件的使用方法

    OpenVINO 2024.4持續提升GPU上LLM性能

    本次新版本在整個 OpenVINO 產品系列引入了重要的功能和性能變化,使大語言模型 (LLM) 的優化和部署在所有支持的場景更容易、性能更高,包括邊緣和數據中心環境的部署。
    的頭像 發表于 10-12 09:41 ?925次閱讀
    <b class='flag-5'>OpenVINO</b> 2024.4持續提升GPU上<b class='flag-5'>LLM</b>性能

    如何在Ollama中使用OpenVINO后端

    Ollama 和 OpenVINO 的結合為大型語言模型(LLM)的管理和推理提供了強大的雙引擎驅動。Ollama 提供了極簡的模型管理工具鏈,而 OpenVINO 則通過 Intel 硬件(CPU
    的頭像 發表于 04-14 10:22 ?456次閱讀