SageMakerの三層アーキテクチャ

SageMakerの三層アーキテクチャ
--
Amazon SageMakerは、機械学習（Machine Learning）のモデルの構築、トレーニング、デプロイメントをサポートするサービスです。SageMakerは、ドメイン、ユーザプロファイル、アプリケーションの3つの主要な層で構造化されています。
1. **ドメイン（Domain）**

2. **ユーザプロファイル（User Profile）**
3. **アプリケーション（Application）**

AWS re:Invent 2023以後、急にアーキテクチャが複雑になり、アーキテクチャを説明するドキュメントがなかったので、作成しました。

**ドメイン（Domain）全体像**
新UIでnotebookを利用する場合は、JypyterLab、旧UIでnotebookを利用する場合は、Studio Classicアプリをクリックします。
![全体構成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/428d4c26-4a8f-81e1-3e66-c7a096762a6a.png)

**ドメイン（Domain）**
![ドメイン.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/fb39babf-edaa-a190-bd6b-b343b2558157.png)

**ユーザプロファイル（User Profile）**
![ユーザプロファイル.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/fa22ca3b-f3ba-2a7b-d066-e426a80d9375.png)

**アプリケーション（Application）**
![アプリ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/cf409585-6e32-26bc-7102-bfffccd89277.png)

:::note info
1. **ドメイン（Domain）**
ドメインは、SageMakerの最上位の階層であり、組織全体の機械学習リソースをグループ化します。
   - 各ドメインは、特定のビジネスユースケースやプロジェクトに関連する一連の機械学習リソースを含みます。
   - 例えば、異なる部門やプロジェクトごとに異なるドメインを作成でき、それぞれが独自の環境を持つことができます。

2. **ユーザプロファイル（User Profile）**
ユーザプロファイルは、特定のユーザやチームに関連する機械学習の設定やリソースを管理します。
   - ユーザプロファイルには、ユーザごとのアクセス権や環境設定が含まれます。
   - 各ユーザプロファイルは、ドメイン内で個別に管理され、ユーザやチームが必要なリソースにアクセスできるようにします。

3. **アプリケーション（Application）**
アプリケーションは、具体的な機械学習プロジェクトやワークフローを指します。
   - アプリケーションは、データの前処理、モデルのトレーニング、デプロイなどのフェーズを含む、完全な機械学習パイプラインを表します。
   - 各アプリケーションは、関連するユーザプロファイルに基づいて構成され、特定のユーザやチームがそのアプリケーションにアクセスできるようになります。
:::

これらの3つの層を組み合わせることで、SageMakerは異なる組織やプロジェクトに対して柔軟かつ効率的な機械学習環境を提供します。それぞれの層は、セキュリティやアクセス制御、リソースの管理などの側面でカスタマイズ可能であり、ユーザや組織のニーズに合わせて調整できます。

現在、新UI JypyterLabと旧UI　Studio Classcのアプリ、どちらからでもノートブックを起動できるのですが、アーキテクチャが異なるので、ロールの使い分け等、注意が必要な状況となっております。新UIでは、プライベートスペースだけなので、ドメイン実効ロールを使います。しかし、旧UIでは、プライベートスペースでは、ドメイン実効ロールを使い、共有スペースでは、ユーザプロファイルロールを使うという事を気を付けないと、混乱するかと思います。

新UI JypterLabのアーキテクチャ
--
![jypterlab.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/f94a7c1c-24bc-d3c9-3dec-a8205a51ea51.png)

SageMakerのセキュリティ
--
一見すると、ルートアクセスできるように見えます。

![rootアクセス.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/5d42d353-d010-ab05-c8dd-1f290a3c688d.png)

ただ、こちらは、対策が取られており、

ユーザーの再マッピングが行われています。

SageMakerはユーザー再マッピングを実行して、コンテナ内のユーザーをホストインスタンス上のユーザーにマップします。コンテナ内のユーザーIDの範囲(0～65535)は、インスタンス上の65535を超える非特権ユーザーIDにマッピングされます。例えば、sagemaker-user (1000)は、インスタンス上のユーザー(200001)にマップされることがあります。

ユーザー再マッピングにより、コンテナ内のユーザーはリソースにアクセスできなくなり、ホストインスタンスに変更を加えることができません。ユーザーの新規作成に関係なく、権限は与えられません。コンテナのrootユーザーも、インスタンス上の非特権ユーザーにマップされます。

これにより、セキュリティが向上し、コンテナーが適切に分離されるようになります。
https://docs.aws.amazon.com/sagemaker/latest/dg/security-access-control-studio-nb.html

https://docs.docker.jp/engine/security/userns-remap.html


旧UI Studio Classicのアーキテクチャ
--
![image.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/f824e93f-640d-95aa-6263-5dcde66165fe.png)

システムターミナル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/123dd25e-6b1a-48a2-3e63-ee11dc643317.png)

システムターミナル起動画面
![system terminal.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/1ebf63c6-0c0e-dfd9-f073-cba70b61752c.png)

イメージターミナル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/ce485d69-16a3-9537-631a-021023d0fbd4.png)

イメージターミナル起動画面
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/6292c68c-39d3-a328-90b4-1e4619844655.png)

イメージターミナル起動画面　起動後
![image terminal.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/8537a156-67b8-4682-e1b8-a962c92d34b6.png)

共有スペースのアーキテクチャ
![共有スペース.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/77b42af6-b467-ca92-2903-443615cb17e8.png)


ドメイン実効ロールは、プライベートスペースで使われる。
ユーザプロファイルロールは、共有スペースで使われる。
https://repost.aws/ja/knowledge-center/sagemaker-studio-role-change
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/b35eac52-87e5-0c75-8b4d-c6c52038ad4c.png)

AWS re:Invent 2023以前のアーキテクチャは、下記のようなものです。(旧UI Classic環境)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/9c4bd394-6e90-d874-ef3c-87ff5336d661.png)

https://aws.amazon.com/jp/blogs/machine-learning/dive-deep-into-amazon-sagemaker-studio-notebook-architecture/