Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Servizi Web di Amazon

Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Servizi Web di Amazon

Oggi siamo lieti di annunciare che i modelli di fondazione Code Llama, sviluppati da Meta, sono disponibili per i clienti tramite JumpStart di Amazon SageMaker da distribuire con un clic per eseguire l'inferenza. Code Llama è un modello di linguaggio di grandi dimensioni (LLM) all'avanguardia in grado di generare codice e linguaggio naturale sul codice sia da istruzioni di codice che di linguaggio naturale. Puoi provare questo modello con SageMaker JumpStart, un hub di machine learning (ML) che fornisce accesso ad algoritmi, modelli e soluzioni ML in modo da poter iniziare rapidamente con il ML. In questo post spieghiamo come individuare e distribuire il modello Code Llama tramite SageMaker JumpStart.

Codice Lama

Code Llama è un modello rilasciato da Meta basato su Llama 2. Questo modello all'avanguardia è progettato per migliorare la produttività delle attività di programmazione per gli sviluppatori aiutandoli a creare codice di alta qualità e ben documentato. I modelli eccellono in Python, C++, Java, PHP, C#, TypeScript e Bash e hanno il potenziale per far risparmiare tempo agli sviluppatori e rendere più efficienti i flussi di lavoro del software.

È disponibile in tre varianti, progettate per coprire un'ampia varietà di applicazioni: il modello fondamentale (Code Llama), un modello specializzato Python (Code Llama Python) e un modello che segue le istruzioni per comprendere le istruzioni del linguaggio naturale (Code Llama Instruct). Tutte le varianti di Code Llama sono disponibili in quattro dimensioni: parametri 7B, 13B, 34B e 70B. Le varianti base e istruzione 7B e 13B supportano il riempimento in base al contenuto circostante, rendendole ideali per le applicazioni di assistente codice. I modelli sono stati progettati utilizzando Llama 2 come base e poi addestrati su 500 miliardi di token di dati di codice, con la versione specializzata Python addestrata su 100 miliardi di token incrementali. I modelli Code Llama forniscono generazioni stabili con un massimo di 100,000 token di contesto. Tutti i modelli vengono addestrati su sequenze di 16,000 token e mostrano miglioramenti su input fino a 100,000 token.

Il modello è reso disponibile sotto lo stesso licenza comunitaria come Llama 2.

Modelli di fondazione in SageMaker

SageMaker JumpStart fornisce l'accesso a una gamma di modelli provenienti da hub di modelli popolari, tra cui Hugging Face, PyTorch Hub e TensorFlow Hub, che puoi utilizzare all'interno del flusso di lavoro di sviluppo ML in SageMaker. I recenti progressi nel machine learning hanno dato origine a una nuova classe di modelli noti come modelli di fondazione, che vengono generalmente addestrati su miliardi di parametri e sono adattabili a un'ampia categoria di casi d'uso, come il riepilogo del testo, la generazione di arte digitale e la traduzione linguistica. Poiché l'addestramento di questi modelli è costoso, i clienti desiderano utilizzare i modelli di base già addestrati esistenti e perfezionarli in base alle necessità, anziché addestrare questi modelli da soli. SageMaker fornisce un elenco curato di modelli tra cui puoi scegliere sulla console SageMaker.

Puoi trovare modelli di fondazione di diversi fornitori di modelli all'interno di SageMaker JumpStart, consentendoti di iniziare rapidamente con i modelli di fondazione. È possibile trovare modelli di base basati su attività o fornitori di modelli diversi ed esaminare facilmente le caratteristiche del modello e i termini di utilizzo. Puoi anche provare questi modelli utilizzando un widget dell'interfaccia utente di prova. Se desideri utilizzare un modello di base su larga scala, puoi farlo senza uscire da SageMaker utilizzando notebook predefiniti dei fornitori di modelli. Poiché i modelli sono ospitati e distribuiti su AWS, puoi essere certo che i tuoi dati, siano essi utilizzati per la valutazione o per l'utilizzo del modello su larga scala, non verranno mai condivisi con terze parti.

