

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Accélérez le démarrage des conteneurs avec SOCI
<a name="soci-indexing"></a>

L'indexation SOCI (Seekable Open Container Initiative) permet le chargement différé d'images de conteneurs personnalisées dans [Amazon SageMaker Studio](studio-updated.md) [Amazon SageMaker ](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/what-is-sagemaker-unified-studio.html) Unified Studio. SOCI réduit considérablement les temps de démarrage d'environ 30 à 70 % pour vos conteneurs personnalisés[Apporter votre propre image (BYOI)](studio-updated-byoi.md). L'amélioration de la latence varie en fonction de la taille de l'image, de la disponibilité de l'instance d'hébergement et des autres dépendances de l'application. SOCI crée un index qui permet aux conteneurs de se lancer avec uniquement les composants nécessaires, en récupérant des fichiers supplémentaires à la demande selon les besoins.

SOCI résout le problème des temps de démarrage lents des conteneurs, qui interrompent les flux de travail de développement par apprentissage automatique itératif (ML), pour les images personnalisées. À mesure que les charges de travail ML deviennent de plus en plus complexes, les images de conteneurs sont devenues plus volumineuses, ce qui entraîne des retards de démarrage qui entravent les cycles de développement.

**Topics**
+ [Principaux avantages](#soci-indexing-key-benefits)
+ [Comment fonctionne l'indexation SOCI](#soci-indexing-how-works)
+ [Composants d'architecture](#soci-indexing-architecture-components)
+ [Outils pris en charge](#soci-indexing-supported-tools)
+ [Autorisations pour l'indexation SOCI](soci-indexing-setup.md)
+ [Création d'index SOCI avec nerdctl et exemple de CLI SOCI](soci-indexing-example-create-indexes.md)
+ [Intégrer des images indexées par SOCIAL avec un exemple de Studio](soci-indexing-example-integrate-studio.md)

## Principaux avantages
<a name="soci-indexing-key-benefits"></a>
+ **Cycles d'itération plus rapides** : réduisez le démarrage du conteneur, en fonction du type d'image et d'instance
+ **Optimisation universelle** : étendre les avantages en termes de performances à tous les conteneurs BYOI personnalisés de Studio

## Comment fonctionne l'indexation SOCI
<a name="soci-indexing-how-works"></a>

SOCI crée un index de métadonnées spécialisé qui cartographie la structure de fichier interne de votre image de conteneur. Cet index permet d'accéder à des fichiers individuels sans télécharger l'image complète. L'index SOCI est stocké sous la forme d'un artefact conforme à l'OCI (Open Container Initiative) dans [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) et lié à l'image de votre conteneur d'origine, afin de préserver les résumés des images et la validité des signatures.

Lorsque vous lancez un conteneur dans Studio, le système utilise l'index SOCI pour identifier et télécharger uniquement les fichiers essentiels nécessaires au démarrage. Les composants supplémentaires sont récupérés en parallèle selon les besoins de votre application.

## Composants d'architecture
<a name="soci-indexing-architecture-components"></a>
+ **Image du conteneur d'origine** : votre conteneur de base stocké sur Amazon ECR
+ **Artefact d'index SOCI** : métadonnées mappant la structure du fichier de votre image
+ **Manifeste d'index d'image OCI** : associe votre image d'origine à votre index SOCI
+ **Runtime du conteneur Finch** : permet l'intégration du chargement différé avec Studio

## Outils pris en charge
<a name="soci-indexing-supported-tools"></a>


| Outil | Integration | 
| --- | --- | 
| nerdctl | Nécessite une configuration en containerd | 
| CLI Finch | Support SOCI natif | 
| CLI Docker\$1 SOCI | Outillage supplémentaire requis | 

**Topics**
+ [Principaux avantages](#soci-indexing-key-benefits)
+ [Comment fonctionne l'indexation SOCI](#soci-indexing-how-works)
+ [Composants d'architecture](#soci-indexing-architecture-components)
+ [Outils pris en charge](#soci-indexing-supported-tools)
+ [Autorisations pour l'indexation SOCI](soci-indexing-setup.md)
+ [Création d'index SOCI avec nerdctl et exemple de CLI SOCI](soci-indexing-example-create-indexes.md)
+ [Intégrer des images indexées par SOCIAL avec un exemple de Studio](soci-indexing-example-integrate-studio.md)

# Autorisations pour l'indexation SOCI
<a name="soci-indexing-setup"></a>

[Créez des index SOCI pour vos images de conteneur et stockez-les dans Amazon ECR avant d'utiliser l'indexation SOCI avec [Amazon SageMaker Studio](studio-updated.md) Amazon Unified Studio. SageMaker ](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/what-is-sagemaker-unified-studio.html)

**Topics**
+ [Conditions préalables](#soci-indexing-setup-prerequisites)
+ [Autorisations IAM requises](#soci-indexing-setup-iam-permissions)

## Conditions préalables
<a name="soci-indexing-setup-prerequisites"></a>
+ Compte AWS avec un rôle [Gestion des identités et des accès AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)(IAM) avec des autorisations de gestion
  + [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
  + [Amazon SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html)
+ [Référentiels privés Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) pour stocker les images de vos conteneurs
+ [AWS CLI v2.0\$1](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) configuré avec les informations d'identification appropriées
+ Les outils de conteneur suivants :
  + Nécessaire : [soci-snapshotter](https://github.com/awslabs/soci-snapshotter)
  + Options :
    + [nerdctl](https://github.com/containerd/nerdctl)
    + [pinson](https://github.com/runfinch/finch)

## Autorisations IAM requises
<a name="soci-indexing-setup-iam-permissions"></a>

Votre rôle IAM a besoin d'autorisations pour :
+ Créez et gérez des ressources d' SageMaker IA (domaines, images, configurations d'applications).
  + Vous pouvez utiliser la politique [SageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html) AWS gérée. Pour plus de détails sur les autorisations, voir[AWS politique gérée : AmazonSageMakerFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSageMakerFullAccess).
+ [Autorisations IAM pour transférer une image vers un référentiel privé Amazon ECR.](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-push-iam.html)

# Création d'index SOCI avec nerdctl et exemple de CLI SOCI
<a name="soci-indexing-example-create-indexes"></a>

La page suivante fournit un exemple de création d'index SOCI avec nerdctl et SOCI CLI.

**Exemple de création d'index SOCI**

1. Définissez d'abord vos variables pour les AWS CLI commandes qui suivent. Voici un exemple de configuration de vos variables.

   ```
   ACCOUNT_ID="111122223333"
   REGION="us-east-1"
   REPOSITORY_NAME="repository-name"
   ORIGINAL_IMAGE_TAG="original-image-tag"
   SOCI_IMAGE_TAG="soci-indexed-image-tag"
   ```

   Définitions des variables :
   + `ACCOUNT_ID`est votre Compte AWS identifiant
   + `REGION`est celui Région AWS de votre registre privé Amazon ECR
   + `REPOSITORY_NAME`est le nom de votre registre privé Amazon ECR
   + `ORIGINAL_IMAGE_TAG`est le tag de votre image d'origine
   + `SOCI_IMAGE_TAG`est le tag de votre image indexée sur les réseaux sociaux

1. Installez les outils nécessaires :

   ```
   # Install SOCI CLI, containerd, and nerdctl
   sudo yum install soci-snapshotter
   sudo yum install containerd jq  
   sudo systemctl start soci-snapshotter
   sudo systemctl restart containerd
   sudo yum install nerdctl
   ```

1. Définissez vos variables de registre :

   ```
   REGISTRY_USER=AWS
   REGISTRY="$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com"
   ```

1. Exportez votre région et authentifiez-vous auprès d'Amazon ECR :

   ```
   export AWS_REGION=$REGION
   REGISTRY_PASSWORD=$(/usr/local/bin/aws ecr get-login-password --region $AWS_REGION)
   echo $REGISTRY_PASSWORD | sudo nerdctl login -u $REGISTRY_USER --password-stdin $REGISTRY
   ```

1. Extrayez l'image de votre conteneur d'origine :

   ```
   sudo nerdctl pull $REGISTRY/$REPOSITORY_NAME:$ORIGINAL_IMAGE_TAG
   ```

1. Créez l'index SOCI :

   ```
   sudo nerdctl image convert --soci $REGISTRY/$REPOSITORY_NAME:$ORIGINAL_IMAGE_TAG $REGISTRY/$REPOSITORY_NAME:$SOCI_IMAGE_TAG
   ```

1. Appuyez sur l'image indexée par SOCIO :

   ```
   sudo nerdctl push --platform linux/amd64 $REGISTRY/$REPOSITORY_NAME:$SOCI_IMAGE_TAG
   ```

Ce processus crée deux artefacts pour l'image du conteneur d'origine dans votre référentiel ECR :
+ Index SOCI - Métadonnées permettant le chargement différé
+ Manifeste d'index d'image - Manifeste conforme à l'OCI-O

# Intégrer des images indexées par SOCIAL avec un exemple de Studio
<a name="soci-indexing-example-integrate-studio"></a>

Vous devez référencer la balise d'image indexée par SOCIO pour utiliser les images indexées par SOCIO dans Studio, plutôt que la balise d'image de conteneur d'origine. Utilisez la balise que vous avez spécifiée lors du processus de conversion SOCI (par exemple, `SOCI_IMAGE_TAG` dans le[Création d'index SOCI avec nerdctl et exemple de CLI SOCI](soci-indexing-example-create-indexes.md)).

**Exemple d'intégration d'images indexées sur les réseaux sociaux**

1. Définissez d'abord vos variables pour les AWS CLI commandes qui suivent. Voici un exemple de configuration de vos variables.

   ```
   ACCOUNT_ID="111122223333"
   REGION="us-east-1"
   IMAGE_NAME="sagemaker-image-name"
   IMAGE_CONFIG_NAME="sagemaker-image-config-name"
   ROLE_ARN="your-role-arn"
   DOMAIN_ID="domain-id"
   SOCI_IMAGE_TAG="soci-indexed-image-tag"
   ```

   Définitions des variables :
   + `ACCOUNT_ID`est votre Compte AWS identifiant
   + `REGION`est celui Région AWS de votre registre privé Amazon ECR
   + `IMAGE_NAME`est le nom de votre SageMaker image
   + `IMAGE_CONFIG_NAME`est le nom de votre configuration SageMaker d'image
   + `ROLE_ARN`est l'ARN de votre rôle d'exécution avec les autorisations répertoriées dans Autorisations [IAM requises](soci-indexing-setup.md#soci-indexing-setup-iam-permissions)
   + `DOMAIN_ID`est l'[ID du domaine](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-view.html)
**Note**  
Si vous joignez l'image à un projet SageMaker Unified Studio et que vous avez besoin de précisions sur le domaine à utiliser, consultez [Afficher les détails du domaine SageMaker AI associé à votre projet](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/view-project-details.html#view-project-details-smai-domain).
   + `SOCI_IMAGE_TAG`est le tag de votre image indexée sur les réseaux sociaux

1. Exportez votre région :

   ```
   export AWS_REGION=$REGION
   ```

1. Créez une SageMaker image :

   ```
   aws sagemaker create-image \
       --image-name "$IMAGE_NAME" \
       --role-arn "$ROLE_ARN"
   ```

1. Créez une version d' SageMaker image à l'aide de l'URI de votre index SOCI :

   ```
   IMAGE_INDEX_URI="$ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com/$IMAGE_NAME:$SOCI_IMAGE_TAG"
   
   aws sagemaker create-image-version \
       --image-name "$IMAGE_NAME" \
       --base-image "$IMAGE_INDEX_URI"
   ```

1. Créez une configuration d'image d'application et mettez à jour votre domaine Amazon SageMaker AI pour inclure l'image personnalisée pour votre application. Vous pouvez le faire pour l'éditeur de code, basé sur Code-OSS, Visual Studio Code - Open Source (éditeur de code) et JupyterLab les applications. Choisissez l'option d'application ci-dessous pour afficher les étapes.

------
#### [ Code Editor ]

   Créez une configuration d'image d'application pour l'éditeur de code :

   ```
   aws sagemaker create-app-image-config \
       --app-image-config-name "$IMAGE_CONFIG_NAME" \
       --code-editor-app-image-config '{ "FileSystemConfig": { "MountPath": "/home/sagemaker-user", "DefaultUid": 1000, "DefaultGid": 100 } }'
   ```

   Mettez à jour votre domaine Amazon SageMaker AI pour inclure l'image personnalisée pour l'éditeur de code :

   ```
   aws sagemaker update-domain \
       --domain-id "$DOMAIN_ID" \
       --default-user-settings '{
           "CodeEditorAppSettings": {
           "CustomImages": [{
               "ImageName": "$IMAGE_NAME", 
               "AppImageConfigName": "$IMAGE_CONFIG_NAME"
           }]
       }
   }'
   ```

------
#### [ JupyterLab ]

   Créez une configuration d'image d'application pour JupyterLab :

   ```
   aws sagemaker create-app-image-config \
       --app-image-config-name "$IMAGE_CONFIG_NAME" \
       --jupyter-lab-app-image-config '{ "FileSystemConfig": { "MountPath": "/home/sagemaker-user", "DefaultUid": 1000, "DefaultGid": 100 } }'
   ```

   Mettez à jour votre domaine Amazon SageMaker AI pour inclure l'image personnalisée pour JupyterLab :

   ```
   aws sagemaker update-domain \
       --domain-id "$DOMAIN_ID" \
       --default-user-settings '{
           "JupyterLabAppSettings": {
           "CustomImages": [{
               "ImageName": "$IMAGE_NAME", 
               "AppImageConfigName": "$IMAGE_CONFIG_NAME"
           }]
       }
   }'
   ```

------

1. Après avoir mis à jour votre domaine pour inclure votre image personnalisée, vous pouvez créer une application dans Studio à l'aide de votre image personnalisée. Lorsque vous vous [Lancement d’une image personnalisée dans Studio](studio-updated-byoi-how-to-launch.md) assurez d'utiliser votre image personnalisée.