使用 ONNX 執行時間執行 Llama、Phi、Gemma、Mistral。
此 API 為您提供了一種在裝置上運行 LLM 的簡單、靈活且高效能的方法。
它實現了 ONNX 模型的生成式 AI 循環,包括預處理和後處理、ONNX 執行時間推理、logits 處理、搜尋和取樣以及 KV 快取管理。
您可以呼叫進階的generate()
方法來一次產生所有輸出,或一次串流一個令牌。
請參閱 https://onnxruntime.ai/docs/genai 上的文件。
支援矩陣 | 現已支持 | 開發中 | 在路線圖上 |
---|---|---|---|
模型架構 | 芽 駱駝 * 米斯特拉爾+ Phi(語言+視覺) 奎文 內莫特朗 | 耳語 | 擴散穩定 |
應用程式介面 | Python C# C/C++ 爪哇^ | Objective-C | |
平台 | Linux 視窗 麥克^ 安卓^ | iOS系統 | |
建築學 | x86 x64 手臂64~ | ||
硬體加速 | CUDA 直接機器學習 | 量子神經網路 開放VINO ROC | |
特徵 | 互動式解碼 客製化(微調) | 推測性解碼 |
* Llama 模型架構支援類似的模型系列,例如 CodeLlama、Vicuna、Yi 等。
+ Mistral 模型架構支援類似的模型系列,例如 Zephyr。
^ 需要從原始碼構建
~ Windows 版本可用,需要從原始碼建立其他平台
請參閱 https://onnxruntime.ai/docs/genai/howto/install
下載模型
Huggingface-cli 下載 microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir 。
安裝API
pip安裝numpy pip install --pre onnxruntime-genai
運行模型
導入 onnxruntime_genai as ogmodel = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4')tokenizer = og.Tokenizer(model)tokenizer_stream = tokenizer.create_stream() # 預設將最大長度設為合理的值,# 否則它將被設定為整個上下文長度search_options = {}search_options['max_length'] = 2048chat_template = '<|user|>n{input} <|end| > n<|assistant|>'text = input("輸入:")if not text: print("錯誤,輸入不能為空") exitprompt = f'{chat_template.format(input=text)}'input_tokens = tokenizer .編碼(提示)params = og.GeneratorParams(模型)params.set_search_options(**search_options)params.input_ids = input_tokensgenerator = og.Generator(模型,params)print(“輸出:”,end='',flush=True )嘗試:雖然不是generator.is_done():generator.compute_logits()generator.generate_next_token()new_token =generator.get_next_tokens()[0]打印(tokenizer_stream.decode(new_token),end ='',flush = True)除了KeyboardInterrupt : print(" --control+c 按下,中止產生 --")print()del 產生器
請參閱討論以請求新功能並對現有請求進行投票。
該項目歡迎貢獻和建議。 大多數貢獻都要求您同意貢獻者授權協議 (CLA),聲明您有權並且實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問 https://cla.opensource.microsoft.com。
當您提交拉取請求時,CLA 機器人將自動確定您是否需要提供 CLA 並適當地修飾 PR(例如,狀態檢查、評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的 CLA 在所有儲存庫中執行一次此操作。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
該項目可能包含項目、產品或服務的商標或標誌。 Microsoft 商標或標誌的授權使用須遵守且必須遵循 Microsoft 的商標和品牌指南。在此項目的修改版本中使用 Microsoft 商標或標誌不得混淆或暗示 Microsoft 贊助。任何對第三方商標或標誌的使用均須遵守這些第三方的政策。