Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services

Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services

Wir freuen uns, heute bekannt geben zu können, dass die von Meta entwickelten Code Llama-Grundlagenmodelle für Kunden verfügbar sind Amazon SageMaker-JumpStart mit einem Klick bereitzustellen, um Inferenz auszuführen. Code Llama ist ein hochmodernes Large Language Model (LLM), das in der Lage ist, Code und natürliche Sprache über Code sowohl aus Code als auch aus Eingabeaufforderungen in natürlicher Sprache zu generieren. Sie können dieses Modell mit SageMaker JumpStart ausprobieren, einem Hub für maschinelles Lernen (ML), der Zugriff auf Algorithmen, Modelle und ML-Lösungen bietet, damit Sie schnell mit ML beginnen können. In diesem Beitrag erfahren Sie, wie Sie das Code-Llama-Modell über SageMaker JumpStart entdecken und bereitstellen.

Code Lama

Code Llama ist ein Modell, das von veröffentlicht wurde Meta das auf Llama 2 aufbaut. Dieses hochmoderne Modell soll die Produktivität von Programmieraufgaben für Entwickler verbessern, indem es ihnen hilft, qualitativ hochwertigen, gut dokumentierten Code zu erstellen. Die Modelle zeichnen sich durch Python, C++, Java, PHP, C#, TypeScript und Bash aus und haben das Potenzial, Entwicklern Zeit zu sparen und Software-Workflows effizienter zu gestalten.

Es ist in drei Varianten erhältlich, die für eine Vielzahl von Anwendungen konzipiert sind: das Basismodell (Code Llama), ein Python-Spezialmodell (Code Llama Python) und ein Anweisungsfolgemodell zum Verständnis natürlichsprachlicher Anweisungen (Code Llama Instruct). Alle Code Llama-Varianten sind in vier Größen erhältlich: Parameter 7B, 13B, 34B und 70B. Die Base- und Instruct-Varianten 7B und 13B unterstützen das Ausfüllen basierend auf umgebenden Inhalten und sind somit ideal für Code-Assistent-Anwendungen. Die Modelle wurden auf Basis von Llama 2 entworfen und dann auf 500 Milliarden Tokens an Codedaten trainiert, wobei die Python-Spezialversion auf inkrementellen 100 Milliarden Tokens trainiert wurde. Die Code-Llama-Modelle bieten stabile Generationen mit bis zu 100,000 Kontext-Tokens. Alle Modelle werden auf Sequenzen von 16,000 Token trainiert und zeigen Verbesserungen bei Eingaben mit bis zu 100,000 Token.

Das Modell wird unter demselben zur Verfügung gestellt Community-Lizenz als Lama 2.

Foundation-Modelle in SageMaker

SageMaker JumpStart bietet Zugriff auf eine Reihe von Modellen beliebter Modell-Hubs, darunter Hugging Face, PyTorch Hub und TensorFlow Hub, die Sie in Ihrem ML-Entwicklungsworkflow in SageMaker verwenden können. Die jüngsten Fortschritte im ML haben zu einer neuen Klasse von Modellen geführt, die als bekannt ist Gründungsmodelle, die typischerweise auf Milliarden von Parametern trainiert werden und an eine breite Kategorie von Anwendungsfällen anpassbar sind, wie z. B. Textzusammenfassung, digitale Kunstgenerierung und Sprachübersetzung. Da das Trainieren dieser Modelle teuer ist, möchten Kunden vorhandene vorab trainierte Basismodelle verwenden und diese nach Bedarf verfeinern, anstatt diese Modelle selbst zu trainieren. SageMaker bietet eine kuratierte Liste von Modellen, aus denen Sie auf der SageMaker-Konsole auswählen können.

