OpenVINO™ ツールキットを活用し、最適化済み AI モデルをインテル® Gaudi® AI アクセラレーターから AI PC へ移植

https://www.intel.com/content/www/us/en/developer/articles/community/ai-models-from-gaudi-to-ai-pc-using-openvino.html

AI について語るとき、特に生成 AI の場合は、事前学習済みのモデルを生成する「モデルの学習処理」、特定のタスクやデータセットにモデルを適応させる「AI モデルのファインチューニング」、モデルから予測結果を生成する「AI モデルの推論」など、本質的に異なる処理プロセスを区別する必要があります。

このブログでは、ファインチューニングと AI モデルの推論に焦点を当て、どのように事前学習済みのニューラル・ネットワーク・モデルを特定のユースケースに適応させ、効率的に実装できるかを深く掘り下げていきます。これらのプロセスにはそれぞれ異なるコンピューティング要件があり、多くの場合、ファインチューニングはインテル® Gaudi® AI アクセラレーターのようなパワフルな AI アクセラレーションを導入しているデータセンターで実行します。一方で、AI モデルの推論は、大規模言語モデル (LLM) であっても、エッジデバイスや AI PC 上で実行可能です。

ここではインテル® Tiber™ AI クラウドのインテル®️ Gaudi®️ 2 AI アクセラレーターを使用し LLM をファインチューニングする手順と、このモデルを AI PC に実装する方法について説明します。

＜インテル® Gaudi® AI アクセラレーターによるモデルのファインチューニング＞
動的な生成 AI の分野では、Llama 3 といった大規模言語モデル (LLM) のファインチューニングには高い演算処理能力とメモリー要件が求められるため、大きな課題となっています。しかし、インテル® Gaudi® 2 アクセラレーターにパラメーター効率ファインチューニング (PEFT) や低ランク適応 (LoRA) を統合できる有効なソリューションの提供によって、高速でありながらコスト効率の高い最先端 LLM のチューニングが可能になりました。この進歩により、研究者や開発者は簡単に大規模モデルの可能性を探求できるようになります。

＜インテル® Gaudi® 2 AI アクセラレーター上で行う LoRA ファインチューニングのための開発環境設定＞

ファインチューニングの開始: インテル® Gaudi® AI アクセラレーター用の Optimum と Habana Hugging Face ライブラリーを使用し、openassistant-guanaco データセットで Llama 3 をファインチューニングします。
https://huggingface.co/datasets/timdettmers/openassistant-guanaco

推論の実行: LoRA でチューニングした Llama 3 8B の応答品質を、事前学習済みの Llama 3 ベースラインと比較します。
インテル® Gaudi® 2 アクセラレーターは、A100 や H100 など NVIDIA の GPU と比較してコスト・パフォーマンスが高く、ここで提供するインサイトとサンプルコードをもとに独自 LLM モデルの開発が加速されるため、多様なハイパーパラメーター、データセット、事前学習済みモデルを使用して、短期間での検証が可能になります。

＜低ランク適応 (LoRA) によるパラメーター効率ファインチューニングの導入＞
LoRA は基本的に行列の因数分解と低ランク近似を使用します。線形代数では、どの行列もいくつかの低ランク行列に分解することが可能です。ニューラル・ネットワークの場合、これは高度にパラメーター化した密なレイヤーを、情報損失を最小限に抑えつつ、もっとシンプルでコンパクトな構造に変換することを意味します。LoRA は、それほど影響の大きくないパラメーターを破棄しつつ、モデルの重要パラメーターをキャプチャーすることに焦点を当てた手法です。

このアプローチは、低次元のサブスペースに存在することが多いという処理データ固有の構造から、大規模ニューラル・ネットワークで特に効果を発揮します。LoRA は、ニューラル・ネットワークのパラメーター用に効率的なサブスペースを作ることで、次元を限定してタスクに固有の新しいパラメーターを導入することができるため、パラメーター全スペースを再度学習処理する必要なく、新しいタスクに対して効率的なファインチューニングを実行できます。

■環境の設定
インテル® Tiber™ AI クラウド: アカウントを作成し、インテル® Gaudi® 2 アクセラレーターのクラウド・インスタンスにアクセスする。
https://ai.cloud.intel.com/

■コンテナの起動: アカウント作成後、[Learn] セクションの Get Started ボタンを選択する。

■Connect Now ドロップダウン・メニューから、AI Accelerator を選択する。

■サンプルコードにアクセス: インテル® Gaudi® 2 アクセラレーターを動かすマシンに接続し、GitHub リポジトリーのクローンを作成して、チュートリアルにアクセスする。
https://github.com/intel-samples/gaudi-samples-llama3-8b-peft

