Amazon Web Services ブログ

臨床生成 AI ワークフローの AWS Step Functions による オーケストレーション

この記事は、“Orchestrating Clinical Generative AI Workflows Using AWS Step Functions” を翻訳したものです。

医療分野の急速な進化に伴い、生成 AI を活用することで、患者ケアを革新し、臨床プロセスを合理化する可能性があります。しかし、HIPAA などの規制に準拠しながら、データのセキュリティを確保しつつ、これらの複雑なワークフローを調整することは難しい課題です。一般的なパターンは、ソースデータから始め、生成 AI モデルを選択し、プロンプトを使用して各データレコードに対して特定のタスクを実行することです。このブログ記事では、AWS Step Functions と他の AWS サービスを組み合わせて、セキュアで拡張性と柔軟性に優れた、臨床生成 AI ワークフローのオーケストレーションソリューションを構築する方法を探ります。

ユースケース例

図 1: アーキテクチャ図


この設計を実証するため、私たちは AWS HealthLakeAmazon Bedrock などの生成 AI サービス、および他の AWS コンポーネントを組み合わせて、臨床ノートを要約するヘルスケア特化ソリューションを構築しました。簡単なデプロイと管理のために AWS Cloud Development Kit (CDK) を使用して構築されたこのソリューションは、GenAIWorkflow と呼ばれる AWS Step Functions ステートマシンによってオーケストレーションされています。以下で、このワークフローの各ステップを確認しましょう。

GenAIWorkflow state machine

図 2. GenAIWorkflow ステートマシン

  1. まず、AWS Systems Manager Parameter Store からクエリパラメータを取得します。パラメータには、処理するレコード ID のリストを取得する Amazon Athena クエリと、AWS HealthLake データストアの詳細が含まれます。
  2. Amazon AthenaStartQueryExecution を呼び出して、Athena クエリを実行します。
  3. Amazon Athena GetQueryResults は、クエリの結果であるレコード ID のリストを取得します。クエリと結果セットによっては、最大数の結果が返されます。追加の結果がある場合は、NextToken が返され、すべてのレコードを取得するには後続のクエリを実行する必要があることを示します。
  4. 分散モードのマップステート は、返されたレコード ID のリストを反復処理し、同時に処理します。デフォルトでは、Step Functions は同時実行数 10 を使用します。
  5. 各レコード ID について、Amazon Athena の StartQueryExecution API を呼び出してクエリの実行を開始します。
  6. このステップでは、クエリの結果 (レコード ID に関連付けられたレポートのコンテンツ) を取得します。
  7. 条件分岐ステートを使用して、このステップでは、処理ロジックを続行する前に結果が返されたかどうかを判断します。
  8. これは、AWS Lambda 関数を使用して、Athena クエリの結果に必要な書式設定を行うオプションのステップです (例: 複数の列の値を 1 つの値に結合する、またはクエリ結果から JSON レコードを作成する)。
  9. Parameter Store から、特定のタスクのプロンプトテンプレートを取得します。このプロンプトは、ユースケースに合わせてカスタマイズし、呼び出すモデルに最適化する必要があります。
  10. このステップでは、プロンプトテンプレートとレポートコンテンツを組み合わせてプロンプトを作成し、Amazon Bedrock API を呼び出します。ここでは、さまざまな種類の Amazon Bedrock API 呼び出しの例外をキャッチして再試行するメカニズムを設定できます。
  11. 別の Lambda 関数を呼び出して、Amazon Bedrock API レスポンスを解析し、出力データを Amazon DynamoDB テーブルに保存できる形式に変換します。
  12. PutItem API を使用して、構造化された出力データを DynamoDB テーブルに保存します。
  13. 結果が返されない場合は、反復処理をスキップします。
  14. 条件分岐ステートを使用して、NextToken 値の有無を判断します。
  15. NextToken が存在する場合は、Amazon Athena の GetQueryResults API を NextToken とともに再度呼び出して、次のバッチの結果を取得します。
  16. 処理するレコードがなくなると、ワークフローが成功します。

