Peaufinage des modèles avec les composants d’inférence des adaptateurs - Amazon SageMaker AI

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Peaufinage des modèles avec les composants d’inférence des adaptateurs

Avec Amazon SageMaker AI, vous pouvez héberger des modèles de fondation pré-entraînés sans avoir à créer vos propres modèles à partir de zéro. Toutefois, pour adapter un modèle de fondation à usage général aux besoins uniques de votre activité, vous devez en créer une version peaufinée. LoRA (Low-Rank Adaptation) est une technique de peaufinage peu coûteuse. Le principe qui sous-tend la LoRA est que seule une petite partie d’un grand modèle de fondation nécessite une mise à jour pour l’adapter à de nouvelles tâches ou à de nouveaux domaines. Un adaptateur LoRA augmente l’inférence à partir d’un modèle de fondation avec seulement quelques couches d’adaptateurs supplémentaires.

Si vous hébergez votre modèle de fondation à l’aide d’un composant d’inférence SageMaker AI, vous pouvez optimiser ce modèle de base avec des adaptateurs LoRA en créant des composants d’inférence d’adaptateurs. Lorsque vous créez un composant d’inférence d’adaptateur, vous spécifiez les éléments suivants :

  • Le composant d’inférence de base qui doit contenir le composant d’inférence de l’adaptateur. Le composant d’inférence de base contient le modèle de fondation que vous souhaitez adapter. Le composant d’inférence d’adaptateur utilise les ressources de calcul que vous avez attribuées au composant d’inférence de base.

  • L’emplacement où vous avez stocké l’adaptateur LoRA dans Amazon S3.

Une fois que vous avez créé le composant d’inférence d’adaptateur, vous pouvez l’invoquer directement. Quand vous le faites, SageMaker AI associe l’adaptateur au modèle de base pour augmenter la réponse générée.

Avant de commencer

Avant de pouvoir créer un composant d’inférence d’adaptateur, vous devez respecter les exigences suivantes :

  • Vous disposez d’un composant d’inférence de base contenant le modèle de fondation à adapter. Vous avez déployé le composant d’inférence sur un point de terminaison SageMaker AI.

    Pour plus d’informations sur le déploiement de composants d’inférence vers des points de terminaison, consultez Déploiement de modèles pour l’inférence en temps réel.

  • Vous disposez d’un modèle d’adaptateur LoRA et vous avez stocké les artefacts de modèle sous la forme d’un fichier tar.gz dans Amazon S3. Vous spécifiez l’URI S3 des artefacts lorsque vous créez le composant d’inférence d’adaptateur.

Les exemples suivants utilisent le kit SDK pour Python (Boto3) pour créer et invoquer un composant d’inférence d’adaptateur.

Exemple Appel create_inference_component pour créer un composant d’inférence d’adaptateur

L’exemple suivant crée un composant d’inférence d’adaptateur et l’attribue à un composant d’inférence de base :

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

Lorsque vous utilisez cet exemple dans votre propre code, remplacez les valeurs des espaces réservés comme suit :

  • adapter_ic_name : nom unique du composant d’inférence d’adaptateur.

  • endpoint_name : nom du point de terminaison qui héberge le composant d’inférence de base.

  • base_inference_component_name : nom du composant d’inférence de base qui contient le modèle de fondation à adapter.

  • adapter_s3_uri : l’URI S3 qui localise le fichier tar.gz contenant les artefacts de l’adaptateur LoRA.

Vous créez un composant d’inférence d’adaptateur avec un code similaire au code d’un composant d’inférence normal. L’une des différences est que, pour le paramètre Specification, vous omettez la clé ComputeResourceRequirements. Lorsque vous invoquez un composant d’inférence d’adaptateur, il est chargé par le composant d’inférence de base. Le composant d’inférence d’adaptateur utilise les ressources de calcul du composant d’inférence de base.

Pour plus d’informations sur la création et le déploiement de composants d’inférence avec le kit SDK pour Python (Boto3), consultez Déploiement de modèles avec les kits SDK Python.

Après avoir créé un composant d’inférence d’adaptateur, vous l’invoquez en spécifiant son nom dans une demande invoke_endpoint.

Exemple Appel invoke_endpoint pour invoquer un composant d’inférence d’adaptateur

L’exemple suivant invoque un composant d’inférence d’adaptateur :

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

Lorsque vous utilisez cet exemple dans votre propre code, remplacez les valeurs des espaces réservés comme suit :

  • endpoint_name : nom du point de terminaison qui héberge les composants d’inférence de base et d’adaptateur.

  • adapter_ic_name : nom du composant d’inférence d’adaptateur.

  • prompt : l’invite de la demande d’inférence.

Pour plus d’informations sur l’invocation de composants d’inférence avec le kit SDK pour Python (Boto3), consultez Invocation de modèles pour une inférence en temps réel.