LLM大模型存在很多痛點,包括但不限於資料陳舊、無法和外部元件互動等,本文旨在使用 OpenVINO 2023.1新版本的特性加速Llama2模型,為Llama2客製化Prompt,並用LangChain 實現可連網取得最新消息的輔助搜尋功能。
本文將端對端教大家以OpenVINO結合LangChain與Llama2實現具備網際網路自動查詢的AI小助手,程式碼下載網址:https://github.com/lewis430/langchain_openvino_llama2
OpenVINO 2023.1新特性
OpenVINO 2023.1推出的新功能可簡化AI的部署和加速,此新版本為開發人員提供更多整合,最大限度減少程式碼更改。
OpenVINO提供了模型轉換工具OVC,該工具正在取代我們眾所周知的離線模型轉換任務中的模型優化器(MO)工具。該工具以OpenVINO套件形式提供,依靠內部模型前端來讀取框架格式,不需要原始框架來執行模型轉換。
將原來的 AutoModelForCausalLM 替換為 OVModelForCausalLM 即可實現模型轉換:
-from transformers import AutoModelForCausalLM
+from optimum.intel.openvino import OVModelForCausalLM
from transformers import AutoTokenizer, pipeline
model_id = "FlagAlpha/Llama2-Chinese-7b-Chat"
-model = AutoModelForCausalLM.from_pretrained(model_id)
+model = OVModelForCausalLM.from_pretrained(model_id, export=True)
模型選擇
因為我們是以中文為對象,而Llama2本身的中文對應能力較弱,我們需要採用中文指令集,對meta-llama/Llama-2-7b-chat-hf進行LoRA微調,使其具備較強的中文對話能力。同時也因為Llama2模型的取得需要向meta提供個人資訊,所以選擇更易取得的Llama2-Chinese-7b-Chat模型;該模型的Hugging Face連結為:https://huggingface.co/FlagAlpha/Llama2-Chinese-7b-Chat
模型轉換為 ONNX 格式
OpenVINO可用於從Hugging Face Hub載入最佳化模型,並創建管道以使用Hugging Face API透過OpenVINO Runtime執行推論。這意味著我們只需要將AutoModelForXxx類替換為相應的OVModelForXxx類,就能實現模型格式的轉換。
model_dir = "llama-2-chat-7b/ov_model"
ov_model = OVModelForCausalLM.from_pretrained('llama-2-chat-7b', export=True, compile=False)
ov_model.half()
ov_model.save_pretrained(model_dir)
將模型部署至CPU
指定其部署推論的設備為 CPU,讓模型在英特爾(Intel)的CPU上進行推論。
ov_model=OVModelForCausalLM.from_pretrained(model_dir,device='cpu',ov_config=ov_config,config=AutoConfig.from_pretrained(model_dir,trust_remote_code=True),trust_remote_code=True)
LangChain
LangChain是一個開源的框架,可以讓AI開發人員把像是GPT-4這樣的大型語言模型和外部資料結合起來,它提供了Python或JavaScript套件,是基於大語言模型這種預測能力的應用開發工具。無論你是想要做一個聊天機器人、個人助理、問答系統,或者自助代理等等,都可以幫助我們快速地實現想法。筆者可以拍胸脯說,LangChain作為新一代AI開發框架,必將受到程式設計師的歡迎,點燃AI應用開發的新熱潮。
只需不到短短一分鐘...
輸入您的信箱與ID註冊即可享有一切福利!
會員福利
免費電子報
會員搶先看
主題訂閱
好文收藏