この記事では、カスタム ドキュメント処理モデルの構築、トレーニング、デプロイ、使用のための Azure ソリューションについて説明します。 これらの Azure サービスには、処理中にテキストのラベル付けやタグ付けを行うユーザー インターフェイス (UI) 機能も用意されています。
アーキテクチャ
このアーキテクチャの Visio ファイル をダウンロードします。
データフロー
次のデータフローは、前の図に対応しています。
Azure Logic Apps、Azure Data Factory、Azure Functions などのオーケストレーターは、電子メール サーバーやファイル転送プロトコル サーバーまたは Web アプリケーションからメッセージと添付ファイルを取り込みます。
Azure Functions と Azure Logic Apps を使用すると、サーバーレス ワークロードが有効になります。 選択するサービスは、開発、コネクタ、管理、運用コンテキストなどのサービス機能の設定によって異なります。 詳細については、「 Azure Functions と Azure Logic Apps の比較」を参照してください。
Azure Data Factory を使用してデータを一括移動することを検討してください。
オーケストレーターは、取り込まれたデータを Azure Blob Storage または Azure Data Lake Storage に送信します。 これらのストア内のデータは、ファイル拡張子や顧客の詳細などの特性に基づいて整理されます。
ドキュメントのトレーニングや、さまざまなユース ケースに対処するためのカスタム モデルの構築には、次の Azure サービスを個別に、または組み合わせて使用できます。
ドキュメント インテリジェンス スタジオ: ドキュメントでキーと値のペアを抽出するか、イメージまたは PDF からカスタム テーブルを作成する必要がある場合は、Document Intelligence Studio を使用してデータにタグを付け、カスタム モデルをトレーニングします。 ドキュメント 分類と呼ばれるドキュメントの種類を識別する必要がある場合は、適切な抽出モデルを呼び出す前に、Document Intelligent Studio を使用してドキュメントにラベルを付け、モデルを構築します。
Language Studio: コンテンツに基づくドキュメント分類、またはドメイン固有のエンティティ抽出の場合は、Language Studio でカスタム テキスト分類または名前付きエンティティ認識 (NER) モデルをトレーニングできます。
Azure Machine Learning Studio: PyTorch や TensorFlow などのオープンソース フレームワークで使用するテキスト分類またはエンティティ抽出用のデータにラベルを付ける場合は、 Machine Learning Studio、 Python SDK、Azure CLI、または REST API を使用します。 Machine Learning Studio には、基礎 モデルのモデル カタログ が用意されています。 これらの基礎モデルには、テキスト分類、質問の回答、要約などのさまざまなタスクに対して微調整機能があります。 基礎モデルを微調整するには、 Machine Learning Studio の UI または コードを使用します。
Azure OpenAI サービス: テキストの要約や質問の回答などのさまざまなタスクのために、独自のデータまたはドメインで Azure OpenAI モデルを微調整 するには、 Azure AI Foundry ポータル、 Python SDK、または REST API を使用します。
カスタム モデルをデプロイし、それらを推論に使用するには:
Azure AI ドキュメント インテリジェンスには、モデルデプロイが組み込まれています。 カスタム モデルでの推論は、 SDK または ドキュメント モデル REST API を使用して行われます。 モデルの作成時に指定された modelId または モデル名は、ドキュメント分析の要求 URL に含まれます。 ドキュメント インテリジェンスでは、それ以上の展開手順は必要ありません。
Language Studio には、カスタム言語モデルをデプロイするオプションが用意されています。 デプロイのモデルを選択して、REST エンドポイント 予測 URL を 取得します。 モデルは、REST エンドポイントまたは Azure SDK クライアント ライブラリを使用して推論できます。
Machine Learning は、カスタム モデルをオンラインまたはバッチ の Machine Learning マネージド エンドポイントにデプロイします。 Machine Learning SDK を使用して、Web サービスとして Azure Kubernetes Service (AKS) にデプロイ することもできます。 微調整された基盤モデルは、マネージド コンピューティングまたは サーバーレス API を使用してモデル カタログからデプロイできます。 マネージド コンピューティングを使用してデプロイされたモデルは、マネージド エンドポイントを使用して推論できます。これには、リアルタイム推論用のオンライン エンドポイントとバッチ推論用のバッチ エンドポイントが含まれます。
Azure AI Foundry には、 微調整された Azure OpenAI モデルをデプロイするための複数のオプションが用意されています。 Python SDK または REST API を使用して、これらのモデルをデプロイできます。 サーバー レス API として、または マネージド コンピューティングを使用して、Meta や Llama などのプロバイダーから微調整された基盤モデルをデプロイすることもできます。
Components
Azure Logic Apps は、 Azure Integration Services の一部です。 Logic Apps は、アプリ、データ、サービス、システムを統合する自動化されたワークフローを作成します。 このアーキテクチャでは、Logic Apps は、さまざまなソースからのドキュメントとデータの取り込みを調整し、ドキュメント処理のためにダウンストリーム プロセスをトリガーします。 Azure Storage や Microsoft 365 などのサービスに マネージド コネクタ を使用して、ファイルがストレージ アカウントに到着したとき、または電子メールを受信したときにワークフローをトリガーできます。
Azure Data Factory は、データ移動と変換を調整および自動化するためのマネージド データ統合サービスです。 このアーキテクチャでは、Azure Data Factory によって、REST エンドポイントの呼び出しや、取り込まれたデータに対するノートブックの実行などの 変換アクティビティ がパイプラインに追加されます。
Azure Functions は、有効期間の短いプロセスを持つイベントドリブン ワークロードをホストできるサーバーレス コンピューティング サービスです。 このアーキテクチャでは、Functions を使用すると、ワークロードで受信ドキュメントを処理し、モデル処理パイプラインをトリガーできます。
Blob Storage は、非構造化データを格納するためのオブジェクト ストレージ ソリューションです。 Blob Storage では、.NET、Node.js、Python などの複数の言語のライブラリがサポートされています。 アプリケーションは、HTTP または HTTPS 経由で Blob Storage 上のファイルにアクセスできます。 Blob Storage には、大量のデータを格納するためのコスト最適化をサポートするために 、ホット、クール、アーカイブのアクセス層 があります。 このアーキテクチャでは、このアカウントはホット 層を使用する生ファイルのソリューションです。
Data Lake Storage は、大量の非構造化データを格納および整理するためのスケーラブルなクラウドベースのリポジトリです。 このアーキテクチャでは、Data Lake Storage は大量の取り込まれたデータを整理して維持し、分析、ラベル付け、機械学習のワークフローをサポートします。
ドキュメント インテリジェンス は、 Azure AI サービスのコンポーネントです。 このアーキテクチャでは、印刷されたテキスト、手書きのテキスト、テーブル、キーと値のペアを抽出するための組み込みのドキュメント分析機能を提供します。 ドキュメント インテリジェンスには、請求書、ドキュメント、領収書、ID カード、名刺からデータを抽出するための事前構築済みのモデルがあります。 ドキュメント インテリジェンスには、 カスタム テンプレート フォーム モデルと、カスタム モデルのトレーニングとデプロイに使用できる カスタム ニューラル ドキュメント モデルもあります。
Document Intelligence Studio には、ドキュメント インテリジェンスの機能とモデルを探索するためのインターフェイスが用意されています。 このインターフェイスを使用して、データにラベルを付け、カスタム ドキュメント処理モデルを構築できます。
Azure AI Language は 、Azure 自然言語処理 (NLP) サービスを統合します。 事前構築済みのカスタマイズ可能なオプションと言語理解機能が提供されます。 これを使用して、ドキュメントの分類、名前付きエンティティの認識、およびその他の NLP タスクの完了を行います。
Language Studio は、言語モデルの構築、トレーニング、管理、デプロイに使用できる、言語の Web ベースの UI です。 このアーキテクチャでは、ドキュメント処理パイプライン内の分類やエンティティ抽出などのタスクのカスタム言語モデルのタグ付け、トレーニング、およびデプロイをサポートしています。 自動ラベル付け では、カスタム テキスト分類がサポートされ、ドキュメントをさまざまなクラスまたはカテゴリに自動的にラベル付けできます。 スタジオには、F1 スコア、精度、再現率など、 モデルのパフォーマンスを表示するためのオプションも用意されています。
Azure Machine Learning は、大規模なモデル開発とデプロイのためのマネージド 機械学習プラットフォームです。 このアーキテクチャでは、データにラベルを付け、カスタム モデル (オープンソース フレームワークを含む) をトレーニングし、推論タスク用のモデルをデプロイします。
Azure OpenAI には、さまざまなタスクを実行するために使用できる REST API として、強力な 言語モデルとマルチモーダル モデル が用意されています。 このアーキテクチャでは、Azure OpenAI モデルは、モデル の微調整 などの高度な言語タスクを実行して、ベース モデルが最初にトレーニングされたときに不足または過小表示されるデータに対するモデルのパフォーマンスを向上させます。 また、複数のプロバイダーの基礎モデルを使用して、これらのタスクを実行することもできます。
Alternatives
特定のユース ケースに基づいて、このシナリオにさらにワークフローを追加できます。
ドキュメントが画像または PDF の場合は、Azure 光学式文字認識、 ドキュメント インテリジェンス読み取り API、またはオープンソース ライブラリを使用してデータを抽出できます。
言語で事前構築済みのモデルを使用して、 ドキュメントと会話の要約を行うことができます。
前処理コードを使用して、テキスト処理手順を実行します。 これらの手順には、ドキュメント処理の要件に従って、抽出されたデータに対するクリーニング、単語の削除の停止、レンマ化、ステミング、およびテキストの要約が含まれます。 自動化用の REST API としてコードを公開できます。 Azure Logic Apps または Azure Functions インジェスト プロセスと統合して、これらの手順を手動で完了または自動化します。
Azure AI Foundry ポータルを使用して、基盤モデルを微調整してデプロイし、生成型 AI アプリケーションを構築できます。
Azure AI Foundry には、プラットフォームとしてのモデル (MaaP) ホスティング、 サーバーレス コンピューティング、マネージド コンピューティングの 2 つのコンピューティング オプションが用意されています。 特定のモデルとリージョン では、サービスとしてのモデル (MaaS) を提供するサーバーレス API を使用したデプロイがサポートされます。
Machine Learning と Azure AI Foundry は機能を共有するため、 両方のプラットフォームを評価 し、シナリオに最適なものを選択します。
Azure AI Content Understanding を使用して、ドキュメントから構造化データを抽出するためのフィールド スキーマを定義することで、カスタム アナライザーを作成できます。
シナリオの詳細
ドキュメント処理は、さまざまなタスクを対象とします。 言語およびドキュメント インテリジェンスで使用可能な事前構築済みモデルを使用して、ドキュメント処理のすべてのニーズを満たすことが困難な場合があります。 さまざまなアプリケーションやドメインのドキュメント処理を自動化するために、カスタム モデルを構築することが必要になる場合があります。
モデルのカスタマイズにおける主な課題は次のとおりです。
抽出するテキストを分類するために、関連するキーと値のペアエンティティを使用してテキスト データにラベルを付ける、またはタグ付けする。
コンピューティングやストレージなどのトレーニング インフラストラクチャとその統合の管理。
アプリケーションで使用するモデルを大規模にデプロイする。
考えられるユース ケース
次のユース ケースでは、ドキュメント処理にカスタム モデルを利用できます。
オープンソース フレームワークに基づいて、カスタム NER およびテキスト分類モデルを構築します。
保険や医療など、さまざまな業種のドキュメントからカスタム キー値を抽出します。
セキュリティや財務などのドメインの 事前構築済みの NER モデル を超えて、特定のドメイン依存エンティティにタグを付けて抽出します。
ドキュメントからカスタム テーブルを作成します。
署名を抽出します。
コンテンツに基づいて電子メールまたはその他のドキュメントにラベルを付け、分類します。
ドキュメントを要約するか、データに基づいてカスタムの質問と回答のモデルを作成します。
考慮事項
これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「 Well-Architected Framework」を参照してください。
このワークロードの例では、各柱の実装は、各コンポーネントの Azure サービスの最適な構成と使用に依存します。
Reliability
信頼性は、アプリケーションが顧客に対して行ったコミットメントを確実に満たすことができるのに役立ちます。 詳細については、「信頼性の設計レビュー チェックリスト」を参照してください。
可用性
各アーキテクチャ コンポーネントのサービス レベル アグリーメントの詳細については、 ライセンスに関するドキュメントを参照してください。
ストレージ アカウントを使用して高可用性アプリケーションを設計するための構成オプションの詳細については、「 geo 冗長性を使用して高可用性アプリケーションを設計する」を参照してください。
Resiliency
このシナリオでコンピューティング サービスとデータ ストアの回復性を確保するために、Functions や Storage などの個々のサービスの障害モードに対処します。 詳細については、 サービス別の信頼性ガイドを参照してください。
Machine Learning は、Blob Storage、コンピューティング サービス、AKS などの構成サービスに依存します。 Machine Learning の回復性を提供するには、これらの各サービスを回復性を持つように構成します。 詳細については、 ビジネス継続性とディザスター リカバリー (BCDR) のフェールオーバーに関する記事を参照してください。
Azure OpenAI の場合は、異なるリージョンに 2 つ以上の Azure OpenAI リソースをプロビジョニングすることで、継続的な可用性を確保します。 この方法では、問題が発生した場合に別のリージョンにフェールオーバーできます。 詳細については、 Azure OpenAI を使用した BCDR に関するページを参照してください。
セキュリティ
セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、「セキュリティの設計レビュー チェックリスト」を参照してください。
Blob Storage、ドキュメント インテリジェンスと Language Studio 用の AI サービス、Machine Learning、Azure OpenAI に関するデータ保護、ID とアクセス管理、ネットワーク セキュリティに関する推奨事項を実装します。
コストの最適化
コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。
このソリューションを実装する合計コストは、選択したサービスの価格によって異なります。
このソリューションの主なコストは次のとおりです。
Machine Learning モデルをトレーニングしてデプロイするためのコンピューティング コスト。
コストを最適化するには、適切なノードの種類、クラスター サイズ、ノード数を選択します。 Machine Learning には、コンピューティング クラスター ノードの最小数をゼロに設定したり、スケールダウン前のアイドル時間を定義したりなど、トレーニング用のオプションが用意されています。 詳細については、 Machine Learning のコストの管理と最適化に関するページを参照してください。
データ オーケストレーションの期間とアクティビティ。 Azure Data Factory の場合、Azure 統合ランタイムでのコピー アクティビティの料金は、使用されたデータ統合ユニットの数とアクティビティの実行にかかった時間に基づいています。 追加されたオーケストレーション アクティビティの実行も、その数に基づいて課金されます。
Azure Logic Apps の価格プランは、作成して使用するリソースによって異なります。 次の記事は、特定のユース ケースに適したプランを選択するのに役立ちます。
特定のコンポーネントの価格の詳細については、次のリソースを参照してください。
- Azure AI ドキュメント インテリジェンスの価格
- Functions の価格
- Azure Logic Apps の価格
- Azure Data Factory の価格
- Blob Storage の価格
- 言語の価格
- Machine Learning の価格
- Azure OpenAI の価格
Azure 料金計算ツールを使用して、選択したコンポーネント オプションを追加し、ソリューションの全体的なコストを見積もります。
パフォーマンス効率
パフォーマンス効率とは、ユーザーの要求を効率的に満たすためにスケーリングするワークロードの能力を指します。 詳細については、「パフォーマンス効率の設計レビュー チェックリスト」を参照してください。
スケーラビリティ
Functions を自動的または手動でスケーリングするには、 適切なホスティング プランを選択します。
既定では、ドキュメント インテリジェンスは 1 秒あたり 15 件の同時要求をサポートします。 このクォータを増やすには、 Azure サポート チケットを作成します。
AKS で Web サービスとしてホストされる Machine Learning カスタム モデルの場合、 azureml-fe フロントエンド コンポーネントは必要に応じて自動的にスケーリングされます。 また、このコンポーネントは、受信推論要求をデプロイされたサービスにルーティングします。
マネージド エンドポイントとしてのデプロイの場合は、 Azure Monitor 自動スケール機能と統合して自動スケーリングをサポートします。 詳細については、「 運用環境での推論のエンドポイント」を参照してください。
推論のための カスタム NER と カスタム テキスト分類 に関する API サービスの制限は、1 分あたり 20 の GET または POST 要求です。
貢献者達
Microsoft では、この記事を保持しています。 次の共同作成者がこの記事を書きました。
主要な著者:
- ディクシット・アローラ |シニア エンジニア
- Jyotsna Ravi |プリンシパル エンジニア
公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。
次のステップ
- Document Intelligence Studio でカスタム プロジェクトの使用を開始する
- ドキュメント インテリジェンス モデルを使用する
- Azure AI 言語とは
- 光学式文字認識とは
- 仮想ネットワークを使用して Functions を構成する方法