使用 Python 和 Phi-2 進行語言生成
設定與安裝
使用 安裝說明 安裝 ONNX Runtime generate() API Python 包。
構建 phi-2 ONNX 模型
onnxruntime-genai 包包含一個模型構建器,它使用 Huggingface 上的權重和配置生成 phi-2 ONNX 模型。該工具還允許您從 Hugging Face 下載權重、載入本地儲存的權重或從 GGUF 格式轉換。更多詳細資訊,請參閱 如何構建模型
如果使用此處所示的 -m 選項,您將需要登入 Hugging Face。
pip install huggingface-hub
huggingface-cli login
您可以以不同的精度構建模型。此命令使用 int4,因為它生成最小的模型並且可以在 CPU 上執行。
python -m onnxruntime_genai.models.builder -m microsoft/phi-2 -e cpu -p int4 -o ./example-models/phi2-int4-cpu
您可以將 -o 選項指定的輸出資料夾名稱替換為您選擇的資料夾。
執行指令碼後,您將在此資料夾中看到生成一系列檔案。它們包括供您參考的 HuggingFace 配置,以及 ONNX Runtime generate() API 使用的以下生成檔案。
model.onnx: phi-2 ONNX 模型model.onnx.data: phi-2 ONNX 模型權重genai_config.json: ONNX Runtime generate() API 使用的配置
您可以檢視和更改 genai_config.json 檔案中的值。除非您使用了自己的模型並且它具有不同的引數,否則不應更新模型部分。
可以更改搜尋引數。例如,您可能希望以不同的溫度值生成。這些值也可以透過下面所示的 set_search_options 方法設定。
使用示例提示執行模型
使用以下 Python 指令碼執行模型。您可以根據需要更改提示和其他引數。
import onnxruntime_genai as og
prompt = '''def print_prime(n):
"""
Print all primes between 1 and n
"""'''
model=og.Model(f'example-models/phi2-int4-cpu')
tokenizer = og.Tokenizer(model)
tokens = tokenizer.encode(prompt)
params=og.GeneratorParams(model)
params.set_search_options({"max_length":200})
params.input_ids = tokens
output_tokens=model.generate(params)[0]
text = tokenizer.decode(output_tokens)
print(text)
執行批次提示
您還可以透過模型執行批次提示。
prompts = [
"This is a test.",
"Rats are awesome pets!",
"The quick brown fox jumps over the lazy dog.",
]
inputs = tokenizer.encode_batch(prompts)
params=og.GeneratorParams(model)
params.input_ids = tokens
outputs = model.generate(params)[0]
text = tokenizer.decode(output_tokens)
流式傳輸分詞器輸出
如果您正在開發一個需要將標記逐個輸出到使用者介面的應用程式,您可以使用流式分詞器。
generator=og.Generator(model, params)
tokenizer_stream=tokenizer.create_stream()
print(prompt, end='', flush=True)
while not generator.is_done():
generator.compute_logits()
generator.generate_next_token_top_p(0.7, 0.6)
print(tokenizer_stream.decode(generator.get_next_tokens()[0]), end='', flush=True)