Windows アプリでの機械学習モデルの使用方法

本ガイドは、人工知能 (AI) と機械学習 (ML) モデルを初めて使用するアプリ開発者を支援することを目的としたもので、基本的な概念とリソースを共有し、一般的な質問への回答および Windows アプリで AI と ML モデルを使用する方法に関する推奨事項を提供します。

機械学習 (ML) とは、人工知能 (AI) の一種で、コンピューターにデータから学習させ、予測や意思決定を行えるようにする技術です。

ML モデル は、データを基にトレーニングしてからデプロイすることで、コンテンツ生成、コンテンツに対する推論、画像認識、自然言語処理、感情分析などのさまざまなタスクを実行できるアルゴリズムです。

Windows アプリケーションで ML モデルを活用する方法

ML モデルを活用して Windows アプリケーションの機能とユーザー エクスペリエンスを強化する方法をいくつか以下に示します。

  • 生成 AI モデルを使用し、アプリに複雑なトピックを読み解かせることで、内容の要約、書き換え、レポートの作成、または拡充が可能になります。
  • アプリでモデルを用いて、自由形式のコンテンツをアプリが対応している構造化された形式に変換できます。
  • セマンティック検索モデルを使用すれば、ユーザーは意味に基づいたコンテンツの検索ができるようになり、関連するコンテンツをすばやく見つけられます。
  • 自然言語処理モデルを使用すれば、アプリで複雑な自然言語の要件の推論ができるようになり、ユーザーの要求を実行するためのアクションの計画と実行も可能になります。
  • 画像操作モデルを使用すれば、インテリジェントな画像の変更、サブジェクトの消去または追加、アップスケール、または新しいコンテンツの生成が可能になります。
  • 予測診断モデルは、問題の特定と予測に有用で、ユーザーへの対処方法の提示や問題の解決を行えます。

AI 対応 API の ML モデル

Windows Copilot Runtime は、AI を用いてオペレーティング システムとやり取りする方法をいくつか組み合わせたもので、 これには Windows Copilot Library と呼ばれる、すぐに使用可能な AI 対応の機能と API が含まれます。 上記のシナリオの一部をサポートする、すぐに使用可能な機能と API のガイダンスについては、「Windows アプリで AI 対応 API の使用を開始する」を参照してください。

Windows Copilot Library モデルは、Windows デバイスのローカル環境で直接実行されますが、すぐに使用可能な API 経由でクラウドベースのモデルを使用することもできます。 実行環境がローカルでもクラウドでも、基となる ML モデルはこうした API によって抽象化されるため、最適化、書式設定、または微調整を行う必要はありません。

ただし、Windows のローカル環境で独自の ML モデルを使用する場合は、 そのモデルを Windows デバイスで正しく実行できるように最適化するか、特定のユース ケースまたは会社を対象としてカスタマイズされた独自のデータでトレーニングし、微調整する必要があります。 本記事では、このプロセスの実行に役立つ概念、ツール、オープンソース ライブラリをいくつかご紹介します。

小規模言語モデルのローカルでの実行と大規模言語モデルのクラウドでの実行

小規模言語モデル (SLM) は、コンパクトかつ効率を考慮した設計になっており、多くの場合は特定のタスクまたはドメインに使用されます。小規模なデータセットでトレーニングすることで、モデルの格納と実行をローカルで行えるようになり、推論に要する時間を短縮できます。 SLM は、トレーニングに使用できるデータの量が制限されており、大規模言語モデル (LLM) ほど豊富な出力情報や複雑な推論は提供できません。 ただし、ローカルで使用する場合、SLM は LLM よりも安全性とコスト効率に優れているため、有力な選択肢となり得ます。これは、チャット情報をデバイスにローカルで安全に保持することで、計算の実行にかかる負担を抑えられ、データのプライバシーを向上できるためです。

デバイス上で ML モデルを実行する場合、それを実行するデバイスのストレージ容量と処理能力を超える情報の処理はできないため、SLM はローカルでの使用に最適です。 LLM の多くは規模が大きすぎるため、ローカルでは実行できません。

SLM の例としては、Microsoft Phi-2 モデルと Phi-3 モデルが挙げられます。

