SageMaker HyperPod ライフサイクル設定のベストプラクティス - Amazon SageMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SageMaker HyperPod ライフサイクル設定のベストプラクティス

SageMaker HyperPod は、常に up-and-running コンピューティングクラスターを提供します。これは、クラスターリソースの設定 SageMaker HyperPod 方法を指示するライフサイクルスクリプトを記述できるため、高度にカスタマイズ可能です。以下のトピックは、オープンソースのワークロードマネージャーツールで SageMaker HyperPod クラスターをセットアップするためのライフサイクルスクリプトを準備するためのベストプラクティスです。

で Slurm を設定するためのライフサイクルスクリプトを準備する SageMaker HyperPod

以下のトピックでは、 で Slurm をセットアップするためのライフサイクルスクリプトを準備する方法について説明します SageMaker HyperPod。

大まかな概要

次の手順は、クラスターをプロビジョニングし、 HyperPodSlurm で設定する主な流れです。ステップはボトムアップアプローチの順に並べられます。

  1. HyperPod クラスターに Slurm ノードを作成する方法を計画します。例えば、2 つの Slurm ノードを設定する場合は、 HyperPod クラスターに 2 つのインスタンスグループを設定する必要があります。

  2. であるprovisioning_parameters.jsonファイルを準備しますに Slurm ノードをプロビジョニングするための設定フォーム HyperPod HyperPod。 には、クラスターでプロビジョニングする Slurm ノード設定情報が含まれているprovisioning_parameters.json必要があります。これは、ステップ 1 の Slurm ノードの設計を反映する必要があります。

  3. で Slurm をセットアップしてソフトウェアパッケージをインストールし、ユースケースに合わせてクラスターに環境をセットアップ HyperPod するライフサイクルスクリプトのセットを準備します。ライフサイクルスクリプトを中央 Python スクリプト (lifecycle_script.py) の順序でまとめて実行し、エントリポイントシェルスクリプト (on_create.sh) を記述して Python スクリプトを実行する必要があります。エントリポイントシェルスクリプトは、ステップ 5 で後述する HyperPod クラスター作成リクエストに提供する必要があります。

    また、クラスターの作成時に によって HyperPod生成されるresource_config.jsonことが予想されるスクリプトを記述する必要があります。 resource_config.jsonには HyperPod、IP アドレス、インスタンスタイプ、ARNsなどのクラスターリソース情報が含まれており、Slurm の設定に使用する必要があります。

  4. 前のステップのすべてのファイルをフォルダに収集します。

    └── lifecycle_files // your local folder ├── provisioning_parameters.json ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scrips to be fed into lifecycle_script.py
  5. すべてのファイルを S3 バケットにアップロードします。S3 バケットパスをコピーして保持します。プレフィックス で始まる S3 バケットパスのみを許可する でアの IAM ロール SageMaker HyperPodタッチされた を選択する必要があるsagemaker-ためAmazonSageMakerClusterInstanceRolePolicy、 で始まる S3 バケットパスを作成する必要がありますsagemaker-。次のコマンドは、すべてのファイルを S3 バケットにアップロードするコマンドの例です。

    aws s3 cp --recursive ./lifecycle_files s3://sagemaker-hyperpod-lifecycle/src
  6. HyperPod クラスター作成リクエストを準備します。

    • オプション 1: を使用する場合は AWS CLI、「」の手順に従って、クラスター作成リクエストを JSON 形式 (create_cluster.json) で書き込みます新しいクラスターを作成する

    • オプション 2: SageMaker コンソール UI を使用する場合は、「」の手順に従って、 HyperPod コンソール UI でクラスター作成リクエストフォームに入力します SageMaker HyperPod クラスターを作成する

    この段階では、ステップ 1 と 2 で計画したのと同じ構造でインスタンスグループを作成してください。また、リクエストフォームでステップ 5 で S3 バケットを指定していることを確認してください。

  7. クラスター作成 request. HyperPod provisions リクエストに基づいてクラスターを送信し、 HyperPod クラスターインスタンスにresource_config.jsonファイルを作成し、ライフサイクルスクリプトを実行しているクラスターに Slurm を設定します。

