Przesyłaj strumieniowo odpowiedzi modelu w dużym języku w Amazon SageMaker JumpStart | Usługi internetowe Amazona

Przesyłaj strumieniowo odpowiedzi modelu w dużym języku w Amazon SageMaker JumpStart | Usługi internetowe Amazona

Z przyjemnością informujemy o tym Amazon SageMaker JumpStart może teraz przesyłać strumieniowo odpowiedzi wnioskowania z modelu dużego języka (LLM). Przesyłanie strumieniowe tokenów pozwala zobaczyć dane wyjściowe odpowiedzi modelu w trakcie ich generowania, zamiast czekać, aż LLM zakończą generowanie odpowiedzi, zanim zostaną udostępnione do użycia lub wyświetlenia. Możliwość przesyłania strumieniowego w SageMaker JumpStart może pomóc w tworzeniu aplikacji zapewniających lepszą obsługę użytkownika, tworząc wrażenie małego opóźnienia dla użytkownika końcowego.

W tym poście opisujemy sposób wdrażania i przesyłania strumieniowego odpowiedzi z aplikacji Model Falcona 7B Instruct punkt końcowy.

W chwili pisania tego tekstu następujące LLM dostępne w SageMaker JumpStart obsługują przesyłanie strumieniowe:

  • Mistral AI 7B, Mistral AI 7B Instruktaż
  • Falcon 180B, Falcon 180B Czat
  • Falcon 40B, Falcon 40B Instruktor
  • Falcon 7B, Falcon 7B Instruktor
  • Rinna japońska instrukcja GPT NeoX 4B PPO
  • Rinna japońska instrukcja GPT NeoX 3.6B PPO

Aby sprawdzić aktualizacje na liście modeli obsługujących przesyłanie strumieniowe w SageMaker JumpStart, wyszukaj „huggingface-llm” pod adresem Wbudowane algorytmy ze wstępnie wytrenowaną tabelą modeli.

Pamiętaj, że możesz użyć tzw funkcja przesyłania strumieniowego of Amazon Sage Maker gotowy hosting dla dowolnego modelu wdrożonego przy użyciu kontenera głębokiego uczenia się SageMaker TGI (DLC), jak opisano w Ogłaszamy wprowadzenie nowych kontenerów Hugging Face LLM Inference na Amazon SageMaker.

Modele podstawowe w SageMaker

SageMaker JumpStart zapewnia dostęp do szeregu modeli z popularnych centrów modeli, w tym Hugging Face, PyTorch Hub i TensorFlow Hub, których możesz używać w toku prac programistycznych ML w SageMaker. Ostatnie postępy w uczeniu maszynowym dały początek nowej klasie modeli znanych jako modele fundamentów, które są zazwyczaj szkolone na miliardach parametrów i można je dostosować do szerokiej kategorii przypadków użycia, takich jak podsumowywanie tekstu, generowanie grafiki cyfrowej i tłumaczenie językowe. Ponieważ uczenie tych modeli jest drogie, klienci chcą korzystać z istniejących, wstępnie wytrenowanych modeli podstawowych i dostrajać je w razie potrzeby, zamiast samodzielnie szkolić te modele. SageMaker udostępnia wyselekcjonowaną listę modeli, spośród których możesz wybierać w konsoli SageMaker.

W SageMaker JumpStart można teraz znaleźć modele fundamentów od różnych dostawców modeli, co umożliwia szybkie rozpoczęcie pracy z modelami fundamentów. SageMaker JumpStart oferuje modele podstawowe oparte na różnych zadaniach lub dostawcach modeli, a także umożliwia łatwe przeglądanie charakterystyki modelu i warunków użytkowania. Możesz także wypróbować te modele, korzystając z widżetu testowego interfejsu użytkownika. Jeśli chcesz używać podstawowego modelu na dużą skalę, możesz to zrobić bez opuszczania programu SageMaker, korzystając z gotowych notatników od dostawców modeli. Ponieważ modele są hostowane i wdrażane w AWS, masz pewność, że Twoje dane, niezależnie od tego, czy zostaną użyte do oceny czy wykorzystania modelu na dużą skalę, nie zostaną udostępnione stronom trzecim.

Przesyłanie tokenów

Przesyłanie strumieniowe tokenów umożliwia zwrócenie odpowiedzi na wnioskowanie w trakcie jej generowania przez model. W ten sposób możesz zobaczyć odpowiedź generowaną przyrostowo, zamiast czekać na zakończenie modelu przed dostarczeniem pełnej odpowiedzi. Przesyłanie strumieniowe może pomóc w zapewnieniu lepszej obsługi użytkownika, ponieważ zmniejsza odczuwanie opóźnień przez użytkownika końcowego. Możesz zacząć widzieć dane wyjściowe w miarę ich generowania, dzięki czemu możesz zatrzymać generowanie wcześniej, jeśli nie wyglądają one na przydatne do Twoich celów. Przesyłanie strumieniowe może mieć duże znaczenie, zwłaszcza w przypadku długotrwałych zapytań, ponieważ możesz zacząć widzieć wyniki w miarę ich generowania, co może powodować wrażenie mniejszych opóźnień, mimo że opóźnienie od początku do końca pozostaje takie samo.

