Ajustar modelos com componentes de inferência do adaptador - SageMaker IA da Amazon

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

Ajustar modelos com componentes de inferência do adaptador

Com o Amazon SageMaker AI, você pode hospedar modelos de base pré-treinados sem precisar criar seus próprios modelos do zero. No entanto, para adaptar um modelo de base de uso geral às necessidades exclusivas de sua empresa, você deve criar uma versão ajustada dele. Uma técnica de ajuste fino econômica é a adaptação de baixa classificação (LoRa). O princípio por trás da LoRa se aplica quando apenas uma pequena parte de um grande modelo de base precisa ser atualizada para adaptá-lo a novas tarefas ou domínios. Um adaptador de LoRa aumenta a inferência de um modelo de base com apenas algumas camadas extras de adaptador.

Se você hospedar seu modelo de base usando um componente de inferência do SageMaker AI, poderá ajustar esse modelo de base com adaptadores de LoRa criando componentes de inferência do adaptador. Ao criar um componente de inferência do adaptador, você especifica o seguinte:

  • O componente de inferência básico que deve conter o componente de inferência do adaptador. O componente de inferência básico contém o modelo de base que você deseja adaptar. O componente de inferência do adaptador usa os recursos de computação que você atribuiu ao componente de inferência básico.

  • O local onde você armazenou o adaptador de LoRa no Amazon S3.

Depois de criar o componente de inferência do adaptador, você pode invocá-lo diretamente. Ao fazer isso, o SageMaker AI associa o adaptador ao modelo de base para aumentar a resposta gerada.

Antes de começar

Para criar um componente de inferência de adaptador, você deve atender aos seguintes requisitos:

  • Você tem um componente de inferência básico que contém o modelo de base a ser adaptado. Você implantou esse componente de inferência em um endpoint do SageMaker AI.

    Para ter mais informações sobre como implantar componentes de inferência em endpoints, consulte Implantar modelos para inferência em tempo real.

  • Você tem um modelo de adaptador de LoRa e armazenou os artefatos do modelo como um arquivo tar.gz no Amazon S3. Você especifica o URI do S3 dos artefatos ao criar o componente de inferência do adaptador.

Os exemplos a seguir usam o SDK para Python (Boto3) para criar e invocar um componente de inferência de adaptador.

exemplo Chamada create_inference_component para criar um componente de inferência de adaptador

O seguinte exemplo cria um componente de inferência de adaptador e o atribui a um componente de inferência básico:

sm_client.create_inference_component( InferenceComponentName = adapter_ic_name, EndpointName = endpoint_name, Specification={ "BaseInferenceComponentName": base_inference_component_name, "Container": { "ArtifactUrl": adapter_s3_uri }, }, )

Ao usar esse exemplo em seu próprio código, substitua os valores do espaço reservado da seguinte forma:

  • adapter_ic_name: um nome exclusivo para o componente de inferência do adaptador.

  • endpoint_name: nome do endpoint que hospeda o componente de inferência básico.

  • base_inference_component_name: nome do componente de inferência básico que contém o modelo de base a ser adaptado.

  • adapter_s3_uri: o URI do S3 que localiza o arquivo tar.gz com os artefatos do adaptador de LoRA.

Você cria um componente de inferência de adaptador com código semelhante ao código de um componente de inferência normal. Uma diferença é que, para o parâmetro Specification, você omite a chave ComputeResourceRequirements. Quando você invoca um componente de inferência de adaptador, ele é carregado pelo componente de inferência básico. O componente de inferência de adaptador usa os recursos de computação do componente de inferência básico.

Para saber mais sobre como criar e implantar componentes de inferência com o SDK para Python (Boto3), consulte Implantar modelos com os SDKs do Python.

Depois de criar um componente de inferência de adaptador, você o invoca especificando o nome dele em uma solicitação invoke_endpoint.

exemplo Chamada invoke_endpoint para invocar um componente de inferência de adaptador

O seguinte exemplo invoca um componente de inferência de adaptador:

response = sm_rt_client.invoke_endpoint( EndpointName = endpoint_name, InferenceComponentName = adapter_ic_name, Body = json.dumps( { "inputs": prompt, "parameters": {"max_new_tokens": 100, "temperature":0.9} } ), ContentType = "application/json", ) adapter_reponse = response["Body"].read().decode("utf8")["generated_text"]

Ao usar esse exemplo em seu próprio código, substitua os valores do espaço reservado da seguinte forma:

  • endpoint_name: o nome do endpoint que hospeda os componentes de inferência básico e do adaptador.

  • adapter_ic_name: o nome do componente de inferência do adaptador.

  • prompt: o prompt para a solicitação de inferência.

Para saber mais sobre o como invocar componentes de inferência com o SDK para Python (Boto3), consulte Invocar modelos para inferência em tempo real.