日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

OpenVINO?協(xié)同Semantic Kernel:優(yōu)化大模型應用性能新路徑

英特爾物聯(lián)網 ? 來源:英特爾物聯(lián)網 ? 2024-03-08 10:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作為主要面向 RAG 任務方向的框架,Semantic Kernel 可以簡化大模型應用開發(fā)過程,而在 RAG 任務中最常用的深度學習模型就是 Embedding 和 Text completion,分別實現(xiàn)文本的語義向量化和文本生成,因此本文主要會分享如何在 Semantic Kernel 中調用 OpenVINO runtime 部署 Embedding 和 Text completion 模型。

Semantic Kernel簡介

Semantic Kernel 是微軟推出的大模型應用框架,支持 C#, PythonJava 等開發(fā)環(huán)境,通過 Semantic Kernel 集成的API接口開發(fā)者可以直接調用 OpenAI 或是 Hugging Face 中的大語言模型,進一步構建上層應用任務,例如 Chat Copilot 或是 Code completion ,等。顧名思義,Semantic Kernel 的核心就在于由 Kernel 所連接的 pipeline/chain,它通過上下文,實現(xiàn)在各個函數(shù)組件間共享數(shù)據,下面這張展示的就是用戶的輸入 Prompt 如何在這些組件中進行流轉,最終返回響應結果。

112675f6-dc6c-11ee-a297-92fbcf53809c.png

圖:Semantic Kernel組件示意圖

OpenVINO 簡介

OpenVINO 作為英特爾官方推出的深度學習模型部署工具,可以極大地提升本地模型任務的推理性能。同時 OpenVINO 支持了多種推理后端,使模型可以在多種不同的硬件架構上進行部署和切換,進一步提升任務的靈活性與系統(tǒng)資源利用率,例如我們可以利用 NPU 來部署一些輕負載的 AI 模型以降低功耗,利用 GPU 來部署大模型以優(yōu)化反饋延遲??傊?strong>在大模型本地化趨勢越來越熱的今天,OpenVINO 勢必成為在 PC 端部署大模型任務的好幫手。

OpenVINO 與 Semantic Kernel

集成實現(xiàn)

Semantic Kernel 的 Connector 是一種用于連接外部數(shù)據源和服務的設計模式,包括獲取數(shù)據和保存輸出結果,而 Semantic Kernel 已經原生集成了許多開箱即用的大模型服務 Plugin,其中就包括了基于 Hugging Face Transformers 構建的的 Embedding 和 Text completion Service,因此我們可以參考這兩個 Service 的代碼,來實現(xiàn)一組 OpenVINO 的 Service,完成和 Connectors 組件的集成,分別命名為 OpenVINOTextEmbedding 以及 OpenVINOTextCompletion。

1

Text completion service

首先是 Text completion 任務,由于 OpenVINO 可以通過 Optimum-intel 直接部署 Hugging Face中的 "summarization", "text-generation", "text2text-generation" 等模型,相較原生 Transformers API 的使用方式,也僅僅需要做少量修改(如以下代碼所示)。

- from transformers import AutoModelForCausalLM

+ from optimum.intel.openvino import OVModelForCausalLM

- model = AutoModelForCausalLM.from_pretrained(model_id)

+ ov_model = OVModelForCausalLM.from_pretrained(model_id)

generate_ids = ov_model.generate(input_ids)

因此,我們也可以直接在 Hugging Face Text completion service 的基礎上直接將 Transformers 的模型加載對象切換為 Optimum-intel 的對象,以實現(xiàn)基于 OpenVINO runtime 的模型推理。這里可通過 OVModelForCausalLM 類來部署 "text-generation" 類型的大模型,通過 OVModelForSeq2SeqLM 類調用 "text2text-generation", "summarization" 類型模型。

