Trasmetti in streaming risposte di modelli linguistici di grandi dimensioni in Amazon SageMaker JumpStart | Servizi Web di Amazon

Trasmetti in streaming risposte di modelli linguistici di grandi dimensioni in Amazon SageMaker JumpStart | Servizi Web di Amazon

Siamo felici di annunciarla JumpStart di Amazon SageMaker ora è possibile trasmettere in streaming risposte di inferenza LLM (Large Language Model). Lo streaming di token consente di visualizzare l'output della risposta del modello mentre viene generato invece di attendere che gli LLM terminino la generazione della risposta prima che venga reso disponibile per l'utilizzo o la visualizzazione. La funzionalità di streaming di SageMaker JumpStart può aiutarti a creare applicazioni con una migliore esperienza utente creando una percezione di bassa latenza per l'utente finale.

In questo post, spieghiamo come distribuire e trasmettere in streaming la risposta da a Modello Falcon 7B istruito punto finale.

Al momento in cui scrivo, i seguenti LLM disponibili in SageMaker JumpStart supportano lo streaming:

  • Mistral AI 7B, Mistral AI 7B Istruttore
  • Falcon 180B, Chatta Falcon 180B
  • Falcon 40B, Falcon 40B Istruttore
  • Falcon 7B, Falcon 7B Istruttore
  • Rinna giapponese GPT NeoX 4B Istruzioni PPO
  • Rinna giapponese GPT NeoX 3.6B Istruzioni PPO

Per verificare la disponibilità di aggiornamenti sull'elenco dei modelli che supportano lo streaming in SageMaker JumpStart, cercare "huggingface-llm" all'indirizzo Algoritmi incorporati con tabella modello pre-addestrata.

Tieni presente che puoi utilizzare il file funzione di streaming of Amazon Sage Maker hosting pronto all'uso per qualsiasi modello distribuito utilizzando SageMaker TGI Deep Learning Container (DLC) come descritto in Annuncio del lancio di nuovi contenitori Hugging Face LLM Inference su Amazon SageMaker.

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 possono essere adattati 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.

Ora puoi trovare modelli di fondazione di diversi fornitori di modelli all'interno di SageMaker JumpStart, consentendoti di iniziare rapidamente con i modelli di fondazione. SageMaker JumpStart offre modelli di base basati su diverse attività o fornitori di modelli e puoi facilmente esaminare 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, hai la certezza che i tuoi dati, utilizzati per la valutazione o per l'utilizzo del modello su larga scala, non verranno condivisi con terze parti.

Streaming di gettoni

Lo streaming di token consente di restituire la risposta di inferenza mentre viene generata dal modello. In questo modo, puoi vedere la risposta generata in modo incrementale anziché attendere il completamento del modello prima di fornire la risposta completa. Lo streaming può contribuire a consentire una migliore esperienza utente perché diminuisce la percezione della latenza per l'utente finale. Puoi iniziare a vedere l'output mentre viene generato e quindi puoi interrompere la generazione in anticipo se l'output non sembra utile per i tuoi scopi. Lo streaming può fare una grande differenza, soprattutto per le query di lunga durata, perché puoi iniziare a vedere gli output man mano che vengono generati, il che può creare una percezione di latenza inferiore anche se la latenza end-to-end rimane la stessa.

Al momento della stesura di questo articolo, puoi utilizzare lo streaming in SageMaker JumpStart per i modelli che utilizzano Hugging Face LLM Inferenza sulla generazione del testo DLC.

Risposta senza vaporizzazione Risposta con lo streaming

Panoramica della soluzione

Per questo post, utilizziamo il modello Falcon 7B Instruct per mostrare la funzionalità di streaming JumpStart di SageMaker.

Puoi utilizzare il codice seguente per trovare altri modelli in SageMaker JumpStart che supportano lo streaming:

from sagemaker.jumpstart.notebook_utils import list_jumpstart_models
from sagemaker.jumpstart.filters import And filter_value = And("task == llm", "framework == huggingface")
model_ids = list_jumpstart_models(filter=filter_value)
print(model_ids)

Otteniamo i seguenti ID modello che supportano lo streaming:

['huggingface-llm-bilingual-rinna-4b-instruction-ppo-bf16', 'huggingface-llm-falcon-180b-bf16', 'huggingface-llm-falcon-180b-chat-bf16', 'huggingface-llm-falcon-40b-bf16', 'huggingface-llm-falcon-40b-instruct-bf16', 'huggingface-llm-falcon-7b-bf16', 'huggingface-llm-falcon-7b-instruct-bf16', 'huggingface-llm-mistral-7b', 'huggingface-llm-mistral-7b-instruct', 'huggingface-llm-rinna-3-6b-instruction-ppo-bf16']

Prerequisiti

Prima di eseguire il notebook, sono necessari alcuni passaggi iniziali per la configurazione. Esegui i seguenti comandi:

%pip install --upgrade sagemaker –quiet

Distribuire il modello

Come primo passo, utilizza SageMaker JumpStart per distribuire un modello Falcon 7B Instruct. Per istruzioni complete, fare riferimento a Il modello di fondazione Falcon 180B di TII è ora disponibile tramite Amazon SageMaker JumpStart. Utilizza il seguente codice:

