Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon webbtjänster

Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon webbtjänster

Idag är vi glada att kunna meddela att Code Llama foundation-modeller, utvecklade av Meta, är tillgängliga för kunder via Amazon SageMaker JumpStart att distribuera med ett klick för att köra slutledning. Code Llama är en toppmodern storspråksmodell (LLM) som kan generera kod och naturligt språk om kod från både kod och naturliga språkuppmaningar. Du kan prova den här modellen med SageMaker JumpStart, ett nav för maskininlärning (ML) som ger tillgång till algoritmer, modeller och ML-lösningar så att du snabbt kan komma igång med ML. I det här inlägget går vi igenom hur du upptäcker och distribuerar Code Llama-modellen via SageMaker JumpStart.

Kod lama

Code Llama är en modell släppt av meta som är byggd ovanpå Llama 2. Denna toppmoderna modell är designad för att förbättra produktiviteten för programmeringsuppgifter för utvecklare genom att hjälpa dem att skapa högkvalitativ, väldokumenterad kod. Modellerna utmärker sig i Python, C++, Java, PHP, C#, TypeScript och Bash, och har potential att spara utvecklarnas tid och göra mjukvaruarbetsflöden mer effektiva.

Den finns i tre varianter, konstruerade för att täcka en mängd olika applikationer: grundmodellen (Code Llama), en Python-specialiserad modell (Code Llama Python) och en instruktionsföljande modell för att förstå naturliga språkinstruktioner (Code Llama Instruct). Alla Code Llama-varianter finns i fyra storlekar: 7B, 13B, 34B och 70B parametrar. 7B och 13B bas- och instruktionsvarianter stöder fyllning baserat på omgivande innehåll, vilket gör dem idealiska för kodassistentapplikationer. Modellerna designades med Llama 2 som bas och tränades sedan på 500 miljarder tokens koddata, med Python-specialiserade versionen tränad på inkrementella 100 miljarder tokens. Code Llama-modellerna ger stabila generationer med upp till 100,000 16,000 tokens av sammanhang. Alla modeller är tränade på sekvenser av 100,000 XNUMX tokens och visar förbättringar på ingångar med upp till XNUMX XNUMX tokens.

Modellen görs tillgänglig under samma gemenskapslicens som Llama 2.

Grundmodeller i SageMaker

SageMaker JumpStart ger tillgång till en rad modeller från populära modellhubbar, inklusive Hugging Face, PyTorch Hub och TensorFlow Hub, som du kan använda i ditt ML-utvecklingsarbetsflöde i SageMaker. De senaste framstegen inom ML har gett upphov till en ny klass av modeller som kallas grundmodeller, som vanligtvis tränas på miljarder parametrar och kan anpassas till en bred kategori av användningsfall, såsom textsammanfattning, digital konstgenerering och språköversättning. Eftersom dessa modeller är dyra att träna vill kunderna använda befintliga förutbildade grundmodeller och finjustera dem efter behov, snarare än att träna dessa modeller själva. SageMaker tillhandahåller en utvald lista över modeller som du kan välja mellan på SageMaker-konsolen.

Du kan hitta grundmodeller från olika modellleverantörer inom SageMaker JumpStart, vilket gör att du snabbt kan komma igång med grundmodeller. Du kan hitta grundmodeller baserade på olika uppgifter eller modellleverantörer och enkelt granska modellens egenskaper och användningsvillkor. Du kan också prova dessa modeller med en test-UI-widget. När du vill använda en grundmodell i stor skala kan du göra det utan att lämna SageMaker genom att använda förbyggda bärbara datorer från modellleverantörer. Eftersom modellerna är värd och distribueras på AWS kan du vara säker på att din data, oavsett om den används för att utvärdera eller använda modellen i stor skala, aldrig delas med tredje part.

Upptäck Code Llama-modellen i SageMaker JumpStart

För att distribuera Code Llama 70B-modellen, slutför följande steg i Amazon SageMaker Studio:

  1. Välj på SageMaker Studios hemsida Försprång i navigeringsfönstret.

    Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

  2. Sök efter Code Llama-modeller och välj Code Llama 70B-modellen från listan över modeller som visas.

    Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

    Du kan hitta mer information om modellen på modellkortet Code Llama 70B.

    Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

    Följande skärmdump visar slutpunktsinställningarna. Du kan ändra alternativen eller använda standardalternativen.

  3. Acceptera slutanvändarlicensavtalet (EULA) och välj Distribuera.
    Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

    Detta kommer att starta slutpunktsdistributionsprocessen, som visas i följande skärmdump.

    Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Distribuera modellen med SageMaker Python SDK

Alternativt kan du distribuera via exempelanteckningsboken genom att välja Öppna Notebook på modelldetaljsidan i Classic Studio. Exemplet på anteckningsboken ger vägledning från början till slut om hur man distribuerar modellen för slutledning och städar upp resurser.

För att distribuera med hjälp av en bärbar dator börjar vi med att välja en lämplig modell, specificerad av model_id. Du kan distribuera vilken som helst av de valda modellerna på SageMaker med följande kod:

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

Detta distribuerar modellen på SageMaker med standardkonfigurationer, inklusive standardinstanstyp och standard VPC-konfigurationer. Du kan ändra dessa konfigurationer genom att ange icke-standardvärden i JumpStartModel. Observera att som standard, accept_eula är inställd på False. Du måste ställa in accept_eula=True för att distribuera slutpunkten framgångsrikt. Genom att göra det accepterar du användarlicensavtalet och policyn för acceptabel användning som nämnts tidigare. Du kan också ladda ner licensavtalet.