■PEFT (LoRA) による Llama 3 8B のファインチューニング:
Jupyter Notebook の具体的な手順に従ってサンプルを実行します。まずは Hugging Face の基本 Llama 3 8B モデルから開始します。このモデルは因果言語モデルのテキスト生成用に openassistant-guanaco データセットでファインチューニング済みです。このサブセットには会話ツリーの最も評価の高いパスが含まれ、サンプル数は合計 9,846 あります。
https://github.com/intel-samples/gaudi-samples-llama3-8b-peft/blob/main/01_Llama3-8B_PEFT_LORA_FT.ipynb
https://huggingface.co/datasets/timdettmers/openassistant-guanaco

■ファインチューニングの手順を開始:
ここから、最小セットのモデル・パラメーターを調整し、演算とメモリー要件を大幅に軽減する、PEFT メソッドによるファインチューニングに取りかかります。このプロセスでは、チュートリアルで詳しく記載した特定のコマンドを使用して LoRA による言語モデリングを実行します。ファインチューニングには、Jupyter Notebook の「Fine Tuning the Model with PEFT and LoRA」セクションに記載されているコードを使用します。
https://github.com/intel-samples/gaudi-samples-llama3-8b-peft/blob/main/01_Llama3-8B_PEFT_LORA_FT.ipynb
L
■lama 3 の推論で応答品質を評価:
ファインチューニング後、LoRA チューニング済みの重みでサンプルプロンプトをもとに推論を実行し、ベースラインと比較してどの程度の改善が見られるかを評価します。

■ファインチューニング済み LLM を Hugging Face にホスト:
全モデルをファインチューニング済みの重みで Hugging Face へ、または Safetensors フォーマットのファインチューニング済みの重みのみでホスト可能です。Hugging Face のコマンドライン (CLI) で新たにファインチューニングしたモデルをアップロードするには、まず Hugging Face CLI がインストールされ、Hugging Face アカウントの認証情報で設定されているかを確認する必要があります。
PEFT と LoRA を使用してモデルをファインチューニングしたら、モデルのアップロード準備が整います。save_pretrained メソッドでモデルとトークナイザーをディレクトリーへ保存し、次に huggingface-cli を実行しアクセストークンを入力して Hugging Face Hub にログインします。
認証が完了したら、モデルとトークナイザーを保存したディレクトリーに移動します。huggingface-cli コマンドを使用して最適化したモデルをアップロードします。
モデルを初めてアップロードする場合は、専用のリポジトリーが作成されます。https://huggingface.co/<youruserid>/<myoptimizedmodel>/tree/main/
<myoptimizedmodel> の部分に名前を指定できます。
これ以降、ほかのモデルと同様に、このモデルをローカルデバイス上での推論に使用できるようになります。

＜AI PC へ AI モデルを実装＞
ファインチューニング済み LLM は、AI PC に転送することができます。Hugging Face からのダウンロードが、最も便利な方法です。インテル ®Gaudi® プロセッサー上でファインチューニングされているモデルの中で、neural-chat-7b-v3-1 は広く利用されている 1 つです。このモデルの詳細については、モデルカードおよび Supervised Fine-Tuning and Direct Preference Optimization を参照してください。
https://huggingface.co/Intel/neural-chat-7b-v3-1
https://medium.com/intel-analytics-software/the-practice-of-supervised-finetuning-and-direct-preference-optimization-on-habana-gaudi2-a1197d8a3cd3

AI PC に実装するには、まずモデルをダウンロードして、OpenVINO™ ツールキット用のフォーマットに変換してから、目的のフォーマット (このページでは int4 形式) に重みを圧縮します。重みを圧縮することで、ディスク上のメモリー消費が抑えられ、精度を高く維持しながらメモリー・フットプリントの縮小とレイテンシー低減が可能になります。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/424a6e45-bd41-4996-9175-9f5e68c14011.png)

この場合、モデルはデバイスに PyTorch フォーマットでダウンロードされ、変換と最適化のプロセスのローカル実行に時間がかかることがあります。
そのため、最適化済みのモデルを Hugging Face から直接ダウンロードしたほうが効率的です。
https://huggingface.co/collections/OpenVINO/llm-6687aaa2abca3bbcec71a9bd

int8 精度で最適化済みの Neural-chat-7b-v3-3 は、Hugging Face からアクセスして使用できます。
https://huggingface.co/OpenVINO/neural-chat-7b-v3-3-int8-ov#neural-chat-7b-v3-3-int8-ov

事前に変換済みの LLM をダウンロードする場合は、以下の手順に従ってください。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/18bbf274-a0b5-4033-a2c4-f0d377483c14.png)

