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)コンテキストバージョンがあります。長いコンテキストバージョンは、はるかに長いプロンプトを受け入れ、より長い出力テキストを生成できますが、より多くのメモリを消費します。
利用可能なモデルは次のとおりです。
- https://huggingface.co/microsoft/Phi-3-mini-4k-instruct-onnx
- https://huggingface.co/microsoft/Phi-3-mini-128k-instruct-onnx
- https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-cpu
- https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-cuda
- https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-directml
- https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-cpu
- https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-cuda
- https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-directml
- https://huggingface.co/microsoft/Phi-3.5-mini-instruct-onnx
このチュートリアルでは、Phi 3モデルの短いコンテキスト(4k)ミニ(3B)モデルバリアントをダウンロードして実行する方法を示します。他のバリアントのダウンロードコマンドについては、モデルリファレンスを参照してください。
このチュートリアルでは、短いコンテキスト(4k)ミニ(3B)モデルバリアントをダウンロードして実行します。他のバリアントのダウンロードコマンドについては、モデルリファレンスを参照してください。
セットアップ
Section titled “セットアップ”-
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を実行します。 - Windows:
-
HuggingFace CLIをインストールする
Terminal window pip install huggingface-hub[cli]
プラットフォームを選択する
Section titled “プラットフォームを選択する”GPUを搭載したWindowsマシンを使用していますか?
- わからない → このガイドを確認して、WindowsマシンにGPUがあるかどうかを確認し、GPUがDirectML対応であることを確認してください。
- はい → DirectMLで実行の手順に従ってください。
- いいえ → NVIDIA GPUをお持ちですか?
- わからない → このガイドを確認して、CUDA対応GPUがあるかどうかを確認してください。
- はい → NVIDIA CUDA GPUで実行の手順に従ってください。
- いいえ → CPUで実行の手順に従ってください。
注意:ハードウェアに基づいて必要なパッケージとモデルは1つだけです。つまり、以下のセクションのいずれかの手順のみを実行してください
DirectMLで実行
Section titled “DirectMLで実行”-
モデルをダウンロードする
Terminal window huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include directml/* --local-dir .このコマンドは、
directmlというフォルダにモデルをダウンロードします。 -
generate() APIをインストールする
pip install --pre onnxruntime-genai-directmlpip listにonnxruntime-genai-directmlが表示されるはずです。 -
モデルを実行する
phi3-qa.pyでモデルを実行します。
Terminal window curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.pypython phi3-qa.py -m directml\directml-int4-awq-block-128 -e dmlスクリプトがモデルをロードすると、ループで入力を求められ、モデルが生成する出力がストリーミングされます。例:
Terminal window 入力:GPUについてのジョークを教えてくださいもちろんです!GPUに関する気楽なジョークです:GPUはなぜ学校に行ったの?「処理能力」を向上させたかったからです!このジョークは、「処理能力」の二重の意味を利用しており、GPUの計算能力と、学生が学力を向上させたいという考えの両方を指しています。
NVIDIA CUDAで実行
Section titled “NVIDIA CUDAで実行”-
モデルをダウンロードする
Terminal window huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include cuda/cuda-int4-rtn-block-32/* --local-dir .このコマンドは、
cudaというフォルダにモデルをダウンロードします。 -
generate() APIをインストールする
pip install --pre onnxruntime-genai-cuda -
モデルを実行する
phi3-qa.pyでモデルを実行します。
Terminal window curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.pypython phi3-qa.py -m cuda/cuda-int4-rtn-block-32 -e cudaスクリプトがモデルをロードすると、ループで入力を求められ、モデルが生成する出力がストリーミングされます。例:
Terminal window 入力:クリエイティブライティングについてのジョークを教えてください出力:作家はなぜ迷子にならないの?いつもプロットに従っているからです!
CPUで実行
Section titled “CPUで実行”-
モデルをダウンロードする
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というフォルダにモデルをダウンロードします。 -
CPU用のgenerate() APIをインストールする
pip install --pre onnxruntime-genai -
モデルを実行する
phi3-qa.pyでモデルを実行します。
Terminal window curl https://raw.githubusercontent.com/microsoft/onnxruntime-genai/main/examples/python/phi3-qa.py -o phi3-qa.pypython phi3-qa.py -m cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4 -e cpuスクリプトがモデルをロードすると、ループで入力を求められ、モデルが生成する出力がストリーミングされます。例:
Terminal window 入力:生成AIについてのジョークを教えてください出力:生成AIはなぜ学校に行ったの?「創造性」アルゴリズムを向上させるためです!
Phi-3 ONNXモデルリファレンス
Section titled “Phi-3 ONNXモデルリファレンス”Phi-3 mini 4kコンテキストCPU
Section titled “Phi-3 mini 4kコンテキストCPU”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 cpuPhi-3 mini 4kコンテキストCUDA
Section titled “Phi-3 mini 4kコンテキストCUDA”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 cudaPhi-3 mini 4kコンテキストDirectML
Section titled “Phi-3 mini 4kコンテキストDirectML”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 dmlPhi-3 mini 128kコンテキストCPU
Section titled “Phi-3 mini 128kコンテキストCPU”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 cpuPhi-3 mini 128kコンテキストCUDA
Section titled “Phi-3 mini 128kコンテキストCUDA”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 cudaPhi-3 mini 128kコンテキストDirectML
Section titled “Phi-3 mini 128kコンテキストDirectML”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 dmlPhi-3 medium 4kコンテキストCPU
Section titled “Phi-3 medium 4kコンテキストCPU”git clone https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-cpupython phi3-qa.py -m Phi-3-medium-4k-instruct-onnx-cpu/cpu-int4-rtn-block-32-acc-level-4 -e cpuPhi-3 medium 4kコンテキストCUDA
Section titled “Phi-3 medium 4kコンテキストCUDA”git clone https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-cudapython phi3-qa.py -m Phi-3-medium-4k-instruct-onnx-cuda/cuda-int4-rtn-block-32 -e cudaPhi-3 medium 4kコンテキストDirectML
Section titled “Phi-3 medium 4kコンテキストDirectML”git clone https://huggingface.co/microsoft/Phi-3-medium-4k-instruct-onnx-directmlpython phi3-qa.py -m Phi-3-medium-4k-instruct-onnx-directml/directml-int4-awq-block-128 -e dmlPhi-3 medium 128kコンテキストCPU
Section titled “Phi-3 medium 128kコンテキストCPU”git clone https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-cpupython phi3-qa.py -m Phi-3-medium-128k-instruct-onnx-cpu/cpu-int4-rtn-block-32-acc-level-4 -e cpuPhi-3 medium 128kコンテキストCUDA
Section titled “Phi-3 medium 128kコンテキストCUDA”git clone https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-cudapython phi3-qa.py -m Phi-3-medium-128k-instruct-onnx-cuda/cuda-int4-rtn-block-32 -e cudaPhi-3 medium 128kコンテキストDirectML
Section titled “Phi-3 medium 128kコンテキストDirectML”git clone https://huggingface.co/microsoft/Phi-3-medium-128k-instruct-onnx-directmlpython phi3-qa.py -m Phi-3-medium-128k-instruct-onnx-directml/directml-int4-awq-block-128 -e dmlPhi-3.5 mini 128kコンテキストCUDA
Section titled “Phi-3.5 mini 128kコンテキストCUDA”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 cudaPhi-3.5 mini 128kコンテキストCPU
Section titled “Phi-3.5 mini 128kコンテキストCPU”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