In SageMaker JumpStart finden Sie Fundamentmodelle verschiedener Modellanbieter, sodass Sie schnell mit Fundamentmodellen beginnen können. Sie können Grundlagenmodelle finden, die auf verschiedenen Aufgaben oder Modellanbietern basieren, und die Modelleigenschaften und Nutzungsbedingungen einfach überprüfen. Sie können diese Modelle auch mithilfe eines Test-UI-Widgets ausprobieren. Wenn Sie ein Grundmodell im großen Maßstab verwenden möchten, können Sie dies tun, ohne SageMaker zu verlassen, indem Sie vorgefertigte Notebooks von Modellanbietern verwenden. Da die Modelle auf AWS gehostet und bereitgestellt werden, können Sie sicher sein, dass Ihre Daten, unabhängig davon, ob sie zur Evaluierung oder zur Verwendung des Modells im großen Maßstab verwendet werden, niemals an Dritte weitergegeben werden.

Entdecken Sie das Code-Llama-Modell in SageMaker JumpStart

Um das Code Llama 70B-Modell bereitzustellen, führen Sie die folgenden Schritte aus Amazon SageMaker-Studio:

  1. Wählen Sie auf der Startseite von SageMaker Studio die Option Starthilfe im Navigationsbereich.

    Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

  2. Suchen Sie nach Code Llama-Modellen und wählen Sie das Modell Code Llama 70B aus der Liste der angezeigten Modelle aus.

    Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

    Weitere Informationen zum Modell finden Sie auf der Modellkarte Code Llama 70B.

    Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

    Der folgende Screenshot zeigt die Endpunkteinstellungen. Sie können die Optionen ändern oder die Standardoptionen verwenden.

  3. Akzeptieren Sie die Endbenutzer-Lizenzvereinbarung (EULA) und wählen Sie Deploy.
    Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

    Dadurch wird der Endpunktbereitstellungsprozess gestartet, wie im folgenden Screenshot gezeigt.

    Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Stellen Sie das Modell mit dem SageMaker Python SDK bereit

Alternativ können Sie die Bereitstellung über das Beispielnotizbuch durchführen, indem Sie auswählen Notizbuch öffnen auf der Modelldetailseite von Classic Studio. Das Beispielnotizbuch bietet umfassende Anleitungen zur Bereitstellung des Modells für Rückschlüsse und zur Bereinigung von Ressourcen.

Für die Bereitstellung mithilfe eines Notebooks wählen wir zunächst ein geeignetes Modell aus, das durch angegeben wird model_id. Sie können jedes der ausgewählten Modelle mit dem folgenden Code auf SageMaker bereitstellen:

from sagemaker.jumpstart.model import JumpStartModel model = JumpStartModel(model_id="meta-textgeneration-llama-codellama-70b")
predictor = model.deploy(accept_eula=False) # Change EULA acceptance to True

Dadurch wird das Modell auf SageMaker mit Standardkonfigurationen bereitgestellt, einschließlich Standardinstanztyp und Standard-VPC-Konfigurationen. Sie können diese Konfigurationen ändern, indem Sie in nicht standardmäßige Werte angeben JumpStartModel. Beachten Sie, dass standardmäßig accept_eula eingestellt ist False. Sie müssen einstellen accept_eula=True um den Endpunkt erfolgreich bereitzustellen. Dadurch akzeptieren Sie die Benutzerlizenzvereinbarung und die Richtlinien zur akzeptablen Nutzung, wie bereits erwähnt. Du kannst auch herunterladen die Lizenzvereinbarung.

Rufen Sie einen SageMaker-Endpunkt auf

Nachdem der Endpunkt bereitgestellt wurde, können Sie mithilfe von Boto3 oder dem SageMaker Python SDK eine Inferenz durchführen. Im folgenden Code verwenden wir das SageMaker Python SDK, um das Modell zur Inferenz aufzurufen und die Antwort zu drucken:

def print_response(payload, response): print(payload["inputs"]) print(f"> {response[0]['generated_text']}") print("n==================================n")