from sagemaker.jumpstart.model import JumpStartModel my_model = JumpStartModel(model_id="huggingface-llm-falcon-7b-instruct-bf16")
predictor = my_model.deploy()

Interrogare l'endpoint e trasmettere la risposta

Successivamente, costruisci un payload con cui richiamare l'endpoint distribuito. È importante sottolineare che il payload deve contenere la coppia chiave/valore "stream": True. Ciò indica al server di inferenza di generazione del testo di generare una risposta in streaming.

payload = { "inputs": "How do I build a website?", "parameters": {"max_new_tokens": 256}, "stream": True
}

Prima di eseguire una query sull'endpoint, è necessario creare un iteratore in grado di analizzare la risposta del flusso di byte dall'endpoint. I dati per ogni token vengono forniti come una riga separata nella risposta, quindi questo iteratore restituisce un token ogni volta che viene identificata una nuova riga nel buffer di streaming. Questo iteratore è progettato in modo minimo e potresti voler adattare il suo comportamento al tuo caso d'uso; ad esempio, mentre questo iteratore restituisce stringhe di token, i dati della riga contengono altre informazioni, come le probabilità del log dei token, che potrebbero essere interessanti.

import io
import json class TokenIterator: def __init__(self, stream): self.byte_iterator = iter(stream) self.buffer = io.BytesIO() self.read_pos = 0 def __iter__(self): return self def __next__(self): while True: self.buffer.seek(self.read_pos) line = self.buffer.readline() if line and line[-1] == ord("n"): self.read_pos += len(line) + 1 full_line = line[:-1].decode("utf-8") line_data = json.loads(full_line.lstrip("data:").rstrip("/n")) return line_data["token"]["text"] chunk = next(self.byte_iterator) self.buffer.seek(0, io.SEEK_END) self.buffer.write(chunk["PayloadPart"]["Bytes"])

Ora puoi usare Boto3 invoke_endpoint_with_response_stream API sull'endpoint che hai creato e abilita lo streaming eseguendo l'iterazione su a TokenIterator esempio:

import boto3 client = boto3.client("runtime.sagemaker")
response = client.invoke_endpoint_with_response_stream( EndpointName=predictor.endpoint_name, Body=json.dumps(payload), ContentType="application/json",
) for token in TokenIterator(response["Body"]): print(token, end="")

Specificando un vuoto end parametro per il print la funzione abiliterà un flusso visivo senza caratteri di nuova riga inseriti. Ciò produce il seguente output:

Building a website can be a complex process, but it generally involves the following steps: 1. Determine the purpose and goals of your website
2. Choose a domain name and hosting provider
3. Design and develop your website using HTML, CSS, and JavaScript
4. Add content to your website and optimize it for search engines
5. Test and troubleshoot your website to ensure it is working properly
6. Maintain and update your website regularly to keep it running smoothly. There are many resources available online to guide you through these steps, including tutorials and templates. It may also be helpful to seek the advice of a web developer or designer if you are unsure about any of these steps.<|endoftext|>

Puoi utilizzare questo codice in un notebook o in altre applicazioni come Streamlit o Gradio per vedere lo streaming in azione e l'esperienza che offre ai tuoi clienti.

ripulire

Infine, ricorda di ripulire il modello e l'endpoint distribuiti per evitare di incorrere in costi aggiuntivi:

predictor.delete_model()
predictor.delete_endpoint()

Conclusione

In questo post, ti abbiamo mostrato come utilizzare la funzionalità di streaming appena lanciata in SageMaker JumpStart. Ci auguriamo che utilizzerai la funzionalità di streaming dei token per creare applicazioni interattive che richiedono una bassa latenza per una migliore esperienza utente.


Circa gli autori

Trasmetti in streaming risposte di modelli linguistici di grandi dimensioni in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Rachna Chada è Principal Solution Architect AI/ML in Strategic Accounts presso AWS. Rachna è un’ottimista che crede che l’uso etico e responsabile dell’intelligenza artificiale possa migliorare la società in futuro e portare prosperità economica e sociale. Nel suo tempo libero, Rachna ama trascorrere del tempo con la sua famiglia, fare escursioni e ascoltare musica.

Trasmetti in streaming risposte di modelli linguistici di grandi dimensioni in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Kyle Ulrich è uno scienziato applicato con il Algoritmi integrati di Amazon SageMaker squadra. I suoi interessi di ricerca includono algoritmi di machine learning scalabili, visione artificiale, serie storiche, bayesiani non parametrici e processi gaussiani. Il suo dottorato di ricerca è presso la Duke University e ha pubblicato articoli su NeurIPS, Cell e Neuron.

Trasmetti in streaming risposte di modelli linguistici di grandi dimensioni in Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.Dottor Ashish Khetan è un Senior Applied Scientist con algoritmi integrati di Amazon SageMaker e aiuta a sviluppare algoritmi di machine learning. Ha conseguito il dottorato di ricerca presso l'Università dell'Illinois Urbana-Champaign. È un ricercatore attivo nell'apprendimento automatico e nell'inferenza statistica e ha pubblicato numerosi articoli nelle conferenze NeurIPS, ICML, ICLR, JMLR, ACL e EMNLP.

Timestamp:

Di più da Apprendimento automatico di AWS