大規模言語モデル (LLM) は、大量のデータとパラメーターを用いてトレーニングされたモデルのため、非常に複雑で大容量のストレージが必要になります。 大規模であることから、LLM はデータのきわめて繊細かつ複雑なパターンを捉えられ、SLM よりも豊富な情報を網羅でき、より複雑なパターンも扱えます。 また、トレーニングと推論の実行の両方において、非常に大規模な計算リソースが必要になります。 LLM の多くは、ローカル デバイスでは実行できません。

OpenAI 言語モデルの GPT-4o、GPT-4 Turbo、GPT-3.5 Turbo、DALL·E、Whisper はすべて LLM の例です。

SLM をローカルで使用する場合と LLM をクラウドで使用する場合との違いの詳細については、「Windows アプリでローカルの AI 対応 API とクラウドベースの AI 対応 API を使用する場合の考慮事項」を参照してください。

オープンソースの ML モデルを Web 上で探す

すぐに使用でき、独自のデータや好みの設定でカスタマイズ可能オープンソースの ML モデルは、さまざまなプラットフォームで提供されています。以下で、一般的に使用されているプラットフォームをいくつかご紹介します。

  • Hugging Face: 10,000 を超える自然言語処理用の事前トレーニング済み ML モデルを Transformers ライブラリで提供するハブです。 テキスト分類、質問応答、概要作成、翻訳、生成など、さまざまなモデルを利用できます。
  • ONNX Model Zoo: コンピューター ビジョン、自然言語処理、音声など、幅広いドメインおよびタスクを網羅した、ONNX 形式の事前トレーニング済み ML モデルのコレクションを提供しています。
  • Qualcomm AI Hub: Qualcomm Snapdragon デバイス用に最適化された、さまざまな ML モデルとツールへのアクセスを提供するプラットフォームです。 画像、動画、オーディオ、センサー処理のモデルのほか、モバイル デバイス上の ML アプリケーションの構築と展開に使用できるフレームワーク、ライブラリ、SDK を利用できます。 また、開発者や研究者向けのチュートリアル、ガイド、コミュニティ サポートも提供されています。
  • PyTorch Hub: 研究の再現性を促進し、新しい研究を可能にするために設計された、事前トレーニング済みのモデルのリポジトリです。 単純な API とワークフローで、機械学習に関する研究の再現性を向上させる基本的な構成要素を提供しており、 PyTorch Hub を構成する事前トレーニング済みのモデルのリポジトリは、特に研究の再現性を促進することを目的として設計されています。
  • TensorFlow Hub: 事前トレーニング済みの ML モデルと、ML モデルの構築およびトレーニングで一般的に使用されるフレームワークである TensorFlow 用の再利用可能なコンポーネントを提供するリポジトリです。 画像、テキスト、動画、オーディオ処理のモデルのほか、転移学習や微調整に使用するモデルも利用できます。
  • Model Zoo: さまざまなフレームワークやタスクに最適なオープンソースの ML モデルをキュレーションし、ランク付けするプラットフォームです。 カテゴリ、フレームワーク、ライセンス、評価別にモデルを閲覧し、各モデルのデモ、コード、関連論文を確認できます。

一部のモデル ライブラリは、カスタマイズを目的としたものではなく、アプリ経由で配布されますが、開発ライフサイクルの一部として実践的な体験や新たな発見に役立ちます。その具体的な例は以下のとおりです。

  • Ollama: Ollama は、顔検出、感情分析、音声認識など、さまざまなタスクに対応した、すぐに使用可能な ML モデルを提供するマーケットプレースです。 数回クリックするだけで、モデルの閲覧、テスト、アプリへの統合が可能です。
  • LM Studio: LM Studio は、ドラッグ アンド ドロップ インターフェイスを使用して、独自のデータからカスタム ML モデルを作成できるツールです。 幅広い選択肢の中からお好きな ML アルゴリズムを選択し、データの前処理と視覚化を行い、モデルのトレーニングと評価を実行できます。

Windows アプリで使用することを目的とした ML モデルをお探しの場合は、「Windows 上での責任ある生成 AI アプリケーションと機能の開発」のガイダンスに従うことを強くお勧めします。 このガイダンスは、ガバナンス ポリシー、プラクティス、プロセスの理解やリスクの特定に役立つほか、推奨されるテスト方法、モデレーターやフィルターなどによるセキュリティ対策、安全で責任あるモデルを選択する際に考慮すべき点を把握するのにも役立ちます。

Windows で実行できるように ML モデルを最適化するには、どうすればよいですか。