次のセクションでは、 HyperPod クラスターの作成時に設定ファイルとライフサイクルスクリプトを適切に機能させる方法の詳細を説明します。

が提供する基本ライフサイクルスクリプトから開始する HyperPod

このセクションでは、トップダウンアプローチ HyperPod で で Slurm を設定する基本的なフローのすべてのコンポーネントについて説明します。CreateCluster API を実行するための HyperPod クラスター作成リクエストの準備から始まり、階層構造をライフサイクルスクリプトにまで掘り下げます。Awsome 分散トレーニング GitHub リポジトリ で提供されているサンプルライフサイクルスクリプトを使用します。次のコマンドを実行してリポジトリをクローンします。

git clone https://github.com/aws-samples/awsome-distributed-training/

で SageMaker HyperPod Slurm クラスターを設定するための基本ライフサイクルスクリプトは、 で入手できます1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config

cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config

次のフローチャートは、基本ライフサイクルスクリプトの設計方法の詳細な概要を示しています。以下の図と手順ガイドでは、API コール中の HyperPod CreateCluster動作について説明します。

図: HyperPod クラスター作成の詳細なフローチャートとライフサイクルスクリプトの構造。(1) 破線の矢印は、ボックスが「呼び出される」場所に送られ、設定ファイルとライフサイクルスクリプトの準備の流れを示します。準備provisioning_parameters.jsonとライフサイクルスクリプトから始まります。その後、これらは集合実行lifecycle_script.pyのために順番に でコーディングされます。また、lifecycle_script.pyスクリプトの実行は、 HyperPod インスタンスターミナルで実行されるon_create.shシェルスクリプトによって行われます。(2) 実線の矢印は、メイン HyperPod クラスター作成フローと、ボックスが「 を呼び出す」または「 に送信する」方法を示しています。 on_create.shは、 create_cluster.jsonまたはコンソール UI のクラスター作成リクエストフォームのいずれかで必要です。リクエストを送信すると、 はリクエストとライフサイクルスクリプトから指定された設定情報に基づいて CreateCluster API HyperPod を実行します。(3) 点線の矢印は、クラスターリソースのプロビジョニング中に HyperPod プラットフォームがクラスターインスタンスresource_config.jsonに を作成することを示します。 resource_config.jsonには、 HyperPod クラスター ARN、インスタンスタイプ、IP アドレスなどのクラスターリソース情報が含まれています。クラスターの作成時に resource_config.json ファイルを想定するようにライフサイクルスクリプトを準備する必要があることに注意してください。詳細については、以下の手順ガイドを参照してください。