Scopri il modello Code Llama in SageMaker JumpStart

Per distribuire il modello Code Llama 70B, completare i seguenti passaggi in Amazon Sage Maker Studio:

  1. Nella home page di SageMaker Studio, scegli inizio di salto nel pannello di navigazione.

    Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

  2. Cerca i modelli Code Llama e scegli il modello Code Llama 70B dall'elenco dei modelli visualizzati.

    Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

    Puoi trovare maggiori informazioni sul modello sulla scheda modello Code Llama 70B.

    Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

    Lo screenshot seguente mostra le impostazioni dell'endpoint. Puoi modificare le opzioni o utilizzare quelle predefinite.

  3. Accettare il Contratto di licenza con l'utente finale (EULA) e scegliere Schierare.
    Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

    Verrà avviato il processo di distribuzione dell'endpoint, come mostrato nello screenshot seguente.

    Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Distribuisci il modello con SageMaker Python SDK

In alternativa, è possibile eseguire la distribuzione tramite il notebook di esempio scegliendo Apri taccuino nella pagina dei dettagli del modello di Classic Studio. Il notebook di esempio fornisce indicazioni end-to-end su come distribuire il modello per l'inferenza e pulire le risorse.

Per eseguire la distribuzione utilizzando il notebook, iniziamo selezionando un modello appropriato, specificato dal file model_id. Puoi distribuire uno qualsiasi dei modelli selezionati su SageMaker con il seguente codice:

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

Questo distribuisce il modello su SageMaker con configurazioni predefinite, inclusi il tipo di istanza predefinito e le configurazioni VPC predefinite. È possibile modificare queste configurazioni specificando valori non predefiniti in Modello JumpStart. Tieni presente che per impostazione predefinita, accept_eula è impostato su False. Devi impostare accept_eula=True per distribuire correttamente l'endpoint. In tal modo, accetti il ​​contratto di licenza utente e la politica di utilizzo accettabile come menzionato in precedenza. Puoi anche scaricare il contratto di licenza.

Richiama un endpoint SageMaker

Dopo la distribuzione dell'endpoint, è possibile eseguire l'inferenza utilizzando Boto3 o SageMaker Python SDK. Nel codice seguente utilizziamo SageMaker Python SDK per chiamare il modello per l'inferenza e stampare la risposta:

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

La funzione print_response prende un carico utile costituito dal carico utile e dalla risposta del modello e stampa l'output. Code Llama supporta molti parametri durante l'esecuzione dell'inferenza:

  • lunghezza massima – Il modello genera testo fino a raggiungere la lunghezza dell'output (che include la lunghezza del contesto di input). max_length. Se specificato, deve essere un numero intero positivo.
  • max_new_tokens – Il modello genera testo fino al raggiungimento della lunghezza dell'output (esclusa la lunghezza del contesto di input). max_new_tokens. Se specificato, deve essere un numero intero positivo.
  • num_raggi – Specifica il numero di raggi utilizzati nella ricerca golosa. Se specificato, deve essere un numero intero maggiore o uguale a num_return_sequences.
  • no_repeat_ngram_size – Il modello assicura che una sequenza di parole di no_repeat_ngram_size non viene ripetuto nella sequenza di output. Se specificato, deve essere un numero intero positivo maggiore di 1.
  • temperatura – Questo controlla la casualità nell'output. Più alto temperature risulta in una sequenza di output con parole a bassa probabilità e inferiore temperature risulta in una sequenza di output con parole ad alta probabilità. Se temperature è 0, il risultato è una decodifica avida. Se specificato, deve essere un float positivo.
  • early_stopping - Se True, la generazione del testo termina quando tutte le ipotesi del fascio raggiungono il token di fine frase. Se specificato, deve essere booleano.
  • do_campione - Se True, il modello campiona la parola successiva in base alla probabilità. Se specificato, deve essere booleano.
  • top_k – In ogni passaggio della generazione del testo, il modello campiona solo da top_k parole molto probabili. Se specificato, deve essere un numero intero positivo.
  • in alto_p – In ogni fase della generazione del testo, il modello campiona il più piccolo insieme possibile di parole con probabilità cumulativa top_p. Se specificato, deve essere un float compreso tra 0 e 1.
  • return_full_text - Se True, il testo in input farà parte del testo generato in output. Se specificato, deve essere booleano. Il valore predefinito è False.
  • Stop – Se specificato, deve essere un elenco di stringhe. La generazione del testo si interrompe se viene generata una qualsiasi delle stringhe specificate.