W chwili pisania tego tekstu możesz używać przesyłania strumieniowego w SageMaker JumpStart w przypadku modeli korzystających z Hugging Face LLM Wnioskowanie dotyczące generowania tekstu DLC.

Odpowiedź bez parowania Odpowiedź poprzez transmisję strumieniową

Omówienie rozwiązania

W tym poście użyliśmy modelu Falcon 7B Instruct, aby zaprezentować możliwości przesyłania strumieniowego SageMaker JumpStart.

Możesz użyć poniższego kodu, aby znaleźć w SageMaker JumpStart inne modele obsługujące przesyłanie strumieniowe:

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)

Otrzymujemy następujące identyfikatory modeli obsługujące 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']

Wymagania wstępne

Przed uruchomieniem notebooka należy wykonać kilka początkowych kroków konfiguracyjnych. Uruchom następujące polecenia:

%pip install --upgrade sagemaker –quiet

Wdróż model

Pierwszym krokiem będzie użycie programu SageMaker JumpStart w celu wdrożenia modelu Falcon 7B Instruct. Pełne instrukcje można znaleźć w Model fundamentowy Falcon 180B firmy TII jest teraz dostępny za pośrednictwem Amazon SageMaker JumpStart. Użyj następującego kodu:

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

Zapytanie o punkt końcowy i odpowiedź strumienia

Następnie skonstruuj ładunek, za pomocą którego będzie można wywołać wdrożony punkt końcowy. Co ważne, ładunek powinien zawierać parę klucz/wartość "stream": True. Wskazuje to serwerowi wnioskowania generowania tekstu, aby wygenerował odpowiedź strumieniową.

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

Przed wysłaniem zapytania do punktu końcowego należy utworzyć iterator, który może przeanalizować odpowiedź strumienia bajtów z punktu końcowego. Dane dla każdego tokenu są dostarczane w odpowiedzi w postaci osobnej linii, więc ten iterator zwraca token za każdym razem, gdy w buforze przesyłania strumieniowego zostanie zidentyfikowana nowa linia. Ten iterator ma minimalistyczną konstrukcję i możesz chcieć dostosować jego zachowanie do swojego przypadku użycia; na przykład, podczas gdy ten iterator zwraca ciągi tokenów, dane wiersza zawierają inne informacje, takie jak prawdopodobieństwa dziennika tokenów, które mogą być interesujące.

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

Teraz możesz używać Boto3 invoke_endpoint_with_response_stream API na utworzonym punkcie końcowym i włącz przesyłanie strumieniowe, iterując po pliku TokenIterator instancja:

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

Określanie pustego end parametr do print funkcja umożliwi strumień wizualny bez wstawianych znaków nowej linii. Daje to następujące dane wyjściowe:

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

Możesz użyć tego kodu w notatniku lub innych aplikacjach, takich jak Streamlit lub Gradio, aby zobaczyć transmisję strumieniową w akcji i wrażenia, jakie zapewnia ona Twoim klientom.

Sprzątać

Na koniec pamiętaj o oczyszczeniu wdrożonego modelu i punktu końcowego, aby uniknąć ponoszenia dodatkowych kosztów:

predictor.delete_model()
predictor.delete_endpoint()

Wnioski

W tym poście pokazaliśmy, jak korzystać z nowo uruchomionej funkcji przesyłania strumieniowego w SageMaker JumpStart. Mamy nadzieję, że wykorzystasz możliwość przesyłania strumieniowego tokenów do tworzenia interaktywnych aplikacji wymagających małych opóźnień w celu zapewnienia lepszego doświadczenia użytkownika.


O autorach

Przesyłaj strumieniowo odpowiedzi modelu w dużym języku w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Rachna Czadha jest głównym architektem rozwiązań AI/ML w dziale strategicznych klientów w AWS. Rachna jest optymistką wierzącą, że etyczne i odpowiedzialne wykorzystanie sztucznej inteligencji może w przyszłości ulepszyć społeczeństwo i zapewnić dobrobyt gospodarczy i społeczny. W wolnym czasie Rachna lubi spędzać czas z rodziną, wędrować i słuchać muzyki.

Przesyłaj strumieniowo odpowiedzi modelu w dużym języku w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.dr Kyle Ulrich jest naukowcem z Wbudowane algorytmy Amazon SageMaker zespół. Jego zainteresowania badawcze obejmują skalowalne algorytmy uczenia maszynowego, wizję komputerową, szeregi czasowe, nieparametryczne Bayesa i procesy Gaussa. Jego doktorat uzyskał na Uniwersytecie Duke'a i publikował artykuły w czasopismach NeurIPS, Cell i Neuron.

Przesyłaj strumieniowo odpowiedzi modelu w dużym języku w Amazon SageMaker JumpStart | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Dr Ashish Khetan jest starszym naukowcem z wbudowanymi algorytmami Amazon SageMaker i pomaga rozwijać algorytmy uczenia maszynowego. Doktoryzował się na University of Illinois Urbana-Champaign. Jest aktywnym badaczem uczenia maszynowego i wnioskowania statystycznego oraz opublikował wiele artykułów na konferencjach NeurIPS, ICML, ICLR, JMLR, ACL i EMNLP.

Znak czasu:

Więcej z Uczenie maszynowe AWS