qwen3_test / app.py
hsuwill000's picture
Update app.py
1e44aa5 verified
raw
history blame
1.71 kB
import huggingface_hub as hf_hub
import openvino_genai as ov_genai
import gradio as gr
import re
# 下載模型
model_id = "OpenVINO/Qwen3-0.6B-int4-ov"
model_path = "Qwen3-0.6B-int4-ov"
hf_hub.snapshot_download(model_id, local_dir=model_path, local_dir_use_symlinks=False)
# 建立推理管線
device = "CPU"
pipe = ov_genai.LLMPipeline(model_path, device)
tokenizer = pipe.get_tokenizer()
tokenizer.set_chat_template(tokenizer.chat_template)
# 修改 generate_response 函數以支持流式輸出
def generate_response(prompt):
try:
response = ""
tokens_per_sec = "N/A" # 預設值
# 定義流式處理回呼函數
def streamer(subword):
nonlocal response
response += subword # 拼接輸出
print(subword, end='', flush=True) # 日誌輸出到控制台以便即時檢查
return ov_genai.StreamingStatus.RUNNING
# 啟動流式生成
pipe.start_chat()
pipe.generate(prompt, streamer=streamer, max_new_tokens=100)
pipe.finish_chat()
# 根據性能指標計算 tokens/sec
tokens_per_sec = f"{pipe.get_throughput():.2f}"
return tokens_per_sec, response
except Exception as e:
return "N/A", f"生成回應時發生錯誤:{e}"
# 建立 Gradio 介面(保持不變)
demo = gr.Interface(
fn=generate_response,
inputs=gr.Textbox(lines=1, label="輸入提示 (Prompt)"),
outputs=[
gr.Textbox(label="tokens/sec"),
gr.Textbox(label="回應")
],
title="Qwen3-0.6B-int4-ov",
description="基於 Qwen3-0.6B-int4-ov 推理應用,支援思考過程分離與 GUI。"
)
if __name__ == "__main__":
demo.launch()