＜OpenVINO™ ツールキットの生成 AI API で LLM を推論＞
OpenVINO™ ツールキットの生成 AI API は、広く利用されている生成 AI モデルのパイプライン、最適化済みの運用メソッド、サンプルをまとめたライブラリーです。高性能の OpenVINO™ ランタイム上で動作します。
https://github.com/openvinotoolkit/openvino.genai

このライブラリーは、リソース消費に最適化した、AI PC での効率的な動作を目的に設計されました。すべてのコア機能が含まれているため、外部依存なしで生成モデルを実行できます。
LLM のテキスト生成は、以下の Python コードで実行可能です。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/1b3cca36-b586-41fe-9f5d-c17016dffc8d.png)

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/0db16a57-3535-4725-b50c-96bc23de47a4.png)

サンプルコードは GitHub から入手できます。
https://github.com/openvinotoolkit/openvino.genai/blob/master/samples/python/text_generation/greedy_causal_lm.py

また、以下のとおり、C++ を使用した推論も可能です。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/a7b0581b-cace-4e10-b03e-b84fa09451b8.png)

詳細は、How to Build a GenAI App in C++ for OpenVINO™ Toolkit を参照してください。
https://medium.com/openvino-toolkit/how-to-build-openvino-genai-app-in-c-32dcbe42fa67

＜LoRA アダプターを使用した OpenVINO™ ツールキットの生成 AI API による LLM の推論＞
このブログの前半では、Llama 3 8B モデルのファインチューニング手順を説明しました。結果は Hugging Face のリポジトリーに作成されます。
ここにはモデル全体ではなく、Safetensors フォーマットの LoRa 重みのみが格納されています。

OpenVINO™ ツールキット 2024.5 リリース以降は、生成 AI API を使用し、LoRa アダプターと併用して事前学習済みモデルを実行可能です。

まず、元の事前学習済みモデル (ここでは Llama 3 8B) をダウンロードし、OpenVINO™ ツールキット用のフォーマットに変換する必要あります。LoRa アダプターは、以下のとおり、Hugging Face から ダウンロードしてください。

![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/79d95a96-095e-4f38-adb7-5311913d07f0.png)

次に、LoRa アダプターを AI PC 上に置き、この Python コード で同時にモデルを実行できます。

https://github.com/openvinotoolkit/openvino.genai/blob/master/samples/python/text_generation/lora.py

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/b360ad58-65c1-41d1-9529-b0335a31aa71.png)

以下のように、ファインチューニングしたモデル (LoRA の重みを適用) の方が精度の高い応答を返すことが確認できます。

![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3490396/ee6c9885-2fb1-45c2-aa70-3b924a966a6c.png)

まとめ
AI PC は、CPU、GPU、NPU などの AI エンジンを搭載し、OpenVINO™ ツールキットを活用して数多くの生成 AI モデルを効率的に実行できるデバイスです。インテル® Tiber™ AI クラウドとインテル® Gaudi® AI アクセラレーターを活用すれば、カスタマイズした LLM や Hugging Face から入手できないモデルを必要とするタスクでも、LoRA により演算効率の高いプロセスを確保し、コスト効率のよい方法でモデルのファインチューニングを実行できます。これらのテクノロジーと OpenVINO™ ツールキットを組み合わせることで、開発者はリソース制約を最小限に抑えて AI PC に高性能 AI モデルを実装できるようになります。
このブログで紹介したツールとメソッドを活用して、独自の AI プロジェクトを次のレベルに引き上げてください。
参考資料
• ソースコード全体をダウンロード: GitHub
https://github.com/HabanaAI/Gaudi-tutorials

• Hugging Face Models Optimized for Intel® Gaudi® AI Accelerators
https://huggingface.co/docs/optimum/habana/index

• Model Performance Data for Intel® Gaudi® 2 AI Accelerators
https://www.intel.com/content/www/us/en/developer/platform/gaudi/model-performance-gaudi2-inference.html

• インテルが提案する AI PC
https://www.intel.co.jp/content/www/jp/ja/products/docs/processors/core-ultra/ai-pc.html

• OpenVINO™ Toolkit
https://www.intel.com/content/www/us/en/developer/tools/openvino-toolkit/overview.html

• OpenVINO™ GenAI Quick Start Guide
https://docs.openvino.ai/2025/_static/download/GenAI_Quick_Start_Guide.pdf

• OpenVINO™ GenAI GitHub repository
https://github.com/openvinotoolkit/openvino.genai

関連情報：
インテル® Gaudi® 3 アクセラレーター
https://www.intel.co.jp/content/www/jp/ja/products/details/processors/ai-accelerators/gaudi.html