

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á.

# Obtenha recomendações para modelos com adaptadores LoRa
<a name="generative-ai-inference-recommendations-adapters"></a>

Low-Rank A adaptação (LoRa) é uma técnica de ajuste fino com eficiência de parâmetros que treina um pequeno conjunto de pesos do adaptador sobre um modelo básico congelado. Você pode servir muitos adaptadores que compartilham um único modelo básico em um endpoint. Isso é mais econômico do que implantar uma cópia separada do modelo para cada variante ajustada.

Quando você adiciona adaptadores a um trabalho de recomendação, a SageMaker IA dimensiona e compara uma implantação de * vários * adaptadores. Essa implantação é um modelo básico único com um [Componentes de inferência](realtime-endpoints-deploy-models.md#inference-components) por adaptador no mesmo endpoint. As recomendações levam em conta a memória adicional que os adaptadores exigem, então a SageMaker IA valida as configurações retornadas em relação ao modelo básico e aos adaptadores juntos.

## Pré-requisitos
<a name="generative-ai-inference-recommendations-adapters-prereqs"></a>

Além do trabalho [Pré-requisitos](generative-ai-inference-recommendations-get-started.md#generative-ai-inference-recommendations-get-started-prereqs) de recomendação, você precisa do seguinte para incluir adaptadores:
+ De 1 a 10 adaptadores LoRa, cada um treinado de acordo com o modelo básico especificado por você. `ModelSource`
+ Cada adaptador no formato PEFT. O local do adaptador deve conter um `adapter_config.json` arquivo com uma classificação positiva (`r`) e os arquivos de peso do adaptador (`.safetensors`ou`.bin`).
+ Todos os adaptadores são fornecidos em um único formato: no Amazon S3 ou como pacotes de modelos de SageMaker IA registrados. Você não pode misturar os dois formulários em um único trabalho.

SageMaker A IA lê seus adaptadores com a função de execução do IAM que você transmite. `RoleArn` A função deve ser capaz de ler (`s3:GetObject`e`s3:ListBucket`) a localização do Amazon S3 de cada adaptador. Essas são as mesmas permissões que ele usa para seus artefatos do modelo básico. Se você fornecer adaptadores como pacotes modelo, a função também será necessária `sagemaker:DescribeModelPackage` em cada pacote para que a SageMaker IA possa resolver a localização do adaptador no Amazon S3.

## Requisitos e restrições
<a name="generative-ai-inference-recommendations-adapters-restrictions"></a>

Os seguintes requisitos e restrições se aplicam quando você adiciona adaptadores a um trabalho de recomendação:
+ **Um formulário de origem por trabalho. **`AdapterSource`é um sindicato. Defina exatamente um dos `S3Uris` ou`ModelPackageArns`. SageMaker A IA rejeita um trabalho que define os dois campos ou nenhum deles.
+ **Classificação do adaptador. ** A classificação de nenhum adaptador pode exceder 512, a maior classificação LoRa que o mecanismo de vLLM serviço suporta. Para obter mais informações, consulte a nota em[Adicionar adaptadores a um trabalho de recomendação](#generative-ai-inference-recommendations-adapters-input).

## Adicionar adaptadores a um trabalho de recomendação
<a name="generative-ai-inference-recommendations-adapters-input"></a>

Para incluir adaptadores, adicione o `AdapterSource` objeto opcional à sua `CreateAIRecommendationJob` solicitação. `AdapterSource`é uma união: defina exatamente um dos seguintes campos, cada um com uma lista de 1 a 10 entradas do adaptador:

`S3Uris`  
Uma lista de `{"AdapterId": ..., "S3Uri": ...}` entradas. Use este formulário para adaptadores que você produziu com seu próprio pipeline PEFT ou com um pipeline de código aberto. Cada um `S3Uri` é o prefixo Amazon S3 que contém os arquivos de peso `adapter_config.json` e do adaptador.

`ModelPackageArns`  
Uma lista de `{"AdapterId": ..., "ModelPackageArn": ...}` entradas. Use este formulário para adaptadores que já estão registrados como pacotes de modelos de SageMaker IA, como adaptadores produzidos por um fluxo de trabalho de ajuste fino de SageMaker IA. SageMaker A IA lê a localização do artefato do adaptador em cada pacote do modelo.

`AdapterId`É um nome que você atribui a cada adaptador. Ele deve atender aos seguintes requisitos:
+ Deve ser exclusivo na solicitação.
+ Não deve ter mais de 63 caracteres.
+ Deve corresponder ao padrão`^[a-zA-Z0-9](-*[a-zA-Z0-9])*$`: ele começa e termina com um caractere alfanumérico, permite hífens somente entre caracteres alfanuméricos e não usa sublinhados.

SageMaker A IA usa o `AdapterId` como nome do componente de inferência para esse adaptador. Esse nome também é o identificador de roteamento que você usa para enviar solicitações ao adaptador ao invocar o endpoint implantado.

**Python (boto3) — adaptadores no Amazon S3 **

```
try:
    response = client.create_ai_recommendation_job(
        AIRecommendationJobName="my-lora-recommendation-job",
        ModelSource={
            "S3": {
                "S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/",
            }
        },
        OutputConfig={
            "S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/"
        },
        AdapterSource={
            "S3Uris": [
                {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"},
                {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"},
            ]
        },
        PerformanceTarget={
            "Constraints": [
                {"Metric": "throughput"}
            ]
        },
        AIWorkloadConfigIdentifier="my-recommendation-workload",
        RoleArn="arn:aws:iam::111122223333:role/ExampleRole",
    )
    print(response["AIRecommendationJobArn"])
except client.exceptions.ResourceInUse as error:
    print(f"A job with this name already exists: {error}")
except Exception as error:
    print(f"Error creating recommendation job: {error}")
    raise
```

**Python (boto3) — adaptadores como pacotes modelo **

```
try:
    response = client.create_ai_recommendation_job(
        AIRecommendationJobName="my-lora-recommendation-job",
        ModelSource={
            "S3": {
                "S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/",
            }
        },
        OutputConfig={
            "S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/"
        },
        AdapterSource={
            "ModelPackageArns": [
                {
                    "AdapterId": "sql",
                    "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-sql-adapter/1",
                }
            ]
        },
        PerformanceTarget={
            "Constraints": [
                {"Metric": "throughput"}
            ]
        },
        AIWorkloadConfigIdentifier="my-recommendation-workload",
        RoleArn="arn:aws:iam::111122223333:role/ExampleRole",
    )
    print(response["AIRecommendationJobArn"])
except client.exceptions.ResourceInUse as error:
    print(f"A job with this name already exists: {error}")
except Exception as error:
    print(f"Error creating recommendation job: {error}")
    raise
```

**AWS CLI**

```
aws sagemaker create-ai-recommendation-job \
  --ai-recommendation-job-name "my-lora-recommendation-job" \
  --model-source '{"S3": {"S3Uri": "s3://amzn-s3-demo-bucket/models/my-base-model/"}}' \
  --output-config '{"S3OutputLocation": "s3://amzn-s3-demo-bucket/recommendations/"}' \
  --adapter-source '{
    "S3Uris": [
      {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"},
      {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"}
    ]
  }' \
  --performance-target '{"Constraints": [{"Metric": "throughput"}]}' \
  --ai-workload-config-identifier "my-recommendation-workload" \
  --role-arn "arn:aws:iam::111122223333:role/ExampleRole" \
  --region us-west-2
```

**nota**  
A classificação (`r`in`adapter_config.json`) de nenhum adaptador pode exceder 512, a maior classificação LoRa que o mecanismo de vLLM serviço suporta. SageMaker A IA serve todos os seus adaptadores em uma única classificação e arredonda essa classificação até a classificação mais próxima que vLLM suporte: 1, 8, 16, 32, 64, 128, 256, 320 ou 512. Por exemplo, a SageMaker IA serve adaptadores com classificações de 4 e 12 na classificação 16. Se a maior classificação em seus adaptadores exceder 512, o trabalho falhará com um erro de validação. Treine novamente os adaptadores afetados com uma classificação menor ou omita-os. `AdapterSource`

## Interprete as recomendações
<a name="generative-ai-inference-recommendations-adapters-output"></a>

Quando o trabalho for concluído, ligue`DescribeAIRecommendationJob`. Além dos campos descritos em[Etapa 3: revisar as recomendações](generative-ai-inference-recommendations-get-started.md#generative-ai-inference-recommendations-get-started-results), a resposta inclui informações específicas do adaptador.

`AdapterSource`  
A resposta de nível superior ecoa a `AdapterSource` que você forneceu, na mesma forma (`S3Uris`ou`ModelPackageArns`).

`AdapterDetails`  
Cada recomendação na `Recommendations` matriz carrega um `AdapterDetails` objeto que lista cada adaptador em * ambas as * formas: `S3Uris` e`ModelPackageArns`, digitado por`AdapterId`. Se você forneceu adaptadores somente como URIs do Amazon S3, a SageMaker IA registra um pacote modelo para cada adaptador em seu nome e retorna seu ARN aqui. Isso fornece um artefato registrado e com controle de versão para implantação.

A recomendação de cada adaptador descreve a topologia baseada `DeploymentConfiguration` em componentes de inferência com vários adaptadores (o modelo básico mais um componente de inferência por adaptador). `ExpectedPerformance`relata as métricas comparadas para essa configuração.

O exemplo a seguir mostra os campos relacionados ao adaptador de uma `DescribeAIRecommendationJob` resposta para um trabalho criado com os adaptadores Amazon S3.

```
{
    "AIRecommendationJobName": "my-lora-recommendation-job",
    "AIRecommendationJobStatus": "Completed",
    "AdapterSource": {
        "S3Uris": [
            {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"},
            {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"}
        ]
    },
    "Recommendations": [
        {
            "AdapterDetails": {
                "S3Uris": [
                    {"AdapterId": "sql", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/sql/"},
                    {"AdapterId": "chat", "S3Uri": "s3://amzn-s3-demo-bucket/adapters/chat/"}
                ],
                "ModelPackageArns": [
                    {"AdapterId": "sql", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-lora-recommendation-job-adapters/1"},
                    {"AdapterId": "chat", "ModelPackageArn": "arn:aws:sagemaker:us-west-2:111122223333:model-package/my-lora-recommendation-job-adapters/2"}
                ]
            },
            "DeploymentConfiguration": {
                "InstanceType": "ml.g6e.12xlarge",
                "InstanceCount": 1,
                "CopyCountPerInstance": 2,
                "MinCpuMemoryRequiredInMb": 12288,
                "EnvironmentVariables": {
                    "SAGEMAKER_SHM_SIZE_MB": "2048"
                }
            },
            "ExpectedPerformance": [
                {"Metric": "throughput", "Stat": "average", "Value": "512.0", "Unit": "tokens/second"}
            ]
        }
    ]
}
```

Para avaliar um endpoint de vários adaptadores implantado ou comparar adaptadores entre si, direcione o componente de inferência para cada adaptador em seu trabalho de benchmark. Para obter mais informações, consulte [Compare endpoints multi-LoRa](generative-ai-inference-recommendations-benchmark.md#generative-ai-inference-recommendations-benchmark-multi-lora).