Code Llama 70B este acum disponibil în Amazon SageMaker JumpStart | Amazon Web Services

Code Llama 70B este acum disponibil în Amazon SageMaker JumpStart | Amazon Web Services

Astăzi, suntem încântați să anunțăm că modelele de fundație Code Llama, dezvoltate de Meta, sunt disponibile pentru clienți prin Amazon SageMaker JumpStart pentru a implementa cu un singur clic pentru a rula inferența. Code Llama este un model de limbaj mare (LLM) de ultimă generație, capabil să genereze cod și limbaj natural despre cod atât din solicitările de cod, cât și din limbajul natural. Puteți încerca acest model cu SageMaker JumpStart, un hub de învățare automată (ML) care oferă acces la algoritmi, modele și soluții ML, astfel încât să puteți începe rapid cu ML. În această postare, vom explica cum să descoperiți și să implementăm modelul Code Llama prin SageMaker JumpStart.

Cod Llama

Code Llama este un model lansat de meta care este construit pe Llama 2. Acest model de ultimă generație este conceput pentru a îmbunătăți productivitatea sarcinilor de programare pentru dezvoltatori, ajutându-i să creeze cod de înaltă calitate, bine documentat. Modelele excelează în Python, C++, Java, PHP, C#, TypeScript și Bash și au potențialul de a economisi timpul dezvoltatorilor și de a face fluxurile de lucru software mai eficiente.

Vine în trei variante, concepute pentru a acoperi o mare varietate de aplicații: modelul de bază (Code Llama), un model specializat Python (Code Llama Python) și un model de urmărire a instrucțiunilor pentru înțelegerea instrucțiunilor în limbaj natural (Code Llama Instruct). Toate variantele Code Llama vin în patru dimensiuni: parametrii 7B, 13B, 34B și 70B. Variantele de bază și instrucțiuni 7B și 13B acceptă umplerea bazată pe conținutul din jur, făcându-le ideale pentru aplicațiile de asistent de cod. Modelele au fost proiectate folosind Llama 2 ca bază și apoi antrenate pe 500 de miliarde de jetoane de date de cod, cu versiunea specializată Python antrenată pe 100 de miliarde de jetoane incrementale. Modelele Code Llama oferă generațiilor stabile până la 100,000 de simboluri de context. Toate modelele sunt antrenate pe secvențe de 16,000 de jetoane și arată îmbunătățiri ale intrărilor cu până la 100,000 de jetoane.

Modelul este pus la dispoziție sub același licență comunitară ca Llama 2.

Modele de fundație în SageMaker

SageMaker JumpStart oferă acces la o gamă de modele de la hub-uri de model populare, inclusiv Hugging Face, PyTorch Hub și TensorFlow Hub, pe care le puteți utiliza în fluxul de lucru de dezvoltare ML în SageMaker. Progresele recente în ML au dat naștere unei noi clase de modele cunoscute ca modele de fundație, care sunt de obicei antrenate pe miliarde de parametri și sunt adaptabile la o categorie largă de cazuri de utilizare, cum ar fi rezumarea textului, generarea de artă digitală și traducerea limbii. Deoarece aceste modele sunt costisitoare de antrenat, clienții doresc să utilizeze modele de fond de ten deja pregătite și să le ajusteze după cum este necesar, mai degrabă decât să antreneze ei înșiși aceste modele. SageMaker oferă o listă curată de modele din care puteți alege pe consola SageMaker.

Puteți găsi modele de fundație de la diferiți furnizori de modele în SageMaker JumpStart, permițându-vă să începeți rapid cu modele de fond de ten. Puteți găsi modele de bază bazate pe diferite sarcini sau furnizori de modele și puteți revizui cu ușurință caracteristicile modelului și termenii de utilizare. De asemenea, puteți încerca aceste modele folosind un widget de testare a interfeței de utilizare. Când doriți să utilizați un model de fundație la scară, puteți face acest lucru fără a părăsi SageMaker, utilizând notebook-uri prefabricate de la furnizorii de modele. Deoarece modelele sunt găzduite și implementate pe AWS, puteți fi sigur că datele dvs., indiferent dacă sunt utilizate pentru evaluarea sau utilizarea modelului la scară, nu sunt niciodată partajate cu terțe părți.

