Mistral-NeMo-Instruct-2407 und Mistral-NeMo-Base-2407 sind jetzt auf SageMaker JumpStart verfügbar

Like
Zufrieden

Datum:

Heute freuen wir uns, dies bekannt zu geben Mistral-NeMo-Base-2407 und Mistral-NeMo-Instruct-2407—zwölf Milliarden Parameter große Sprachmodelle aus Mistral-KI die sich durch hervorragende Textgenerierung auszeichnen – stehen den Kunden zur Verfügung über Amazon SageMaker-JumpStart. Sie können diese Modelle mit SageMaker JumpStart ausprobieren, einem Hub für maschinelles Lernen (ML), der Zugriff auf Algorithmen und Modelle bietet, die mit einem Klick bereitgestellt werden können, um Inferenzen auszuführen. In diesem Beitrag zeigen wir Ihnen, wie Sie die Modelle Mistral-NeMo-Instruct-2407 und Mistral-NeMo-Base-2407 für eine Vielzahl realer Anwendungsfälle entdecken, bereitstellen und verwenden.

Übersicht über Mistral-NeMo-Instruct-2407 und Mistral-NeMo-Base-2407

Mistral NeMo, ein leistungsstarkes 12B-Parametermodell, das in Zusammenarbeit zwischen Mistral AI und NVIDIA entwickelt und unter der Apache 2.0-Lizenz veröffentlicht wurde, ist jetzt auf SageMaker JumpStart verfügbar. Dieses Modell stellt einen bedeutenden Fortschritt in den mehrsprachigen KI-Funktionen und der Zugänglichkeit dar.

Wichtige Merkmale und Funktionen

Mistral NeMo verfügt über ein 128k-Token-Kontextfenster, das die Verarbeitung umfangreicher Langforminhalte ermöglicht. Das Modell zeigt eine starke Leistung in den Bereichen Argumentation, Weltwissen und Codiergenauigkeit. Sowohl vorab trainierte Basis- als auch anweisungsoptimierte Checkpoints sind unter der Apache 2.0-Lizenz verfügbar und damit für Forscher und Unternehmen zugänglich. Das quantisierungsbewusste Training des Modells ermöglicht eine optimale FP8-Inferenzleistung ohne Kompromisse bei der Qualität.

Mehrsprachige Unterstützung

Mistral NeMo ist für globale Anwendungen konzipiert und bietet eine starke Leistung in mehreren Sprachen, darunter Englisch, Französisch, Deutsch, Spanisch, Italienisch, Portugiesisch, Chinesisch, Japanisch, Koreanisch, Arabisch und Hindi. Diese mehrsprachige Funktion, kombiniert mit integrierten Funktionsaufrufen und einem umfangreichen Kontextfenster, trägt dazu bei, fortschrittliche KI in unterschiedlichen sprachlichen und kulturellen Landschaften zugänglicher zu machen.

Tekken: Erweiterte Tokenisierung

Das Modell verwendet Tekken, einen innovativen Tokenizer auf Basis von Tiktoken. Tekken wurde für über 100 Sprachen trainiert und bietet eine verbesserte Komprimierungseffizienz für natürlichsprachige Texte und Quellcode.

SageMaker JumpStart-Übersicht

SageMaker JumpStart ist ein vollständig verwalteter Dienst, der hochmoderne Basismodelle für verschiedene Anwendungsfälle wie Inhaltserstellung, Codegenerierung, Beantwortung von Fragen, Texterstellung, Zusammenfassung, Klassifizierung und Informationsabruf bietet. Es bietet eine Sammlung vorab trainierter Modelle, die Sie schnell bereitstellen können, wodurch die Entwicklung und Bereitstellung von ML-Anwendungen beschleunigt wird. Eine der Schlüsselkomponenten von SageMaker JumpStart ist der Model Hub, der einen umfangreichen Katalog vorab trainierter Modelle wie DBRX für eine Vielzahl von Aufgaben bietet.

Sie können nun beide Mistral NeMo-Modelle mit wenigen Klicks entdecken und bereitstellen in Amazon SageMaker-Studio oder programmgesteuert über das SageMaker Python SDK, sodass Sie die Leistung von Modellen und die Steuerung von Machine Learning Operations (MLOps) ableiten können mit Amazon Sage Maker Funktionen wie Amazon SageMaker-Pipelines, Amazon SageMaker-Debuggeroder Containerprotokolle. Das Modell wird in einer sicheren AWS-Umgebung und unter der Kontrolle Ihrer Virtual Private Cloud (VPC) bereitgestellt, um die Datensicherheit zu unterstützen.

Voraussetzungen:

Um beide NeMo-Modelle in SageMaker JumpStart auszuprobieren, benötigen Sie die folgenden Voraussetzungen:

Entdecken Sie Mistral NeMo-Modelle in SageMaker JumpStart