if task == "text-generation":
  ov_model = OVModelForCausalLM.from_pretrained(
   ai_model_id, **_model_kwargs)
 elif task in ("text2text-generation", "summarization"):
   ov_model = OVModelForSeq2SeqLM.from_pretrained(
    ai_model_id, **_model_kwargs)

2

Embedding service

不同于 Text completion service, Semantic Kernel 中集成的 Hugging Face Embedding service 是基于 sentence_transformers 庫來實現(xiàn)的,并調用 encode 函數(shù)來進行 Embedding 文本向量化。

generator=sentence_transformers.SentenceTransformer(model_name_or_path=ai_model_id, device=resolved_device),
embeddings = self.generator.encode(texts)

而 OpenVINO 目前暫未直接對接 sentence_transformers 的模型部署接口,因此這里我們需要手動將 sentence_transformers 的 PyTorch 模型對象轉化為 OpenVINO IR 格式后,再重新構建它的 encode 函數(shù) pipeline。

可以看到 Hugging Face 的 embedding 模型除了支持 Sentence-Transformers 對象部署方式外,還可以基于 Transformers 庫的方式,通過 AutoModel.from_pretrained 獲取 nn.module 格式的模型對象,而 OpenVINO 的 PyTorch 前端則已經支持對該格式對象的直接轉換,所以我們首先需要手寫一個轉換腳本,來實現(xiàn) Embedding 模型從 PyTorch 對象到 OpenVINO IR 格式的轉化過程。

  tokenizer = AutoTokenizer.from_pretrained(args.model_id)
  model = AutoModel.from_pretrained(args.model_id)


  dummy_inputs = {"input_ids": torch.ones((1, 10), dtype=torch.long), "attention_mask": torch.ones(
    (1, 10), dtype=torch.long), "token_type_ids": torch.zeros((1, 10), dtype=torch.long)}


  ov_model = ov.convert_model(model, example_input=dummy_inputs)
  ov.save_model(ov_model, model_path / "openvino_model.xml")

在定義新的 encode 函數(shù)時,鑒于在 RAG 系統(tǒng)中的各個句子的向量化任務往往沒有依賴關系,因此我們可以通過 OpenVINO 的 AsyncInferQueue 接口,將這部分任務并行化,以提升整個 Embedding 任務的吞吐量。

infer_queue = ov.AsyncInferQueue(self.model, nireq)
    for i, sentence in enumerate(sentences_sorted):
      inputs = {}
      features = self.tokenizer(
        sentence, padding=True, truncation=True, return_tensors='np')
      for key in features:
        inputs[key] = features[key]
      infer_queue.start_async(inputs, i)
    infer_queue.wait_all()

此外,從 HuggingFace Transfomers 庫中導出的 Embedding 模型是不包含 mean_pooling 和歸一化操作的,因此我們需要在獲取模型推理結果后,再實現(xiàn)這部分后處理任務。并將其作為 callback function 與 AsyncInferQueue 進行綁定。

    def postprocess(request, userdata):
      embeddings = request.get_output_tensor(0).data
      embeddings = np.mean(embeddings, axis=1)
      if self.do_norm:
        embeddings = normalize(embeddings, 'l2')
      all_embeddings.extend(embeddings)


    infer_queue.set_callback(postprocess)

測試驗證

當完成這兩個關鍵對象的創(chuàng)建后,我們可以來驗證一下重新構建的 OpenVINO 任務效果。

第一步:我們需要將 Embedding 和 Text completion 這兩個模型分轉換并導出到本地。這里以 all-MiniLM-L6-v2 和 gpt2 為例。

Embedding 模型可以通過剛剛定義的轉換腳本導出模型:

python3 export_embedding.py -m sentence-transformers/all-MiniLM-L6-v2

Text completion 模型可以通過 Optimum-intel 中自帶命令行工具導出:

optimum-cli export openvino --model gpt2 llm_model

第二步:通過修改 Semantic Kernel 官方提供的 Hugging Face Plugins 示例