Descoperiți modelul Code Llama în SageMaker JumpStart

Pentru a implementa modelul Code Llama 70B, parcurgeți următorii pași în Amazon SageMaker Studio:

  1. Pe pagina de pornire SageMaker Studio, alegeți pornire în panoul de navigare.

    Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

  2. Căutați modele Code Llama și alegeți modelul Code Llama 70B din lista de modele afișată.

    Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

    Puteți găsi mai multe informații despre model pe cardul model Code Llama 70B.

    Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

    Următoarea captură de ecran arată setările punctului final. Puteți modifica opțiunile sau le puteți utiliza pe cele implicite.

  3. Acceptați Acordul de licență pentru utilizatorul final (EULA) și alegeți Lansa.
    Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

    Aceasta va începe procesul de implementare a punctului final, așa cum se arată în următoarea captură de ecran.

    Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Implementați modelul cu SageMaker Python SDK

Alternativ, puteți implementa prin exemplul de blocnotes, alegând Deschide Notebook în pagina cu detaliile modelului din Classic Studio. Exemplul de blocnotes oferă îndrumări de la capăt la capăt cu privire la modul de implementare a modelului pentru inferență și curățarea resurselor.

Pentru a implementa folosind notebook, începem prin a selecta un model adecvat, specificat de model_id. Puteți implementa oricare dintre modelele selectate pe SageMaker cu următorul cod:

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

Aceasta implementează modelul pe SageMaker cu configurații implicite, inclusiv tipul de instanță implicit și configurațiile VPC implicite. Puteți modifica aceste configurații specificând valori care nu sunt implicite în JumpStartModel. Rețineți că în mod implicit, accept_eula este setat la False. Trebuie să setați accept_eula=True pentru a implementa punctul final cu succes. Procedând astfel, acceptați acordul de licență de utilizare și politica de utilizare acceptabilă, așa cum sa menționat mai devreme. Poti de asemenea Descarca contractul de licență.

Invocați un punct final SageMaker

După ce punctul final este implementat, puteți efectua inferențe utilizând Boto3 sau SDK-ul SageMaker Python. În următorul cod, folosim SDK-ul SageMaker Python pentru a apela modelul pentru inferență și pentru a tipări răspunsul:

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

Funcția print_response preia o sarcină utilă constând din sarcina utilă și răspunsul modelului și tipărește rezultatul. Code Llama acceptă mulți parametri în timpul efectuării inferenței:

  • lungime maxima – Modelul generează text până când lungimea de ieșire (care include lungimea contextului de intrare) atinge max_length. Dacă este specificat, trebuie să fie un număr întreg pozitiv.
  • max_new_tokens – Modelul generează text până când lungimea de ieșire (excluzând lungimea contextului de intrare) atinge max_new_tokens. Dacă este specificat, trebuie să fie un număr întreg pozitiv.
  • num_grinzi – Acesta specifică numărul de fascicule utilizate în căutarea greedy. Dacă este specificat, trebuie să fie un număr întreg mai mare sau egal cu num_return_sequences.
  • no_repeat_ngram_size – Modelul asigură că o succesiune de cuvinte de no_repeat_ngram_size nu se repetă în secvența de ieșire. Dacă este specificat, trebuie să fie un număr întreg pozitiv mai mare decât 1.
  • temperatură – Acest lucru controlează aleatoritatea în ieșire. Superior temperature rezultă o secvență de ieșire cu cuvinte cu probabilitate scăzută și mai mici temperature rezultă o secvență de ieșire cu cuvinte cu probabilitate mare. Dacă temperature este 0, rezultă o decodare lacomă. Dacă este specificat, trebuie să fie un float pozitiv.
  • oprire_devreme - În cazul în care True, generarea textului este terminată când toate ipotezele fasciculului ajung la sfârșitul simbolului de propoziție. Dacă este specificat, trebuie să fie boolean.
  • do_sample - În cazul în care True, modelul eșantionează următorul cuvânt în funcție de probabilitate. Dacă este specificat, trebuie să fie boolean.
  • top_k – În fiecare pas de generare a textului, modelul prelevează numai din top_k cuvintele cel mai probabil. Dacă este specificat, trebuie să fie un număr întreg pozitiv.
  • sus_p – În fiecare pas de generare a textului, modelul prelevează din cel mai mic set posibil de cuvinte cu probabilitate cumulativă top_p. Dacă este specificat, trebuie să fie un float între 0 și 1.
  • return_full_text - În cazul în care True, textul de intrare va face parte din textul generat de ieșire. Dacă este specificat, trebuie să fie boolean. Valoarea implicită pentru aceasta este False.
  • opri – Dacă este specificat, trebuie să fie o listă de șiruri. Generarea textului se oprește dacă este generat oricare dintre șirurile specificate.

