Windows での AI の使用についてよく寄せられる質問。

全般

DirectML とは

DirectML は、AMD、Intel、NVIDIA、Qualcomm などのベンダーのすべての DirectX 12 対応 GPU を含む、サポートされている幅広いハードウェアとドライバーに対応し、一般的な機械学習タスクに GPU アクセラレーションを提供する機械学習用の低レベル API です。 DirectML は WinML のコンポーネントです。

ONNX とは

Open Neural Network Exchange (ONNX) は、ML モデルを表すオープン標準フォーマットです。 PyTorch、TensorFlow、SciKit-Learn、Keras、Chainer、MATLAB などの一般的な ML モデル フレームワークは、標準の ONNX 形式にエクスポートまたは変換できます。 ONNX 形式に変換したモデルは、さまざまなプラットフォームやデバイスで実行できます。 ONNX は、トレーニングされた形式とは異なる形式の ML モデルを使用する場合に適しています。

ORT とは

ONNX ランタイム (ORT) は、ハードウェア アクセラレータ (デバイス CPU、GPU、または NPU) をサポートするさまざまなフレームワーク (PyTorch、TensorFlow など) でモデルを実行するための統合ランタイム ツールです。

ONNX は、PyTorch や TensorFlow などの他の ML フレームワークとどのように異なりますか?

PyTorch と TensorFlow は、AI アプリケーションで使用されるディープ ラーニング モデルの開発、トレーニング、実行に使用されます。 PyTorch は研究によく使用され、TensorFlow は業界の展開によく使用されます。ONNX はギャップを埋める標準化された モデル交換形式 であり、必要に応じてフレームワークを切り替え、プラットフォーム間で互換性を持ちます。

NPU とは CPU や GPU との違いは何ですか?

ニューラル プロセッシング ユニット (NPU) は、AI タスクを効率的に実行するために設計された専用の AI チップです。 NPU の役割は、CPU や GPU とは異なります。 中央処理装置 (CPU) は、命令と汎用計算を実行するコンピューターの主要なプロセッサです。 グラフィックス処理装置 (GPU) は、グラフィックスのレンダリング用に設計され、並列処理用に最適化された特殊なプロセッサです。 ビデオ編集やゲームタスク用に複雑な画像をレンダリングできます。

NPU はディープ ラーニング アルゴリズムを高速化するように設計されており、コンピューターの CPU または GPU から一部のタスクを開放できるため、デバイスはより効率的に動作できます。 NPU は、ニューラル ネットワーク タスクを高速化するために専用に構築されています。 大量のデータを並列に処理することに優れているため、画像認識や自然言語処理などの一般的な AI タスクに最適です。 たとえば、画像認識のタスクを処理している間、NPU はオブジェクトの検出または画像の高速化を担当し、GPU は画像のレンダリングを担当します。

デバイスに搭載されている CPU、GPU、または NPU の種類を確認するにはどうすればよいですか?

Windows デバイスの CPU、GPU、または NPU の種類とパフォーマンスを確認するには、タスク マネージャー (Ctrl + Alt + Delete) を開き、[パフォーマンス] タブを選択すると、マシンの CPU、メモリ、Wi-Fi、GPU、NPU の一覧と、速度、使用率、およびその他のデータに関する情報が表示されます。

WinML とは

WinML (Windows Machine Learning) は、Windows デバイスにハードウェアアクセラレータ機械学習 (ML) モデルをデプロイするための高度な API であり、開発者はデバイスの機能を利用してモデルの推論を実行できるようにします。 役割は、モデルの読み込み、バインド、および評価です。 WinML は ONNX モデル形式を利用します。

実用的な AI の概念

大規模言語モデル (LLM) とは

