Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon

Danes z veseljem sporočamo, da so modeli temeljev Code Llama, ki jih je razvila Meta, na voljo strankam prek Amazon SageMaker JumpStart za uvedbo z enim klikom za tekoče sklepanje. Code Llama je najsodobnejši veliki jezikovni model (LLM), ki je sposoben generirati kodo in naravni jezik o kodi tako iz pozivov kode kot naravnega jezika. Code Llama je brezplačen za raziskovanje in komercialno uporabo. Ta model lahko preizkusite s SageMaker JumpStart, središčem za strojno učenje (ML), ki omogoča dostop do algoritmov, modelov in rešitev ML, tako da lahko hitro začnete uporabljati ML. V tem prispevku si ogledamo, kako odkriti in uvesti model Code Llama prek SageMaker JumpStart.

Kaj je Code Llama

Code Llama je model, ki ga je izdal Meta ki je zgrajen na vrhu Llama 2 in je najsodobnejši model, zasnovan za izboljšanje produktivnosti pri programskih nalogah za razvijalce, tako da jim pomaga ustvariti visoko kakovostno, dobro dokumentirano kodo. Modeli prikazujejo najsodobnejšo zmogljivost v Pythonu, C++, Javi, PHP, C#, TypeScript in Bash ter lahko prihranijo čas razvijalcem in naredijo delovne tokove programske opreme učinkovitejše. Na voljo je v treh različicah, zasnovanih tako, da pokrivajo široko paleto aplikacij: temeljni model (Code Llama), specializirani model za Python (Code Llama-Python) in model, ki sledi navodilom za razumevanje navodil naravnega jezika (Code Llama-Instruct). ). Vse različice Code Llama so na voljo v treh velikostih: parametri 7B, 13B in 34B. Različici 7B in 13B base in instruct podpirata izpolnjevanje na podlagi okoliške vsebine, zaradi česar sta idealni za aplikacije pomočnika kode.

Modeli so bili zasnovani z uporabo Llama 2 kot osnove in nato usposobljeni na 500 milijardah žetonov kodnih podatkov, pri čemer je bila specializirana različica Python usposobljena na postopnih 100 milijardah žetonov. Modeli Code Llama zagotavljajo stabilne generacije z do 100,000 žetoni konteksta. Vsi modeli so usposobljeni za zaporedja 16,000 žetonov in kažejo izboljšave pri vhodih z do 100,000 žetoni.

Model je na voljo pod isto licenca skupnosti kot Llama 2.

Kaj je SageMaker JumpStart

S SageMaker JumpStart lahko praktiki ML izbirajo med rastočim seznamom najuspešnejših modelov temeljev. Strokovnjaki ML lahko uvedejo temeljne modele v namenske Amazon SageMaker primerke v omrežno izoliranem okolju in prilagodite modele z uporabo SageMakerja za usposabljanje in uvajanje modelov.

Zdaj lahko odkrijete in uvedete modele Code Llama z nekaj kliki Amazon SageMaker Studio ali programsko prek SDK-ja SageMaker Python, kar vam omogoča, da izpeljete zmogljivost modela in kontrole MLOps s funkcijami SageMaker, kot je Amazonski cevovodi SageMaker, Napaka Amazon SageMaker, ali kontejnerski dnevniki. Model je nameščen v varnem okolju AWS in pod vašimi kontrolami VPC, kar pomaga zagotoviti varnost podatkov. Modele Code Llama je mogoče odkriti in jih je mogoče uporabiti v regijah Vzhod ZDA (S. Virginija), Zahod ZDA (Oregon) in Evropa (Irska).

Stranke morajo sprejeti EULA za uvedbo SDK modela visa SageMaker.

Odkrijte modele

Do modelov temeljev Code Llama lahko dostopate prek SageMaker JumpStart v uporabniškem vmesniku SageMaker Studio in SDK SageMaker Python. V tem razdelku bomo opisali, kako odkriti modele v SageMaker Studio.

SageMaker Studio je integrirano razvojno okolje (IDE), ki ponuja enoten spletni vizualni vmesnik, kjer lahko dostopate do namensko izdelanih orodij za izvajanje vseh razvojnih korakov ML, od priprave podatkov do gradnje, usposabljanja in uvajanja vaših modelov ML. Za več podrobnosti o tem, kako začeti in nastaviti SageMaker Studio, glejte Amazon SageMaker Studio.