Windows アプリで ML モデルを使用する方法は、モデルの種類、ソース、形式、アプリの種類によって異なります。

ML モデルには、次のような形式があります。

  • ONNX: さまざまなフレームワークやプラットフォーム間での ML モデルの表現や交換に使用できるオープン標準の形式です。 ONNX 形式の事前トレーニング済み ML モデルの場合、Windows アプリでのモデルの読み込みと実行は、ONNX Runtime (ORT) で行えます。 ORT を使用すれば、デバイスのハードウェア アクセラレーション済みの推論機能にアクセスできるようになり、ML モデルのパフォーマンスを最適化できます。 PyTorch や TensorFlow など、別の形式の事前トレーニング済みの ML モデルを使用する場合は、Olive などのモデル最適化ツールで ONNX 形式に変換できます。 Olive の使用方法の詳細については、「Fine-tune SLM with Microsoft Olive (Journey Series for Generative AI Application Architecture) (Microsoft Olive を使用した SLM の微調整 (生成 AI アプリケーション アーキテクチャの体験シリーズ))」を参照してください。 ONNX モデルの作成と使用に関するチュートリアルについては、GitHub 上の ONNX チュートリアルを参照してください。 Windows アプリで ONNX モデルを使用する方法を示すサンプルについては、「Windows 上の AI のサンプル ギャラリー」を参照してください。

  • PyTorch: Python と C++ インターフェイスで利用できる、非常に多く使用されるオープンソースのディープ ラーニング フレームワークです。 PyTorch は、ML モデルの中で最も一般的な形式と言えるでしょう。 Windows (C# または C++) アプリまたは Web アプリで PyTorch の ML モデルを使用する場合は、PyTorch ライブラリの .NET および C++ バインディングである TorchSharpLibTorch を使用できます。 TorchSharp と LibTorch を使用すれば、テンソルの作成、読み込み、操作、ニューラル ネットワークの構築と実行、PyTorch 形式を使用したモデルの保存と読み込みができます。 サンプルについては、TorchSharp の例デプロイ用の TorchScriptPyTorch C++ の例を参照してください。 Web アプリに関する詳細については、「Build a web application withONNX Runtime (を使用した Web アプリケーションの構築)」を参照してください。 DirectML で PyTorch モデルを実行する方法の例については、「Windows 上の AI のサンプル ギャラリー」を参照してください。

  • TensorFlow も、機械学習と人工知能の一般的なオープンソース ソフトウェアのライブラリで、さまざまなタスクに対応した機械学習モデルの構築とデプロイに使用されています。

  • Web アプリ用 WebNN API: WebIDL API と JavaScript API を基に、ブラウザーでニューラル ネットワークのハードウェア アクセラレータにアクセスするための Web 標準の API です。 これを使用すれば、Web 開発者は、クラウド サービスやネイティブ ライブラリに依存することなく、クライアント側で機械学習モデルを効率的に作成し、実行できます。 GitHub 上の WebNN のサンプル Windows 上の AI のサンプル ギャラリーにある ONNX Runtime を使用した WebNN のサンプル

カスタマイズしたデータを使用して、ML モデルを Windows で実行できるように微調整するには、どうすればよいですか?

AI Toolkit for Visual Studio Code は、AI モデルをローカルでダウンロードして実行できる VS Code 拡張機能です。 AI Tookit は、次の場合にも役立ちます。

  • REST API を使用して、直感的なプレイグラウンドまたはアプリケーションでモデルをテスト。
  • AI モデルをローカルまたはクラウド (仮想マシン上) の両方で微調整して、新しいスキルを作成し、応答の信頼性を向上させ、応答のトーンと形式を設定。
  • Phi-3Mistral などの一般的な小規模言語モデル (SLB) を微調整します。
  • AI 機能をクラウドにデプロイするか、デバイス上で実行されるアプリケーションを使用してデプロイします。

AI 機能を使用してパフォーマンスを向上させるためにハードウェア アクセラレータを利用する方法

DirectML は、Windows デバイス ハードウェアがデバイス GPU または NPU を使用して ML モデルのパフォーマンスを高速化できるようにする低レベルの API です。 開発者にとって、ハードウェア アクセラレータによる AI を大規模にユーザーに提供するためには、通常、DirectML と ONNX Runtime のペアリングが最も簡単な方法です。 詳細情報: DirectML の概要