Sie können über SageMaker JumpStart in der SageMaker Studio-Benutzeroberfläche und dem SageMaker Python SDK auf NeMo-Modelle zugreifen. In diesem Abschnitt erfahren Sie, wie Sie die Modelle in SageMaker Studio entdecken.

SageMaker Studio ist eine integrierte Entwicklungsumgebung (IDE), die eine einzige webbasierte visuelle Schnittstelle bietet, über die Sie auf speziell entwickelte Tools zugreifen können, um ML-Entwicklungsschritte durchzuführen, von der Datenvorbereitung bis hin zum Erstellen, Trainieren und Bereitstellen Ihrer ML-Modelle. Weitere Informationen zum Einstieg und Einrichten von SageMaker Studio finden Sie unter Amazon SageMaker-Studio.

In SageMaker Studio können Sie auf SageMaker JumpStart zugreifen, indem Sie wählen Starthilfe im Navigationsbereich.

Dann wähle Umarmendes Gesicht.

Auf der SageMaker JumpStart-Startseite können Sie im Suchfeld nach NeMo suchen. Die Suchergebnisse werden aufgelistet Mistral NeMo Instruct und Mistral NeMo Basis.

Sie können die Modellkarte auswählen, um Details zum Modell anzuzeigen, z. B. die Lizenz, die zum Training verwendeten Daten und die Verwendung des Modells. Sie finden auch die Einführung Klicken Sie auf die Schaltfläche, um das Modell bereitzustellen und einen Endpunkt zu erstellen.

Stellen Sie das Modell in SageMaker JumpStart bereit

Die Bereitstellung beginnt, wenn Sie die Schaltfläche „Bereitstellen“ auswählen. Nach Abschluss der Bereitstellung sehen Sie, dass ein Endpunkt erstellt wurde. Sie können den Endpunkt testen, indem Sie eine Beispielnutzlast für eine Inferenzanforderung übergeben oder die Testoption mithilfe des SDK auswählen. Wenn Sie die Option zur Verwendung des SDK auswählen, wird Beispielcode angezeigt, den Sie im Notebook-Editor Ihrer Wahl in SageMaker Studio verwenden können.

Stellen Sie das Modell mit dem SageMaker Python SDK bereit

Um die Bereitstellung mit dem SDK durchzuführen, wählen wir zunächst das Mistral NeMo Base-Modell aus, das von der model_id mit dem Wert huggingface-llm-mistral-nemo-base-2407. Sie können die ausgewählten Modelle Ihrer Wahl mit dem folgenden Code auf SageMaker bereitstellen. Ebenso können Sie NeMo Instruct mit seiner eigenen Modell-ID bereitstellen.

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)

Dadurch wird das Modell auf SageMaker mit Standardkonfigurationen bereitgestellt, einschließlich des Standardinstanztyps und der Standard-VPC-Konfigurationen. Sie können diese Konfigurationen ändern, indem Sie in nicht standardmäßige Werte angeben JumpStartModel. Der EULA-Wert muss explizit als True definiert werden, um die Endbenutzer-Lizenzvereinbarung (EULA) zu akzeptieren. Stellen Sie außerdem sicher, dass Sie das Servicelimit auf Kontoebene für die Verwendung von ml.g6.12xlarge für die Endpunktnutzung als eine oder mehrere Instanzen. Sie können den Anweisungen in AWS-Servicekontingente um eine Erhöhung des Servicekontingents anzufordern. Nach der Bereitstellung können Sie über den SageMaker-Prädiktor Inferenzen für den bereitgestellten Endpunkt ausführen:

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)

Wichtig zu beachten ist, dass wir die djl-lmi v12 Inferenzcontainer, also folgen wir dem API-Schema für Chat-Vervollständigungen zur Inferenz großer Modelle beim Senden einer Nutzlast sowohl an Mistral-NeMo-Base-2407 als auch an Mistral-NeMo-Instruct-2407.

Mistral-NeMo-Base-2407

Sie können mit dem Modell Mistral-NeMo-Base-2407 wie mit anderen Standardmodellen zur Textgenerierung interagieren, wobei das Modell eine Eingabesequenz verarbeitet und die vorhergesagten nächsten Wörter in der Sequenz ausgibt. In diesem Abschnitt stellen wir einige Beispieleingabeaufforderungen und Beispielausgaben bereit. Beachten Sie, dass das Basismodell nicht auf Anweisungen abgestimmt ist.

Textvervollständigung

Aufgaben, bei denen es darum geht, das nächste Token vorherzusagen oder fehlende Token in einer Sequenz einzufügen:

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)

Das Folgende ist die Ausgabe:

Paris
The capital of France is Paris.

Mistral NeMo Instruct

