Skip to content

Latest commit

 

History

History
134 lines (73 loc) · 5.13 KB

File metadata and controls

134 lines (73 loc) · 5.13 KB

Lab 2 - Phi-3-miniを使ったAIPCでのPrompt flow実行

Prompt flowとは

Prompt flowは、LLMベースのAIアプリケーションのアイデア出し、プロトタイピング、テスト、評価から本番展開や監視までの一連の開発サイクルを効率化するための開発ツール群です。プロンプトエンジニアリングを格段に簡単にし、実用レベルのLLMアプリを構築できるようにします。

Prompt flowを使うと、以下が可能になります:

  • LLM、プロンプト、Pythonコード、その他のツールを連携させた実行可能なワークフローを作成する。

  • 特にLLMとのやり取りを含むフローのデバッグや反復を簡単に行う。

  • 大規模データセットを用いてフローの評価や品質・性能指標の計算を行う。

  • テストや評価をCI/CDシステムに組み込み、フローの品質を保証する。

  • 選択したサービングプラットフォームにフローを展開したり、アプリのコードベースに簡単に統合する。

  • (任意だが強く推奨)Azure AIのクラウド版Prompt flowを活用してチームでの共同作業を行う。

Apple Silicon上での生成コードフロー構築

注記 :環境構築がまだの場合は、Lab 0 -Installationsをご参照ください。

  1. Visual Studio CodeのPrompt flow拡張機能を開き、空のフロープロジェクトを作成します。

create

  1. 入力と出力のパラメータを追加し、新しいフローとしてPythonコードを追加します。

flow

以下の構成(flow.dag.yaml)を参考にフローを組み立ててください。

inputs:
  prompt:
    type: string
    default: Write python code for Fibonacci serie. Please use markdown as output
outputs:
  result:
    type: string
    reference: ${gen_code_by_phi3.output}
nodes:
- name: gen_code_by_phi3
  type: python
  source:
    type: code
    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. デバッグまたは実行からフローをテストし、生成コードが正常に動作するか確認できます。

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 Accelerationの学習 https://github.com/intel/intel-npu-acceleration-library

  3. サンプルコードのダウンロード Local NPU Agent Sample Code

免責事項
本書類はAI翻訳サービス「Co-op Translator」を使用して翻訳されました。正確性を期しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の言語によるオリジナル文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や誤訳についても、当方は責任を負いかねます。