Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Services Web Amazon

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Services Web Amazon

Aujourd'hui, nous sommes ravis d'annoncer que le Mixtral-8x7B le grand modèle de langage (LLM), développé par Mistral AI, est disponible pour les clients via Amazon SageMaker JumpStart à déployer en un clic pour exécuter l'inférence. Le LLM Mixtral-8x7B est un mélange clairsemé pré-entraîné de modèles experts, basé sur une structure de 7 milliards de paramètres avec huit experts par couche de rétroaction. Vous pouvez essayer ce modèle avec SageMaker JumpStart, un hub d'apprentissage automatique (ML) qui donne accès à des algorithmes et des modèles afin que vous puissiez rapidement démarrer avec le ML. Dans cet article, nous expliquons comment découvrir et déployer le modèle Mixtral-8x7B.

Qu'est-ce que Mixtral-8x7B

Mixtral-8x7B est un modèle de base développé par Mistral AI, prenant en charge les textes en anglais, français, allemand, italien et espagnol, avec des capacités de génération de code. Il prend en charge une variété de cas d'utilisation tels que le résumé de texte, la classification, la complétion de texte et la complétion de code. Il se comporte bien en mode chat. Pour démontrer la simplicité de personnalisation du modèle, Mistral AI a également publié un modèle Mixtral-8x7B-instruct pour les cas d'utilisation du chat, affiné à l'aide d'une variété d'ensembles de données de conversation accessibles au public. Les modèles Mixtral ont une grande longueur de contexte pouvant atteindre 32,000 XNUMX jetons.

Mixtral-8x7B offre des améliorations significatives des performances par rapport aux modèles de pointe précédents. Son mélange d'architecture d'experts lui permet d'obtenir de meilleurs résultats de performances sur 9 des 12 tests de traitement du langage naturel (NLP) testés par IA Mistral. Mixtral égale ou dépasse les performances des modèles jusqu'à 10 fois sa taille. En utilisant seulement une fraction des paramètres par jeton, il atteint des vitesses d'inférence plus rapides et un coût de calcul inférieur à celui des modèles denses de tailles équivalentes (par exemple, avec 46.7 milliards de paramètres au total mais seulement 12.9 milliards utilisés par jeton). Cette combinaison de hautes performances, de prise en charge multilingue et d'efficacité informatique fait de Mixtral-8x7B un choix attrayant pour les applications PNL.

Le modèle est mis à disposition sous la licence permissive Apache 2.0, pour une utilisation sans restrictions.

Qu'est-ce que SageMaker JumpStart

Avec SageMaker JumpStart, les praticiens du ML peuvent choisir parmi une liste croissante de modèles de fondation les plus performants. Les praticiens du ML peuvent déployer des modèles de base sur des sites dédiés. Amazon Sage Maker instances dans un environnement isolé en réseau et personnalisez les modèles à l'aide de SageMaker pour la formation et le déploiement des modèles.

Vous pouvez désormais découvrir et déployer Mixtral-8x7B en quelques clics Amazon SageMakerStudio ou par programmation via le SDK SageMaker Python, vous permettant de dériver les performances du modèle et les contrôles MLOps avec des fonctionnalités SageMaker telles que Pipelines Amazon SageMaker, Débogueur Amazon SageMakerou les journaux de conteneur. Le modèle est déployé dans un environnement sécurisé AWS et sous les contrôles de votre VPC, contribuant ainsi à garantir la sécurité des données.

Découvrez les modèles

Vous pouvez accéder aux modèles de base Mixtral-8x7B via SageMaker JumpStart dans l'interface utilisateur de SageMaker Studio et le SDK SageMaker Python. Dans cette section, nous expliquons comment découvrir les modèles dans SageMaker Studio.

SageMaker Studio est un environnement de développement intégré (IDE) qui fournit une interface visuelle Web unique où vous pouvez accéder à des outils spécialement conçus pour effectuer toutes les étapes de développement ML, de la préparation des données à la création, la formation et le déploiement de vos modèles ML. Pour plus de détails sur la façon de démarrer et de configurer SageMaker Studio, reportez-vous à Amazon SageMakerStudio.

Dans SageMaker Studio, vous pouvez accéder à SageMaker JumpStart en choisissant Début de saut dans le volet de navigation.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Depuis la page de destination de SageMaker JumpStart, vous pouvez rechercher « Mixtral » dans la zone de recherche. Vous verrez les résultats de recherche montrant Mixtral 8x7B et Mixtral 8x7B Instruct.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Vous pouvez choisir la fiche de modèle pour afficher les détails du modèle, tels que la licence, les données utilisées pour l'entraînement et la manière de l'utiliser. Vous trouverez également le Déployer , que vous pouvez utiliser pour déployer le modèle et créer un point de terminaison.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.

Déployer un modèle

Le déploiement commence lorsque vous choisissez Déployer. Une fois le déploiement terminé, un point de terminaison a été créé. Vous pouvez tester le point de terminaison en transmettant un exemple de charge utile de demande d'inférence ou en sélectionnant votre option de test à l'aide du SDK. Lorsque vous sélectionnez l'option d'utilisation du SDK, vous verrez un exemple de code que vous pouvez utiliser dans votre éditeur de bloc-notes préféré dans SageMaker Studio.

Pour déployer à l'aide du SDK, nous commençons par sélectionner le modèle Mixtral-8x7B, spécifié par le model_id with value huggingface-llm-mixtral-8x7b. Vous pouvez déployer n'importe lequel des modèles sélectionnés sur SageMaker avec le code suivant. De même, vous pouvez déployer l'instruction Mixtral-8x7B en utilisant son propre ID de modèle :

from sagemaker.jumpstart.model import JumpStartModel model = JumpStartModel(model_id="huggingface-llm-mixtral-8x7b")
predictor = model.deploy()

Cela déploie le modèle sur SageMaker avec les configurations par défaut, y compris le type d'instance par défaut et les configurations VPC par défaut. Vous pouvez modifier ces configurations en spécifiant des valeurs autres que celles par défaut dans Modèle JumpStart.

Une fois déployé, vous pouvez exécuter une inférence sur le point de terminaison déployé via le prédicteur SageMaker :

payload = {"inputs": "Hello!"} predictor.predict(payload)

Exemples d'invites

Vous pouvez interagir avec un modèle Mixtral-8x7B comme n'importe quel modèle de génération de texte standard, dans lequel le modèle traite une séquence d'entrée et génère les mots suivants prédits dans la séquence. Dans cette section, nous fournissons des exemples d'invites.

Génération de code

En utilisant l'exemple précédent, nous pouvons utiliser des invites de génération de code comme celles-ci :

# Code generation
payload = { "inputs": "Write a program to compute factorial in python:", "parameters": { "max_new_tokens": 200, },
}
predictor.predict(payload)

Vous obtenez la sortie suivante:

Input Text: Write a program to compute factorial in python:
Generated Text:
Factorial of a number is the product of all the integers from 1 to that number. For example, factorial of 5 is 1*2*3*4*5 = 120. Factorial of 0 is 1. Factorial of a negative number is not defined. The factorial of a number can be written as n!. For example, 5! = 120. ## Write a program to compute factorial in python ```
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1) print(factorial(5))
``` Output: ```
120
``` ## Explanation: In the above program, we have defined a function called factorial which takes a single argument n. If n is equal to 0, then we return 1. Otherwise, we return n multiplied by the factorial of n-1. We then call the factorial function with the argument 5 and print the result. The output of the program is 120, which is the factorial of 5. ## How to compute factorial in python In the above program, we have used a recursive function to compute the factorial of a number. A recursive function is a function that calls itself. In this case, the factorial function calls itself with the argument n-1. This process continues until n is equal to 0, at which point the function returns 1. The factorial of a number can also be computed using a loop. For example, the following program uses a for loop to compute the factorial of a number: ```
def factorial(n):
result = 1
for i in range(1, n+1):
result *= i
return result

Invite d'analyse des sentiments

Vous pouvez effectuer une analyse des sentiments à l'aide d'une invite comme celle-ci avec Mixtral 8x7B :

payload = { "inputs": """
Tweet: "I hate it when my phone battery dies."
Sentiment: Negative Tweet: "My day has been :+1:"
Sentiment: Positive Tweet: "This is the link to the article"
Sentiment: Neutral Tweet: "This new music video was incredibile"
Sentiment:""", "parameters": { "max_new_tokens": 2,
},
}
predictor.predict(payload)

Vous obtenez la sortie suivante:

Input Text: Tweet: "I hate it when my phone battery dies."
Sentiment: Negative
###
Tweet: "My day has been :+1:"
Sentiment: Positive
###
Tweet: "This is the link to the article"
Sentiment: Neutral
###
Tweet: "This new music video was incredibile"
Sentiment:
Generated Text:  Positive

Invites de réponse aux questions

Vous pouvez utiliser une invite de réponse aux questions comme celle-ci avec Mixtral-8x7B :

# Question answering
payload = { "inputs": "Could you remind me when was the C programming language invented?", "parameters": { "max_new_tokens": 100, },
}
query_endpoint(payload)

Vous obtenez la sortie suivante:

Input Text: Could you remind me when was the C programming language invented?
Generated Text: C was invented in 1972 by Dennis Ritchie at Bell Labs. C is a general-purpose programming language. It was invented to write the UNIX operating system. C is a structured programming language. It is a middle-level language. It is a procedural language. C is a compiled language. It is a portable language. C is a case-sensitive language. It is a free-form language

Instruction Mixtral-8x7B

La version optimisée pour les instructions de Mixtral-8x7B accepte les instructions formatées dans lesquelles les rôles de conversation doivent commencer par une invite utilisateur et alterner entre les instructions utilisateur et l'assistant (réponse modèle). Le format des instructions doit être strictement respecté, sinon le modèle générera des résultats sous-optimaux. Le modèle utilisé pour créer une invite pour le modèle Instruct est défini comme suit :

<s> [INST] Instruction [/INST] Model answer</s> [INST] Follow-up instruction [/INST]]

Notez que <s> et de </s> sont des jetons spéciaux pour le début de chaîne (BOS) et la fin de chaîne (EOS), alors que [INST] et de [/INST] sont des chaînes régulières.

Le code suivant montre comment formater l'invite au format instruction :

from typing import Dict, List def format_instructions(instructions: List[Dict[str, str]]) -> List[str]: """Format instructions where conversation roles must alternate user/assistant/user/assistant/...""" prompt: List[str] = [] for user, answer in zip(instructions[::2], instructions[1::2]): prompt.extend(["<s>", "[INST] ", (user["content"]).strip(), " [/INST] ", (answer["content"]).strip(), "</s>"]) prompt.extend(["<s>", "[INST] ", (instructions[-1]["content"]).strip(), " [/INST] ","</s>"]) return "".join(prompt) def print_instructions(prompt: str, response: str) -> None: bold, unbold = '33[1m', '33[0m' print(f"{bold}> Input{unbold}n{prompt}nn{bold}> Output{unbold}n{response[0]['generated_text']}n")

Récupération de connaissances

Vous pouvez utiliser le code suivant pour une invite de récupération de connaissances :

instructions = [{"role": "user", "content": "what is the recipe of mayonnaise?"}]
prompt = format_instructions(instructions)
payload = { "inputs": prompt, "parameters": {"max_new_tokens": 315, "do_sample": True}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

Vous obtenez la sortie suivante:

> Input
<s>[INST] what is the recipe of mayonnaise? [/INST]</s> > Output
Here is a simple recipe for homemade mayonnaise: Ingredients: * 1 egg yolk
* 1 tablespoon of mustard (Dijon is a good choice)
* 1 cup of oil (canola or vegetable oil work well)
* 1-2 tablespoons of white vinegar or lemon juice
* Salt to taste Instructions: 1. In a medium bowl, whisk together the egg yolk and mustard. It is important that these ingredients are at room temperature.
2. Start adding the oil drop by drop, whisking continuously. This step is crucial to ensure that the mayonnaise emulsifies and does not separate.
3. Once you have added about a quarter of the oil and the mixture has thickened, you can start adding the oil in a thin stream, still whisking constantly.
4. When all the oil has been incorporated and the mayonnaise is thick, whisk in the vinegar or lemon juice and salt to taste.
5. If the mayonnaise is too thick, you can thin it with a little water.
6. Store the mayonnaise in the refrigerator and use within a few days. Note: It is important to use pasteurized eggs or egg yolks when making homemade mayonnaise to reduce the risk of foodborne illness.

Codage

Les modèles Mixtral peuvent démontrer des atouts comparés pour les tâches de codage, comme le montre le code suivant :

instructions = [
{ "role": "user", "content": "In Bash, how do I list all text files in the current directory (excluding subdirectories) that have been modified in the last month?",
}
]
prompt = format_instructions(instructions)
payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "do_sample": True, "temperature": 0.2}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

Vous obtenez la sortie suivante:

> Input
<s>[INST] In Bash, how do I list all text files in the current directory (excluding subdirectories) that have been modified in the last month? [/INST]</s>
> Output
ef{0.15cm} To list all text files in the current directory that have been modified in the last month, you can use a combination of the `find` and `grep` commands in Bash. Here's the command you're looking for: ```bash
find . -maxdepth 1 -type f -name "*.txt" -mtime -30
``` Let's break down this command: - `find .` starts a search in the current directory.
- `-maxdepth 1` limits the search to the current directory only (excluding subdirectories).
- `-type f` specifies that you're looking for files.
- `-name "*.txt"` filters the results to only include files with a `.txt` extension.
- `-mtime -30` filters the results to only include files modified within the last 30 days. This command will output the paths of all text files in the current directory that have been modified in the last month.

Mathématiques et raisonnement

Les modèles mixtes font également état de points forts en termes de précision mathématique :

instructions = [
{ "role": "user", "content": "I bought an ice cream for 6 kids. Each cone was $1.25 and I paid with a $10 bill. How many dollars did I get back? Explain first before answering.",
}
]
prompt = format_instructions(instructions)
payload = { "inputs": prompt, "parameters": {"max_new_tokens": 600, "do_sample": True, "temperature": 0.2}
}
response=predictor.predict(payload)
print_instructions(prompt, response)

Les modèles mixtral peuvent fournir une compréhension comme le montre le résultat suivant avec la logique mathématique :

> Input
<s>[INST] I bought an ice cream for 6 kids. Each cone was $1.25 and I paid with a $10 bill. How many dollars did I get back? Explain first before answering. [/INST] </s>
> Output
First, let's calculate the total cost of the ice cream cones. Since each cone costs $1.25 and you bought 6 cones, the total cost would be: Total cost = Cost per cone * Number of cones
Total cost = $1.25 * 6
Total cost = $7.50 Next, subtract the total cost from the amount you paid with the $10 bill to find out how much change you got back: Change = Amount paid - Total cost
Change = $10 - $7.50
Change = $2.50 So, you got $2.50 back.

Nettoyer

Une fois que vous avez terminé d'exécuter le bloc-notes, supprimez toutes les ressources que vous avez créées au cours du processus afin que votre facturation soit arrêtée. Utilisez le code suivant :

predictor.delete_model()
predictor.delete_endpoint()

Conclusion

Dans cet article, nous vous avons montré comment démarrer avec Mixtral-8x7B dans SageMaker Studio et déployer le modèle pour l'inférence. Étant donné que les modèles de base sont pré-entraînés, ils peuvent contribuer à réduire les coûts de formation et d’infrastructure et permettre une personnalisation adaptée à votre cas d’utilisation. Visitez SageMaker JumpStart dans SageMaker Studio dès maintenant pour commencer.

Resources


À propos des auteurs

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Rachna Chadha est architecte principal de solutions AI/ML dans les comptes stratégiques chez AWS. Rachna est une optimiste qui croit qu'une utilisation éthique et responsable de l'IA peut améliorer la société à l'avenir et apporter la prospérité économique et sociale. Dans ses temps libres, Rachna aime passer du temps avec sa famille, faire de la randonnée et écouter de la musique.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Dr Kyle Ulrich est un scientifique appliqué avec le Algorithmes intégrés d'Amazon SageMaker équipe. Ses intérêts de recherche comprennent les algorithmes d'apprentissage automatique évolutifs, la vision par ordinateur, les séries chronologiques, les processus bayésiens non paramétriques et gaussiens. Son doctorat est de l'Université Duke et il a publié des articles dans NeurIPS, Cell et Neuron.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Christophe Whitten est un développeur de logiciels au sein de l'équipe JumpStart. Il aide à mettre à l'échelle la sélection de modèles et à intégrer des modèles avec d'autres services SageMaker. Chris est passionné par l'accélération de l'omniprésence de l'IA dans une variété de domaines commerciaux.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Dr Fabio Nonato de Paula est un directeur principal chez Specialist GenAI SA, qui aide les fournisseurs de modèles et les clients à faire évoluer l'IA générative dans AWS. Fabio a une passion pour démocratiser l’accès à la technologie d’IA générative. En dehors du travail, vous pouvez trouver Fabio conduisant sa moto dans les collines de la vallée de Sonoma ou lisant ComiXology.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Dr Ashish Khetan est un scientifique appliqué senior avec les algorithmes intégrés d'Amazon SageMaker et aide à développer des algorithmes d'apprentissage automatique. Il a obtenu son doctorat à l'Université de l'Illinois à Urbana-Champaign. Il est un chercheur actif en apprentissage automatique et en inférence statistique, et a publié de nombreux articles dans les conférences NeurIPS, ICML, ICLR, JMLR, ACL et EMNLP.

Mixtral-8x7B est désormais disponible dans Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Recherche verticale. Aï.Karl Albertsen dirige les produits, l'ingénierie et la science pour les algorithmes Amazon SageMaker et JumpStart, le centre d'apprentissage automatique de SageMaker. Il est passionné par l'application de l'apprentissage automatique pour libérer de la valeur commerciale.

Horodatage:

Plus de Apprentissage automatique AWS