來測試 OpenVINO Plugin 的效果,該示例基于 Embedding 和 Text completion 模型構建了一個最小化的 RAG 任務 pipeline。此處只需要把原始的 Hugging Face service 對象替換為我們剛剛構建的 OpenVINOTextEmbedding 和 OpenVINOTextCompletion 對象,其中 ai_model_id 需要修改為模型文件夾的本地路徑。

kernel.add_text_completion_service(
  service_id="gpt2",
  service=OpenVINOTextCompletion(ai_model_id="./llm_model", task="text-generation", model_kwargs={
                  "device": "CPU", "ov_config": ov_config}, pipeline_kwargs={"max_new_tokens": 64})
)


kernel.add_text_embedding_generation_service(
  service_id="sentence-transformers/all-MiniLM-L6-v2",
  service=OpenVINOTextEmbedding(ai_model_id="./embedding_model"),
)

在這個示例中 Kernel 是通過 kernel.memory.save_information 函數(shù)來實現(xiàn)知識的注入,過程中會調用 Embedding service 來完成對于文本的語義向量化操作。我們可以通過執(zhí)行以下命令來執(zhí)行完整的 notebook 測試腳本。

$ jupyter lab sample.ipynb

示例中為了簡化模型下載和轉化步驟,采用了相較主流 LLM 更輕量化的gpt2來實現(xiàn)文本內容生成,因此在輸出內容上會相對單一,如果需要實現(xiàn)更復雜的內容生成能力,可以將其替換為一些參數(shù)規(guī)模更大的文本生成模型,最終輸出結果如下:

gpt2 completed prompt with: 'I know these animal facts: ["Dolphins are mammals."] ["Flies are insects."] ["Penguins are birds."] and "Horses are mammals."

對比官方原始 Hugging Face Plugins 示例的輸出結果,與注入的知識庫信息,兩者對于 animal facts 的判斷使一致的,這也證明我們的重新構建的 OpenVINO Plugin 在模型輸出的準確性上是沒有問題的。

總結

在醫(yī)療、工業(yè)等領域,行業(yè)知識庫的構建已經成為了一個普遍需求,通過 Semantic-Kernel 與 OpenVINO 的加持,我們可以讓用戶對于知識庫的查詢以及反饋變得更加精準高效,降低 RAG 任務的開發(fā)門檻,帶來更加友好的交互體驗。




審核編輯:劉清

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

    關注

    20

    文章

    3012

    瀏覽量

    116877
  • OpenAI
    +關注

    關注

    9

    文章

    1252

    瀏覽量

    10296
  • 大模型
    +關注

    關注

    2

    文章

    3797

    瀏覽量

    5279
  • LLM
    LLM
    +關注

    關注

    1

    文章

    350

    瀏覽量

    1397

原文標題:OpenVINO? 協(xié)同 Semantic Kernel:優(yōu)化大模型應用性能新路徑 | 開發(fā)者實戰(zhàn)