V SageMaker Studio lahko dostopate do SageMaker JumpStart, ki vsebuje vnaprej pripravljene modele, prenosnike in vnaprej pripravljene rešitve, pod Predizdelane in avtomatizirane rešitve.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Na ciljni strani SageMaker JumpStart lahko brskate po rešitvah, modelih, prenosnikih in drugih virih. Modele Code Llama najdete v Temeljni modeli: generiranje besedila vrtiljak.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Z izbiro najdete tudi druge modelske variante Raziščite vse modele generiranja besedila ali iskanje Code Llama.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Izberete lahko kartico modela, da si ogledate podrobnosti o modelu, kot so licenca, podatki, uporabljeni za usposabljanje, in način uporabe. Našli boste tudi dva gumba, uvajanje in Odprite Beležnico, ki vam bo pomagal pri uporabi modela.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

uvajanje

Ko izberete uvajanje in potrdite pogoje, se bo začela uvedba. Druga možnost je, da uvedete prek vzorčnega prenosnika tako, da izberete Odprite Beležnico. Primer zvezka, ki ponuja navodila od konca do konca o tem, kako razmestiti model za sklepanje in čiščenje virov.

Za uvajanje z uporabo prenosnega računalnika začnemo z izbiro ustreznega modela, ki ga določi model_id. Kateri koli od izbranih modelov lahko namestite na SageMaker z naslednjo kodo:

from sagemaker.jumpstart.model import JumpStartModel model = JumpStartModel(model_id="meta-textgeneration-llama-codellama-7b")
predictor = model.deploy()

To razmesti model v SageMaker s privzetimi konfiguracijami, vključno s privzeto vrsto primerka in privzetimi konfiguracijami VPC. Te konfiguracije lahko spremenite tako, da podate neprivzete vrednosti v JumpStartModel. Ko je uveden, lahko izvedete sklepanje glede na uvedeno končno točko prek napovedovalca SageMaker:

payload = { "inputs": "<s>[INST] How do I deploy a model on Amazon SageMaker? [/INST]", "parameters": {"max_new_tokens": 512, "temperature": 0.2, "top_p": 0.9}
}
predictor.predict(payload, custom_attributes="accept_eula=true")

Upoštevajte, da je privzeto accept_eula nastavljena na false. Morate nastaviti accept_eula=true da uspešno prikličete končno točko. S tem sprejemate uporabniško licenčno pogodbo in politiko sprejemljive uporabe, kot je bilo omenjeno prej. Lahko tudi prenesi licenčno pogodbo.

Custom_attributes ki se uporabljajo za posredovanje EULA, so pari ključ/vrednost. Ključ in vrednost sta ločena z =, pari pa so ločeni z ;. Če uporabnik posreduje isti ključ več kot enkrat, se zadnja vrednost ohrani in posreduje upravljalniku skripta (v tem primeru se uporablja za pogojno logiko). Na primer, če accept_eula=false; accept_eula=true se nato posreduje strežniku accept_eula=true se hrani in posreduje upravljavcu skripta.

Parametri sklepanja nadzirajo proces generiranja besedila na končni točki. Največji nadzor novih žetonov se nanaša na velikost izhoda, ki ga ustvari model. Upoštevajte, da to ni enako številu besed, ker besedišče modela ni enako besedišču angleškega jezika in vsak žeton morda ni beseda angleškega jezika. Temperatura nadzoruje naključnost v izhodu. Višja temperatura povzroči bolj ustvarjalne in halucinirane rezultate. Vsi parametri sklepanja so neobvezni.

Naslednja tabela navaja vse modele Code Llama, ki so na voljo v SageMaker JumpStart, skupaj z ID-ji modela, privzetimi vrstami primerkov in največjim številom podprtih žetonov (vsota števila vhodnih žetonov in števila ustvarjenih žetonov za vse sočasne zahteve), podprtih za vsakega od teh modelov.

