

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.

# Personnalisation d’un modèle de fondation
<a name="jumpstart-foundation-models-customize"></a>

Les modèles de fondation sont des modèles extrêmement puissants, capables de résoudre un large éventail de tâches. Pour résoudre efficacement la plupart des tâches, ces modèles nécessitent une certaine forme de personnalisation.

La méthode recommandée pour personnaliser un modèle de fondation en fonction d'un cas d'utilisation spécifique consiste à utiliser l'ingénierie rapide. En fournissant à votre modèle de fondation des instructions bien conçues et riches en contexte, vous pourrez obtenir les résultats souhaités sans avoir à optimiser ou à modifier les poids de modèle. Pour de plus amples informations, veuillez consulter [Ingénierie rapide pour les modèles de fondation](jumpstart-foundation-models-customize-prompt-engineering.md).

Si l'ingénierie rapide ne suffit pas à elle seule pour personnaliser votre modèle de fondation en fonction d'une tâche spécifique, vous pouvez optimiser un modèle de fondation sur des données supplémentaires propres au domaine. Pour de plus amples informations, veuillez consulter [Modèles de fondation et hyperparamètres pour le peaufinage](jumpstart-foundation-models-fine-tuning.md). Le processus d'optimisation implique de modifier les poids de modèle.

Si vous souhaitez personnaliser votre modèle à l'aide des informations d'une bibliothèque de connaissances sans aucun recyclage, consultez [Génération à enrichissement contextuel (RAG)](jumpstart-foundation-models-customize-rag.md).

# Ingénierie rapide pour les modèles de fondation
<a name="jumpstart-foundation-models-customize-prompt-engineering"></a>

L'ingénierie rapide est le processus qui consiste à concevoir et à affiner les instructions ou les stimuli d'entrée d'un modèle de langage afin de générer des types de sorties spécifiques. L'ingénierie rapide implique de sélectionner des mots-clés appropriés, de fournir du contexte et de façonner les entrées de manière à encourager le modèle à produire la réponse souhaitée. Il s'agit d'une technique essentielle pour façonner activement le comportement et le résultat des modèles de fondation.

Une ingénierie rapide et efficace est essentielle pour orienter le comportement du modèle et obtenir les réponses souhaitées. Grâce à l'ingénierie rapide, vous pouvez contrôler le ton, le style et l'expertise du domaine d'un modèle sans avoir à recourir à des mesures de personnalisation supplémentaires, telles que l'optimisation. Nous vous recommandons de consacrer du temps à l'ingénierie rapide avant d'envisager d'optimiser un modèle sur la base de données supplémentaires. L'objectif est de fournir suffisamment de contexte et de conseils au modèle afin qu'il puisse généraliser et fonctionner correctement sur des scénarios de données inconnus ou limités.

## Apprentissage en zéro coup
<a name="jumpstart-foundation-models-customize-prompt-engineering-zero-shot"></a>

L'apprentissage en zéro coup consiste à entraîner un modèle pour généraliser et faire des prédictions sur des classes ou des tâches inconnues. Pour effectuer une ingénierie rapide dans des environnements d'apprentissage en zéro coup, nous vous recommandons de construire des invites qui fournissent explicitement des informations sur la tâche cible et le format de sortie souhaité. Par exemple, si vous souhaitez utiliser un modèle de fondation pour la classification de texte en zéro coup sur un ensemble de classes que le modèle n'a pas vues pendant l'entraînement, une invite bien conçue ressemblerait à : `"Classify the following text as either sports, politics, or entertainment: [input text]."` En spécifiant explicitement les classes cibles et le format de sortie attendu, vous pouvez guider le modèle pour qu'il fasse des prédictions précises, même sur des classes inconnues.

## Apprentissage en quelques coups
<a name="jumpstart-foundation-models-customize-prompt-engineering-few-shot"></a>

L'apprentissage en quelques coups consiste à entraîner un modèle avec une quantité limitée de données pour de nouvelles classes ou tâches. L'ingénierie rapide dans les environnements d'apprentissage en quelques coups se concentre sur la conception d'instructions qui utilisent efficacement la quantité limitée de données d'entraînement disponibles. Par exemple, si vous utilisez un modèle de fondation pour une tâche de classification d'image et que vous ne disposez que de quelques exemples d'une nouvelle classe d'images, vous pouvez créer une invite qui inclut les exemples étiquetés disponibles avec un espace réservé pour la classe cible. L'invite ressemblerait à : `"[image 1], [image 2], and [image 3] are examples of [target class]. Classify the following image as [target class]"`. En incorporant les quelques exemples étiquetés et en spécifiant explicitement la classe cible, vous pouvez guider le modèle pour qu'il généralise et fasse des prédictions précises, même avec une quantité minimale de données d'entraînement.

## Paramètres d’inférence pris en charge
<a name="jumpstart-foundation-models-customize-prompt-engineering-inference-params"></a>

La modification des paramètres d’inférence peut également affecter les réponses à vos invites. Vous pouvez essayer d’ajouter autant de spécificités et de contexte que possible à vos invites, mais vous pouvez également effectuer des essais avec les paramètres d’inférence pris en charge. Voici des exemples de paramètres d’inférence couramment pris en charge :


| Paramètres d’inférence | Description | 
| --- | --- | 
| `max_new_tokens` | Longueur de sortie maximale d’une réponse du modèle de fondation. Valeurs valides : nombre entier, plage : nombre entier positif. | 
| `temperature` | Contrôle le caractère aléatoire de la sortie. Une température plus élevée entraîne une séquence de sortie avec des mots à faible probabilité et une température plus basse entraîne une séquence de sortie avec des mots à forte probabilité. Si la valeur est `temperature=0`, la réponse est composée uniquement des mots ayant la plus forte probabilité (décodage gourmand). Valeurs valides : valeur à virgule flottante, plage : valeur à virgule flottante positive. | 
| `top_p` | À chaque étape de génération de texte, le modèle échantillonne à partir du plus petit ensemble de mots possible avec une probabilité cumulée correspondant à `top_p`. Valeurs valides : float, plage : 0.0, 1.0. | 
| `return_full_text` | Si la valeur est `True`, alors le texte d’entrée fait partie du texte de sortie généré. Valeurs valides : booléenne, par défaut : False. | 

Pour plus d’informations sur les inférences de modèles de fondation, consultez [Déploiement de modèles de fondation accessibles au public à l’aide de la classe `JumpStartModel`](jumpstart-foundation-models-use-python-sdk-model-class.md).

Si l'ingénierie rapide ne suffit pas à adapter votre modèle de fondation à des besoins professionnels spécifiques, à un langage spécifique à un domaine, à des tâches cibles ou à d'autres exigences, vous pouvez envisager d'optimiser votre modèle en fonction de données supplémentaires ou d'utiliser la génération augmentée de récupération (RAG) pour enrichir l'architecture de votre modèle avec un contexte amélioré issu de sources de connaissances archivées. Pour plus d’informations, consultez [Modèles de fondation et hyperparamètres pour le peaufinage](jumpstart-foundation-models-fine-tuning.md) ou [Génération à enrichissement contextuel (RAG)](jumpstart-foundation-models-customize-rag.md).

# Modèles de fondation et hyperparamètres pour le peaufinage
<a name="jumpstart-foundation-models-fine-tuning"></a>

Les modèles de fondation sont coûteux en ressources informatiques et sont entraînés sur un vaste corps non étiqueté. L'optimisation d'un modèle de fondation pré-entraîné est un moyen abordable de tirer parti de ses nombreuses fonctionnalités tout en personnalisant un modèle sur votre propre petit corps. L'optimisation est une méthode de personnalisation qui implique un entraînement supplémentaire et qui modifie le poids de votre modèle. 

L'optimisation peut vous être utile si vous avez besoin : 
+ de personnaliser votre modèle en fonction des besoins spécifiques de votre entreprise
+ que votre modèle fonctionne correctement avec un langage spécifique à un domaine, tel que le jargon de l'industrie, les termes techniques ou tout autre vocabulaire spécialisé
+ de performances améliorées pour certaines tâches
+ de réponses précises, relatives et contextuelles dans les applications
+ de réponses plus factuelles, moins toxiques et mieux adaptées à certaines exigences

Il existe deux approches principales que vous pouvez adopter pour l'optimisation en fonction de votre cas d'utilisation et du modèle de fondation choisi.

1. Si vous souhaitez optimiser votre modèle sur des données spécifiques à un domaine, consultez [Peaufinage d’un grand modèle de langage (LLM) avec l’adaptation de domaine](jumpstart-foundation-models-fine-tuning-domain-adaptation.md).

1. Si vous souhaitez effectuer une optimisation basée sur des instructions à l'aide d'exemples d'invite et de réponse, consultez [Peaufinage d’un grand modèle de langage (LLM) à l’aide d’instructions d’invite](jumpstart-foundation-models-fine-tuning-instruction-based.md).

## Modèles de fondation disponibles pour le peaufinage
<a name="jumpstart-foundation-models-fine-tuning-models"></a>

Vous pouvez affiner l'un des modèles de JumpStart base suivants :
+ Bloom 3B
+ Bloom 7B1
+ BloomZ 3B FP16
+ Bloom Z 7B1 FP16
+ Code Llama 13B
+ Code Llama 13B Python
+ Code Llama 34B
+ Code Llama 34B Python
+ Code Llama 70B
+ Code Llama 70B Python
+ Code Llama 7B
+ Code Llama 7B Python
+ CyberAgentLM2-7B-Chat (-7B-Chat) CALM2
+ Falcon40 B BF16
+ Falcon40B Instruct BF16
+ Falcon7 B BF16
+ Falcon7B Instruct BF16
+ Flan-T5 Base
+ Flan-T5 Large
+ Flan-T5 Small
+ Flan-T5 XL
+ Flan-T5 XXL
+ Gemma 2B
+ Gemma 2B Instruct
+ Gemma 7B
+ Gemma 7B Instruct
+ GPT-2 XL
+ GPT-J 6B
+ GPT-Neo 1.3B
+ GPT-Neo 125M
+ GPT-NEO 2.7B
+ LightGPT Instruct 6B
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron
+ Mistral 7B
+ Mixtral 8x7B
+ Mixtral 8x7B Instruct
+ RedPajama Base INCITE 3B V1
+ RedPajama Base INCITE 7B V1
+ RedPajama INCITE Chat 3B V1
+ RedPajama INCITE Chat 7B V1
+ RedPajama INCITE Instruct 3B V1
+ RedPajama INCITE Instruct 7B V1
+ Stable Diffusion 2.1

## Hyperparamètres de peaufinage couramment pris en charge
<a name="jumpstart-foundation-models-fine-tuning-hyperparameters"></a>

Différents modèles de fondation prennent en charge différents hyperparamètres lors d’un peaufinage. Les hyperparamètres suivants sont couramment pris en charge et permettent de personnaliser davantage votre modèle pendant l’entraînement :


| Paramètres d’inférence | Description | 
| --- | --- | 
| `epoch` | Nombre de passages effectués par le modèle dans le jeu de données de peaufinage pendant l’entraînement. Doit être un entier supérieur à 1.  | 
| `learning_rate` |  Taux auquel les poids du modèle sont mis à jour après que chaque lot d’exemples d’entraînement de peaufinage a été parcouru. Doit être une valeur flottante positive supérieure à 0.  | 
| `instruction_tuned` |  S’il faut entraîner le modèle sur instruction ou non. Doit être `'True'` ou `'False'`.  | 
| `per_device_train_batch_size` |  Taille du lot par cœur de GPU ou CPU pour l’entraînement. Doit être un nombre entier positif. | 
| `per_device_eval_batch_size` |  Taille du lot par cœur de GPU ou CPU pour l’évaluation. Doit être un nombre entier positif.  | 
| `max_train_samples` |  À des fins de débogage ou d’entraînement plus rapide, tronquez le nombre d’exemples d’entraînement à cette valeur. La valeur -1 signifie que le modèle utilise tous les exemples d’entraînement. Doit être un nombre entier positif ou -1.  | 
| `max_val_samples` |  À des fins de débogage ou d’entraînement plus rapide, tronquez le nombre d’exemples de validation à cette valeur. La valeur -1 signifie que le modèle utilise tous les exemples de validation. Doit être un nombre entier positif ou -1.  | 
| `max_input_length` |  Longueur totale maximale de la séquence d’entrée après création de jeton. Les séquences plus longues seront tronquées. Si -1, le paramètre `max_input_length` est défini sur le minimum de 1 024 et `model_max_length` est défini par le créateur de jetons. Si le paramètre est défini sur une valeur positive, `max_input_length` est défini sur le minimum de la valeur fournie et `model_max_length` est défini par le créateur de jetons. Doit être un nombre entier positif ou -1.  | 
| `validation_split_ratio` |  S’il n’existe aucun canal de validation, le ratio entraînement-validation est calculé à partir des données d’entraînement. Doit être compris entre 0 et 1.  | 
| `train_data_split_seed` |  Si les données de validation sont absentes, ceci corrige la répartition aléatoire des données d’entraînement d’entrée en données d’entraînement et de validation utilisées par le modèle. Doit être un nombre entier.  | 
| `preprocessing_num_workers` |  Nombre de processus à utiliser pour le prétraitement. Si la valeur est `None`, le processus principal est utilisé pour le prétraitement.  | 
| `lora_r` |  Valeur r d’adaptation de rang inférieur (LoRA) qui sert de facteur de mise à l’échelle pour les mises à jour de poids. Doit être un nombre entier positif.  | 
| `lora_alpha` |  Valeur alpha d’adaptation de rang inférieur (LoRA) qui sert de facteur de mise à l’échelle pour les mises à jour de poids. Généralement 2 à 4 fois la taille de `lora_r`. Doit être un nombre entier positif.  | 
| `lora_dropout` |  La valeur d’abandon pour les couches d’adaptation de rang inférieur (LoRA) doit être une valeur flottante positive comprise entre 0 et 1.  | 
| `int8_quantization` |  Si la valeur est `True`, le modèle est chargé avec une précision de 8 bits pour l’entraînement.  | 
| `enable_fsdp` |  Si la valeur est `True`, l’entraînement utilise le parallélisme entièrement partitionné des données.  | 

Vous pouvez spécifier les valeurs des hyperparamètres lorsque vous optimisez votre modèle dans Studio. Pour de plus amples informations, veuillez consulter [Peaufinage d’un modèle dans Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). 

Vous pouvez également remplacer les valeurs par défaut des hyperparamètres lorsque vous peaufinez votre modèle à l'aide du SDK. SageMaker Python Pour de plus amples informations, veuillez consulter [Peaufinage des modèles de fondation accessibles au public à l’aide de la classe `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md).

# Peaufinage d’un grand modèle de langage (LLM) avec l’adaptation de domaine
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation"></a>

L'optimisation adaptée à un domaine vous permet de tirer parti de modèles de fondation pré-entraînés et de les adapter à des tâches spécifiques en utilisant une quantité limitée de données spécifiques au domaine. Si l'ingénierie rapide ne permet pas une personnalisation suffisante, vous pouvez utiliser l'optimisation adaptée à un domaine pour que votre modèle fonctionne avec un langage spécifique au domaine, tel que le jargon de l'industrie, les termes techniques ou d'autres données spécialisées. Ce processus d'optimisation modifie les poids du modèle. 

Pour optimiser votre modèle sur un jeu de données spécifique à un domaine :

1. Préparez vos données d’entraînement. Pour obtenir des instructions, consultez [Préparation et téléchargement des données d’entraînement pour le peaufinage adaptatif à un domaine](#jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data).

1. Créez votre tâche d’entraînement de peaufinage. Pour obtenir des instructions, veuillez consulter [Création d’une tâche d’entraînement pour le peaufinage sur instructions](#jumpstart-foundation-models-fine-tuning-domain-adaptation-train).

Vous trouverez des end-to-end exemples dans[Exemples de blocs-notes](#jumpstart-foundation-models-fine-tuning-domain-adaptation-examples).

L'optimisation adaptée au domaine est disponible avec les modèles de fondation suivants :

**Note**  
Certains modèles de JumpStart base, tels que Llama 2 7B, nécessitent l'acceptation d'un contrat de licence d'utilisateur final avant de peaufiner et d'effectuer des inférences. Pour de plus amples informations, veuillez consulter [Contrats de licence de l'utilisateur final](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula).
+ Bloom 3B
+ Bloom 7B1
+ BloomZ 3B FP16
+ Bloom Z 7B1 FP16
+ GPT-2 XL
+ GPT-J 6B
+ GPT-Neo 1.3B
+ GPT-Neo 125M
+ GPT-NEO 2.7B
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron

## Préparation et téléchargement des données d’entraînement pour le peaufinage adaptatif à un domaine
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-prepare-data"></a>

Les données d’entraînement pour le peaufinage adaptatif à un domaine peuvent être fournies au format de fichier CSV, JSON ou TXT. Toutes les données d’entraînement doivent se trouver dans un seul fichier dans un seul dossier.

Les données d’entraînement sont extraites de la colonne **Texte** des fichiers de données d’entraînement CSV ou JSON. S’il n’existe aucune colonne nommée **Texte**, les données de la première colonne du fichier de données d’entraînement CSV ou JSON sont utilisées.

Voici un exemple de corps de fichier TXT à utiliser pour le peaufinage :

```
This report includes estimates, projections, statements relating to our
business plans, objectives, and expected operating results that are “forward-
looking statements” within the meaning of the Private Securities Litigation
Reform Act of 1995, Section 27A of the Securities Act of 1933, and Section 21E
of ....
```

### Fractionnement des données pour l’entraînement et les tests
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-split-data"></a>

Vous pouvez éventuellement fournir un autre dossier contenant les données de validation. Ce dossier doit également inclure un fichier CSV, JSON ou TXT. Si aucun jeu de données de validation n’est fourni, une quantité définie de données d’entraînement est mise de côté à des fins de validation. Vous pouvez ajuster le pourcentage de données d’entraînement utilisé pour la validation lorsque vous choisissez les hyperparamètres pour le peaufinage de votre modèle. 

### Chargement de données de peaufinage sur Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-upload-data"></a>

Chargez les données que vous avez préparées sur Amazon Simple Storage Service (Amazon S3) afin de les utiliser lors de la mise au point d'un modèle de base. JumpStart Vous pouvez utiliser les commandes suivantes pour charger vos données :

```
from sagemaker.s3 import S3Uploader
import sagemaker
import random

output_bucket = sagemaker.Session().default_bucket()
local_data_file = "train.txt"
train_data_location = f"s3://{output_bucket}/training_folder"
S3Uploader.upload(local_data_file, train_data_location)
S3Uploader.upload("template.json", train_data_location)
print(f"Training data: {train_data_location}")
```

## Création d’une tâche d’entraînement pour le peaufinage sur instructions
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-train"></a>

Une fois vos données chargées sur Amazon S3, vous pouvez affiner et déployer votre modèle de JumpStart base. Pour optimiser votre modèle dans Studio, consultez [Peaufinage d’un modèle dans Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). Pour affiner votre modèle à l'aide du SageMaker Python SDK, consultez. [Peaufinage des modèles de fondation accessibles au public à l’aide de la classe `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md)

## Exemples de blocs-notes
<a name="jumpstart-foundation-models-fine-tuning-domain-adaptation-examples"></a>

Pour plus d’informations sur le peaufinage adaptatif à un domaine, consultez les exemples de blocs-notes suivants :
+ [SageMaker JumpStart Modèles de base - Ajustement du modèle GPT-J 6B de génération de texte sur un ensemble de données spécifique au domaine](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/domain-adaption-finetuning-gpt-j-6b.html)
+ [Réglez avec précision les modèles LLa MA 2 sur JumpStart](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)

# Peaufinage d’un grand modèle de langage (LLM) à l’aide d’instructions d’invite
<a name="jumpstart-foundation-models-fine-tuning-instruction-based"></a>

L'optimisation basée sur les instructions utilise des exemples étiquetés pour améliorer les performances d'un modèle de fondation pré-entraîné sur une tâche spécifique. Les exemples étiquetés sont au format d'invites, de paires de réponses et sont formulés sous forme d'instructions. Ce processus d'optimisation modifie les poids du modèle. Pour plus d'informations sur l'optimisation basée sur les instructions, consultez [Introduction à FLAN : Modèles de langage plus généralisables avec optimisation des instructions](https://ai.googleblog.com/2021/10/introducing-flan-more-generalizable.html) (langue française non garantie) et [Mise à l'échelle des modèles de langage optimisés par les instructions](https://arxiv.org/abs/2210.11416) (langue française non garantie).

Les modèles de LAnguage réseau affiné (FLAN) utilisent le réglage des instructions pour rendre les modèles plus aptes à résoudre les tâches générales de PNL en aval. Amazon SageMaker JumpStart propose un certain nombre de modèles de base dans la famille de modèles FLAN. Par exemple, les modèles FLAN-T5 sont optimisés en fonction d'instructions sur un large éventail de tâches afin d'améliorer les performances zéro coup dans de nombreux cas d'utilisation courants. Grâce aux données supplémentaires et à l'optimisation, les modèles basés sur les instructions peuvent être davantage adaptés à des tâches plus spécifiques qui n'ont pas été prises en compte lors du pré-entraînement. 

Pour optimiser un LLM sur une tâche spécifique à l’aide d’instructions de tâche et de paires invite-réponse :

1. Préparez vos instructions dans des fichiers JSON. Pour plus d’informations sur le format requis pour les fichiers de paires invite-réponse et sur la structure du dossier de données, consultez [Préparation et chargement des données d’entraînement pour le peaufinage sur instructions](#jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data).

1. Créez votre tâche d’entraînement de peaufinage. Pour obtenir des instructions, veuillez consulter [Création d’une tâche d’entraînement pour le peaufinage sur instructions](#jumpstart-foundation-models-fine-tuning-instruction-based-train).

Vous trouverez des end-to-end exemples dans[Exemples de blocs-notes](#jumpstart-foundation-models-fine-tuning-instruction-based-examples).

Seul un sous-ensemble de modèles de JumpStart base est compatible avec le réglage précis basé sur des instructions. L'optimisation basée sur les instructions est disponible avec les modèles de fondation suivants : 

**Note**  
Certains modèles de JumpStart base, tels que Llama 2 7B, nécessitent l'acceptation d'un contrat de licence d'utilisateur final avant de peaufiner et d'effectuer des inférences. Pour de plus amples informations, veuillez consulter [Contrats de licence de l'utilisateur final](jumpstart-foundation-models-choose.md#jumpstart-foundation-models-choose-eula).
+ Flan-T5 Base
+ Flan-T5 Large
+ Flan-T5 Small
+ Flan-T5 XL
+ Flan-T5 XXL
+ Llama 2 13B
+ Llama 2 13B Chat
+ Llama 2 13B Neuron
+ Llama 2 70B
+ Llama 2 70B Chat
+ Llama 2 7B
+ Llama 2 7B Chat
+ Llama 2 7B Neuron
+ Mistral 7B
+ RedPajama Base INCITE 3B V1
+ RedPajama Base INCITE 7B V1
+ RedPajama INCITE Chat 3B V1
+ RedPajama INCITE Chat 7B V1
+ RedPajama INCITE Instruct 3B V1
+ RedPajama INCITE Instruct 7B V1

## Préparation et chargement des données d’entraînement pour le peaufinage sur instructions
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-prepare-data"></a>

Les données d’entraînement pour le peaufinage sur instructions doivent être fournies au format de fichier texte JSON Lines, où chaque ligne est un dictionnaire. Toutes les données d’entraînement doivent se trouver dans un seul dossier. Le dossier peut inclure plusieurs fichiers .jsonl. 

Le dossier d’entraînement peut également inclure un modèle de fichier JSON (`template.json`) qui décrit les formats d’entrée et de sortie de vos données. Si aucun fichier modèle n’est fourni, le fichier modèle suivant est utilisé : 

```
{
  "prompt": "Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request.\n\n### Instruction:\n{instruction}\n\n### Input:\n{context}",
  "completion": "{response}"
}
```

Selon le fichier `template.json`, chaque entrée .jsonl des données d’entraînement doit inclure les champs `{instruction}`, `{context}` et `{response}`. 

Si vous fournissez un fichier JSON de modèle personnalisé, utilisez les clés `"prompt"` et `"completion"` pour définir vos propres champs obligatoires. Selon le fichier JSON de modèle personnalisé, chaque entrée .jsonl des données d’entraînement doit inclure les champs `{question}`, `{context}`, et `{answer}` :

```
{
  "prompt": "question: {question} context: {context}",
  "completion": "{answer}"
}
```

### Fractionnement des données pour l’entraînement et les tests
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-split-data"></a>

Vous pouvez éventuellement fournir un autre dossier contenant les données de validation. Ce dossier doit également inclure un ou plusieurs fichiers .jsonl. Si aucun jeu de données de validation n’est fourni, une quantité définie de données d’entraînement est mise de côté à des fins de validation. Vous pouvez ajuster le pourcentage de données d’entraînement utilisé pour la validation lorsque vous choisissez les hyperparamètres pour le peaufinage de votre modèle. 

### Chargement de données de peaufinage sur Amazon S3
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-upload-data"></a>

Chargez les données que vous avez préparées sur Amazon Simple Storage Service (Amazon S3) afin de les utiliser lors de la mise au point d'un modèle de base. JumpStart Vous pouvez utiliser les commandes suivantes pour charger vos données :

```
from sagemaker.s3 import S3Uploader
import sagemaker
import random

output_bucket = sagemaker.Session().default_bucket()
local_data_file = "train.jsonl"
train_data_location = f"s3://{output_bucket}/dolly_dataset"
S3Uploader.upload(local_data_file, train_data_location)
S3Uploader.upload("template.json", train_data_location)
print(f"Training data: {train_data_location}")
```

## Création d’une tâche d’entraînement pour le peaufinage sur instructions
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-train"></a>

Une fois vos données chargées sur Amazon S3, vous pouvez affiner et déployer votre modèle de JumpStart base. Pour optimiser votre modèle dans Studio, consultez [Peaufinage d’un modèle dans Studio](jumpstart-foundation-models-use-studio-updated-fine-tune.md). Pour affiner votre modèle à l'aide du SageMaker Python SDK, consultez. [Peaufinage des modèles de fondation accessibles au public à l’aide de la classe `JumpStartEstimator`](jumpstart-foundation-models-use-python-sdk-estimator-class.md)

## Exemples de blocs-notes
<a name="jumpstart-foundation-models-fine-tuning-instruction-based-examples"></a>

Pour plus d’informations sur le peaufinage sur instructions, consultez les exemples de blocs-notes suivants :
+ [Réglez avec précision les modèles LLa MA 2 sur JumpStart](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/llama-2-finetuning.html)
+ [Présentation de SageMaker JumpStart - Génération de texte avec les modèles Mistral](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/mistral-7b-instruction-domain-adaptation-finetuning.html)
+ [Présentation de SageMaker JumpStart - Génération de texte avec les modèles Falçon](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/falcon-7b-instruction-domain-adaptation-finetuning.html)
+ [SageMaker JumpStart Modèles de base - Réglage précis des HuggingFace instructions Text2Text](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/instruction-fine-tuning-flan-t5.html)

# Génération à enrichissement contextuel (RAG)
<a name="jumpstart-foundation-models-customize-rag"></a>

Les modèles de fondation sont généralement entraînés hors connexion, ce qui les rend indépendants des données créées après l'entraînement du modèle. De plus, les modèles de fondation sont entraînés sur des corps de domaines très généraux, ce qui les rend moins efficaces pour les tâches spécifiques à un domaine. Vous pouvez utiliser la génération augmentée de récupération (RAG) pour récupérer des données en dehors d'un modèle de fondation et augmenter vos invites en ajoutant les données récupérées pertinentes dans leur contexte. Pour plus d'informations sur les architectures de modèles RAG, consultez [Génération augmentée de récupération pour les tâches NLP nécessitant beaucoup de connaissances](https://arxiv.org/abs/2005.11401) (langue française non garantie).

Avec RAG, les données externes utilisées pour compléter vos instructions peuvent provenir de plusieurs sources de données, telles que des référentiels de documents, des bases de données ou. APIs La première étape consiste à convertir vos documents et toutes les requêtes utilisateurs dans un format compatible pour effectuer une recherche pertinente. Pour rendre les formats compatibles, une collection de documents, ou bibliothèque de connaissances, et les requêtes soumises par les utilisateurs sont converties en représentations numériques à l'aide de modèles de langue d'incorporation. L'*incorporation* est le processus par lequel le texte est représenté numériquement dans un espace vectoriel. Les architectures de modèles RAG comparent les incorporations des requêtes utilisateurs dans le vecteur de la bibliothèque de connaissances. L'invite utilisateur d'origine est ensuite ajoutée avec le contexte pertinent provenant de documents similaires de la bibliothèque de connaissances. Cette invite augmentée est ensuite envoyée au modèle de fondation. Vous pouvez mettre à jour les bibliothèques de connaissances et leurs incorporations pertinentes de manière asynchrone.

 ![\[A model architecture diagram of Retrieval Augmented Generation (RAG).\]](http://docs.aws.amazon.com/fr_fr/sagemaker/latest/dg/images/jumpstart/jumpstart-fm-rag.jpg) 

Le document extrait doit être suffisamment grand pour contenir un contexte utile permettant d’augmenter l’invite, mais suffisamment petit pour être adapté à la longueur de séquence maximale de l’invite. Vous pouvez utiliser des JumpStart modèles spécifiques aux tâches, tels que le modèle General Text Embeddings (GTE) deHugging Face, pour fournir les intégrations de vos instructions et des documents de la bibliothèque de connaissances. Après avoir comparé l’invite et les vectorisations pour trouver les documents les plus pertinents, construisez une nouvelle invite avec le contexte supplémentaire. Transmettez ensuite l’invite augmentée à un modèle de génération de texte de votre choix. 

## Exemples de blocs-notes
<a name="jumpstart-foundation-models-customize-rag-examples"></a>

Pour plus d’informations sur les solutions de modèles de fondation RAG, consultez les exemples de blocs-notes suivants : 
+ [Génération augmentée par extraction : réponse aux questions à l'aide de modèles de génération LangChain et d'intégration de Cohere à partir de SageMaker JumpStart](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_Cohere+langchain_jumpstart.html)
+ [Génération augmentée par extraction : réponse aux questions à l'aide de LLama -2, Pinecone et d'un ensemble de données personnalisé](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_pinecone_llama-2_jumpstart.html)
+ [Génération augmentée par extraction : réponse aux questions basée sur un ensemble de données personnalisé avec une bibliothèque open source LangChain ](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_langchain_jumpstart.html)
+ [Génération augmentée de récupération : réponse aux questions en fonction d'un jeu de données personnalisé](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_jumpstart_knn.html) (langue française non garantie)
+ [Retrieval-Augmented Generation: Question Answering using Llama-2 and Text Embedding Models](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/question_answering_text_embedding_llama-2_jumpstart.html)
+ [Amazon SageMaker JumpStart - Intégration de texte et similarité de phrases](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/jumpstart-foundation-models/question_answering_retrieval_augmented_generation/text-embedding-sentence-similarity.html)

Vous pouvez cloner le [référentiel d'exemples Amazon SageMaker AI](https://github.com/aws/amazon-sagemaker-examples/tree/main/introduction_to_amazon_algorithms/jumpstart-foundation-models) pour exécuter les exemples de modèles de JumpStart base disponibles dans l'environnement Jupyter de votre choix dans Studio. Pour plus d'informations sur les applications que vous pouvez utiliser pour créer et accéder à Jupyter dans SageMaker AI, consultez. [Applications prises en charge dans Amazon SageMaker Studio](studio-updated-apps.md)