如何客製化企業 RAG 知識庫?— 從資料庫到知識整合的實戰技術
|

以C++語言構建OpenVINO GenAI應用程式就是這麼簡單!

   

作者:Raymond Lo、武卓、Dmitriy Pastushenkov

許多桌上型PC應用程式都是使用C++語言開發的,但因為使用Hugging Face等以Python語言為基礎的程式庫之複雜性,要將生成式AI (GenAI)功能整合到這些應用程式中會頗具挑戰性。以C++搭配OpenVINO Runtime提供了一個更精簡、輕量,而且記憶體效能更佳的解決方案,特別是在Windows環境下。在這裡可以找到詳細的依賴項比較。

OpenVINO GenAI API提供了原生C++介面,免除對Python依賴項的需求,讓開發者能以更節省資源的方法打造AI應用。以下是使用Windows作業系統為範例,逐步構建OpenVINO GenAI應用程式的指南。

步驟1:下載並解壓縮OpenVINO檔案

連結OpenVINO下載頁面,點擊「下載具備GenAI的檔案」(Download Archives with GenAI)選擇最新版本。

下載完成後,將壓縮檔解壓縮至以下路徑:


\openvino_genai_windows_2024.3.0.0_x86_64

步驟2:建置專案

確保你的電腦上已安裝以下軟體元件:

  • CMake 3.23 或更高版本
  • Microsoft Visual Studio 2019 或更高版本,16.3 或更新版本
  • Python 3.8 或更高版本

開啟命令視窗,並從解壓縮後的OpenVINO with GenAI資料夾執行 setupvars.bat檔案。


\openvino_genai_windows_2024.3.0.0_x86_64\setupvars.ba

在同一個命令視窗中,OpenVINO環境初始化後,導航至資料夾 samples/cpp/,然後執行 build_samples_msvc.bat

當所有建置過程完成後,就可以在建置過程輸出中所指定的路徑找到 chat_sample.exe 檔案。

步驟3:下載並轉換LLM和Tokenizers

有兩種準備AI推論模型的選擇:

1. 下載已轉換的模型:直接從Hugging Face上的OpenVINO大型語言模型(LLM)集合中下載。


pip install huggingface_hub
huggingface-cli download OpenVINO/TinyLlama-1.1B-Chat-v1.0-int4-ov — local-dir TinyLlama-1.1B-Chat-v1

可參考以下連結的說明:https://huggingface.co/OpenVINO/TinyLlama-1.1B-Chat-v1.0-int4-ov

Hugging Face的OpenVINO LLM集合中還有其他可用的模型,歡迎探索。

2. 在本機轉換模型:使用Optimum Intel 在你的裝置上轉換模型,這需要確保安裝了必備的依賴項,詳情參考此連結


optimum-cli export openvino --model “TinyLlama/TinyLlama-1.1B-Chat-v1.0” --trust-remote-code “TinyLlama-1.1B-Chat-v1.0”

然後可以使用建置好的檔案和LLM模型的路徑展開對話如下:


chat_sample TinyLlama-1.1B-Chat-v1.0

步驟4:執行模型

現在開始享受與LLM聊天機器人的對話吧!

要注意的是,以上顯示的是在CPU上執行LLM推論,然而,只需將以下路徑:


\openvino_genai_windows_2024.3.0.0_x86_64\samples\cpp\chat_sample.cpp

檔案中的以下兩行程式碼裡的「CPU」 替換為「GPU」,然後重新建置,就可輕鬆切換為在GPU上執行推論。


std::string device = “GPU”; // GPU can be used as well

ov::genai::LLMPipeline pipe(model_path, device);

結語

使用OpenVINO GenAI API以C++語言建構AI應用程式只需幾個步驟;一起來探索並嘗試這個API,充分感受它的全部潛力吧!

訂閱MakerPRO知識充電報

與40000位開發者一同掌握科技創新的技術資訊!

Author: 武卓

武卓博士現任英特爾AI軟體佈道師

Share This Post On
468 ad

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *