Mistral-NeMo-Instruct-2407 en Mistral-NeMo-Base-2407 zijn nu beschikbaar op SageMaker JumpStart

Like
vond

Datum:

Vandaag zijn we verheugd om dat aan te kondigen Mistral-NeMo-Basis-2407 en Mistral-NeMo-Instruct-2407—twaalf miljard parameter grote taalmodellen van Mistral-AI die uitblinken in het genereren van tekst - zijn beschikbaar voor klanten via Amazon SageMaker JumpStart. U kunt deze modellen uitproberen met SageMaker JumpStart, een machine learning (ML) hub die toegang biedt tot algoritmen en modellen die met één klik kunnen worden geïmplementeerd voor het uitvoeren van inferentie. In dit bericht laten we zien hoe u de modellen Mistral-NeMo-Instruct-2407 en Mistral-NeMo-Base-2407 kunt ontdekken, implementeren en gebruiken voor verschillende real-world use cases.

Overzicht van Mistral-NeMo-Instruct-2407 en Mistral-NeMo-Base-2407

Mistral NeMo, een krachtig 12B-parametermodel dat is ontwikkeld door samenwerking tussen Mistral AI en NVIDIA en is uitgebracht onder de Apache 2.0-licentie, is nu beschikbaar op SageMaker JumpStart. Dit model vertegenwoordigt een aanzienlijke vooruitgang in meertalige AI-mogelijkheden en toegankelijkheid.

Belangrijkste kenmerken en mogelijkheden

Mistral NeMo beschikt over een 128k token context window, wat verwerking van uitgebreide lange content mogelijk maakt. Het model toont sterke prestaties in redeneren, wereldkennis en coderingsnauwkeurigheid. Zowel vooraf getrainde basis- als instructie-afgestemde checkpoints zijn beschikbaar onder de Apache 2.0-licentie, wat het toegankelijk maakt voor onderzoekers en ondernemingen. De kwantificeringsbewuste training van het model faciliteert optimale FP8-inferentieprestaties zonder afbreuk te doen aan de kwaliteit.

Meertalige ondersteuning

Mistral NeMo is ontworpen voor wereldwijde toepassingen, met sterke prestaties in meerdere talen, waaronder Engels, Frans, Duits, Spaans, Italiaans, Portugees, Chinees, Japans, Koreaans, Arabisch en Hindi. Deze meertalige mogelijkheid, gecombineerd met ingebouwde functieaanroepen en een uitgebreid contextvenster, helpt geavanceerde AI toegankelijker te maken in uiteenlopende taalkundige en culturele landschappen.

Tekken: Geavanceerde tokenisatie

Het model gebruikt Tekken, een innovatieve tokenizer gebaseerd op TikToken. Getraind in meer dan 100 talen, biedt Tekken verbeterde compressie-efficiëntie voor natuurlijke taaltekst en broncode.

Overzicht van SageMaker JumpStart

SageMaker JumpStart is een volledig beheerde service die state-of-the-art basismodellen biedt voor verschillende use cases, zoals content writing, codegeneratie, vraagbeantwoording, copywriting, samenvatting, classificatie en informatieopvraging. Het biedt een verzameling vooraf getrainde modellen die u snel kunt implementeren, waardoor de ontwikkeling en implementatie van ML-applicaties wordt versneld. Een van de belangrijkste componenten van SageMaker JumpStart is de Model Hub, die een uitgebreide catalogus biedt van vooraf getrainde modellen, zoals DBRX, voor verschillende taken.

U kunt nu beide Mistral NeMo-modellen met een paar klikken ontdekken en implementeren in Amazon SageMaker Studio of programmatisch via de SageMaker Python SDK, waarmee u modelprestaties en machine learning-bewerkingen (MLOps) kunt afleiden met Amazon Sage Maker functies zoals Amazon SageMaker-pijpleidingen, Amazon SageMaker-foutopsporing, of containerlogs. Het model wordt geïmplementeerd in een beveiligde AWS-omgeving en onder uw virtuele privécloud (VPC)-controles, wat helpt bij het ondersteunen van gegevensbeveiliging.

Voorwaarden

Om beide NeMo-modellen in SageMaker JumpStart uit te proberen, hebt u de volgende vereisten nodig:

Ontdek Mistral NeMo-modellen in SageMaker JumpStart

U kunt NeMo-modellen openen via SageMaker JumpStart in de SageMaker Studio UI en de SageMaker Python SDK. In deze sectie bespreken we hoe u de modellen in SageMaker Studio kunt ontdekken.

SageMaker Studio is een geïntegreerde ontwikkelomgeving (IDE) die een enkele webgebaseerde visuele interface biedt waar u toegang hebt tot speciaal gebouwde tools om ML-ontwikkelingsstappen uit te voeren, van het voorbereiden van gegevens tot het bouwen, trainen en implementeren van uw ML-modellen. Voor meer informatie over hoe u aan de slag kunt gaan en SageMaker Studio kunt instellen, zie Amazon SageMaker Studio.

In SageMaker Studio heeft u toegang tot SageMaker JumpStart door te kiezen snelle start in het navigatievenster.

Kies dan KnuffelenGezicht.

Vanaf de SageMaker JumpStart landingspagina kunt u zoeken naar NeMo in het zoekvak. De zoekresultaten zullen Mistral NeMo Instrueren en Mistral NeMo-basis.

U kunt de modelkaart kiezen om details over het model te bekijken, zoals licentie, gegevens die worden gebruikt om te trainen en hoe u het model kunt gebruiken. Ook vindt u de Implementeren om het model te implementeren en een eindpunt te maken.

Implementeer het model in SageMaker JumpStart

Implementatie start wanneer u op de knop Implementeren klikt. Nadat de implementatie is voltooid, ziet u dat er een eindpunt is gemaakt. U kunt het eindpunt testen door een voorbeeld van een inferentieverzoekpayload door te geven of door de testoptie te selecteren met behulp van de SDK. Wanneer u de optie selecteert om de SDK te gebruiken, ziet u voorbeeldcode die u kunt gebruiken in de notebook-editor van uw keuze in SageMaker Studio.

Implementeer het model met de SageMaker Python SDK

Om te implementeren met behulp van de SDK, beginnen we met het selecteren van het Mistral NeMo Base-model, gespecificeerd door de model_id met de waarde huggingface-llm-mistral-nemo-base-2407. U kunt uw keuze van de geselecteerde modellen op SageMaker implementeren met de volgende code. Op dezelfde manier kunt u NeMo Instruct implementeren met behulp van zijn eigen model-ID.

from sagemaker.jumpstart.model import JumpStartModel 

accept_eula = True 

model = JumpStartModel(model_id="huggingface-llm-mistral-nemo-base-2407") 
predictor = model.deploy(accept_eula=accept_eula)

Hiermee wordt het model op SageMaker geïmplementeerd met standaardconfiguraties, inclusief het standaardinstantietype en standaard VPC-configuraties. U kunt deze configuraties wijzigen door niet-standaardwaarden op te geven in JumpStart-model. De EULA-waarde moet expliciet worden gedefinieerd als True om de eindgebruikerslicentieovereenkomst (EULA) te accepteren. Zorg er ook voor dat u de servicelimiet op accountniveau hebt voor het gebruik van ml.g6.12xlarge voor eindpuntgebruik als een of meer instanties. U kunt de instructies in volgen AWS-servicequota om een ​​verhoging van het servicequotum aan te vragen. Nadat het is geïmplementeerd, kunt u inferentie uitvoeren tegen het geïmplementeerde eindpunt via de SageMaker-predictor:

payload = {
    "messages": [
        {
            "role": "user",
            "content": "Hello"
        }
    ],
    "max_tokens": 1024,
    "temperature": 0.3,
    "top_p": 0.9,
}

response = predictor.predict(payload)['choices'][0]['message']['content'].strip()
print(response)

Belangrijk om hier op te merken is dat we de djl-lmi v12 inferentiecontainer, dus we volgen de groot model inferentie chat voltooiingen API schema bij het verzenden van een payload naar zowel Mistral-NeMo-Base-2407 als Mistral-NeMo-Instruct-2407.

Mistral-NeMo-Basis-2407

U kunt met het Mistral-NeMo-Base-2407-model interacteren zoals met andere standaard tekstgeneratiemodellen, waarbij het model een invoersequentie verwerkt en voorspelde volgende woorden in de sequentie uitvoert. In deze sectie bieden we enkele voorbeeldprompts en voorbeelduitvoer. Houd er rekening mee dat het basismodel niet instructie-fine-tuned is.

Tekst voltooiing

Taken waarbij het volgende token moet worden voorspeld of ontbrekende tokens in een reeks moeten worden ingevuld:

payload = {
    "messages": [
        {
            "role": "user",
            "content": "The capital of France is ___."
        }
    ],
    "max_tokens": 10,
    "temperature": 0.3,
    "top_p": 0.9,
}

response = predictor.predict(payload)['choices'][0]['message']['content'].strip()
print(response)

Het volgende is de uitvoer:

Paris
The capital of France is Paris.

Mistral NeMo Instrueren

Het Mistral-NeMo-Instruct-2407-model is een snelle demonstratie dat het basismodel kan worden verfijnd om overtuigende prestaties te bereiken. U kunt de gegeven stappen volgen om het model te implementeren en de model_id waarde van huggingface-llm-mistral-nemo-instruct-2407 gebruiken.

Het instructiegerichte NeMo-model kan worden getest met de volgende taken:

Codegeneratie

Mistral NeMo Instruct toont benchmarked strengths voor coderingstaken. Mistral stelt dat hun Tekken tokenizer voor NeMo ongeveer 30% efficiënter is in het comprimeren van broncode. Zie bijvoorbeeld de volgende code:

payload = {
    "messages": [
        {
            "role": "user",
            "content": """Create a Binary Search Tree class with methods for insertion, searching, and in-order traversal."""
        }
    ],
    "max_tokens": 2048,
    "temperature": 0.3,
    "top_p": 0.9,
}
text_response = predictor.predict(payload)['choices'][0]['message']['content'].strip()
tokens = predictor.predict(payload)['usage']
print(text_response)
print(tokens)

Het volgende is de uitvoer:

class Node:
    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None

class BinarySearchTree:
    def __init__(self):
        self.root = None

    def insert(self, key):
        if not self.root:
            self.root = Node(key)
        else:
            self._insert(self.root, key)

    def _insert(self, node, key):
        if key < node.key:
            if node.left:
                self._insert(node.left, key)
            else:
                node.left = Node(key)
        elif key > node.key:
            if node.right:
                self._insert(node.right, key)
            else:
                node.right = Node(key)

    def search(self, key):
        return self._search(self.root, key)

    def _search(self, node, key):
        if not node or node.key == key:
            return node

        if key < node.key:
            return self._search(node.left, key)
        else:
            return self._search(node.right, key)

    def inorder_traversal(self):
        self._inorder_traversal(self.root)
        print()

    def _inorder_traversal(self, node):
        if node:
            self._inorder_traversal(node.left)
            print(node.key, end=" ")
            self._inorder_traversal(node.right)

# Example usage:
bst = BinarySearchTree()
bst.insert(50)
bst.insert(30)
bst.insert(20)
bst.insert(40)
bst.insert(70)
bst.insert(60)
bst.insert(80)

print("In-order traversal:")
bst.inorder_traversal()  # Output: 20 30 40 50 60 70 80

print(f"Search 40: {bst.search(40).key if bst.search(40) else 'Not found'}")
print(f"Search 90: {bst.search(90).key if bst.search(90) else 'Not found'}")
{'prompt_tokens': 22, 'completion_tokens': 433, 'total_tokens': 455}

Het model laat sterke prestaties zien bij codegeneratietaken, met de completion_tokens biedt inzicht in hoe de codecompressie van de tokenizer effectief de representatie van programmeertalen optimaliseert met minder tokens.

Geavanceerde wiskunde en redeneren

Het model rapporteert ook sterktes in wiskundige en redeneernauwkeurigheid. Zie bijvoorbeeld de volgende code:

payload = {
    "messages": [
        {   "role": "system", 
            "content": "You are an expert in mathematics and reasoning. Your role is to provide examples, explanations, and insights related to mathematical concepts, problem-solving techniques, and logical reasoning.",
            "role": "user",
            "content": """Calculating the orbital period of an exoplanet:
             Given: An exoplanet orbits its star at a distance of 2.5 AU (Astronomical Units). The star has a mass of 1.2 solar masses.
             Task: Calculate the orbital period of the exoplanet in Earth years."""
        }
    ],
    "max_tokens": 2048,
    "temperature": 0.3,
    "top_p": 0.9,
}
response = predictor.predict(payload)['choices'][0]['message']['content'].strip()
print(response)

Het volgende is de uitvoer:

To calculate the orbital period of an exoplanet, we can use Kepler's Third Law, which states that the square of the orbital period (P) is directly proportional to the cube of the semi-major axis (a) of the orbit and inversely proportional to the mass (M) of the central body. The formula is:

P^2 = (4 * π^2 * a^3) / (G * M)

where:
- P is the orbital period in years,
- a is the semi-major axis in AU (Astronomical Units),
- G is the gravitational constant (6.67430 × 10^-11 m^3 kg^-1 s^-2),
- M is the mass of the star in solar masses.

First, we need to convert the mass of the star from solar masses to kilograms. The mass of the Sun is approximately 1.98847 × 10^30 kg. So, the mass of the star is:

M = 1.2 * 1.98847 × 10^30 kg = 2.386164 × 10^30 kg

Now, we can plug the values into Kepler's Third Law:

P^2 = (4 * π^2 * (2.5 AU)^3) / (G * M)

Since 1 AU is approximately 1.496 × 10^11 meters, the semi-major axis in meters is:

a = 2.5 AU * 1.496 × 10^11 m/AU = 3.74 × 10^12 m

Now, we can calculate P^2:

P^2 = (4 * π^2 * (3.74 × 10^12 m)^3) / (6.67430 × 10^-11 m^3 kg^-1 s^-2 * 2.386164 × 10^30 kg)

P^2 = (4 * π^2 * 5.62 × 10^36 m^3) / (1.589 × 10^20 m^3 kg^-1 s^-2)

P^2 = (4 * π^2 * 5.62 × 10^36 m^3) / (1.589 × 10^20 m^3 kg^-1 s^-2)

P^2 = 4.15 × 10^16 s^2

Now, we take the square root to find the orbital period in seconds:

P = √(4.15 × 10^16 s^2) ≈ 2.04 × 10^8 s

Finally, we convert the orbital period from seconds to Earth years (1 Earth year = 31,557,600 seconds):

P = (2.04 × 10^8 s) / (31,557,600 s/year) ≈ 6.47 years

Therefore, the orbital period of the exoplanet is approximately 6.47 Earth years.

Taalvertaalopdracht

In deze taak testen we Mistral's nieuwe Tekken tokenizer. Mistral stelt dat de tokenizer twee keer en drie keer efficiënter is in het comprimeren van respectievelijk Koreaans en Arabisch.

Hier gebruiken we een stukje tekst voor vertaling:

text= """
"How can our business leverage Mistral NeMo with our new RAG application?"
"What is our change management strategy once we roll out this new application to the field?
"""

We hebben onze opdracht gegeven om het model instructies te geven over de vertaling naar het Koreaans en Arabisch:

prompt=f"""

text={text}

Translate the following text into these languages:

1. Korean
2. Arabic

Label each language section accordingly""".format(text=text)

Vervolgens kunnen we de payload instellen:

payload = {
    "messages": [
        {   "role": "system", 
            "content": "You are an expert in language translation.",
            "role": "user",
            "content": prompt
        }
    ],
    "max_tokens": 2048,
    "temperature": 0.3,
    "top_p": 0.9,
}
#response = predictor.predict(payload)
text_response = predictor.predict(payload)['choices'][0]['message']['content'].strip()
tokens = predictor.predict(payload)['usage']
print(text_response)
print(tokens)

Het volgende is de uitvoer:

**1. Korean**

- "우리의 비즈니스가 Mistral NeMo를 어떻게 활용할 수 있을까요?"
- "이 새 애플리케이션을 현장에 롤아웃할 때 우리의 변화 관리 전략은 무엇입니까?"

**2. Arabic**

- "كيف يمكن لعمليتنا الاست من Mistral NeMo مع تطبيق RAG الجديد؟"
- "ما هو استراتيجيتنا في إدارة التغيير بعد تفعيل هذا التطبيق الجديد في الميدان؟"
{'prompt_tokens': 61, 'completion_tokens': 243, 'total_tokens': 304}

De vertaalresultaten laten zien hoe het aantal completion_tokens gebruikt is aanzienlijk verminderd, zelfs voor taken die doorgaans token-intensief zijn, zoals vertalingen met talen als Koreaans en Arabisch. Deze verbetering is mogelijk gemaakt door de optimalisaties die de Tekken-tokenizer biedt. Een dergelijke vermindering is met name waardevol voor token-intensieve toepassingen, waaronder samenvatting, taalgeneratie en multi-turn-conversaties. Door de token-efficiëntie te verbeteren, maakt de Tekken-tokenizer het mogelijk om meer taken af ​​te handelen binnen dezelfde resourcebeperkingen, waardoor het een onschatbaar hulpmiddel is voor het optimaliseren van workflows waarbij tokengebruik direct van invloed is op prestaties en kosten.

Opruimen

Nadat u klaar bent met het uitvoeren van het notebook, moet u ervoor zorgen dat u alle resources verwijdert die u in het proces hebt gemaakt om extra facturering te voorkomen. Gebruik de volgende code:

predictor.delete_model()
predictor.delete_endpoint()

Conclusie

In dit bericht hebben we laten zien hoe je aan de slag kunt met Mistral NeMo Base en Instruct in SageMaker Studio en hoe je het model kunt implementeren voor inferentie. Omdat basismodellen vooraf zijn getraind, kunnen ze helpen de kosten voor training en infrastructuur te verlagen en maatwerk voor jouw use case mogelijk maken. Bezoek SageMaker JumpStart in SageMaker Studio nu om te beginnen.

Voor meer Mistral-bronnen over AWS, bekijk de Mistral-op-AWS GitHub-repository.


Over de auteurs

Niithiyn Vijeaswaran is een Generative AI Specialist Solutions Architect bij het Third-Party Model Science-team bij AWS. Zijn aandachtsgebied is generatieve AI en AWS AI Accelerators. Hij heeft een bachelordiploma in computerwetenschappen en bio-informatica.

Preston Tuggle is een Sr. Specialist Solutions Architect die werkt aan generatieve AI.

Shan Rai is een Principal Generative AI Specialist bij de AWS World Wide Specialist Organization (WWSO). Hij werkt met klanten in verschillende sectoren om hun meest urgente en innovatieve zakelijke behoeften op te lossen met behulp van de breedte van cloudgebaseerde AI/ML-services die worden geleverd door AWS, inclusief modelaanbiedingen van topaanbieders van basismodellen.

Gerelateerde artikelen

spot_img

Recente artikelen

spot_img