Die Funktion print_response Nimmt eine Nutzlast, die aus der Nutzlast und der Modellantwort besteht, und druckt die Ausgabe. Code Llama unterstützt viele Parameter beim Durchführen von Inferenzen:

  • maximale Länge – Das Modell generiert Text, bis die Ausgabelänge (die die Eingabekontextlänge enthält) erreicht ist max_length. Falls angegeben, muss es sich um eine positive Ganzzahl handeln.
  • max_new_tokens – Das Modell generiert Text, bis die Ausgabelänge (ohne die Eingabekontextlänge) erreicht ist max_new_tokens. Falls angegeben, muss es sich um eine positive Ganzzahl handeln.
  • Anzahl_Strahlen – Dies gibt die Anzahl der Strahlen an, die bei der gierigen Suche verwendet werden. Falls angegeben, muss es eine Ganzzahl sein, die größer oder gleich ist num_return_sequences.
  • no_repeat_ngram_size – Das Modell stellt sicher, dass eine Folge von Wörtern von no_repeat_ngram_size wird in der Ausgabesequenz nicht wiederholt. Falls angegeben, muss es sich um eine positive ganze Zahl größer als 1 handeln.
  • Temperatur – Dies steuert die Zufälligkeit in der Ausgabe. Höher temperature führt zu einer Ausgabesequenz mit Wörtern mit geringer Wahrscheinlichkeit und niedriger temperature führt zu einer Ausgabesequenz mit Wörtern mit hoher Wahrscheinlichkeit. Wenn temperature 0 ist, führt dies zu einer gierigen Dekodierung. Falls angegeben, muss es sich um einen positiven Gleitkommawert handeln.
  • frühes_stoppen - Falls TrueDie Textgenerierung ist abgeschlossen, wenn alle Balkenhypothesen das Satzende-Token erreichen. Wenn angegeben, muss es boolesch sein.
  • do_sample - Falls True, tastet das Modell das nächste Wort entsprechend der Wahrscheinlichkeit ab. Wenn angegeben, muss es boolesch sein.
  • top_k – In jedem Schritt der Textgenerierung greift das Modell nur auf die Stichproben zurück top_k wahrscheinlichste Worte. Falls angegeben, muss es sich um eine positive Ganzzahl handeln.
  • top_p – In jedem Schritt der Textgenerierung wählt das Modell mit kumulativer Wahrscheinlichkeit Stichproben aus der kleinstmöglichen Menge von Wörtern top_p. Falls angegeben, muss es sich um eine Gleitkommazahl zwischen 0 und 1 handeln.
  • return_full_text - Falls True, wird der Eingabetext Teil des generierten Ausgabetextes sein. Wenn angegeben, muss es boolesch sein. Der Standardwert dafür ist False.
  • halt – Falls angegeben, muss es sich um eine Liste von Zeichenfolgen handeln. Die Textgenerierung stoppt, wenn eine der angegebenen Zeichenfolgen generiert wird.

Sie können beim Aufrufen eines Endpunkts eine beliebige Teilmenge dieser Parameter angeben. Als Nächstes zeigen wir ein Beispiel dafür, wie ein Endpunkt mit diesen Argumenten aufgerufen wird.

Code-Vervollständigung

Die folgenden Beispiele veranschaulichen die Codevervollständigung, bei der die erwartete Endpunktantwort die natürliche Fortsetzung der Eingabeaufforderung ist.

Wir führen zunächst den folgenden Code aus:

prompt = """
import socket def ping_exponential_backoff(host: str): """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

Wir erhalten folgende Ausgabe:

""" Pings the given host with exponential backoff. """ timeout = 1 while True: try: socket.create_connection((host, 80), timeout=timeout) return except socket.error: timeout *= 2

Für unser nächstes Beispiel führen wir den folgenden Code aus:

prompt = """
import argparse
def main(string: str): print(string) print(string[::-1])
if __name__ == "__main__": """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
predictor.predict(payload)

Wir erhalten folgende Ausgabe:

parser = argparse.ArgumentParser(description='Reverse a string') parser.add_argument('string', type=str, help='String to reverse') args = parser.parse_args() main(args.string)

