はじめに
「SAP AI Core技術連載」第2回。
SAP AI Coreのコンセプト(内部動作の詳細・AI API・リソースグループ)を扱う。前回(#1)はSAP AI Coreの位置づけと料金体系を扱った。次回(#3)は初期セットアップ(Cloud Foundry/Kyma)を扱う。
SAP AI Coreの3コンポーネント(振り返り)
SAP AI Coreは、SAP AI Launchpad・AI APIと連携する3コンポーネント構成である。各コンポーネントの役割とアーキテクチャ図の詳細は、#1「アーキテクチャ概要」を参照。
本記事では、この構成の内部でどのような同期・処理が行われるか、AI APIの仕様、リソースグループの詳細を扱う。
内部動作:同期とプロセスフロー
Git同期(GitOps)
SAP AI Coreは、GitOpsによるCI/CDと統合されている。
- Gitリポジトリのテンプレートは、Kubernetesクラスタへ同期される
- 学習・サービング用テンプレートは数分おきに定期同期される
- SAP AI Coreはテンプレートの構文をチェックし、同期に失敗するとエラーメッセージを表示する
処理の流れ
学習(Training)とサービング(Serving)、それぞれの処理フローは以下の通り。
認証
- SAP BTPトークンを用いて、AI API呼び出しを認証する
学習(Training)
- ユーザーはAI API経由でテンプレートを実行する
- 学習テンプレートはArgo Workflowで実行される
- 学習パイプラインは入力アーティファクトとパラメータを受け取り、モデルアーティファクトを出力する
- 学習テンプレートとAI API Configurationからexecutionが作成され、学習ジョブとなる
サービング(Serving)
- サービングテンプレートはKServingでデプロイされる
- サービングテンプレートとAI API Configurationからdeploymentが作成され、推論サーバーとなる
アーティファクト・イメージ
- データセット・モデルなどのアーティファクトは、ハイパースケーラーストレージとの間でコピーされる
- 必要なDockerイメージは、登録済みDockerリポジトリから取得(pull)される
- シナリオ・実行可能オブジェクトの詳細は、AI APIがKubernetesクラスタから取得する
AI API概要
AI APIは、学習スクリプト・データ・モデル・モデルサーバーなど、複数ランタイムにまたがるAIアセットを管理する。
Argo Workflowとサービングテンプレートは、SAP AI CoreにおけるAI API実装によって管理される。SAP AI Core内部では、これらは「Executable」という概念にマッピングされる。このマッピングを機能させるため、Argo Workflow・サービングテンプレートはYAMLのmetadataセクションに特定の属性を持つ必要がある。
※具体的な属性名について、現時点では公式ドキュメントに記載がありません。
AI API仕様の構成
- メイン仕様:AIシナリオのライフサイクル管理に関する基本仕様
-
拡張仕様:
- Analytics拡張
- Resource group拡張
- Dataset management拡張
- Metrics拡張
Recommendation: メイン仕様を最低限実装し、ユースケースに応じて拡張仕様を実装する
AI APIの利点は、クライアントがAI API対応の全ランタイム実装と連携できる点にある。例えばSAP AI Launchpadは、同じAPIを提供してさえいれば、カスタムランタイム実装とも連携できる。
Meta API(ランタイム機能照会エンドポイント)
Meta API(/lm/metaエンドポイント)は、AI API仕様の一部である。実装は、そのランタイムが持つ機能(capabilities)を示す設定情報を返す必要がある。
クライアントはMeta APIを照会することで、利用可能なコマンドやUIを判別できる。例えばSAP AI LaunchpadがSAP AI CoreのMeta APIを照会すると、以下のようなレスポンスが返る。
{
"aiApi": {
"capabilities": {
"logs": {
"deployments": true,
"executions": true
},
"multitenant": true,
"shareable": true,
"staticDeployments": true,
"timeToLiveDeployments": true,
"userDeployments": true,
"userExecutions": true,
"executionSchedules": true
},
"limits": {
"deployments": { "maxRunningCount": -1 },
"executions": { "maxRunningCount": -1 },
"minimumFrequencyHour": 1,
"timeToLiveDeployments": { "minimum": "10m", "maximum": -1 }
},
"version": "x.x.x"
},
"extensions": {
"analytics": { "version": "x.x.x" },
"metrics": { "capabilities": { "extendedResults": true }, "version": "x.x.x" },
"resourceGroups": { "version": "x.x.x" }
},
"runtimeApiVersion": "x.x.x",
"runtimeIdentifier": "aicore"
}
※バージョン番号はプレースホルダー(x.x.x)に置き換えている。実際の値は執筆時点のドキュメント記載例であり、現在の値とは異なる場合がある。
SAP AI Launchpadなどのクライアントは、このレスポンスに応じてUI表示を切り替える(例:deploymentsに非対応のランタイムでは、UI上でデプロイ機能を非表示にする)。
主なcapabilities
-
logs.executions/logs.deployments:execution・deploymentのログ閲覧可否 -
multitenant:リソースグループ対応のマルチテナント利用可否 -
shareable:インスタンスの共有可否 -
staticDeployments:常時起動の推論エンドポイント提供可否 -
userDeployments/userExecutions:ユーザーによる停止・更新・削除可否 -
timeToLiveDeployments:デプロイメント自動削除までの時間指定可否 -
bulkUpdates:executions/deploymentsの一括停止・削除(最大100件)可否 -
executionSchedules:スケジュール実行の作成可否
主なlimits
-
deployments.maxRunningCount/executions.maxRunningCount:リソースグループ内の同時実行上限 -
timeToLiveDeployments.minimum/maximum:デプロイメントのTTLパラメータの範囲 -
minimumFrequencyHour:executionスケジュールの最小間隔
拡張仕様(extensions)
-
analytics:リソースグループ・テナントの分析情報取得 -
metrics:execution中に生成されるメトリクスの書き込み・読み取り -
resourceGroups:リソースグループの管理 -
dataset:ファイルのアップロード・ダウンロード
リソースグループ
テナントは、関連する機械学習リソース・ワークロードを分離するためにリソースグループを使う。
- シナリオ・Executable・Dockerレジストリシークレットは、全リソースグループ間で共有される
- リソースグループは、1テナントのスコープ内にある関連リソースの仮想的な集合体
- テナントがオンボーディングされると、システムは即座にデフォルトのリソースグループを作成する
- テナント管理者は、AI API経由で追加のリソースグループを作成・削除できる
シナリオコンシューマーテナントの分離にリソースグループを使っている場合、そのリソースグループが削除されるとシナリオコンシューマーはデプロビジョニングされる(標準のXSUAAマルチテナンシーモデルに準拠)。
リソースの範囲(スコープ)
テナントレベルのリソース
- ワークフローテンプレート
- サービングテンプレート
- Dockerレジストリ(Dockerイメージを含む)
- ユーザー認証・認可(UAA)
ユーザー認証・認可はSAP AI Coreテナントに基づく。テナントはSAP AI Coreサービスキーで取得したアクセストークンの保持者であり、リクエストヘッダまたはAI APIによるライフサイクル管理時にリソースグループを指定できる。指定がない場合はデフォルトのリソースグループが使われる。
リソースグループレベルのリソース
- テナントレベルのExecutableは、全リソースグループで共有される
- オブジェクトストアは、リソースグループヘッダを設定することで、リソースグループ単位に登録される
- Execution・Deployment・Configuration・Artifactなどの実行時エンティティは、特定のリソースグループに属し、リソースグループ間で共有できない
Recommendation: 同一のオブジェクトストアバケットを、同一のAWS IAMユーザーで複数のリソースグループに使い回さないこと(セキュリティ設計上の推奨事項)
公式ドキュメントでは、リソースグループのマッピング例として「サービスコンシューマー単位」「環境単位(dev/staging/prod)」「サービスインスタンス単位」「チーム単位」など複数のパターンが図示されている。
Generative AI Hub概要
Generative AI Hubは、SAP AI CoreとSAP AI Launchpadの両方に、生成AIの機能を組み込む。
生成AIモデルは、大量のラベルなしデータで学習された自己教師あり型のディープラーニングモデルである。AI技術と産業規模の計算資源を用いて、複雑なパターンとセマンティックな知識ベースを学習する。これらのモデルは、自然言語処理(NLP)などのタスクを得意とする。
プロンプトなどの入力を解析し、次に来る単語を予測することで、文脈に沿った自然言語の応答を返す。単一のモデルが、異なる入出力形式を用いることで複数のタスクを扱える。
生成AIモデルは汎用的に設計されているが、追加のembeddingでファインチューニングすることで、専門領域・ドメイン固有のユースケースに適応させられる。
SAP AI Coreと生成AI Hubは、LLMとAIを新しい業務プロセスへコスト効率よく統合する助けとなる。
公式のアーキテクチャ図では、SAP Applications(Joule・Cloud ERP・CRM・Spend・HCMなど)からSAP BTP上のSAP Generative Hub(Trust・Orchestration・Access)を経由し、SAPホスト型基盤モデル・サードパーティ言語モデル・オープンソースモデル・リモート基盤モデルへ接続する構成、およびHANA Cloud/Datasphere上のデータ(Vector Engine・Knowledge Graph含む)との連携が示されている。
まとめ
- SAP AI Coreの内部では、Gitリポジトリとのテンプレート同期(GitOps)、Argo Workflowによる学習実行、KServingによるサービングデプロイが行われる
- AI APIはメイン仕様+4つの拡張仕様(Analytics/Resource group/Dataset management/Metrics)で構成される
- Meta API(
/lm/meta)により、クライアントはランタイムの対応機能(capabilities)を照会できる - リソースグループはテナント内でML資産を分離する仕組みで、テナントレベル/リソースグループレベルでリソースの範囲が異なる
- オブジェクトストアバケットの複数リソースグループ間での使い回しは、セキュリティ上避けるべき
- Generative AI Hubは、SAP AI Core・SAP AI Launchpad双方に生成AI機能を組み込む
- 次回(#3)は初期セットアップ(Cloud Foundry/Kyma)を扱う
用語解説
- Executable:学習・デプロイのワークフローを定義する再利用可能なテンプレート。Argo Workflow・サービングテンプレートがマッピングされる概念
- Execution:非デプロイ型Executableのインスタンス化(1回の実行=「run」)。学習実行とバッチ推論実行の2種類がある
- Deployment:デプロイ型Executable(サービングテンプレート)のインスタンス化。成功すると推論用URLが生成される
- Configuration:ExecutableやTemplateにパラメータ値・アーティファクト参照を紐付ける設定情報
- Resource Group:特定のAIシナリオ・ユースケース専用の作業スペース。関連リソースを分離・管理する単位
- Tenant:組織・企業を表す論理的に分離された顧客インスタンス
- Scenario:ユーザーテナント内での特定AIユースケースの実装。ExecutableとTemplateの定義済みセットで構成される