Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services

Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services

I dag er vi glade for at kunne meddele, at Code Llama-fundamentmodeller, udviklet af Meta, er tilgængelige for kunder gennem Amazon SageMaker JumpStart at implementere med et enkelt klik for at køre inferens. Code Llama er en state-of-the-art storsprogsmodel (LLM), der er i stand til at generere kode og naturligt sprog om kode fra både kode og naturlige sprogprompter. Du kan prøve denne model med SageMaker JumpStart, en maskinlæringshub (ML), der giver adgang til algoritmer, modeller og ML-løsninger, så du hurtigt kan komme i gang med ML. I dette indlæg gennemgår vi, hvordan du opdager og implementerer Code Llama-modellen via SageMaker JumpStart.

Kode Lama

Code Llama er en model udgivet af Meta der er bygget oven på Llama 2. Denne avancerede model er designet til at forbedre produktiviteten til programmeringsopgaver for udviklere ved at hjælpe dem med at skabe højkvalitets, veldokumenteret kode. Modellerne udmærker sig i Python, C++, Java, PHP, C#, TypeScript og Bash, og har potentialet til at spare udviklernes tid og gøre software arbejdsgange mere effektive.

Den kommer i tre varianter, konstrueret til at dække en bred vifte af applikationer: den grundlæggende model (Code Llama), en Python-specialiseret model (Code Llama Python) og en instruktionsfølgende model til at forstå naturlige sproginstruktioner (Code Llama Instruct). Alle Code Llama-varianter kommer i fire størrelser: 7B, 13B, 34B og 70B parametre. 7B og 13B base og instruktionsvarianter understøtter udfyldning baseret på omgivende indhold, hvilket gør dem ideelle til kodeassistent-applikationer. Modellerne blev designet ved at bruge Llama 2 som base og derefter trænet på 500 milliarder tokens kodedata, med den specialiserede Python-version trænet på inkrementelle 100 milliarder tokens. Code Llama-modellerne giver stabile generationer med op til 100,000 tokens af kontekst. Alle modeller er trænet på sekvenser af 16,000 tokens og viser forbedringer på input med op til 100,000 tokens.

Modellen stilles til rådighed under samme fællesskabslicens som Llama 2.

Fundamentmodeller i SageMaker

SageMaker JumpStart giver adgang til en række modeller fra populære modelhubs, herunder Hugging Face, PyTorch Hub og TensorFlow Hub, som du kan bruge i din ML-udviklingsworkflow i SageMaker. De seneste fremskridt inden for ML har givet anledning til en ny klasse af modeller kendt som fundament modeller, som typisk trænes på milliarder af parametre og kan tilpasses til en bred kategori af use cases, såsom tekstresumé, digital kunstgenerering og sprogoversættelse. Fordi disse modeller er dyre at træne, ønsker kunder at bruge eksisterende præ-trænede foundation-modeller og finjustere dem efter behov, i stedet for at træne disse modeller selv. SageMaker giver en udvalgt liste over modeller, som du kan vælge imellem på SageMaker-konsollen.

Du kan finde fundamentmodeller fra forskellige modeludbydere i SageMaker JumpStart, så du hurtigt kan komme i gang med fundamentmodeller. Du kan finde fundamentmodeller baseret på forskellige opgaver eller modeludbydere og nemt gennemgå modellens egenskaber og brugsbegreber. Du kan også prøve disse modeller ved hjælp af en test-UI-widget. Når du vil bruge en fundamentmodel i stor skala, kan du gøre det uden at forlade SageMaker ved at bruge forudbyggede notesbøger fra modeludbydere. Fordi modellerne er hostet og implementeret på AWS, kan du være sikker på, at dine data, uanset om de bruges til at evaluere eller bruge modellen i stor skala, aldrig deles med tredjeparter.

Oplev Code Llama-modellen i SageMaker JumpStart

Udfør følgende trin for at implementere Code Llama 70B-modellen Amazon SageMaker Studio:

  1. På SageMaker Studio-hjemmesiden skal du vælge Forspring i navigationsruden.

    Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

  2. Søg efter Code Llama-modeller og vælg Code Llama 70B-modellen fra listen over viste modeller.

    Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

    Du kan finde mere information om modellen på Code Llama 70B modelkortet.

    Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

    Følgende skærmbillede viser indstillingerne for slutpunktet. Du kan ændre indstillingerne eller bruge standardindstillingerne.

  3. Accepter slutbrugerlicensaftalen (EULA), og vælg Implementer.
    Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

    Dette vil starte slutpunktsimplementeringsprocessen, som vist på det følgende skærmbillede.

    Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Implementer modellen med SageMaker Python SDK

Alternativt kan du implementere gennem eksempelnotesbogen ved at vælge Åbn Notesbog på modeldetaljesiden i Classic Studio. Eksemplet på notesbogen giver ende-til-ende vejledning om, hvordan man implementerer modellen til slutninger og renser ressourcer.

For at implementere ved hjælp af notebook starter vi med at vælge en passende model, specificeret af model_id. Du kan implementere enhver af de valgte modeller på SageMaker med følgende kode:

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

Dette implementerer modellen på SageMaker med standardkonfigurationer, inklusive standardforekomsttype og standard VPC-konfigurationer. Du kan ændre disse konfigurationer ved at angive ikke-standardværdier i JumpStartModel. Bemærk, at som standard, accept_eula er sat til False. Du skal indstille accept_eula=True for at implementere slutpunktet med succes. Ved at gøre det accepterer du brugerlicensaftalen og politikken for acceptabel brug som nævnt tidligere. Du kan også downloade licensaftalen.

Kald et SageMaker-slutpunkt