Ime modela ID modela Privzeta vrsta primerka Največ podprtih žetonov
KodaLlama-7b meta-textgeneration-llama-codellama-7b ml.g5.2xvelik 10000
CodeLlama-7b-Instruct meta-textgeneration-llama-codellama-7b-instruct ml.g5.2xvelik 10000
CodeLlama-7b-Python meta-textgeneration-llama-codellama-7b-python ml.g5.2xvelik 10000
KodaLlama-13b meta-textgeneration-llama-codellama-13b ml.g5.12xvelik 32000
CodeLlama-13b-Instruct meta-textgeneration-llama-codellama-13b-instruct ml.g5.12xvelik 32000
CodeLlama-13b-Python meta-textgeneration-llama-codellama-13b-python ml.g5.12xvelik 32000
KodaLlama-34b meta-textgeneration-llama-codellama-34b ml.g5.48xvelik 48000
CodeLlama-34b-Instruct meta-textgeneration-llama-codellama-34b-instruct ml.g5.48xvelik 48000
CodeLlama-34b-Python meta-textgeneration-llama-codellama-34b-python ml.g5.48xvelik 48000

Medtem ko so bili modeli Code Llama usposobljeni za kontekstno dolžino 16,000 žetonov, so modeli poročali o dobri zmogljivosti pri še večjih kontekstnih oknih. Največji podprti stolpec žetonov v prejšnji tabeli je zgornja meja podprtega kontekstnega okna na privzeti vrsti primerka. Ker lahko model Code Llama 7B podpira samo 10,000 žetonov na primerku ml.g5.2xlarge, priporočamo uvedbo različice modela 13B ali 34B, če so za vašo aplikacijo potrebni večji konteksti.

Privzeto vsi modeli delujejo za naloge generiranja kode. Osnovni model in model navodil se odzivata na naloge izpolnjevanja, čeprav je imel osnovni model boljšo kakovost izhoda za večino vzorčnih poizvedb. Končno, samo modeli inštrukcij delujejo na inštruktorskih nalogah. Naslednja tabela ponazarja, kateri modeli so imeli dobro zmogljivost (dobro) in zmerno zmogljivost (zmerno) pri vzorčnih poizvedbah v predstavitvenih zvezkih.

. Generiranje kode Polnjenje kode Navodila za kodo
KodaLlama-7b dobro dobro N / A
CodeLlama-7b-Instruct dobro Zmerno dobro
CodeLlama-7b-Python dobro N / A N / A
KodaLlama-13b dobro dobro N / A
CodeLlama-13b-Instruct dobro Zmerno dobro
CodeLlama-13b-Python dobro N / A N / A
KodaLlama-34b dobro N / A N / A
CodeLlama-34b-Instruct dobro N / A dobro
CodeLlama-34b-Python dobro N / A N / A

Ustvarjanje kode

Naslednji primeri so bili izvedeni na modelu CodeLlama-34b-Instruct s parametri koristne obremenitve "parameters": {"max_new_tokens": 256, "temperature": 0.2, "top_p": 0.9}:

Input
import socket def ping_exponential_backoff(host: str): Output """ Ping a host using exponential backoff. """ for i in range(1, 10): try: socket.gethostbyname(host) return True except socket.gaierror: time.sleep(2 ** i) return False Input
import argparse def main(string: str): print(string) print(string[::-1]) if __name__ == "__main__": Output parser = argparse.ArgumentParser() parser.add_argument("string", help="String to be printed") args = parser.parse_args() main(args.string)

Polnjenje kode

Polnjenje kode vključuje vračanje ustvarjene kode glede na okoliški kontekst. To se razlikuje od naloge generiranja kode, ker ima model poleg segmenta kode s predpono tudi pripono segmenta kode. Med fino nastavitvijo so bili uporabljeni posebni žetoni za označevanje začetka predpone (<PRE>), začetek pripone (<SUF>), in začetek sredine (<MID>). Vhodna zaporedja v model morajo biti v eni od naslednjih oblik:

  • predpona-pripona-srednja - <PRE> {prefix} <SUF>{suffix} <MID>
  • pripona-predpona-srednja - <PRE> <SUF>{suffix} <MID> {prefix}

Naslednji primeri uporabljajo obliko prefix-suffix-middle na modelu CodeLlama-7b s koristnim parameters {"max_new_tokens": 256, "temperature": 0.05, "top_p": 0.9}:

