

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Ottieni consigli per i modelli con adattatori LoRa
<a name="generative-ai-inference-recommendations-adapters"></a>

Low-Rank L'adattamento (LoRa) è una tecnica di regolazione fine efficiente in termini di parametri che addestra un piccolo set di adattatori su un modello base congelato. È possibile utilizzare più adattatori che condividono un unico modello base su un unico endpoint. Ciò è più conveniente rispetto all'implementazione di una copia separata del modello per ogni variante ottimizzata.

Quando aggiungi adattatori a un processo di raccomandazione, SageMaker AI dimensiona e confronta una distribuzione con più adattatori. * * Questa distribuzione è un singolo modello base con uno [Componenti di inferenza](realtime-endpoints-deploy-models.md#inference-components) per adattatore sullo stesso endpoint. I consigli tengono conto della memoria aggiuntiva richiesta dagli adattatori, quindi l' SageMaker intelligenza artificiale convalida le configurazioni restituite rispetto al modello base e agli adattatori insieme.

## Prerequisiti
<a name="generative-ai-inference-recommendations-adapters-prereqs"></a>

Oltre alla [Prerequisiti](generative-ai-inference-recommendations-get-started.md#generative-ai-inference-recommendations-get-started-prereqs) funzione di raccomandazione, è necessario che siano inclusi gli adattatori quanto segue:
+ 1—10 adattatori LoRa, ciascuno addestrato rispetto al modello base in cui specificate. `ModelSource`
+ Ogni adattatore in formato PEFT. La posizione dell'adattatore deve contenere un `adapter_config.json` file con un rango positivo (`r`) e i file di peso dell'adattatore (`.safetensors`o`.bin`).
+ Tutti gli adattatori sono forniti in un unico modulo: in Amazon S3 o come pacchetti di modelli SageMaker AI registrati. Non puoi combinare le due forme in un unico lavoro.

SageMaker L'intelligenza artificiale legge i tuoi adattatori con il ruolo di esecuzione IAM che passi. `RoleArn` Il ruolo deve essere in grado di leggere (`s3:GetObject`e`s3:ListBucket`) la posizione Amazon S3 di ciascun adattatore. Queste sono le stesse autorizzazioni utilizzate per gli artefatti del modello base. Se fornisci adattatori come pacchetti modello, il ruolo deve essere assegnato anche a ciascun pacchetto `sagemaker:DescribeModelPackage` in modo che l' SageMaker IA possa risolvere la posizione dell'adattatore in Amazon S3.

## Requisiti e restrizioni
<a name="generative-ai-inference-recommendations-adapters-restrictions"></a>

I seguenti requisiti e restrizioni si applicano quando si aggiungono adattatori a un lavoro di raccomandazione:
+ **Un modulo sorgente per lavoro. **`AdapterSource`è un sindacato. Imposta esattamente uno tra `S3Uris` o`ModelPackageArns`. SageMaker L'intelligenza artificiale rifiuta un lavoro che imposta entrambi i campi o nessuno dei due campi.
+ **Rango dell'adattatore. ** Il rango di nessun adattatore può superare 512, il rango LoRa più alto supportato dal motore di vLLM servizio. Per ulteriori informazioni, vedere la nota in[Aggiungere adattatori a un lavoro di raccomandazione](#generative-ai-inference-recommendations-adapters-input).

## Aggiungere adattatori a un lavoro di raccomandazione
<a name="generative-ai-inference-recommendations-adapters-input"></a>

Per includere gli adattatori, aggiungi l'`AdapterSource`oggetto opzionale alla tua `CreateAIRecommendationJob` richiesta. `AdapterSource`è un'unione: imposta esattamente uno dei seguenti campi, ciascuno con un elenco di 1-10 voci dell'adattatore:

`S3Uris`  
Un elenco di voci. `{"AdapterId": ..., "S3Uri": ...}` Usa questo modulo per gli adattatori che hai prodotto con una pipeline PEFT tua o open source. Ciascuno `S3Uri` è il prefisso Amazon S3 che contiene i file dell'adattatore e del peso. `adapter_config.json`

`ModelPackageArns`  
Un elenco di voci. `{"AdapterId": ..., "ModelPackageArn": ...}` Utilizza questo modulo per gli adattatori già registrati come pacchetti di modelli SageMaker AI, ad esempio gli adattatori prodotti da un flusso di lavoro di ottimizzazione dell' SageMaker IA. SageMaker L'intelligenza artificiale legge la posizione degli artefatti dell'adattatore da ciascun pacchetto di modelli.

`AdapterId`È un nome che si assegna a ciascun adattatore. Deve soddisfare i seguenti requisiti:
+ Deve essere univoco all'interno della richiesta.
+ Non deve contenere più di 63 caratteri.
+ Deve corrispondere allo schema`^[a-zA-Z0-9](-*[a-zA-Z0-9])*$`: inizia e termina con un carattere alfanumerico, consente l'uso di trattini solo tra caratteri alfanumerici e non utilizza caratteri di sottolineatura.

SageMaker L'AI utilizza `AdapterId` come nome del componente di inferenza per quell'adattatore. Questo nome è anche l'handle di routing utilizzato per inviare richieste all'adattatore quando si richiama l'endpoint distribuito.

**Python (boto3): adattatori in 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) — adattatori come pacchetti modello **

```
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**  
Il rango (`r`in`adapter_config.json`) di nessun adattatore può superare 512, il rango LoRa più alto supportato dal serving engine. vLLM SageMaker L'intelligenza artificiale utilizza tutti gli adattatori in un unico livello, per poi passare al rango più vicino che vLLM supporta: 1, 8, 16, 32, 64, 128, 256, 320 o 512. Ad esempio, l' SageMaker intelligenza artificiale serve adattatori con rango 4 e 12 al grado 16. Se il punteggio più alto tra gli adattatori supera 512, il processo ha esito negativo e si verifica un errore di convalida. Riqualifica gli adattatori interessati con un rango inferiore oppure omettili. `AdapterSource`

## Interpreta i consigli
<a name="generative-ai-inference-recommendations-adapters-output"></a>

Quando il lavoro è completato, chiama`DescribeAIRecommendationJob`. Oltre ai campi descritti in[Fase 3: Rivedi i consigli](generative-ai-inference-recommendations-get-started.md#generative-ai-inference-recommendations-get-started-results), la risposta include informazioni specifiche sull'adattatore.

`AdapterSource`  
La risposta di primo livello fa eco a `AdapterSource` quella fornita, nella stessa forma (o). `S3Uris` `ModelPackageArns`

`AdapterDetails`  
Ogni raccomandazione nell'`Recommendations`array contiene un `AdapterDetails` oggetto che elenca tutti gli adattatori in * entrambe le * forme: `S3Uris` e`ModelPackageArns`, digitati da. `AdapterId` Se hai fornito adattatori solo come URI Amazon S3, SageMaker AI registra un pacchetto modello per ciascun adattatore per tuo conto e restituisce qui il relativo ARN. Questo ti dà un artefatto registrato e con una versione con cui eseguire l'implementazione.

La raccomandazione `DeploymentConfiguration` contenuta in ogni scheda descrive la topologia basata su più adattatori e componenti di inferenza (il modello base più un componente di inferenza per adattatore). `ExpectedPerformance`riporta le metriche di riferimento per quella configurazione.

L'esempio seguente mostra i campi relativi agli adattatori di una `DescribeAIRecommendationJob` risposta per un lavoro creato con adattatori 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"}
            ]
        }
    ]
}
```

Per confrontare un endpoint con più adattatori implementati o per confrontare gli adattatori tra loro, scegli come target il componente di inferenza per ciascun adattatore nel processo di benchmark. Per ulteriori informazioni, consulta [Esegui il benchmark degli endpoint multi-LORA](generative-ai-inference-recommendations-benchmark.md#generative-ai-inference-recommendations-benchmark-multi-lora).