使用 OpenVINO 加速 TAIDE LLM 推論

2024-04-19 | Felix Lin

TAIDE

TAIDE 全稱為 Trustworthy AI Dialogue Engine 可信任 AI 對話引擎,是國科會的計畫項目,召集了各方專業人才所組成的團隊,目的在於打造一個屬於台灣的本土 AI 引擎,並且開放給全體人民使用。 TAIDE 團隊於近日(4/15)正是釋出 TAIDE-LX-7B-Chat 模型,核心以 Meta 的Llama-2–7B 為基礎,納入大量的台灣本土文獻與相關資料,所有人皆可於 HuggingFace 下載使用或二次開發。要測試把玩模型除了部屬到雲端主機外,也可以在本地端使用 LM Studio 載入模型測試。若不幸本地端電腦沒有 GPU 怎麼辦?本篇將試著用 OpenVINO 在純 CPU 的情況下執行 TAIDE 的對話推論。

LLM Chatbot Example in Notebooks

OpenVINO Notebooks 是一套由 Intel 開發的開放原始碼工具,提供了一種在 Jupyter Notebook 環境中使用 OpenVINO Toolkit 的方式。使用者可以透過這些筆記本直觀地學習與實作 OpenVINO 的功能,進行深度學習模型的優化與推論任務,並提供了大量的實作範例供使用者參考。 Notebooks 中 ”254-llm-chatbot” 就是 LLM chatbot 的範例,裡面已包含 Meta-Llama-2 使用流程,吾人只需依樣畫葫蘆便可將 TAIDE-LX-7B 加入使用 OpenVINO 進行加速推論。

OpenVINO Notebooks 的安裝可以參考筆者之前的文章,在此就不做贅述。要加入 TAIDE 模型進到 Notebook 清單需要修改 config.py 檔案,開啟後先在空白處加入以下繁體中文的系統提示詞,讓模型更容易理解與進入狀況。

DEFAULT_SYSTEM_PROMPT_TC = """\
你是個樂於助人、尊重他人、誠實可靠的助手。 在安全的情況下,始終盡可能有幫助地回答。 您的回答不應包含任何有害、不道德、種族主義、性別歧視、有毒、危險或非法的內容。 請確保您的回答在社會上是公正的和積極的。
如果一個問題沒有任何意義或與事實不符,請解釋原因,而不是回答錯誤的問題。 如果您不知道問題的答案,請不要分享虛假資訊。 另外,答案請使用中文。\
"""

DEFAULT_RAG_PROMPT_TC = """\
基於以下已知訊息,請簡潔並專業地回答使用者的問題。 如果無法從中得到答案,請說 "根據已知資訊無法回答該問題" 或 "沒有提供足夠的相關資訊"。 不允許在答案中添加編造成分。 另外,答案請使用中文。\
"""

接著在 SUPPORTED_LLM_MODELS dict 物件內 Chinese 項目列表插入以下 TAIDE-LX-7B 模型資料,大部分皆從 llama2 的資料複製修改而來,參考如下:

           ...
"partial_text_processor": internlm_partial_text_processor,
},
"TAIDE-LX-7B-Chat": {
"model_id": "taide/TAIDE-LX-7B-Chat",
"remote": False,
"start_message": f"<s>[INST] <<SYS>>\n{DEFAULT_SYSTEM_PROMPT_TC }\n<</SYS>>\n\n",
"history_template": "{user}[/INST]{assistant}</s><s>[INST]",
"current_message_template": "{user} [/INST]{assistant}",
"tokenizer_kwargs": {"add_special_tokens": False},
"partial_text_processor": llama_partial_text_processor,
"rag_prompt_template": f"""[INST]Human: <<SYS>> {DEFAULT_RAG_PROMPT_TC }<</SYS>>"""
+ """
Question: {question}
Context: {context}
Answer: [/INST]""",
},
"qwen1.5-1.8b-chat": {
"model_id": "Qwen/Qwen1.5-1.8B-Chat",
...

接著開啟 “254-llm-chatbot.ipynb” 檔案,依序執行各個 cell,此 notebook 會先從 HuggingFace 下載模型,接著依照使用者的設定量化成 INT4、INT8 或 FP16 並進行壓縮。留意電腦上須留下足夠的磁碟空間已放便儲存這些大量的資料。

等待一段時間完成後便會開啟互動式對話框與 TAIDE 進行聊天,實際測試的結果如下圖,關於台灣的敘述與答覆品質皆相當不錯,各位夥伴們也可以試試看。

小結 Wrap Up

筆者的筆電 CPU 是 i7–11800H 內建的 UHD 圖型處理器僅有 32 UE,在執行 TAIDE-LX-7B 推論時 CPU 與 GPU 皆吃滿 100% 效能略顯老態,模型出字速度只能說是勉強堪用。從帳面數字來看這顆 GPU FP16 運算能力約 1.48 TFLOPS,若對比 AI PC 最新世代的 Ultra 7 H155 的 8.92 TFLOPS 約可以有超過 6 倍以上的效能提升,勢必在推論上譨有良好體驗! 不免讓人懷疑是該更新設備了嗎?因為能在不動用顯卡的情況下跑本地端 LLM 其實是很奢侈的享受與體驗啊!🤣

資料來源:https://medium.com/@Felix-Lin/%E4%BD%BF%E7%94%A8-openvino-%E5%8A%A0%E9%80%9F-taide-llm-%E6%8E%A8%E8%AB%96-3a418f7515f2

Related posts