Anropa en SageMaker-slutpunkt

Efter att slutpunkten har distribuerats kan du göra slutledning genom att använda Boto3 eller SageMaker Python SDK. I följande kod använder vi SageMaker Python SDK för att anropa modellen för slutledning och skriva ut svaret:

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

Funktionen print_response tar en nyttolast som består av nyttolasten och modellsvaret och skriver ut resultatet. Code Llama stöder många parametrar när du utför slutledning:

  • Maxlängd – Modellen genererar text tills utdatalängden (som inkluderar den inmatade kontextlängden) når max_length. Om det anges måste det vara ett positivt heltal.
  • max_new_tokens – Modellen genererar text tills utdatalängden (exklusive inmatningskontextlängden) når max_new_tokens. Om det anges måste det vara ett positivt heltal.
  • num_beams – Detta anger antalet strålar som används i den giriga sökningen. Om det anges måste det vara ett heltal större än eller lika med num_return_sequences.
  • no_repeat_ngram_size – Modellen säkerställer att en sekvens av ord av no_repeat_ngram_size upprepas inte i utmatningssekvensen. Om det anges måste det vara ett positivt heltal större än 1.
  • temperatur – Detta styr slumpmässigheten i utgången. Högre temperature resulterar i en utdatasekvens med ord med låg sannolikhet och lägre temperature resulterar i en utdatasekvens med hög sannolikhet ord. Om temperature är 0, resulterar det i girig avkodning. Om det anges måste det vara ett positivt flytande.
  • tidigt_stopp - Om True, är textgenereringen avslutad när alla strålhypoteser når slutet av meningen. Om det anges måste det vara booleskt.
  • do_sample - Om True, modellen samplar nästa ord enligt sannolikheten. Om det anges måste det vara booleskt.
  • top_k – I varje steg av textgenereringen tar modellen endast exempel från top_k mest troliga ord. Om det anges måste det vara ett positivt heltal.
  • top_p – I varje steg av textgenerering, samplar modellen från minsta möjliga uppsättning ord med kumulativ sannolikhet top_p. Om det anges måste det vara ett flytande mellan 0 och 1.
  • return_full_text - Om True, kommer inmatningstexten att vara en del av den utgående genererade texten. Om det anges måste det vara booleskt. Standardvärdet för det är False.
  • stoppa – Om det anges måste det vara en lista med strängar. Textgenereringen stoppas om någon av de angivna strängarna genereras.

Du kan ange vilken delmängd som helst av dessa parametrar medan du anropar en slutpunkt. Därefter visar vi ett exempel på hur man anropar en slutpunkt med dessa argument.

Kodens slutförande

Följande exempel visar hur man utför kodkomplettering där det förväntade slutpunktssvaret är den naturliga fortsättningen av prompten.

Vi kör först följande kod:

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öljande utdata:

""" 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 vårt nästa exempel kör vi följande kod:

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öljande utdata:

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

Kodgenerering

Följande exempel visar Python-kodgenerering med hjälp av Code Llama.

Vi kör först följande kod:

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öljande utdata:

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 vårt nästa exempel kör vi följande kod:

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öljande utdata:

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

Det här är några av exemplen på kodrelaterade uppgifter som använder Code Llama 70B. Du kan använda modellen för att generera ännu mer komplicerad kod. Vi uppmuntrar dig att prova det med dina egna kodrelaterade användningsfall och exempel!

Städa upp

När du har testat slutpunkterna, se till att du tar bort SageMaker slutpunkterna och modellen för att undvika avgifter. Använd följande kod:

predictor.delete_endpoint()

Slutsats

I det här inlägget introducerade vi Code Llama 70B på SageMaker JumpStart. Code Llama 70B är en toppmodern modell för att generera kod från naturliga språkmeddelanden såväl som kod. Du kan distribuera modellen med några enkla steg i SageMaker JumpStart och sedan använda den för att utföra kodrelaterade uppgifter som kodgenerering och kodinfyllning. Som nästa steg kan du prova att använda modellen med dina egna kodrelaterade användningsfall och data.


Om författarna

Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dr Kyle Ulrich är en tillämpad forskare med Amazon SageMaker JumpStart-teamet. Hans forskningsintressen inkluderar skalbara maskininlärningsalgoritmer, datorseende, tidsserier, Bayesianska icke-parametriska och Gaussiska processer. Hans doktorsexamen är från Duke University och han har publicerat artiklar i NeurIPS, Cell och Neuron.

Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Dr Farooq Sabir är Senior Artificiell Intelligens och Machine Learning Specialist Solutions Architect på AWS. Han har doktorsexamen och MS-examen i elektroteknik från University of Texas i Austin och en MS i datavetenskap från Georgia Institute of Technology. Han har över 15 års arbetslivserfarenhet och gillar även att undervisa och mentor studenter. På AWS hjälper han kunder att formulera och lösa sina affärsproblem inom datavetenskap, maskininlärning, datorseende, artificiell intelligens, numerisk optimering och relaterade domäner. Baserad i Dallas, Texas, älskar han och hans familj att resa och åka på långa vägresor.

Code Llama 70B är nu tillgänglig i Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Juni vann är produktchef hos SageMaker JumpStart. Han fokuserar på att göra grundmodeller lätta att upptäcka och använda för att hjälpa kunder att bygga generativa AI-applikationer. Hans erfarenhet på Amazon inkluderar även mobil shoppingapplikation och sista mil leverans.

Tidsstämpel:

Mer från AWS maskininlärning