Efter endtpunktet er implementeret, kan du udføre inferens ved at bruge Boto3 eller SageMaker Python SDK. I den følgende kode bruger vi SageMaker Python SDK til at kalde modellen til slutning og udskrive svaret:

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

funktionen print_response tager en nyttelast bestående af nyttelast og modelrespons og udskriver output. Code Llama understøtter mange parametre, mens du udfører inferens:

  • max_længde – Modellen genererer tekst, indtil outputlængden (som inkluderer inputkontekstlængden) når max_length. Hvis det er angivet, skal det være et positivt heltal.
  • max_new_tokens – Modellen genererer tekst, indtil outputlængden (eksklusive inputkontekstlængden) når max_new_tokens. Hvis det er angivet, skal det være et positivt heltal.
  • antal_bjælker – Dette angiver antallet af stråler, der bruges i den grådige søgning. Hvis det er angivet, skal det være et heltal større end eller lig med num_return_sequences.
  • no_repeat_ngram_size – Modellen sikrer, at en række af ord af no_repeat_ngram_size gentages ikke i outputsekvensen. Hvis det er angivet, skal det være et positivt heltal større end 1.
  • temperatur – Dette styrer tilfældigheden i outputtet. Højere temperature resulterer i en outputsekvens med ord med lav sandsynlighed og lavere temperature resulterer i en outputsekvens med ord med høj sandsynlighed. Hvis temperature er 0, resulterer det i grådig afkodning. Hvis det er angivet, skal det være en positiv flyder.
  • tidligt_stop - Hvis True, er tekstgenerering afsluttet, når alle strålehypoteser når slutningen af ​​sætningstoken. Hvis det er angivet, skal det være boolesk.
  • do_sample - Hvis True, modellen prøver det næste ord efter sandsynligheden. Hvis det er angivet, skal det være boolesk.
  • top_k – I hvert trin af tekstgenerering prøver modellen kun fra top_k højst sandsynlige ord. Hvis det er angivet, skal det være et positivt heltal.
  • top_s – I hvert trin af tekstgenerering prøver modellen fra det mindst mulige sæt af ord med kumulativ sandsynlighed top_p. Hvis det er angivet, skal det være en flyder mellem 0 og 1.
  • return_full_text - Hvis True, vil inputteksten være en del af den outputgenererede tekst. Hvis det er angivet, skal det være boolesk. Standardværdien for det er False.
  • stoppe – Hvis det er angivet, skal det være en liste over strenge. Tekstgenerering stopper, hvis en af ​​de angivne strenge genereres.

Du kan angive et hvilket som helst undersæt af disse parametre, mens du kalder et slutpunkt. Dernæst viser vi et eksempel på, hvordan man påberåber sig et slutpunkt med disse argumenter.

Kode afsluttet

De følgende eksempler viser, hvordan man udfører kodefuldførelse, hvor det forventede slutpunktssvar er den naturlige fortsættelse af prompten.

Vi kører først følgende kode:

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)

Vi får følgende output:

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

Til vores næste eksempel kører vi følgende kode:

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)

Vi får følgende output:

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

Generering af kode

Følgende eksempler viser Python-kodegenerering ved hjælp af Code Llama.

Vi kører først følgende kode:

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)

Vi får følgende output:

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

Til vores næste eksempel kører vi følgende kode:

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)

Vi får følgende output:

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))

Dette er nogle af eksemplerne på koderelaterede opgaver, der bruger Code Llama 70B. Du kan bruge modellen til at generere endnu mere kompliceret kode. Vi opfordrer dig til at prøve det ved at bruge dine egne koderelaterede use cases og eksempler!

Ryd op

Når du har testet endepunkterne, skal du sørge for at slette SageMaker-slutningsendepunkterne og modellen for at undgå at pådrage dig gebyrer. Brug følgende kode:

predictor.delete_endpoint()

Konklusion

I dette indlæg introducerede vi Code Llama 70B på SageMaker JumpStart. Code Llama 70B er en state-of-the-art model til at generere kode fra naturlige sprogprompter samt kode. Du kan implementere modellen med nogle få enkle trin i SageMaker JumpStart og derefter bruge den til at udføre koderelaterede opgaver såsom kodegenerering og kodeudfyldning. Som et næste trin kan du prøve at bruge modellen med dine egne koderelaterede use cases og data.


Om forfatterne

Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Dr. Kyle Ulrich er en anvendt videnskabsmand hos Amazon SageMaker JumpStart-teamet. Hans forskningsinteresser omfatter skalerbare maskinlæringsalgoritmer, computervision, tidsserier, Bayesianske ikke-parametriske og Gaussiske processer. Hans ph.d. er fra Duke University, og han har udgivet artikler i NeurIPS, Cell og Neuron.

Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Dr. Farooq Sabir er senior specialist i kunstig intelligens og maskinlæringsløsninger hos AWS. Han har ph.d.- og MS-grader i elektroteknik fra University of Texas i Austin og en MS i datalogi fra Georgia Institute of Technology. Han har over 15 års erhvervserfaring og kan også lide at undervise og vejlede universitetsstuderende. Hos AWS hjælper han kunder med at formulere og løse deres forretningsproblemer inden for datavidenskab, maskinlæring, computersyn, kunstig intelligens, numerisk optimering og relaterede domæner. Baseret i Dallas, Texas, elsker han og hans familie at rejse og tage på lange roadtrips.

Code Llama 70B er nu tilgængelig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.juni vandt er produktchef hos SageMaker JumpStart. Han fokuserer på at gøre fundamentmodeller let synlige og brugbare for at hjælpe kunder med at bygge generative AI-applikationer. Hans erfaring hos Amazon inkluderer også mobil shopping-applikation og last mile-levering.

Tidsstempel:

Mere fra AWS maskinindlæring