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.
Gestion des modèles de chat et des tokeniseurs personnalisés
Les modèles de chat et les tokeniseurs personnalisés sont des composants essentiels pour formater correctement les entrées conversationnelles et gérer la génération de jetons dans vos modèles importés. L'importation de modèles personnalisés permet d'importer des modèles avec des modèles de chat personnalisés qui définissent la manière dont les conversations à plusieurs tours sont structurées et tokenisées.
Importation de modèles avec des modèles de chat personnalisés
Lorsque vous importez un modèle avec des modèles de chat personnalisés, assurez-vous de suivre les meilleures pratiques décrites dans la documentation principale d'importation de modèles personnalisés, notamment en introduisant les poids des modèles au format de tenseurs sécurisés et en fournissant tous les fichiers de configuration nécessaires.
Exigences relatives au format du modèle de chat
Si votre modèle utilise un modèle de chat personnalisé et que vous souhaitez utiliser ce modèle avec Amazon Bedrock, vous devez inclure le fichier du modèle de chat dans l'un des formats suivants :
-
chat_template.jinja— Un fichier modèle basé sur Jinja2 qui définit la façon dont les messages sont formatés. -
chat_template.json— Un fichier JSON contenant le modèle de chat sous forme de chaîne. -
tokenizer_config.jsonavec modèle de chat intégré — Vous pouvez également inclure le modèle de chat directement dans votretokenizer_config.jsonfichier sous forme dechat_templatechamp. Pour un exemple, consultez le fichier tokenizer_config.json d'Hermes-2-Pro sur Hugging Face.
L'importation de modèles personnalisés traitera automatiquement ces fichiers et les inclura dans les répertoires appropriés pendant le processus d'importation.
Priorité du modèle de chat
Si vous fournissez plusieurs sources de modèles de chat, Amazon Bedrock applique les règles de priorité suivantes :
-
Les fichiers de modèles de discussion distincts ont priorité : si vous incluez à la fois un fichier de modèle de discussion distinct (
chat_template.jinjaouchat_template.json) ET unchat_templatechamp dans votre fichiertokenizer_config.json, le fichier distinct sera utilisé et le modèle intégrétokenizer_config.jsonsera ignoré. -
Modèle intégré comme solution de rechange — Si vous ne fournissez pas de fichier de modèle de chat distinct, Amazon Bedrock utilisera le
chat_templatechamp que vous utiliseztokenizer_config.jsons'il est présent.
Avertissement
Choisissez une approche : pour éviter toute confusion et garantir un comportement prévisible, nous vous recommandons vivement de n'utiliser qu'UNE seule des approches suivantes :
-
Option 1 : Fournissez des fichiers de modèles de chat séparés (
chat_template.jinjaouchat_template.json) sans inclure dechat_templatechamp dans votretokenizer_config.json. -
Option 2 : Incluez le
chat_templatechamp directement dans votre fichier modèletokenizer_config.jsonet ne fournissez pas de fichiers modèles distincts.
Si vous avez des modèles d'outils personnalisés ou des configurations de modèles de chat complexes, nous vous recommandons d'utiliser l'option 2 (intégration du modèletokenizer_config.json) car elle vous permet de définir plusieurs modèles nommés (tels que « default » et « tool_use ») dans un seul fichier de configuration.
Note
Le fichier de modèle de chat doit respecter le format Hugging Face et les conventions de dénomination. Assurez-vous que votre modèle est compatible avec la Transformers bibliothèque.
Exemples de formats de modèles de chat
Voici des exemples des deux formats de modèles de chat pris en charge :
Important
Assurez-vous que votre fichier de modèle de chat respecte exactement la convention de dénomination (chat_template.jinjaouchat_template.json) et le format indiqués dans les exemples ci-dessus. Les modèles mal formatés peuvent entraîner des échecs d'importation ou d'inférence.
Invoquer des modèles avec des modèles de chat personnalisés
Une fois que vous avez importé un modèle avec un modèle de chat personnalisé, deux options s'offrent à vous pour appeler le modèle avec des entrées de conversation correctement formatées :
Utilisation de l' ChatCompletion API OpenAI avec des messages
Si vous fournissez des entrées au format du schéma des messages, vous devez utiliser l'API OpenAI ChatCompletion . Lorsque vous utilisez ce format d'API avec un modèle doté d'un modèle de chat téléchargé (chat_template.jinjaouchat_template.json), Amazon Bedrock convertit automatiquement vos messages d'entrée dans le format approprié à l'aide du modèle de chat.
C'est l'approche recommandée car elle fournit l'intégration la plus fluide possible et permet à Amazon Bedrock de gérer automatiquement l'application de modèle de chat.
Exemple : utilisation de l' ChatCompletion API OpenAI avec un modèle de chat personnalisé
import json import boto3 # Initialize Bedrock Runtime client client = boto3.client('bedrock-runtime', region_name='us-east-1') # Define the model ARN for your imported model with custom chat template model_id = 'arn:aws:bedrock:us-east-1:123456789012:imported-model/your-model-id' # Prepare the request payload using messages format payload = { "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "Hello, how are you?" } ], "max_tokens": 150, "temperature": 0.7 } # Invoke the model response = client.invoke_model( modelId=model_id, body=json.dumps(payload), accept='application/json', contentType='application/json' ) # Parse and display the response response_body = json.loads(response['body'].read()) print(json.dumps(response_body, indent=2))
Dans cet exemple, Amazon Bedrock appliquera automatiquement votre modèle de chat personnalisé au tableau de messages, le convertissant au format approprié pour votre modèle.
Approche de tokenisation manuelle
Si vous préférez avoir un contrôle total sur l'application du modèle de chat et le processus de tokenisation, vous pouvez également appliquer manuellement le modèle de chat à votre conversation, puis utiliser l'API de complétion (non ChatCompletion) avec le texte préformaté.
Cette approche est utile lorsque vous devez personnaliser la logique de l'application modèle ou lorsque vous travaillez avec des exigences de tokenisation spécialisées.
Étape 1 : Appliquer le modèle de chat localement
Utilisez l'extrait de code suivant pour charger votre modèle de chat personnalisé et l'appliquer à une conversation en local :
from transformers import AutoTokenizer # Configuration paths - update these with your actual paths TOKENIZER_PATH = "" # Path to tokenizer directory # Load tokenizer with updated chat template tokenizer = AutoTokenizer.from_pretrained(TOKENIZER_PATH) # Test chat template with sample conversation chat_history = [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Hello, how are you?"}, ] # Apply chat template and display formatted output to make sure chat template works as expected formatted_chat = tokenizer.apply_chat_template(chat_history, tokenize=False) print(formatted_chat)
Ce code montre comment :
-
Chargez la configuration de votre tokenizer à partir des fichiers modèles
-
Ajoutez le modèle de chat personnalisé à la configuration du tokenizer
-
Appliquer le modèle de chat à l'historique des conversations
-
Générez le texte formaté qui peut être envoyé au modèle
Étape 2 : Invoquer avec l'API de complétion
Après avoir appliqué le modèle de chat localement, utilisez le texte formaté avec l'API Completion :
import json import boto3 # Initialize Bedrock Runtime client client = boto3.client('bedrock-runtime', region_name='us-east-1') # Define the model ARN for your imported model model_id = 'arn:aws:bedrock:us-east-1:123456789012:imported-model/your-model-id' # Use the formatted_chat output from Step 1 as the prompt payload = { "prompt": formatted_chat, "max_tokens": 150, "temperature": 0.7 } # Invoke the model using Completion format (not ChatCompletion) response = client.invoke_model( modelId=model_id, body=json.dumps(payload), accept='application/json', contentType='application/json' ) # Parse and display the response response_body = json.loads(response['body'].read()) print(json.dumps(response_body, indent=2))
Avertissement
Toujours utiliser le max_tokens paramètre : lorsque vous utilisez l'API de complétion avec des importations de modèles personnalisés, utilisez toujours le max_tokens paramètre pour garantir la compatibilité du schéma de complétion OpenAI. Cela permet d'éviter toute confusion de traduction et de garantir un comportement cohérent entre les différentes implémentations du SDK. N'utilisez pas de noms de paramètres spécifiques au modèle, tels que max_gen_len des variantes similaires.
Important
Lorsque vous utilisez l'approche de tokenisation manuelle, vous devez utiliser le format de l'API de complétion (avec prompt champ), et non le format de l' ChatCompletion API (avec messages champ). L' ChatCompletion API attend des messages bruts et tentera à nouveau d'appliquer le modèle de chat, ce qui entraînera un formatage incorrect.
Bonnes pratiques
-
Utilisez ChatCompletion l'API lorsque cela est possible — L' ChatCompletion API OpenAI avec format de messages fournit l'expérience la plus fluide possible et permet à Amazon Bedrock de gérer automatiquement les applications de modèles de chat.
-
Validez votre modèle de chat : avant d'importer votre modèle, testez votre modèle de chat localement à l'aide de la Transformers bibliothèque pour vous assurer qu'il produit le format de sortie attendu.
-
Inclure tous les jetons spéciaux — Assurez-vous que votre modèle de chat inclut tous les jetons spéciaux nécessaires (tels que beginning-of-sequence, end-of-sequence, et les marqueurs de rôle) attendus par votre modèle.
-
Testez avec des conversations à plusieurs tours : vérifiez que votre modèle de chat gère correctement les conversations à plusieurs tours en alternant les messages de l'utilisateur et de l'assistant.
-
Envisagez le support visuel : si votre modèle prend en charge les entrées multimodales, assurez-vous que votre modèle de chat inclut une logique de gestion des marqueurs de contenu image et vidéo.
Avertissement
Des modèles de discussion mal formatés peuvent entraîner des performances médiocres du modèle, des sorties inattendues ou des échecs d'inférence. Testez toujours soigneusement votre modèle de chat avant de le déployer en production.