コンテンツにスキップ

Phi-3チュートリアル

ONNX Runtime generate() APIでPhi-3言語モデルを実行する

Section titled “ONNX Runtime generate() APIでPhi-3言語モデルを実行する”

Phi-3およびPhi 3.5 ONNXモデルはHuggingFaceでホストされており、ONNX Runtime generate() APIで実行できます。

現在、mini(3.3B)およびmedium(14B)バージョンがサポート付きで利用可能です。miniとmediumの両方に、短い(4k)コンテキストバージョンと長い(128k)コンテキストバージョンがあります。長いコンテキストバージョンは、はるかに長いプロンプトを受け入れ、より長い出力テキストを生成できますが、より多くのメモリを消費します。

利用可能なモデルは次のとおりです。

このチュートリアルでは、Phi 3モデルの短いコンテキスト(4k)ミニ(3B)モデルバリアントをダウンロードして実行する方法を示します。他のバリアントのダウンロードコマンドについては、モデルリファレンスを参照してください。

このチュートリアルでは、短いコンテキスト(4k)ミニ(3B)モデルバリアントをダウンロードして実行します。他のバリアントのダウンロードコマンドについては、モデルリファレンスを参照してください。

  1. git large file system拡張機能をインストールする

    HuggingFaceはバージョン管理にgitを使用します。ONNXモデルをダウンロードするには、git lfsがインストールされている必要があります(まだインストールされていない場合)。

    • Windows: winget install -e --id GitHub.GitLFS(wingetがない場合は、公式サイトからexeをダウンロードして実行します)
    • Linux: apt-get install git-lfs
    • MacOS: brew install git-lfs

    次にgit lfs installを実行します。

  2. HuggingFace CLIをインストールする

    Terminal window
    pip install huggingface-hub[cli]

GPUを搭載したWindowsマシンを使用していますか?

  • わからない → このガイドを確認して、WindowsマシンにGPUがあるかどうかを確認し、GPUがDirectML対応であることを確認してください。
  • はい → DirectMLで実行の手順に従ってください。
  • いいえ → NVIDIA GPUをお持ちですか?

注意:ハードウェアに基づいて必要なパッケージとモデルは1つだけです。つまり、以下のセクションのいずれかの手順のみを実行してください

  1. モデルをダウンロードする

    Terminal window
    huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include directml/* --local-dir .

    このコマンドは、directmlというフォルダにモデルをダウンロードします。

  2. generate() APIをインストールする

    pip install --pre onnxruntime-genai-directml

    pip listonnxruntime-genai-directmlが表示されるはずです。

  3. モデルを実行する

    phi3-qa.pyでモデルを実行します。

    Terminal window
    curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.py
    python phi3-qa.py -m directml\directml-int4-awq-block-128 -e dml

    スクリプトがモデルをロードすると、ループで入力を求められ、モデルが生成する出力がストリーミングされます。例:

    Terminal window
    入力:GPUについてのジョークを教えてください
    もちろんです!GPUに関する気楽なジョークです:
    GPUはなぜ学校に行ったの?「処理能力」を向上させたかったからです!
    このジョークは、「処理能力」の二重の意味を利用しており、GPUの計算能力と、学生が学力を向上させたいという考えの両方を指しています。
  1. モデルをダウンロードする

    Terminal window
    huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include cuda/cuda-int4-rtn-block-32/* --local-dir .

    このコマンドは、cudaというフォルダにモデルをダウンロードします。

  2. generate() APIをインストールする

    pip install --pre onnxruntime-genai-cuda
  3. モデルを実行する

    phi3-qa.pyでモデルを実行します。

    Terminal window
    curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.py
    python phi3-qa.py -m cuda/cuda-int4-rtn-block-32 -e cuda

    スクリプトがモデルをロードすると、ループで入力を求められ、モデルが生成する出力がストリーミングされます。例:

    Terminal window
    入力:クリエイティブライティングについてのジョークを教えてください
    出力:作家はなぜ迷子にならないの?いつもプロットに従っているからです!
  1. モデルをダウンロードする

    Terminal window
    huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .

    このコマンドは、cpu_and_mobileというフォルダにモデルをダウンロードします。

  2. CPU用のgenerate() APIをインストールする

    pip install --pre onnxruntime-genai
  3. モデルを実行する

    phi3-qa.pyでモデルを実行します。

    Terminal window
    curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.py
    python phi3-qa.py -m cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4 -e cpu

    スクリプトがモデルをロードすると、ループで入力を求められ、モデルが生成する出力がストリーミングされます。例:

    Terminal window
    入力:生成AIについてのジョークを教えてください
    出力:生成AIはなぜ学校に行ったの?
    「創造性」アルゴリズムを向上させるためです!
Terminal window
huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .
python phi3-qa.py -m cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4 -e cpu
Terminal window
huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include cuda/cuda-int4-rtn-block-32/* --local-dir .
python phi3-qa.py -m cuda/cuda-int4-rtn-block-32 -e cuda
Terminal window
huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include directml/* --local-dir .
python phi3-qa.py -m directml\directml-int4-awq-block-128 -e dml
Terminal window
huggingface-cli download microsoft/Phi-3-mini-128k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .
python phi3-qa.py -m cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4 -e cpu
Terminal window
huggingface-cli download microsoft/Phi-3-mini-128k-instruct-onnx --include cuda/cuda-int4-rtn-block-32/* --local-dir .
python phi3-qa.py -m cuda/cuda-int4-rtn-block-32 -e cuda
Terminal window
huggingface-cli download microsoft/Phi-3-mini-128k-instruct-onnx --include directml/* --local-dir .
python phi3-qa.py -m directml\directml-int4-awq-block-128 -e dml
Terminal window
git clone https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-cpu
python phi3-qa.py -m Phi-3-medium-4k-instruct-onnx-cpu/cpu-int4-rtn-block-32-acc-level-4 -e cpu
Terminal window
git clone https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-cuda
python phi3-qa.py -m Phi-3-medium-4k-instruct-onnx-cuda/cuda-int4-rtn-block-32 -e cuda
Terminal window
git clone https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-directml
python phi3-qa.py -m Phi-3-medium-4k-instruct-onnx-directml/directml-int4-awq-block-128 -e dml
Terminal window
git clone https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-cpu
python phi3-qa.py -m Phi-3-medium-128k-instruct-onnx-cpu/cpu-int4-rtn-block-32-acc-level-4 -e cpu
Terminal window
git clone https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-cuda
python phi3-qa.py -m Phi-3-medium-128k-instruct-onnx-cuda/cuda-int4-rtn-block-32 -e cuda

Phi-3 medium 128kコンテキストDirectML

Section titled “Phi-3 medium 128kコンテキストDirectML”
Terminal window
git clone https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-directml
python phi3-qa.py -m Phi-3-medium-128k-instruct-onnx-directml/directml-int4-awq-block-128 -e dml
Terminal window
huggingface-cli download microsoft/Phi-3.5-mini-instruct-onnx --include cuda/cuda-int4-awq-block-128/* --local-dir .
python phi3-qa.py -m cuda/cuda-int4-awq-block-128 -e cuda
Terminal window
huggingface-cli download microsoft/Phi-3.5-mini-instruct-onnx --include cpu_and_mobile/cpu-int4-awq-block-128-acc-level-4/* --local-dir .
python phi3-qa.py -m cpu_and_mobile/cpu-int4-awq-block-128-acc-level-4 -e cpu