Input
<PRE> def remove_non_ascii(s: str) -> str: """ <SUF> return result <MID> Output Remove non-ASCII characters from a string. :param s: The string to remove non-ASCII characters from. :return: The string with non-ASCII characters removed. """ result = "" for c in s: if ord(c) < 128: result += c Input
# Installation instructions: ```bash
<FILL> ```
This downloads the LLaMA inference code and installs the repository as a local pip package. Output git clone https://github.com/LLaMA-AI/LLaMA-inference.git cd LLaMA-inference pip install -e . Input
class InterfaceManagerFactory(AbstractManagerFactory): def __init__(<FILL>
def main(): factory = InterfaceManagerFactory(start=datetime.now()) managers = [] for i in range(10): managers.append(factory.build(id=i)) Output
self, start=None): self.start = start def build(self, id): return InterfaceManager(id, self.start) Input
/-- A quasi-prefunctoid is 1-connected iff all its etalisations are 1-connected. -/
theorem connected_iff_etalisation [C D : precategoroid] (P : quasi_prefunctoid C D) : π₁ P = 0 ↔ <FILL> = 0 :=
begin split, { intros h f, rw pi_1_etalisation at h, simp [h], refl }, { intro h, have := @quasi_adjoint C D P, simp [←pi_1_etalisation, this, h], refl }
end Output
∀ f : C ⟶ D, π₁ (P.etalise f)

Navodila za kodo

Meta je zagotovila tudi različico Code Llama, prilagojeno navodilom. Primere poizvedb v tem razdelku je mogoče uporabiti samo za te z navodili prilagojene modele Code Llama, ki so modeli s pripono ukaza ID modela. Oblika kode Llama za navodila je enaka obliki poziva Llama-2-chat, ki jo podrobno opisujemo v Modeli temeljev Llama 2 so zdaj na voljo v SageMaker JumpStart

Preprost uporabniški poziv je lahko videti takole:

<s>[INST] {user_prompt} [/INST]

Dodate lahko tudi sistemski poziv z naslednjo sintakso:

<s>[INST] <<SYS>>
{system_prompt}
<</SYS>> {user_prompt} [/INST]

Končno lahko vzpostavite pogovorno interakcijo z modelom tako, da v vnos vključite vse prejšnje uporabniške pozive in odgovore pomočnika:

<s>[INST] <<SYS>>
{system_prompt}
<</SYS>> {user_prompt_1} [/INST] {assistant_response_1} </s><s>[INST] {user_prompt_1} [/INST]

Ti primeri so bili izvedeni na modelu CodeLlama-13b-Instruct s parametri koristne obremenitve »parametri«: {"max_new_tokens": 512, "temperature": 0.2, "top_p": 0.9}:

Input
<s>[INST] In Bash, how do I list all text files in the current directory (excluding subdirectories) that have been modified in the last month? [/INST] Output You can use the `find` command in Bash to list all text files in the current directory (excluding subdirectories) that have been modified in the last month. Here's an example command:
```
find . -type f -name "*.txt" -mtime -30
```
Here's a breakdown of the command: * `find .`: This tells `find` to search the current directory and all its subdirectories.
* `-type f`: This tells `find` to only search for files (not directories).
* `-name "*.txt"`: This tells `find` to only search for files with the `.txt` extension.
* `-mtime -30`: This tells `find` to only search for files that have been modified in the last 30 days (2,592,000 seconds). The output of the command will be a list of all text files in the current directory (excluding subdirectories) that have been modified in the last month. Input
<s>[INST] What is the difference between inorder and preorder traversal? Give an example in Python. [/INST] Output Inorder and preorder traversal are two different ways of traversing a binary tree. Inorder traversal is a way of visiting the nodes of a binary tree in a specific order. In an inorder traversal, the left subtree is visited first, then the current node, and finally the right subtree is visited. This means that the nodes are visited in a left-to-right, top-to-bottom order. Preorder traversal, on the other hand, is a way of visiting the nodes of a binary tree in a different order. In a preorder traversal, the current node is visited first, followed by the left subtree, and finally the right subtree. This means that the nodes are visited in a top-down, left-to-right order. Here is an example of an inorder traversal of a binary tree in Python:
```
def inorder_traversal(root): if root is None: return [] return inorder_traversal(root.left) + [root.val] + inorder_traversal(root.right)
```
And here is an example of a preorder traversal of a binary tree in Python:
```
def preorder_traversal(root): if root is None: return [] return [root.val] + preorder_traversal(root.left) + preorder_traversal(root.right)
```
In this example, the `inorder_traversal` function returns a list of the values in the tree in the order of the keys, from smallest to largest. The `preorder_traversal` function returns a list of the values in the tree in the order of the keys, but with the current node visited before its children. Input
<s>[INST] <<SYS>>
Provide answers in JavaScript
<</SYS>> Write a function that computes the set of sums of all contiguous sublists of a given list. [/INST] Output function contiguousSublistSums(list) { let sums = []; for (let i = 0; i < list.length; i++) { let sum = 0; for (let j = i; j < list.length; j++) { sum += list[j]; sums.push(sum); } } return sums;
} console.log(contiguousSublistSums([1, 2, 3, 4, 5])); // [1, 3, 6, 10, 15]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6])); // [1, 3, 6, 10, 15, 21]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6, 7])); // [1, 3, 6, 10, 15, 21, 28]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6, 7, 8])); // [1, 3, 6, 10, 15, 21, 28, 36]
console.log(contiguousSublistSums([1, 2, 3, 4, 5, 6, 7, 8, 9])); // [1, 3, 6, 10, 15, 21, 28, 36, 45]

Čiščenje

Ko končate z zagonom zvezka, izbrišite vse vire, ki ste jih ustvarili med postopkom, da bo vaše zaračunavanje ustavljeno. Uporabite naslednjo kodo:

predictor.delete_model()
predictor.delete_endpoint()

zaključek

V tej objavi smo vam pokazali, kako začeti z modeli Code Llama v SageMaker Studio in uvesti model za generiranje kode in naravnega jezika o kodi iz pozivov kode in naravnega jezika. Ker so osnovni modeli vnaprej usposobljeni, lahko pomagajo znižati stroške usposabljanja in infrastrukture ter omogočijo prilagoditev za vaš primer uporabe. Za začetek obiščite SageMaker JumpStart v SageMaker Studio.

viri


O avtorjih


Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Gabriel Synnaeve
je raziskovalni direktor v skupini Facebook AI Research (FAIR) pri Meti. Pred Meto je bil Gabriel podoktorski sodelavec v ekipi Emmanuela Dupouxa na École Normale Supérieure v Parizu, kjer se je ukvarjal z obratnim inženiringom pri pridobivanju jezika pri dojenčkih. Gabriel je doktoriral iz Bayesovega modeliranja, ki se uporablja za umetno inteligenco v strateških igrah v realnem času, na Univerzi v Grenoblu.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Eissa Jamil je partnerski inženir RL, Generative AI pri Meta.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Dr. Kyle Ulrich je uporabni znanstvenik pri ekipi Amazon SageMaker JumpStart. Njegovi raziskovalni interesi vključujejo skalabilne algoritme strojnega učenja, računalniški vid, časovne vrste, Bayesove neparametrične in Gaussove procese. Njegov doktorat je pridobil na Univerzi Duke in je objavil članke v NeurIPS, Cell in Neuron.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Dr. Ashish Khetan je višji aplikativni znanstvenik pri Amazon SageMaker JumpStart in pomaga pri razvoju algoritmov strojnega učenja. Doktoriral je na Univerzi Illinois Urbana-Champaign. Je aktiven raziskovalec strojnega učenja in statističnega sklepanja ter je objavil številne članke na konferencah NeurIPS, ICML, ICLR, JMLR, ACL in EMNLP.

Modeli za ustvarjanje kode Code Llama podjetja Meta so zdaj na voljo prek Amazon SageMaker JumpStart | Spletne storitve Amazon PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Vivek Singh je produktni vodja pri SageMaker JumpStart. Osredotoča se na omogočanje strankam, da vključijo SageMaker JumpStart, da poenostavijo in pospešijo njihovo pot ML za izdelavo aplikacij Generative AI.

Časovni žig:

Več od Strojno učenje AWS