Codegenerierung

Die folgenden Beispiele zeigen die Python-Codegenerierung mit Code Llama.

Wir führen zunächst den folgenden Code aus:

prompt = """
Write a python function to traverse a list in reverse. """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

Wir erhalten folgende Ausgabe:

def reverse(list1): for i in range(len(list1)-1,-1,-1): print(list1[i]) list1 = [1,2,3,4,5]
reverse(list1)

Für unser nächstes Beispiel führen wir den folgenden Code aus:

prompt = """
Write a python function to to carry out bubble sort. """ payload = { "inputs": prompt, "parameters": {"max_new_tokens": 256, "temperature": 0.1, "top_p": 0.9},
}
response = predictor.predict(payload)
print_response(payload, response)

Wir erhalten folgende Ausgabe:

def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr arr = [64, 34, 25, 12, 22, 11, 90]
print(bubble_sort(arr))

Dies sind einige Beispiele für codebezogene Aufgaben mit Code Llama 70B. Sie können das Modell verwenden, um noch komplizierteren Code zu generieren. Wir empfehlen Ihnen, es anhand Ihrer eigenen codebezogenen Anwendungsfälle und Beispiele auszuprobieren!

Aufräumen

Nachdem Sie die Endpunkte getestet haben, stellen Sie sicher, dass Sie die SageMaker-Inferenzendpunkte und das Modell löschen, um zu vermeiden, dass Gebühren anfallen. Verwenden Sie den folgenden Code:

predictor.delete_endpoint()

Zusammenfassung

In diesem Beitrag haben wir Code Llama 70B auf SageMaker JumpStart vorgestellt. Code Llama 70B ist ein hochmodernes Modell zum Generieren von Code aus Eingabeaufforderungen in natürlicher Sprache sowie Code. Sie können das Modell mit ein paar einfachen Schritten in SageMaker JumpStart bereitstellen und es dann verwenden, um codebezogene Aufgaben wie Codegenerierung und Codeausfüllung auszuführen. Versuchen Sie als nächsten Schritt, das Modell mit Ihren eigenen Code-bezogenen Anwendungsfällen und Daten zu verwenden.


Über die Autoren

Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Kyle Ulrich ist angewandter Wissenschaftler im Amazon SageMaker JumpStart-Team. Seine Forschungsinteressen umfassen skalierbare Algorithmen für maschinelles Lernen, Computer Vision, Zeitreihen, Bayes'sche Nichtparametrik und Gaußsche Prozesse. Er promovierte an der Duke University und hat Artikel in NeurIPS, Cell und Neuron veröffentlicht.

Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Dr. Farooq Sabir ist ein leitender Lösungsarchitekt für künstliche Intelligenz und maschinelles Lernen bei AWS. Er hat einen PhD- und MS-Abschluss in Elektrotechnik von der University of Texas at Austin und einen MS in Informatik vom Georgia Institute of Technology. Er hat über 15 Jahre Berufserfahrung und unterrichtet und betreut auch gerne College-Studenten. Bei AWS hilft er Kunden bei der Formulierung und Lösung ihrer Geschäftsprobleme in den Bereichen Datenwissenschaft, maschinelles Lernen, Computer Vision, künstliche Intelligenz, numerische Optimierung und verwandte Bereiche. Er lebt in Dallas, Texas, und seine Familie liebt es zu reisen und lange Autofahrten zu unternehmen.

Code Llama 70B ist jetzt in Amazon SageMaker JumpStart | verfügbar Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Juni gewonnen ist Produktmanager bei SageMaker JumpStart. Sein Schwerpunkt liegt darauf, Basismodelle leicht auffindbar und nutzbar zu machen, um Kunden bei der Entwicklung generativer KI-Anwendungen zu unterstützen. Zu seinen Erfahrungen bei Amazon gehören auch mobile Shopping-Anwendungen und die Zustellung auf der letzten Meile.

Zeitstempel:

Mehr von AWS Maschinelles Lernen