0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SAP AI Coreのコンセプト

0
Posted at

はじめに

「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の定義済みセットで構成される
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?