Skip to content

Latest commit

 

History

History
124 lines (71 loc) · 3.8 KB

02.PromptflowWithMLX.md

File metadata and controls

124 lines (71 loc) · 3.8 KB

Lab 2 - 執行 Prompt flow with Phi-3-mini in AIPC

什麼是 Prompt flow

Prompt flow 是一套開發工具,旨在簡化基於 LLM 的 AI 應用程式從構思、原型設計、測試、評估到生產部署和監控的端到端開發週期。它使提示工程變得更加容易,並使您能夠建構具有生產品質的 LLM 應用程式。

使用提示流程,您將能夠:

  • 建立將 LLMs、prompts、Python 程式碼和其他工具連結在一起的可執行工作流程。

  • 輕鬆調試和迭代您的工作流程,尤其是與 LLMs 的互動。

  • 評估您的工作流程,使用更大的數據集計算品質和性能指標。

  • 將測試和評估整合到您的 CI/CD 系統中,以確保您的工作流程的品質。

  • 將您的工作流程部署到您選擇的服務平台或輕鬆整合到您的應用程式碼庫中。

  • (可選但強烈推薦)通過利用 Azure AI 中的 Prompt flow 雲端版本與您的團隊合作。

在 Apple Silicon 上建構程式碼產生器流程

注意 :如果你還沒有完成環境安裝,請訪問 Lab 0 -Installations

  1. 打開 Visual Studio Code 中的 Prompt flow Extension 並建立一個空的 flow 專案

建立

  1. 添加輸入和輸出參數並添加 Python 程式碼作為新流程

flow

你可以參考這個結構 (flow.dag.yaml) 來建構你的流程

inputs:
  prompt:
    type: string
    default: 撰寫 Fibonacci 系列的 Python 程式碼。請使用 markdown 作為輸出
outputs:
  result:
    type: string
    reference: ${gen_code_by_phi3.output}
nodes:
- name: gen_code_by_phi3
  type: python
  source:
    type: 程式碼
    path: gen_code_by_phi3.py
  inputs:
    prompt: ${inputs.prompt}
  1. 量化 phi-3-mini

我們希望能更好地在本地設備上執行 SLM。一般來說,我們會量化模型(INT4, FP16, FP32)

python -m mlx_lm.convert --hf-path microsoft/Phi-3-mini-4k-instruct

注意: 預設資料夾是 mlx_model

  1. Chat_With_Phi3.py 中新增程式碼
from promptflow import tool

from mlx_lm import load, generate


# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(prompt: str) -> str:

    model_id = './mlx_model_phi3_mini'

    model, tokenizer = load(model_id)

    # <|user|>\nWrite python code for Fibonacci serie. Please use markdown as output<|end|>\n<|assistant|>

    response = generate(model, tokenizer, prompt="<|user|>\n" + prompt  + "<|end|>\n<|assistant|>", max_tokens=2048, verbose=True)

    return response
  1. 你可以從 Debug 或 Run 測試流程來檢查程式碼產生是否正常

RUN

  1. 在終端機中以開發 API 執行流程
pf flow serve --source ./ --port 8080 --host localhost

你可以在 Postman / Thunder Client 測試它

注意

  1. 第一次執行需要很長時間。建議從 Hugging face CLI 下載 phi-3 模型。

  2. 考慮到 Intel NPU 的有限計算能力,建議使用 Phi-3-mini-4k-instruct

  3. 我們使用 Intel NPU 加速來量化 INT4 轉換,但如果重新執行服務,需要刪除快取和 nc_workshop 資料夾。

資源

  1. 學習 Promptflow https://microsoft.github.io/promptflow/

  2. 學習 Intel NPU 加速 https://github.com/intel/intel-npu-acceleration-library

  3. 範例程式碼,下載 Local NPU Agent 範例程式碼