文章出處:【微信號:英特爾物聯(lián)網,微信公眾號:英特爾物聯(lián)網】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    靈途科技深化跨界協(xié)同:共探靈巧手空間感知與納米微針應用新路徑

    ,展開了一場關于精密感知與微納技術融合的深度考察與合作探討。 ? 靈途科技深化跨界協(xié)同 共探靈巧手空間感知與納米微針應用新路徑 ? Part.1 聚焦靈巧手:從“看得見”到“抓得準” 隨著具身智能的快速發(fā)展,靈巧手正從基礎執(zhí)行單元向高精度操作系統(tǒng)演進。傳統(tǒng)機
    的頭像 發(fā)表于 04-14 12:01 ?111次閱讀
    靈途科技深化跨界<b class='flag-5'>協(xié)同</b>:共探靈巧手空間感知與納米微針應用<b class='flag-5'>新路徑</b>

    突破傳統(tǒng)桎梏,PPEC Workbench 開啟電源智能化設計新路徑

    功能板塊,打破了傳統(tǒng)電源設計枷鎖,重新定義了電源設計的新路徑,驅動電源行業(yè)向智能高效革新。 1、 圖形化編程:降低設計門檻 ■ 圖形化編程: 平臺采用圖形化算法編程界面,摒棄傳統(tǒng)代碼編寫模式。 ■ 拖拽式
    發(fā)表于 08-26 11:40

    硬件與應用同頻共振,英特爾Day 0適配騰訊開源混元大模型

    今日,騰訊正式發(fā)布新一代混元開源大語言模型。英特爾憑借在人工智能領域的全棧技術布局,現(xiàn)已在英特爾? 酷睿? Ultra 平臺上完成針對該模型的第零日(Day 0)部署與性能優(yōu)化。值得一
    的頭像 發(fā)表于 08-07 14:42 ?1562次閱讀
    硬件與應用同頻共振,英特爾Day 0適配騰訊開源混元大<b class='flag-5'>模型</b>

    切割液性能智能調控系統(tǒng)與晶圓 TTV 預測模型協(xié)同構建

    摘要 本論文圍繞超薄晶圓切割工藝,探討切割液性能智能調控系統(tǒng)與晶圓 TTV 預測模型協(xié)同構建,闡述兩者協(xié)同在保障晶圓切割質量、提升 TTV 均勻性方面的重要意義,為半導體制造領域的工
    的頭像 發(fā)表于 07-31 10:27 ?590次閱讀
    切割液<b class='flag-5'>性能</b>智能調控系統(tǒng)與晶圓 TTV 預測<b class='flag-5'>模型</b>的<b class='flag-5'>協(xié)同</b>構建

    切割液多性能協(xié)同優(yōu)化對晶圓 TTV 厚度均勻性的影響機制與參數(shù)設計

    摘要:本文聚焦切割液多性能協(xié)同優(yōu)化對晶圓 TTV 厚度均勻性的影響。深入剖析切割液冷卻、潤滑、排屑等性能影響晶圓 TTV 的內在機制,探索實現(xiàn)多性能
    的頭像 發(fā)表于 07-24 10:23 ?738次閱讀
    切割液多<b class='flag-5'>性能</b><b class='flag-5'>協(xié)同</b><b class='flag-5'>優(yōu)化</b>對晶圓 TTV 厚度均勻性的影響機制與參數(shù)設計

    無法在NPU上推理OpenVINO?優(yōu)化的 TinyLlama 模型怎么解決?

    在 NPU 上推斷 OpenVINO?優(yōu)化的 TinyLlama 模型。 遇到的錯誤: get_shape was called on a descriptor::Tensor with dynamic shape
    發(fā)表于 07-11 06:58

    晶圓切割振動監(jiān)測系統(tǒng)與進給參數(shù)的協(xié)同優(yōu)化模型

    目前二者常被獨立研究,難以實現(xiàn)最佳切割效果,構建協(xié)同優(yōu)化模型迫在眉睫。 二、振動監(jiān)測系統(tǒng)與進給參數(shù)協(xié)同優(yōu)化的必要性 2.1 振動對進給參
    的頭像 發(fā)表于 07-10 09:39 ?585次閱讀
    晶圓切割振動監(jiān)測系統(tǒng)與進給參數(shù)的<b class='flag-5'>協(xié)同</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>模型</b>

    碳化硅襯底切割自動對刀系統(tǒng)與進給參數(shù)的協(xié)同優(yōu)化模型

    一、引言 碳化硅(SiC)襯底憑借優(yōu)異性能在半導體領域地位關鍵,其切割加工精度和效率影響產業(yè)發(fā)展。自動對刀系統(tǒng)決定切割起始位置準確性,進給參數(shù)控制切割過程穩(wěn)定性,二者協(xié)同優(yōu)化對提升碳化硅襯底切割質量
    的頭像 發(fā)表于 07-03 09:47 ?689次閱讀
    碳化硅襯底切割自動對刀系統(tǒng)與進給參數(shù)的<b class='flag-5'>協(xié)同</b><b class='flag-5'>優(yōu)化</b><b class='flag-5'>模型</b>

    無法將Tensorflow Lite模型轉換為OpenVINO?格式怎么處理?

    將 Tensorflow Lite 模型轉換為 OpenVINO? 格式。 遇到的錯誤: FrontEnd API failed with OpConversionFailure:No translator found for TFLite_Detection_PostP
    發(fā)表于 06-25 08:27

    請問如何優(yōu)化OpenVINO?工具套件中的內存使用?

    運行OpenVINO?推斷時找不到優(yōu)化內存使用情況的方法。
    發(fā)表于 06-25 06:56

    使用Openvino? GenAI運行Sdxl Turbo模型時遇到錯誤怎么解決?

    使用 OpenVINO? GenAI 運行 SDXL Turbo 模型。 遇到的錯誤: RuntimeError :- Check ov_tokenizer || ov_detokenizer Neither tokenizer nor detokenizer model
    發(fā)表于 06-24 06:38

    無法將Openvino? 2025.0與onnx運行時Openvino? 執(zhí)行提供程序 1.16.2 結合使用,怎么處理?

    使用OpenVINO?與英特爾 i5-8500 CPU 和超核處理器 630 iGPU 一起部署模型。 使用了 Microsoft.ML.OnnxRuntime.OpenVino
    發(fā)表于 06-24 06:31

    鴻蒙5開發(fā)寶藏案例分享---應用性能優(yōu)化指南

    鴻蒙性能優(yōu)化實戰(zhàn)指南:讓你的應用飛起來 ? 大家好!今天咱們聊聊鴻蒙(HarmonyOS)應用性能優(yōu)化的實戰(zhàn)技巧。結合官方文檔和最佳實踐,我整理了8大核心
    發(fā)表于 06-12 17:17

    英特爾展示封裝創(chuàng)新路徑:提高良率、穩(wěn)定供電、高效散熱

    為了推動AI等創(chuàng)新應用落地,使其惠及更廣大的用戶,需要指數(shù)級增長的算力。為此,半導體行業(yè)正在不斷拓展芯片制造的邊界,探索提高性能、降低功耗的創(chuàng)新路徑。 在這樣的背景下,傳統(tǒng)上僅用于散熱和保護設備
    發(fā)表于 06-11 09:17 ?1462次閱讀
    英特爾展示封裝創(chuàng)<b class='flag-5'>新路徑</b>:提高良率、穩(wěn)定供電、高效散熱

    匯川技術聯(lián)合蒙牛集團共探人才培養(yǎng)新路徑

    日前,一場以“智控賦能·攜手共贏”為主題的深度交流培訓在蒙牛乳業(yè)天津工廠成功舉辦。匯川技術與蒙牛集團強強聯(lián)手,通過創(chuàng)新的“理論授課+實戰(zhàn)演練”模式,共同探索智能制造與數(shù)字化轉型背景下人才培養(yǎng)的新路徑,為雙方的深化合作注入新動能。
    的頭像 發(fā)表于 06-10 13:45 ?1094次閱讀
    万宁市| 紫金县| 芜湖县| 石屏县| 松江区| 紫云| 兴国县| 仙游县| 漳平市| 斗六市| 石嘴山市| 酒泉市| 小金县| 永嘉县| 霍城县| 台安县| 哈尔滨市| 通城县| 分宜县| 闽侯县| 鹰潭市| 呼和浩特市| 灌云县| 临漳县| 加查县| 无棣县| 突泉县| 堆龙德庆县| 山丹县| 得荣县| 许昌市| 武冈市| 娱乐| 东山县| 错那县| 东城区| 武清区| 潞城市| 宽城| 大邑县| 庆云县|