AI を Windows アプリケーションに統合する主要な方法には、ローカル モデルとクラウドベース モデルの 2 つがあります。 ローカル モデルでは、既存のモデルを利用したり、TensorFlow や PyTorch などのプラットフォームを使って独自のモデルをトレーニングしたりして、OnnxRuntime によりアプリケーションに組み込めます。 Windows Copilot Runtime には、OCR や Phi Silica モデルの活用など、さまざまな機能の API が用意されています。 一方、クラウドでモデルをホストし、REST API を使用してモデルにアクセスすると、リソースを集中的に使用するタスクをクラウドに委任することで、アプリケーションの合理化を維持できます。 詳細については、「Windows アプリケーションで Machine Learning モデルを使用する」を参照してください。
お好みのプログラミング言語を使用できます。 たとえば、C# は Windows クライアント アプリケーションの作成に広く使用されています。 低レベルの詳細をさらに制御する必要がある場合は、C++ が最適です。 または、Python の使用も検討できます。 Linux 用 Windows サブシステム (WSL) を使用して、Windows 上で Linux ベースの AI ツールを実行することもできます。
OnnxRuntime の使用をお勧めします。
AI を利用したアプリケーションを開発する際には、ユーザー データのプライバシーとセキュリティを尊重することが不可欠です。 データを収集する前に、機密データの暗号化、セキュア接続の使用、ユーザー同意の取得など、データ処理のベスト プラクティスに従う必要があります。 また、データの使用方法を透過的にし、ユーザーが自分のデータを制御できるようにすることも必要です。 「Windows での重要な生成 AI アプリケーションおよび機能の開発」も必ずお読みください。
AI を使用する Windows アプリケーションのシステム要件は、AI モデルの複雑さと使用されるハードウェア アクセラレーションによって異なります。 単純なモデルの場合、最新の CPU で十分ですが、複雑なモデルの場合は、GPU か NPU が必要になることがあります。 また、アプリケーションのメモリとストレージの要件や、クラウドベースの AI サービスに必要なネットワーク帯域幅も考慮する必要があります。
Windows アプリケーションで AI パフォーマンスを最適化するには、モデル推論の高速化に向けて、GPU や NPU などによるハードウェア アクセラレーションを検討する必要があります。 Windows Copilot+ PC は AI ワークロード用に最適化されており、AI タスクのパフォーマンスを大幅に向上させることができます。 「AI Toolkit for Visual Studio Code の概要」も参照してください。
Windows アプリケーションでは事前トレーニング済み AI モデルを使えます。 事前トレーニング済みモデルは、インターネットからダウンロードすることも、クラウドベースの AI サービスを使ってアクセスすることもできます。 その後、それらのモデルは、OnnxRuntime などのフレームワークを使ってアプリケーションに統合できます。
DirectML は、AMD、Intel、NVIDIA、Qualcomm などのベンダーのすべての DirectX 12 対応 GPU を含む、サポートされている幅広いハードウェアとドライバーに対応し、一般的な機械学習タスクに GPU アクセラレーションを提供する機械学習用の低レベル API です。
Open Neural Network Exchange (ONNX) は、ML モデルを表すオープン標準フォーマットです。 PyTorch、TensorFlow、SciKit-Learn、Keras、Chainer、MATLAB などの一般的な ML モデル フレームワークは、標準の ONNX 形式にエクスポートまたは変換できます。 ONNX 形式に変換したモデルは、さまざまなプラットフォームやデバイスで実行できます。 ONNX は、トレーニングされた形式とは異なる形式の ML モデルを使用する場合に適しています。
OnnxRuntime (ORT) は、ハードウェア アクセラレータ (デバイス の CPU、GPU、NPU) をサポートするさまざまなフレームワーク (PyTorch、TensorFlow など) でモデルを実行するための統合ランタイム ツールです。
PyTorch と TensorFlow は、AI アプリケーションで使用されるディープ ラーニング モデルの開発、トレーニング、実行に使用されます。 PyTorch は研究によく使用され、TensorFlow は業界の展開によく使用されます。ONNX はギャップを埋める標準化された モデル交換形式 であり、必要に応じてフレームワークを切り替え、プラットフォーム間で互換性を持ちます。
ニューラル プロセッシング ユニット (NPU) は、AI タスクを効率的に実行するために設計された専用の AI チップです。 NPU の役割は、CPU や GPU とは異なります。 中央処理装置 (CPU) は、命令と汎用計算を実行するコンピューターの主要なプロセッサです。 グラフィックス処理装置 (GPU) は、グラフィックスのレンダリング用に設計され、並列処理用に最適化された特殊なプロセッサです。 ビデオ編集やゲームタスク用に複雑な画像をレンダリングできます。
NPU はディープ ラーニング アルゴリズムを高速化するように設計されており、コンピューターの CPU または GPU から一部のタスクを開放できるため、デバイスはより効率的に動作できます。 NPU は、ニューラル ネットワーク タスクを高速化するために専用に構築されています。 大量のデータを並列に処理することに優れているため、画像認識や自然言語処理などの一般的な AI タスクに最適です。 たとえば、画像認識のタスクを処理している間、NPU はオブジェクトの検出または画像の高速化を担当し、GPU は画像のレンダリングを担当します。
Windows デバイスの CPU、GPU、または NPU の種類とパフォーマンスを確認するには、タスク マネージャー (Ctrl + Alt + Delete) を開き、[パフォーマンス] タブを選択すると、マシンの CPU、メモリ、Wi-Fi、GPU、NPU の一覧と、速度、使用率、およびその他のデータに関する情報が表示されます。
WinML (Windows Machine Learning) は、Windows デバイスにハードウェアアクセラレータ機械学習 (ML) モデルをデプロイするための高度な API であり、開発者はデバイスの機能を利用してモデルの推論を実行できるようにします。 役割は、モデルの読み込み、バインド、および評価です。 WinML は ONNX モデル形式を利用します。
LLM は、汎用言語の生成と理解を実現する能力で知られるコンピューター ラーニング (ML) モデルの一種です。 LLM は、計算負荷の高い自己教師あり学習や半教師あり学習の処理中に、膨大な量のテキスト ドキュメントから統計的関係を学習することで能力を取得する人工ニューラル ネットワークです。 LLM は、主にテキスト生成に使用されます。これは生成 AI の形式であり、入力テキストが与えられると、意味が通っている文章を作成するのに最も確率の高い単語 (または "トークン") を生成します。 パラメーターの数が少なく、容量が制限されている 小規模言語モデル (SMM) もありますが、より効率的で (コンピューティング リソースの削減が必要)、コスト効率が高く、特定のドメインに最適な場合があります。
機械学習におけるモデル トレーニングには、データセットをモデル (LLM または SLM) にフィードすることが含まれます。これにより、モデルがデータから学習できるようになり、モデルがそのデータに基づいて予測や意思決定を行い、パターンを認識できるようになります。 また、パフォーマンスを最適化するために、モデル パラメーターを繰り返し調整する必要があります。
トレーニング済みの機械学習モデルを使用して、学習していない新しいデータに対して予測または分類を行うプロセスを "推論" と呼びます。 データセットで言語モデルをトレーニングし、その基になるパターンとリレーションシップを学習すると、この知識を実際のシナリオに適用する準備が整います。 推論は、AIモデルにとって真価が問われる瞬間であり、トレーニング中に学習した情報をどの程度適用して予測を行うか、タスクを解決できるかをテストします。 推論に既存のモデルを使用するプロセスは、トレーニング フェーズとは異なります。このフェーズでは、トレーニング データと検証データを使用してモデルを開発し、そのパラメーターを微調整する必要があります。
微調整は機械学習において重要なステップであり、事前トレーニング済みのモデルが特定のタスクを実行するように調整されます。 モデルをゼロからトレーニングする代わりに、微調整は既存のモデル (通常は大規模なデータセットでトレーニング) から始まり、特定のタスクに合わせた小さなデータセットを使用してそのパラメーターを調整します。 微調整により、モデルは事前トレーニング中に取得した一般的な知識を保持しながらタスク固有の特徴を学習し、特定のアプリケーションのパフォーマンスを向上させます。
プロンプト エンジニアリングは、生成型 AI と共に使用され、言語モデルの動作と応答を形成するために使用される戦略的アプローチです。 これには、言語モデル (GPT-3 や GPT-4 など) から望ましい結果を得るために、入力プロンプトまたはクエリを慎重に作成する必要があります。 効果的なプロンプトを設計することで、ML モデルが必要な種類の応答を生成できるようにすることができます。 手法には、文言の調整、コンテキストの指定、制御コードを使用してモデルの出力に影響を与えるなどが含まれます。
ハードウェア アクセラレーションとは、汎用 CPU で実現できる範囲を超えて AI アプリケーションを高速化するように設計された特殊なコンピューター ハードウェアを使用する技術です。 ハードウェアアクセラレーションにより、機械学習タスクの速度、エネルギー効率、全体的なパフォーマンスが向上します。たとえば、モデルのトレーニング、予測の作成、ディープ ラーニング ワークロードの並列処理に優れた専用ハードウェア コンポーネントへの計算のオフロードなどです。 GPU と NPU は、どちらもハードウェア アクセラレータの例です。
ML モデルを作成して使用するプロセスには、3 つの主な役割が含まれます。データ科学者: 問題の定義、データの収集と分析、ML アルゴリズムの選択とトレーニング、結果の評価と解釈を担当します。 Python、R、Jupyter Notebook、TensorFlow、PyTorch、scikit-learn などのツールを使用して、これらのタスクを実行します。 ML エンジニア: 運用環境での ML モデルのデプロイ、監視、およびメインを担当します。 Docker、Kubernetes、Azure ML、AWS SageMaker、Google Cloud AI Platform などのツールを使用して、ML モデルのスケーラビリティ、信頼性、セキュリティを確保します。 アプリ開発者: ML モデルをアプリ ロジック、UI、UX に統合する役割を担います。 Windows Copilot Runtime、OnnxRuntime、REST API などのツールを使用して、ユーザー入力とモデル出力を処理します。 各役割にはさまざまな責任とスキルが含まれますが、最適な結果を得るには、これらの役割間でコラボレーションとコミュニケーションが必要です。 プロジェクトの規模と複雑さに応じて、これらの役割は同じユーザーまたは異なるチームによって実行できます。