

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Acelere a inicialização de contêineres com o SOCI
<a name="soci-indexing"></a>

[A indexação SOCI (Seekable Open Container Initiative) permite o carregamento lento de imagens personalizadas de contêineres no Amazon Unified Studio. [SageMaker Estúdio Amazon](studio-updated.md) SageMaker ](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/what-is-sagemaker-unified-studio.html) O SOCI reduz significativamente os tempos de inicialização em aproximadamente 30 a 70% para seus contêineres personalizados[Traga sua própria imagem (BYOI)](studio-updated-byoi.md). A melhoria da latência varia de acordo com o tamanho da imagem, a disponibilidade da instância de hospedagem e outras dependências do aplicativo. O SOCI cria um índice que permite que os contêineres sejam iniciados somente com os componentes necessários, obtendo arquivos adicionais sob demanda, conforme necessário.

O SOCI aborda tempos lentos de inicialização de contêineres, que interrompem os fluxos de trabalho iterativos de desenvolvimento de aprendizado de máquina (ML) para imagens personalizadas. À medida que as cargas de trabalho de ML se tornam mais complexas, as imagens de contêiner aumentam, criando atrasos na inicialização que prejudicam os ciclos de desenvolvimento.

**Topics**
+ [Benefícios principais](#soci-indexing-key-benefits)
+ [Como funciona a indexação SOCI](#soci-indexing-how-works)
+ [Componentes da arquitetura](#soci-indexing-architecture-components)
+ [Ferramentas compatíveis](#soci-indexing-supported-tools)
+ [Permissões para indexação SOCI](soci-indexing-setup.md)
+ [Crie índices SOCI com nerdctl e exemplo de SOCI CLI](soci-indexing-example-create-indexes.md)
+ [Integre imagens indexadas pelo SOC com o exemplo do Studio](soci-indexing-example-integrate-studio.md)

## Benefícios principais
<a name="soci-indexing-key-benefits"></a>
+ **Ciclos de iteração mais rápidos**: reduza a inicialização do contêiner, dependendo dos tipos de imagem e instância
+ **Otimização universal**: estenda os benefícios de desempenho a todos os contêineres BYOI personalizados no Studio

## Como funciona a indexação SOCI
<a name="soci-indexing-how-works"></a>

O SOCI cria um índice de metadados especializado que mapeia a estrutura interna de arquivos da imagem do contêiner. Esse índice permite o acesso a arquivos individuais sem baixar a imagem inteira. O índice SOCI é armazenado como um artefato compatível com OCI (Open Container Initiative) no [Amazon](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html) ECR e vinculado à imagem original do contêiner, preservando os resumos da imagem e a validade da assinatura.

Quando você inicia um contêiner no Studio, o sistema usa o índice SOCI para identificar e baixar somente os arquivos essenciais necessários para a inicialização. Componentes adicionais são obtidos paralelamente conforme seu aplicativo os exige.

## Componentes da arquitetura
<a name="soci-indexing-architecture-components"></a>
+ **Imagem original do contêiner**: Seu contêiner básico armazenado no Amazon ECR
+ **Artefato de índice SOCI**: metadados mapeando a estrutura de arquivos da sua imagem
+ **Manifesto do OCI Image Index**: vincula sua imagem original e o índice SOCI
+ Tempo de **execução do contêiner Finch**: permite a integração de carregamento lento com o Studio

## Ferramentas compatíveis
<a name="soci-indexing-supported-tools"></a>


| Ferramenta | Integração | 
| --- | --- | 
| nerdctl | Requer configuração de containerd | 
| CLI do Finch | Suporte nativo ao SOCI | 
| Docker \$1 SOCI CLI | Ferramentas adicionais necessárias | 

**Topics**
+ [Benefícios principais](#soci-indexing-key-benefits)
+ [Como funciona a indexação SOCI](#soci-indexing-how-works)
+ [Componentes da arquitetura](#soci-indexing-architecture-components)
+ [Ferramentas compatíveis](#soci-indexing-supported-tools)
+ [Permissões para indexação SOCI](soci-indexing-setup.md)
+ [Crie índices SOCI com nerdctl e exemplo de SOCI CLI](soci-indexing-example-create-indexes.md)
+ [Integre imagens indexadas pelo SOC com o exemplo do Studio](soci-indexing-example-integrate-studio.md)

# Permissões para indexação SOCI
<a name="soci-indexing-setup"></a>

[Crie índices SOCI para suas imagens de contêiner e armazene-os no Amazon ECR antes de usar a indexação SOCI com [SageMaker Estúdio Amazon](studio-updated.md) o Amazon Unified Studio. SageMaker ](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/what-is-sagemaker-unified-studio.html)

**Topics**
+ [Pré-requisitos](#soci-indexing-setup-prerequisites)
+ [Permissões obrigatórias do IAM](#soci-indexing-setup-iam-permissions)

## Pré-requisitos
<a name="soci-indexing-setup-prerequisites"></a>
+ Conta da AWS com uma função [AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html)(IAM) com permissões para gerenciar
  + [Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)
  + [ SageMaker IA da Amazon](https://docs.aws.amazon.com/sagemaker/latest/dg/gs.html)
+ [Repositórios privados do Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Repositories.html) para armazenar suas imagens de contêineres
+ [AWS CLI v2.0\$1](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) configurado com as credenciais apropriadas
+ As seguintes ferramentas de contêiner:
  + Obrigatório: [soci-snapshotter](https://github.com/awslabs/soci-snapshotter)
  + Opções:
    + [nerdctl](https://github.com/containerd/nerdctl)
    + [tentilhão](https://github.com/runfinch/finch)

## Permissões obrigatórias do IAM
<a name="soci-indexing-setup-iam-permissions"></a>

Sua função do IAM precisa de permissões para:
+ Crie e gerencie recursos de SageMaker IA (domínios, imagens, configurações de aplicativos).
  + Você pode usar a política [SageMakerFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonSageMakerFullAccess.html) AWS gerenciada. Para obter mais detalhes sobre a permissão, consulte[AWS política gerenciada: AmazonSageMakerFullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonSageMakerFullAccess).
+ [Permissões do IAM para enviar uma imagem para um repositório privado do Amazon ECR.](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-push-iam.html)

# Crie índices SOCI com nerdctl e exemplo de SOCI CLI
<a name="soci-indexing-example-create-indexes"></a>

A página a seguir fornece um exemplo de como criar índices SOCI com nerdctl e SOCI CLI.

**Exemplo de criação de índices SOCI**

1. Primeiro, defina suas variáveis para os AWS CLI comandos a seguir. Veja a seguir um exemplo de como configurar suas variáveis.

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

   Definições de variáveis:
   + `ACCOUNT_ID`é o seu Conta da AWS ID
   + `REGION`é o Região da AWS do seu registro privado do Amazon ECR
   + `REPOSITORY_NAME`é o nome do seu registro privado do Amazon ECR
   + `ORIGINAL_IMAGE_TAG`é a etiqueta da sua imagem original
   + `SOCI_IMAGE_TAG`é a tag da sua imagem indexada pelo SOC

1. Instale as ferramentas necessárias:

   ```
   # 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. Defina suas variáveis de registro:

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

1. Exporte sua região e autentique-se no 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. Puxe a imagem original do contêiner:

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

1. Crie o índice SOCI:

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

1. Envie a imagem indexada pelo Soci-Index:

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

Esse processo cria dois artefatos para a imagem original do contêiner em seu repositório ECR:
+ Índice SOCI - Metadados que permitem carregamento lento
+ Manifesto do Image Index - Manifesto compatível com OCI

# Integre imagens indexadas pelo SOC com o exemplo do Studio
<a name="soci-indexing-example-integrate-studio"></a>

Você deve referenciar a tag de imagem indexada por SOC para usar imagens indexadas por SOC no Studio, em vez da tag de imagem do contêiner original. Use a tag que você especificou durante o processo de conversão do SOCI (por exemplo, `SOCI_IMAGE_TAG` no[Crie índices SOCI com nerdctl e exemplo de SOCI CLI](soci-indexing-example-create-indexes.md)).

**Exemplo de integração de imagens indexadas pelo SOC**

1. Primeiro, defina suas variáveis para os AWS CLI comandos a seguir. Veja a seguir um exemplo de como configurar suas variáveis.

   ```
   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"
   ```

   Definições de variáveis:
   + `ACCOUNT_ID`é o seu Conta da AWS ID
   + `REGION`é o Região da AWS do seu registro privado do Amazon ECR
   + `IMAGE_NAME`é o nome da sua SageMaker imagem
   + `IMAGE_CONFIG_NAME`é o nome da configuração da sua SageMaker imagem
   + `ROLE_ARN`é o ARN da sua função de execução com as permissões listadas em Permissões [obrigatórias](soci-indexing-setup.md#soci-indexing-setup-iam-permissions) do IAM
   + `DOMAIN_ID`é o [ID do domínio](https://docs.aws.amazon.com/sagemaker/latest/dg/domain-view.html)
**nota**  
Se você estiver anexando a imagem a um projeto do SageMaker Unified Studio e precisar de esclarecimentos sobre qual domínio usar, consulte [Exibir os detalhes do domínio SageMaker AI associados ao seu](https://docs.aws.amazon.com/sagemaker-unified-studio/latest/userguide/view-project-details.html#view-project-details-smai-domain) projeto.
   + `SOCI_IMAGE_TAG`é a tag da sua imagem indexada pelo SOC

1. Exporte sua região:

   ```
   export AWS_REGION=$REGION
   ```

1. Crie uma SageMaker imagem:

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

1. Crie uma versão de SageMaker imagem usando seu URI de índice 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. Crie uma configuração de imagem do aplicativo e atualize seu domínio do Amazon SageMaker AI para incluir a imagem personalizada do seu aplicativo. Você pode fazer isso para o Code Editor, com base em Code-OSS, Visual Studio Code - Open Source (Code Editor) e aplicativos. JupyterLab Escolha a opção de aplicativo abaixo para ver as etapas.

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

   Crie uma configuração de imagem do aplicativo para o Code Editor:

   ```
   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 } }'
   ```

   Atualize seu domínio Amazon SageMaker AI para incluir a imagem personalizada para o Code Editor:

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

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

   Crie uma configuração de imagem do aplicativo para 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 } }'
   ```

   Atualize seu domínio Amazon SageMaker AI para incluir a imagem personalizada para JupyterLab:

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

------

1. Depois de atualizar seu domínio para incluir sua imagem personalizada, você pode criar um aplicativo no Studio usando sua imagem personalizada. Quando você [Iniciar uma imagem personalizada no Studio](studio-updated-byoi-how-to-launch.md) garante que está usando sua imagem personalizada.