È possibile specificare qualsiasi sottoinsieme di questi parametri durante il richiamo di un endpoint. Successivamente, mostriamo un esempio di come richiamare un endpoint con questi argomenti.

Completamento del codice

Gli esempi seguenti dimostrano come eseguire il completamento del codice in cui la risposta prevista dell'endpoint è la naturale continuazione del prompt.

Per prima cosa eseguiamo il seguente codice:

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)

Otteniamo il seguente 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

Per il nostro prossimo esempio, eseguiamo il seguente codice:

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)

Otteniamo il seguente 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)

Generazione del codice

Gli esempi seguenti mostrano la generazione di codice Python utilizzando Code Llama.

Per prima cosa eseguiamo il seguente codice:

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)

Otteniamo il seguente output:

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

Per il nostro prossimo esempio, eseguiamo il seguente codice:

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)

Otteniamo il seguente 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))

Questi sono alcuni esempi di attività relative al codice che utilizzano Code Llama 70B. Puoi utilizzare il modello per generare codice ancora più complicato. Ti invitiamo a provarlo utilizzando i tuoi casi d'uso ed esempi relativi al codice!

ripulire

Dopo aver testato gli endpoint, assicurati di eliminare gli endpoint di inferenza SageMaker e il modello per evitare di incorrere in addebiti. Utilizza il seguente codice:

predictor.delete_endpoint()

Conclusione

In questo post abbiamo introdotto Code Llama 70B su SageMaker JumpStart. Code Llama 70B è un modello all'avanguardia per la generazione di codice da istruzioni in linguaggio naturale e codice. Puoi distribuire il modello con pochi semplici passaggi in SageMaker JumpStart e quindi utilizzarlo per eseguire attività relative al codice come la generazione e l'inserimento del codice. Come passaggio successivo, prova a utilizzare il modello con i tuoi casi d'uso e dati relativi al codice.


Circa gli autori

Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Kyle Ulrich è uno scienziato applicato del team JumpStart di Amazon SageMaker. I suoi interessi di ricerca includono algoritmi scalabili di apprendimento automatico, visione artificiale, serie temporali, parametri bayesiani non parametrici e processi gaussiani. Ha conseguito il dottorato di ricerca presso la Duke University e ha pubblicato articoli su NeurIPS, Cell e Neuron.

Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Farooq Sabir è Senior Artificial Intelligence and Machine Learning Specialist Solutions Architect presso AWS. Ha conseguito un dottorato di ricerca e un master in ingegneria elettrica presso l'Università del Texas ad Austin e un master in informatica presso il Georgia Institute of Technology. Ha oltre 15 anni di esperienza lavorativa e gli piace anche insegnare e fare da mentore agli studenti universitari. In AWS, aiuta i clienti a formulare e risolvere i loro problemi aziendali in data science, machine learning, visione artificiale, intelligenza artificiale, ottimizzazione numerica e domini correlati. Con sede a Dallas, in Texas, lui e la sua famiglia amano viaggiare e fare lunghi viaggi.

Il codice Llama 70B è ora disponibile in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Giugno vinto è un product manager con SageMaker JumpStart. Il suo obiettivo è rendere i modelli di base facilmente individuabili e utilizzabili per aiutare i clienti a creare applicazioni di intelligenza artificiale generativa. La sua esperienza in Amazon include anche applicazioni per lo shopping mobile e consegna dell'ultimo miglio.

Timestamp:

Di più da Apprendimento automatico di AWS