Python API

注意:此 API 處於預覽階段,可能會有所更改。

安裝和匯入

Python API 由 onnxruntime-genai Python 包提供。

pip install onnxruntime-genai
import onnxruntime_genai

Model 類

載入模型

從磁碟上的資料夾載入 ONNX 模型和配置。

onnxruntime_genai.Model(model_folder: str) -> onnxruntime_genai.Model

引數

  • model_folder:模型和配置在磁碟上的位置

返回值

onnxruntime_genai.Model

Generate 方法

onnxruntime_genai.Model.generate(params: GeneratorParams) -> numpy.ndarray[int, int]

引數

  • params:(必填)由 GeneratorParams 方法建立。

返回值

numpy.ndarray[int, int]:一個二維 numpy 陣列,其維度等於傳入的批次大小和令牌序列的最大長度。

裝置型別

返回模型配置執行的裝置型別。

onnxruntime_genai.Model.device_type

返回值

str:一個描述載入模型將執行的裝置的字串

Tokenizer 類

建立分詞器物件

onnxruntime_genai.Model.Tokenizer(model: onnxruntime_genai.Model) -> onnxruntime_genai.Tokenizer

引數

  • model:(必填)透過 Model() 載入的模型

返回值

  • Tokenizer:分詞器物件

編碼

onnxruntime_genai.Tokenizer.encode(text: str) -> numpy.ndarray[numpy.int32]

引數

  • text:(必填)

返回值

numpy.ndarray[numpy.int32]:一個表示提示的令牌陣列

解碼

onnxruntime_genai.Tokenizer.decode(tokens: numpy.ndarry[int]) -> str 

引數

  • numpy.ndarray[numpy.int32]:(必填)一個生成的令牌序列

返回值

str:已解碼的生成的令牌

批次編碼

onnxruntime_genai.Tokenizer.encode_batch(texts: list[str]) -> numpy.ndarray[int, int]

引數

  • texts:輸入列表

返回值

numpy.ndarray[int, int]:已分詞字串的批次

批次解碼

onnxruntime_genai.Tokenize.decode_batch(tokens: [[numpy.int32]]) -> list[str]

引數

  • tokens

返回值

texts:一批解碼文字

建立分詞器解碼流

onnxruntime_genai.Tokenizer.create_stream() -> TokenizerStream

引數

返回值

onnxruntime_genai.TokenizerStream 分詞器流物件

TokenizerStream 類

此類的作用是累積下一個可顯示字串(根據分詞器的詞彙表)。

解碼方法

onnxruntime_genai.TokenizerStream.decode(token: int32) -> str

引數

  • token:(必填)要解碼的令牌

返回值

str:如果已累積可顯示字串,此方法返回該字串。否則,此方法返回空字串。

GeneratorParams 類

建立一個 Generator 引數物件

onnxruntime_genai.GeneratorParams(model: Model) -> GeneratorParams

填充令牌 ID 成員

onnxruntime_genai.GeneratorParams.pad_token_id

EOS 令牌 ID 成員

onnxruntime_genai.GeneratorParams.eos_token_id

詞彙量大小成員

onnxruntime_genai.GeneratorParams.vocab_size

input_ids 成員

onnxruntime_genai.GeneratorParams.input_ids: numpy.ndarray[numpy.int32, numpy.int32]

設定模型輸入

onnxruntime_genai.GeneratorParams.set_model_input(name: str, value: [])

設定搜尋選項方法

onnxruntime_genai.GeneratorParams.set_search_options(options: dict[str, Any])

嘗試使用最大批處理大小進行圖捕獲

onnxruntime_genai.GeneratorParams.try_graph_capture_with_max_batch_size(max_batch_size: int)

Generator 類

建立一個 Generator

onnxruntime_genai.Generator(model: Model, params: GeneratorParams) -> Generator

引數

  • model:(必填)用於生成的模型
  • params:(必填)控制生成的一組引數

返回值

onnxruntime_genai.Generator Generator 物件

生成是否完成

onnxruntime_genai.Generator.is_done() -> bool

返回值

當所有序列達到最大長度或已達到序列末尾時返回 true。

計算 logits

模型執行一次迭代。

onnxruntime_genai.Generator.compute_logits()

獲取輸出

返回模型的輸出。

onnxruntime_genai.Generator.get_output(str: name) -> numpy.ndarray

引數

  • name:模型輸出的名稱

返回值

  • numpy.ndarray:一個多維陣列,表示模型輸出。陣列的形狀是輸出的形狀。

示例

以下程式碼返回模型的輸出 logits。

logits = generator.get_output("logits")

生成下一個令牌

使用當前 logits 集和指定的生成器引數,透過 Top P 取樣計算下一批令牌。

onnxruntime_genai.Generator.generate_next_token()

獲取下一個令牌

onnxruntime_genai.Generator.get_next_tokens() -> numpy.ndarray[numpy.int32]

返回值

numpy.ndarray[numpy.int32]:最新生成的令牌

獲取序列

onnxruntime_genai.Generator.get_sequence(index: int) -> numpy.ndarray[numpy.int32] 
  • index:(必填)要返回的批次中序列的索引

Adapter 類

建立

使用已載入的模型建立一個 Adapters 物件。

model = ...
adapters = og.Adapters(model)

引數

  • model:將與介面卡一起使用的模型

返回值

一個 Adapter 物件

載入

將介面卡從磁碟載入到記憶體中的 Adapter 物件。

onnxruntime_genai.Adapters(file: str, name: str) -> None

引數

  • file:從磁碟載入介面卡的位置
  • name:介面卡的名稱

返回值

設定活動介面卡

Generator 物件上設定活動介面卡。

onnxruntime_genai.Generator(adapters: Generators::Adapters, adapter: str) -> None

引數

  • adapters:介面卡物件,已將標識的介面卡載入到其中
  • adapter:要設定為活動的介面卡名稱

返回值