LLM は、汎用言語の生成と理解を実現する能力で知られるコンピューター ラーニング (ML) モデルの一種です。 LLM は、計算負荷の高い自己教師あり学習や半教師あり学習の処理中に、膨大な量のテキスト ドキュメントから統計的関係を学習することで能力を取得する人工ニューラル ネットワークです。 LLM は、主にテキスト生成に使用されます。これは生成 AI の形式であり、入力テキストが与えられると、意味が通っている文章を作成するのに最も確率の高い単語 (または "トークン") を生成します。 パラメーターの数が少なく、容量が制限されている 小規模言語モデル (SMM) もありますが、より効率的で (コンピューティング リソースの削減が必要)、コスト効率が高く、特定のドメインに最適な場合があります。

ML モデル トレーニングとは

機械学習におけるモデル トレーニングには、データセットをモデル (LLM または SLM) にフィードすることが含まれます。これにより、モデルがデータから学習できるようになり、モデルがそのデータに基づいて予測や意思決定を行い、パターンを認識できるようになります。 また、パフォーマンスを最適化するために、モデル パラメーターを繰り返し調整する必要があります。

推論とは

トレーニング済みの機械学習モデルを使用して、学習していない新しいデータに対して予測または分類を行うプロセスを "推論" と呼びます。 データセットで言語モデルをトレーニングし、その基になるパターンとリレーションシップを学習すると、この知識を実際のシナリオに適用する準備が整います。 推論は、AIモデルにとって真価が問われる瞬間であり、トレーニング中に学習した情報をどの程度適用して予測を行うか、タスクを解決できるかをテストします。 推論に既存のモデルを使用するプロセスは、トレーニング フェーズとは異なります。このフェーズでは、トレーニング データと検証データを使用してモデルを開発し、そのパラメーターを微調整する必要があります。

ML モデルの微調整とは

微調整は機械学習において重要なステップであり、事前トレーニング済みのモデルが特定のタスクを実行するように調整されます。 モデルをゼロからトレーニングする代わりに、微調整は既存のモデル (通常は大規模なデータセットでトレーニング) から始まり、特定のタスクに合わせた小さなデータセットを使用してそのパラメーターを調整します。 微調整により、モデルは事前トレーニング中に取得した一般的な知識を保持しながらタスク固有の特徴を学習し、特定のアプリケーションのパフォーマンスを向上させます。

プロンプト エンジニアリングとは何か?

プロンプト エンジニアリングは、生成型 AI と共に使用され、言語モデルの動作と応答を形成するために使用される戦略的アプローチです。 これには、言語モデル (GPT-3 や GPT-4 など) から望ましい結果を得るために、入力プロンプトまたはクエリを慎重に作成する必要があります。 効果的なプロンプトを設計することで、ML モデルが必要な種類の応答を生成できるようにすることができます。 手法には、文言の調整、コンテキストの指定、制御コードを使用してモデルの出力に影響を与えるなどが含まれます。

ハードウェア アクセラレーションとは (ML モデル トレーニングに関して)

ハードウェア アクセラレーションとは、汎用 CPU で実現できる範囲を超えて AI アプリケーションを高速化するように設計された特殊なコンピューター ハードウェアを使用する技術です。 ハードウェアアクセラレーションにより、機械学習タスクの速度、エネルギー効率、全体的なパフォーマンスが向上します。たとえば、モデルのトレーニング、予測の作成、ディープ ラーニング ワークロードの並列処理に優れた専用ハードウェア コンポーネントへの計算のオフロードなどです。 GPU と NPU は、どちらもハードウェア アクセラレータの例です。

アプリに AI 機能を適用するデータ科学者、ML エンジニア、アプリ開発者の役割の違いは何ですか?

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、 ONNX Runtime、REST API などのツールを使用し、ユーザー入力とモデルの出力を処理します。 各役割にはさまざまな責任とスキルが含まれますが、最適な結果を得るには、これらの役割間でコラボレーションとコミュニケーションが必要です。 プロジェクトの規模と複雑さに応じて、これらの役割は同じユーザーまたは異なるチームによって実行できます。