以下の手順ガイドでは、 HyperPod クラスターの作成中に何が起こるか、および基本ライフサイクルスクリプトの設計方法について説明します。

  1. create_cluster.json – HyperPod クラスター作成リクエストを送信するには、JSON 形式のCreateClusterリクエストファイルを準備します。このベストプラクティスの例では、リクエストファイルの名前が であることを前提としていますcreate_cluster.json。インスタンスグループを使用して HyperPod クラスターをプロビジョニングcreate_cluster.jsonするには、 を書き込みます。ベストプラクティスは、クラスターで HyperPod設定する予定の Slurm ノードの数と同じ数のインスタンスグループを追加することです。セットアップする予定の Slurm ノードに割り当てるインスタンスグループに固有の名前を付けます。

    また、S3 バケットパスを指定して、設定ファイルとライフサイクルスクリプトのセット全体をCreateClusterリクエストフォームInstanceGroups.LifeCycleConfig.SourceS3Uriのフィールド名に保存し、エントリポイントシェルスクリプトのファイル名 ( という名前を想定on_create.sh) を に指定する必要がありますInstanceGroups.LifeCycleConfig.OnCreate

    注記

    HyperPod コンソール UI でクラスター送信の作成フォームを使用している場合、コンソールはユーザーに代わってCreateClusterリクエストの入力と送信を管理し、バックエンドで CreateCluster API を実行します。この場合、 を作成する必要はありませんcreate_cluster.json。代わりに、「クラスターの作成」送信フォームに正しいクラスター設定情報を指定してください。

  2. on_create.sh – インスタンスグループごとに、コマンドの実行、ソフトウェアパッケージのインストールスクリプトの実行on_create.sh、Slurm による HyperPod クラスター環境の設定を行うためのエントリポイントシェルスクリプト を指定する必要があります。準備する必要がある 2 つのことは、Slurm をセットアップ HyperPod するために がprovisioning_parameters.json必要とする と、ソフトウェアパッケージをインストールするための一連のライフサイクルスクリプトです。このスクリプトは、 のサンプルスクリプトに示すように、次のファイルを検索して実行するように記述する必要がありますon_create.sh

    注記

    ライフサイクルスクリプトのセット全体を、 で指定した S3 の場所にアップロードしてくださいcreate_cluster.json。また、 provisioning_parameters.jsonを同じ場所に配置する必要があります。

    1. provisioning_parameters.json – これは ですに Slurm ノードをプロビジョニングするための設定フォーム HyperPod。このon_create.shスクリプトは、この JSON ファイルを検索し、そのパスを識別するための環境変数を定義します。この JSON ファイルを使用して、Slurm が通信する Amazon FSx for Lustre などの Slurm ノードとストレージオプションを設定できます。ではprovisioning_parameters.json、 で指定した名前を使用して HyperPod クラスターインスタンスグループcreate_cluster.jsonを、設定方法に基づいて適切に Slurm ノードに割り当てます。

      次の図は、インスタンス HyperPod グループを Slurm ノードに割り当てるために 2 つの JSON 設定ファイル create_cluster.jsonと をprovisioning_parameters.json書き込む方法の例を示しています。この例では、コントローラー (管理) ノード、ログインノード (オプション)、コンピューティング (ワーカー) ノードの 3 つの Slurm ノードを設定するケースを想定しています。

      ヒント

      これら 2 つの JSON ファイルを検証しやすくするために、 HyperPod サービスチームは検証スクリプト を提供しますvalidate-config.py。詳細については、「で Slurm クラスターを作成する前に JSON 設定ファイルを検証する HyperPod」を参照してください。

      図: クラスター作成create_cluster.jsonと HyperPod Slurm 設定provisiong_params.jsonの を直接比較します。のインスタンスグループの数は、Slurm ノードとして設定するノードの数と一致するcreate_cluster.json必要があります。図の例では、3 つのインスタンスグループの HyperPod クラスターに 3 つの Slurm ノードが設定されます。それに応じてインスタンスグループ名を指定して、 HyperPod クラスターインスタンスグループを Slurm ノードに割り当てる必要があります。
    2. resource_config.json – クラスターの作成中に、lifecycle_script.pyスクリプトは からのresource_config.jsonファイルを期待するように書き込まれます HyperPod。このファイルには、インスタンスタイプや IP アドレスなど、クラスターに関する情報が含まれています。

      CreateCluster API を実行すると、 は ファイル/opt/ml/config/resource_config.jsonに基づいて にリソース設定create_cluster.jsonファイル HyperPod を作成します。ファイルパスは、 という名前の環境変数に保存されますSAGEMAKER_RESOURCE_CONFIG_PATH

      重要

      resource_config.json ファイルは HyperPod プラットフォームによって自動生成されるため、作成する必要はありません。次のコードは、create_cluster.json前のステップで に基づいてクラスターの作成からresource_config.json作成される の例を示し、バックエンドで何が起こり、自動生成された がどのようにresource_config.json見えるかを理解するのに役立ちます。

      { "ClusterConfig": { "ClusterArn": "arn:aws:sagemaker:us-west-2:111122223333:cluster/abcde01234yz", "ClusterName": "your-hyperpod-cluster" }, "InstanceGroups": [ { "Name": "controller-machine", "InstanceType": "ml.c5.xlarge", "Instances": [ { "InstanceName": "controller-machine-1", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" } ] }, { "Name": "login-group", "InstanceType": "ml.m5.xlarge", "Instances": [ { "InstanceName": "login-group-1", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" } ] }, { "Name": "compute-nodes", "InstanceType": "ml.trn1.32xlarge", "Instances": [ { "InstanceName": "compute-nodes-1", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" }, { "InstanceName": "compute-nodes-2", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" }, { "InstanceName": "compute-nodes-3", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" }, { "InstanceName": "compute-nodes-4", "AgentIpAddress": "111.222.333.444", "CustomerIpAddress": "111.222.333.444", "InstanceId": "i-12345abcedfg67890" } ] } ] }
    3. lifecycle_script.py – これは、プロビジョニング中に HyperPod クラスターで Slurm をセットアップするライフサイクルスクリプトをまとめて実行する主要な Python スクリプトです。このスクリプトは、 で指定または識別されるパスprovisioning_parameters.jsonresource_config.jsonとの間で読み取りを行いon_create.sh、関連情報を各ライフサイクルスクリプトに渡してから、ライフサイクルスクリプトを順番に実行します。

      ライフサイクルスクリプトは、Slurm のセットアップ、ユーザーの作成、Conda や Docker のインストールなど、クラスターの作成時にソフトウェアパッケージのインストールや、必要な設定やカスタム設定のカスタマイズを柔軟に行えるスクリプトのセットです。サンプルlifecycle_script.pyスクリプトは、Slurm デーモンの起動 (start_slurm.sh)、Amazon FSx for Lustre のマウント (mount_fsx.sh)、MariaDB アカウンティング () と RDS アカウンティング (setup_mariadb_accounting.sh) の設定など、リポジトリで他の基本ライフサイクルスクリプトを実行する準備ができていますsetup_rds_accounting.sh。また、スクリプトを追加し、同じディレクトリにパッケージ化し、コード行を に追加lifecycle_script.pyして、 がスクリプト HyperPod を実行できるようにすることもできます。基本ライフサイクルスクリプトの詳細については、Awsome Distributed Training リポジトリの「3.1 Lifecycle scripts」も参照してください。 GitHub

      デフォルトのセットアップに加えて、 utilsフォルダで以下のソフトウェアをインストールするためのスクリプトも追加されています。lifecycle_script.py ファイルはすでにインストールスクリプトを実行するためのコード行を含める準備ができているため、以下の項目を参照して行を検索し、コメントを解除してアクティブ化します。

      1. 次のコード行は、DockerEnroot 、および Pyxis のインストール用です。これらのパッケージは、Slurm クラスターで Docker コンテナを実行するために必要です。

        このインストールステップを有効にするには、 config.py ファイルTrueenable_docker_enroot_pyxisパラメータを に設定します。

        # Install Docker/Enroot/Pyxis if Config.enable_docker_enroot_pyxis: ExecuteBashScript("./utils/install_docker.sh").run() ExecuteBashScript("./utils/install_enroot_pyxis.sh").run(node_type)
      2. HyperPod クラスターを Amazon Managed Service for Prometheus および Amazon Managed Grafana と統合して、クラスターとクラスターノードに関するメトリクスを HyperPod Amazon Managed Grafana ダッシュボードにエクスポートできます。メトリクスをエクスポートし、Amazon Managed Grafana の Slurm ダッシュボードNVIDIA DCGM Exporter ダッシュボードEFA Metrics ダッシュボードを使用するには、Prometheus の Slurm ExporterNVIDIA DCGM Exporter、および EFA ノードエクスポーター をインストールする必要があります。Amazon Managed Grafana ワークスペースでのエクスポーターパッケージのインストールと Grafana ダッシュボードの使用の詳細については、「」を参照してください SageMaker HyperPod クラスターリソースのモニタリング

        このインストールステップを有効にするには、 config.py ファイルTrueenable_observabilityパラメータを に設定します。

        # Install metric exporting software and Prometheus for observability if Config.enable_observability: if node_type == SlurmNodeType.COMPUTE_NODE: ExecuteBashScript("./utils/install_docker.sh").run() ExecuteBashScript("./utils/install_dcgm_exporter.sh").run() ExecuteBashScript("./utils/install_efa_node_exporter.sh").run() if node_type == SlurmNodeType.HEAD_NODE: wait_for_scontrol() ExecuteBashScript("./utils/install_docker.sh").run() ExecuteBashScript("./utils/install_slurm_exporter.sh").run() ExecuteBashScript("./utils/install_prometheus.sh").run()
  3. ステップ 2 のすべての設定ファイルとセットアップスクリプトを、ステップ 1 のCreateClusterリクエストで指定した S3 バケットにアップロードしてください。 例えば、 に次のcreate_cluster.jsonものがあるとします。

    "LifeCycleConfig": { "SourceS3URI": "s3://sagemaker-hyperpod-lifecycle/src", "OnCreate": "on_create.sh" }

    次に、 には、on_create.shlifecycle_script.pyprovisioning_parameters.json、、およびその他のすべてのセットアップスクリプトが含まれている"s3://sagemaker-hyperpod-lifecycle/src"必要があります。次のようにローカルフォルダにファイルを準備したとします。

    └── lifecycle_files // your local folder ├── provisioning_parameters.json ├── on_create.sh ├── lifecycle_script.py └── ... // more setup scrips to be fed into lifecycle_script.py

    ファイルをアップロードするには、次のように S3 コマンドを使用します。

    aws s3 cp --recursive ./lifecycle_scripts s3://sagemaker-hyperpod-lifecycle/src

Slurm 設定ファイルで HyperPod 管理される特定の設定

で Slurm クラスターを作成すると HyperPod、 HyperPod エージェントは で slurm.confおよび gres.conf ファイルを設定し、クラスター作成リクエストとライフサイクルスクリプトに基づいて Slurm HyperPod クラスター/opt/slurm/etc/を管理します。次のリストは、 HyperPod エージェントが処理および上書きする特定のパラメータを示しています。

重要

によって管理されるこれらのパラメータは変更しないことを強くお勧めします HyperPod。

  • HyperPod ではslurm.conf、、、ClusterName、、SlurmctldHostおよび の基本的なパラメータを設定しますPartitionNameNodeName

    また、 自動再開機能を有効にするには、 に パラメータTaskPluginSchedulerParametersパラメータが次のように設定 HyperPod されている必要があります。 HyperPod エージェントは、デフォルトで必要な値を使用してこれら 2 つのパラメータを設定します。

    TaskPlugin=task/none SchedulerParameters=permit_job_expansion
  • HyperPod ではgres.conf、GPU ノードNodeNameを管理します。

Amazon FSx for Lustre を HyperPod クラスターにマウントする

Amazon FSx for Lustre 共有ファイルシステムを HyperPod クラスターにマウントするには、以下を設定します。

  1. Amazon VPC を使用します。

    1. HyperPod クラスターインスタンスが VPC 内で通信するには、 を の IAM ロール(オプション) Amazon Virtual Private Cloud SageMaker HyperPod で を使用するための追加のアクセス許可にアタッチしてください SageMaker HyperPod。

    2. create_cluster.json、次の VPC 情報を含めます。

      "VpcConfig": { "SecurityGroupIds": [ "string" ], "Subnets": [ "string" ] }

      Amazon VPC のセットアップに関するその他のヒントについては、「」を参照してください(オプション) Amazon VPC SageMaker HyperPod で をセットアップする

  2. Amazon FSx for Lustre で Slurm の設定を完了するには、 が提供する基本ライフサイクルスクリプトから開始する HyperPodセクションの図provisioning_parameters.jsonに示すように、 で Amazon FSx DNS 名と Amazon FSx マウント名を指定します。Amazon FSx の情報は、アカウントの Amazon FSx for Lustre コンソールから、または次の AWS CLI コマンド を実行して確認できますaws fsx describe-file-systems

    "fsx_dns_name": "fs-12345678a90b01cde.fsx.us-west-2.amazonaws.com", "fsx_mountname": "1abcdefg"

で Slurm クラスターを作成する前に JSON 設定ファイルを検証する HyperPod

クラスター作成リクエストを送信する前に JSON 設定ファイルを検証するには、設定検証スクリプト を使用しますvalidate-config.py。このスクリプトは、 HyperPod クラスター設定 JSON ファイルと Slurm 設定 JSON ファイルを解析して比較し、2 つのファイル間、および Amazon EC2、Amazon VPC、Amazon FSx リソース間でリソースの設定ミスがあるかどうかを特定します。例えば、 が提供する基本ライフサイクルスクリプトから開始する HyperPodセクションの create_cluster.jsonおよび provisioning_parameters.json ファイルを検証するには、次のように検証スクリプトを実行します。

python3 validate-config.py --cluster-config create_cluster.json --provisioning-parameters provisioning_parameters.json

以下は、検証が成功した場合の出力例です。

✔️ Validated instance group name worker-group-1 is correct ... ✔️ Validated subnet subnet-012345abcdef67890 ... ✔️ Validated security group sg-012345abcdef67890 ingress rules ... ✔️ Validated security group sg-012345abcdef67890 egress rules ... ✔️ Validated FSx Lustre DNS name fs-012345abcdef67890.fsx.us-east-1.amazonaws.com ✔️ Validated FSx Lustre mount name abcdefgh ✅ Cluster Validation succeeded

で Slurm クラスターで本番ワークロードを実行する前にランタイムを検証する HyperPod

で Slurm クラスターで本番ワークロードを実行する前にランタイムを確認するには HyperPod、ランタイム検証スクリプト を使用しますhyperpod-precheck.py。このスクリプトは、Slurm クラスターに Docker を実行するためのすべてのパッケージがインストールされているかどうか、クラスターに適切にマウントされた FSx for Lustre ファイルシステムおよびファイルシステムを共有するユーザーディレクトリがあるかどうか、および Slurm デーモンがすべてのコンピューティングノードで実行されているかどうかを確認します。

複数のノードでスクリプトを一度に実行するには、次のコマンド例srunに示すように、8 ノードの Slurm クラスターでスクリプトを実行する を使用します。

# The following command runs on 8 nodes srun -N 8 python3 hyperpod-precheck.py
注記

スクリプトが提供するランタイム検証関数や、検証に合格しない問題を解決するためのガイドラインなど、検証スクリプトの詳細については、「Awsome Distributed Training GitHub リポジトリ」の「ワークロードを実行する前にランタイム検証」を参照してください。

クラスターノードでインタラクティブにライフサイクルスクリプトを開発する

このセクションでは、 HyperPod クラスターを繰り返し作成および削除することなく、ライフサイクルスクリプトをインタラクティブに開発する方法について説明します。

  1. 基本ライフサイクルスクリプトを使用して HyperPod クラスターを作成します。

  2. クラスターノードにログインします。

  3. ノードでスクリプト (configure_xyz.sh) を編集して繰り返し実行することで、スクリプト () を開発します。

    1. HyperPod はライフサイクルスクリプトをルートユーザーとして実行するため、開発中に をルートユーザーconfigure_xyz.shとして実行して、スクリプトが で実行されているときに同じ条件でテストされていることを確認することをお勧めします HyperPod。

  4. 次のようなコード行lifecycle_script.pyを追加して、スクリプトを に統合します。

    ExecuteBashScript("./utils/configure_xyz.sh").run()
  5. 基本ライフサイクルスクリプトのアップロードに最初に使用した S3 バケットに、更新されたライフサイクルスクリプトをアップロードします。

  6. 新しい HyperPod クラスターlifecycle_script.pyを作成して、 の統合バージョンをテストします。

新規または更新されたライフサイクルスクリプトでクラスターを更新する

HyperPod ソフトウェアを更新するには 3 つの方法があります。

  • HyperPod ソフトウェアにパッチを適用するための UpdateClusterSoftware API は、インスタンスグループ全体でライフサイクルスクリプトを再実行します。

  • UpdateCluster API は、新しいインスタンスグループのライフサイクルスクリプトのみを実行します。

  • ライフサイクルスクリプトをインスタンスで HyperPod直接実行することもできます。

考慮事項

を使用する場合は、次の点を考慮してください SageMaker HyperPod。

  • HyperPod はクラスターの各インスタンスSageMaker HyperPod DLAMIで実行され、AMI には、クラスターと HyperPod機能間の互換性に準拠するソフトウェアパッケージがプリインストールされています。プリインストールされたパッケージのいずれかを再インストールする場合、互換性のあるパッケージをインストールする責任があり、一部の HyperPod 機能が期待どおりに動作しない場合があることに注意してください。