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
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 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
Além do trabalho Pré-requisitos 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.jsonarquivo com uma classificação positiva (r) e os arquivos de peso do adaptador (.safetensorsou.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:GetObjectes3: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
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 dosS3UrisouModelPackageArns. 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 emAdicionar adaptadores a um trabalho de recomendação.
Adicionar adaptadores a um trabalho de recomendação
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 umS3Urié o prefixo Amazon S3 que contém os arquivos de pesoadapter_config.jsone 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 (rinadapter_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
Quando o trabalho for concluído, ligueDescribeAIRecommendationJob. Além dos campos descritos emEtapa 3: revisar as recomendações, a resposta inclui informações específicas do adaptador.
AdapterSource-
A resposta de nível superior ecoa a
AdapterSourceque você forneceu, na mesma forma (S3UrisouModelPackageArns). AdapterDetails-
Cada recomendação na
Recommendationsmatriz carrega umAdapterDetailsobjeto que lista cada adaptador em ambas as formas:S3UriseModelPackageArns, digitado porAdapterId. 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). ExpectedPerformancerelata 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.