メリット

AWS Step Functions を使用して生成 AI ワークフローを調整することには、いくつかの利点があります。Step Functions の中核は、さまざまな AWS サービスとシームレスに統合されるビジュアルワークフロー調整ツールであり、複雑な臨床生成 AI ワークフローを管理するのに最適です。このソリューションではセキュリティが最重要で、特に Step Functions が最近カスタマーマネージドキーのサポートを発表したことで、独自の暗号化キーを使用してワークフロー定義と実行データを暗号化できるようになりました。この強化されたセキュリティは、AWS KMS Customer Managed Keys (CMKs) を通じて保護された医療情報 (PHI) の堅牢な取り扱いと、遷移中と処理中の両方でコンポーネント全体にわたる包括的な暗号化にも及びます。このアーキテクチャは、Amazon Athena、AWS Lambda、Amazon DynamoDB などのサービスを通じて、セキュアなデータ処理とストレージを活用しています。また、このソリューションは非常に拡張性が高く、SQL クエリと生成 AI プロンプトを AWS Systems Manager Parameter Store のパラメータとして格納しているため、コード変更なしに変更が可能です。さらに、Lambda 関数を更新して、生成 AI ステップの前後にユースケース固有のロジックを組み込むこともできます。

このソリューションは、運用の信頼性とパフォーマンスにも優れています。Step Functions には、組み込みのエラー処理と再試行メカニズムがあり、自動再試行や適切な障害処理を通じてワークフローの回復力を確保します。また、redrive 機能を使用して、失敗したステップから実行を再開することができます。以下のスクリーンショットは、Step Functions のビジュアルエディタと、堅牢なエラー処理機能を示しています。このアーキテクチャでは、Lambda や Athena などのサーバーレステクノロジーを活用しているため、ワークロードに基づいて自動的にスケーリングされ、必要なリソースのみを消費することで、パフォーマンスとコスト効率の両方を最適化できます。最後に、Step Functions には包括的な監視とログ機能が組み込まれているため、ワークフローの進行状況を追跡し、プロセスの各ステップでの入出力データを検査することができます。

Error handling for Step Functions図 3. Step Functions のエラー処理

次のステップ

AWS Step Functions やその他の AWS サービスを活用することで、臨床現場での生成 AI ワークフローを実現するための、セキュリティ、拡張性、スケーラビリティに優れたソリューションを構築できます。これにより、医療機関は生成 AI の可能性を最大限に活用しながら、データ保護とコンプライアンスの最高水準を確保できます。このソリューションを検討し、ご自身の要件に合わせてカスタマイズし、患者ケアと臨床プロセスに新たな可能性を切り開いてください。私たちはコミュニティとの協力を重視しており、プルリクエストを送ってソリューションの機能強化に貢献したり、GitHub の Issueで問題を報告したり、コメント欄で経験や提案を共有したりすることを歓迎します。皆様のフィードバックと参加により、このソリューションを改善し、医療コミュニティのニーズにより良く応えられるよう努めていきます。

Qing Liu

Qing Liu

Qing Liu はAWSのシニアソリューションアーキテクトです。彼はヘルスケアIT業界で10年以上の経験を持っています。彼はヘルスケアデータを活用してより良い洞察を得て患者の治療成績を改善することに情熱を注いでいます。余暇には、妻や友人とテニスをするのが好きです。

Nick Ragusa

Nick Ragusa

Nick Ragusa はAWS教育チームのプリンシパルソリューションアーキテクトで、教育機関や大学病院がクラウド技術を活用して学習体験と患者の治療成績の両方を変革するのを支援しています。クラウドソリューションの設計をしていない時は、3人の子供たちのスポーツイベントで観客席から声援を送ったり、さわやかな秋の朝のランニングで思索しながら長距離を走ったり、あるいは慎重に選んだデザートで甘い物好きの自身を満足させたりしています。

翻訳は Solutions Architect 窪田が担当しました。原文はこちらです。