Das Modell Mistral-NeMo-Instruct-2407 ist eine schnelle Demonstration, dass das Basismodell feinabgestimmt werden kann, um eine überzeugende Leistung zu erzielen. Sie können die angegebenen Schritte befolgen, um das Modell bereitzustellen und die model_id Wert von huggingface-llm-mistral-nemo-instruct-2407 stattdessen.

Das befehlsoptimierte NeMo-Modell kann mit den folgenden Aufgaben getestet werden:

Codegenerierung

Mistral NeMo Instruct zeigt in Benchmarks Stärken bei Codierungsaufgaben. Mistral gibt an, dass ihr Tekken-Tokenizer für NeMo beim Komprimieren von Quellcode etwa 30 % effizienter ist. Sehen Sie sich beispielsweise den folgenden Code an:

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)

Das Folgende ist die Ausgabe:

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}

Das Modell zeigt eine starke Leistung bei Codegenerierungsaufgaben, mit der completion_tokens bietet Einblicke, wie die Codekomprimierung des Tokenizers die Darstellung von Programmiersprachen mit weniger Token effektiv optimiert.

Höhere Mathematik und logisches Denken

Das Modell weist auch Stärken in Bezug auf mathematische und logische Genauigkeit auf. Sehen Sie sich beispielsweise den folgenden Code an:

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)

Das Folgende ist die Ausgabe:

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.

Sprachübersetzungsaufgabe

In dieser Aufgabe testen wir Mistrals neuen Tekken-Tokenizer. Mistral gibt an, dass der Tokenizer beim Komprimieren von Koreanisch und Arabisch zwei- bzw. dreimal effizienter ist.

Hier verwenden wir einen Text zur Übersetzung:

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

Wir legen unsere Eingabeaufforderung fest, um das Modell zur Übersetzung ins Koreanische und Arabische anzuweisen:

prompt=f"""

text={text}

Translate the following text into these languages:

1. Korean
2. Arabic

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

Anschließend können wir die Nutzlast festlegen:

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)

Das Folgende ist die Ausgabe:

**1. Korean**

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

**2. Arabic**

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

Die Übersetzungsergebnisse zeigen, wie die Anzahl der completion_tokens verwendet wird, wird erheblich reduziert, selbst bei Aufgaben, die typischerweise tokenintensiv sind, wie z. B. Übersetzungen von Sprachen wie Koreanisch und Arabisch. Diese Verbesserung wird durch die Optimierungen ermöglicht, die der Tekken-Tokenizer bietet. Eine solche Reduzierung ist besonders wertvoll für tokenlastige Anwendungen, einschließlich Zusammenfassung, Sprachgenerierung und Multi-Turn-Konversationen. Durch die Verbesserung der Tokeneffizienz ermöglicht der Tekken-Tokenizer die Bearbeitung von mehr Aufgaben innerhalb derselben Ressourcenbeschränkungen, was ihn zu einem unschätzbaren Werkzeug zur Optimierung von Arbeitsabläufen macht, bei denen die Tokennutzung direkte Auswirkungen auf Leistung und Kosten hat.

Aufräumen

Nachdem Sie das Notebook ausgeführt haben, löschen Sie unbedingt alle Ressourcen, die Sie im Prozess erstellt haben, um zusätzliche Kosten zu vermeiden. Verwenden Sie den folgenden Code:

predictor.delete_model()
predictor.delete_endpoint()

Schlussfolgerung

In diesem Beitrag haben wir Ihnen gezeigt, wie Sie mit Mistral NeMo Base und Instruct in SageMaker Studio beginnen und das Modell für die Inferenz bereitstellen. Da Basismodelle vorab trainiert sind, können sie dazu beitragen, Schulungs- und Infrastrukturkosten zu senken und eine Anpassung an Ihren Anwendungsfall zu ermöglichen. Besuchen Sie SageMaker JumpStart in SageMaker Studio Jetzt loslegen.

Weitere Mistral-Ressourcen zu AWS finden Sie im Mistral-on-AWS GitHub-Repository.


Über die Autoren

Niithiyn Vijeaswaran ist ein Generative AI Specialist Solutions Architect im Third-Party Model Science-Team von AWS. Sein Schwerpunkt sind generative KI und AWS AI Accelerators. Er hat einen Bachelor-Abschluss in Informatik und Bioinformatik.

Preston Tuggle ist Senior Specialist Solutions Architect und arbeitet an generativer KI.

Shane Rai ist Principal Generative AI Specialist bei der AWS World Wide Specialist Organization (WWSO). Er arbeitet mit Kunden aus verschiedenen Branchen zusammen, um ihre dringendsten und innovativsten Geschäftsanforderungen zu lösen. Dabei nutzt er die breite Palette der von AWS bereitgestellten Cloud-basierten KI/ML-Dienste, einschließlich Modellangeboten von führenden Anbietern von Basismodellen.

In Verbindung stehende Artikel

spot_img

Aktuelle Artikel

spot_img