Puteți specifica orice subset al acestor parametri în timp ce invocați un punct final. În continuare, arătăm un exemplu despre cum să invocați un punct final cu aceste argumente.

Completarea codului

Următoarele exemple demonstrează cum se realizează completarea codului în cazul în care răspunsul așteptat la punctul final este continuarea firească a promptului.

Mai întâi rulăm următorul cod:

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)

Obținem următoarea ieșire:

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

Pentru următorul nostru exemplu, rulăm următorul cod:

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)

Obținem următoarea ieșire:

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

Generarea codului

Următoarele exemple arată generarea codului Python folosind Code Llama.

Mai întâi rulăm următorul cod:

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)

Obținem următoarea ieșire:

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

Pentru următorul nostru exemplu, rulăm următorul cod:

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)

Obținem următoarea ieșire:

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

Acestea sunt câteva dintre exemplele de sarcini legate de cod folosind Code Llama 70B. Puteți folosi modelul pentru a genera cod și mai complicat. Vă încurajăm să îl încercați folosind propriile cazuri de utilizare și exemple legate de cod!

A curăța

După ce ați testat punctele finale, asigurați-vă că ștergeți punctele finale de inferență SageMaker și modelul pentru a evita costurile. Utilizați următorul cod:

predictor.delete_endpoint()

Concluzie

În această postare, am introdus Code Llama 70B pe SageMaker JumpStart. Code Llama 70B este un model de ultimă generație pentru generarea de cod din prompturi în limbaj natural, precum și cod. Puteți implementa modelul cu câțiva pași simpli în SageMaker JumpStart și apoi îl puteți utiliza pentru a efectua sarcini legate de cod, cum ar fi generarea de cod și completarea codului. Ca pas următor, încercați să utilizați modelul cu propriile cazuri de utilizare și date legate de cod.


Despre autori

Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Kyle Ulrich este un om de știință aplicat în echipa Amazon SageMaker JumpStart. Interesele sale de cercetare includ algoritmi scalabili de învățare automată, viziunea computerizată, serii temporale, non-parametrice bayesiene și procese gaussiene. Doctoratul său este de la Universitatea Duke și a publicat lucrări în NeurIPS, Cell, and Neuron.

Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Dr. Farooq Sabir este arhitect senior de soluții specializat în inteligență artificială și învățare automată la AWS. El deține diplome de doctorat și master în inginerie electrică de la Universitatea din Texas din Austin și un master în informatică de la Georgia Institute of Technology. Are peste 15 ani de experiență în muncă și, de asemenea, îi place să predea și să îndrume studenții. La AWS, el îi ajută pe clienți să-și formuleze și să-și rezolve problemele de afaceri în știința datelor, învățarea automată, viziunea computerizată, inteligența artificială, optimizarea numerică și domeniile conexe. Cu sediul în Dallas, Texas, lui și familia lui le place să călătorească și să plece în călătorii lungi.

Code Llama 70B is now available in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.June a câștigat este manager de produs cu SageMaker JumpStart. El se concentrează pe a face modele de bază ușor de descoperit și utilizabil pentru a ajuta clienții să construiască aplicații AI generative. Experiența sa la Amazon include, de asemenea, aplicația de cumpărături pe mobil și livrarea ultimului mile.

Timestamp-ul:

Mai mult de la Învățare automată AWS