Funkcja Retrieval Augmented Generation (RAG) umożliwia udostępnienie modelowi dużego języka (LLM) dostępu do danych z zewnętrznych źródeł wiedzy, takich jak repozytoria, bazy danych i interfejsy API, bez konieczności jego dostrajania. Korzystając z generatywnej sztucznej inteligencji do odpowiadania na pytania, RAG umożliwia LLM odpowiadanie na pytania za pomocą najbardziej odpowiednich, aktualnych informacji i opcjonalnie powoływanie się na źródła danych w celu weryfikacji.
Typowe rozwiązanie RAG do wyszukiwania wiedzy z dokumentów wykorzystuje model osadzania do konwersji danych ze źródeł danych na osady i przechowuje te osady w wektorowej bazie danych. Gdy użytkownik zadaje pytanie, przeszukuje bazę wektorów i pobiera dokumenty, które są najbardziej podobne do zapytania użytkownika. Następnie łączy pobrane dokumenty i zapytanie użytkownika w rozszerzonym monitie, który jest wysyłany do LLM w celu wygenerowania tekstu. W tej implementacji istnieją dwa modele: model osadzania i LLM, który generuje ostateczną odpowiedź.
W tym poście pokazujemy, jak używać Studio Amazon SageMaker zbudować rozwiązanie odpowiadające na pytania RAG.
Używanie notatników do odpowiadania na pytania w oparciu o RAG
Implementacja RAG zazwyczaj wiąże się z eksperymentowaniem z różnymi modelami osadzania, wektorowymi bazami danych, modelami generowania tekstu i podpowiedziami, a także debugowaniem kodu, aż do uzyskania funkcjonalnego prototypu. Amazon Sage Maker oferuje zarządzane notebooki Jupyter wyposażone w instancje GPU, umożliwiające szybkie eksperymentowanie w tej początkowej fazie bez konieczności uruchamiania dodatkowej infrastruktury. Istnieją dwie możliwości korzystania z notatników w SageMaker. Pierwszą opcją jest szybkie uruchomienie laptopy dostępne poprzez SageMaker Studio. W SageMaker Studio, zintegrowanym środowisku programistycznym (IDE) stworzonym specjalnie dla ML, możesz uruchamiać notatniki działające na różnych typach instancji i z różnymi konfiguracjami, współpracować ze współpracownikami i uzyskiwać dostęp do dodatkowych, specjalnie opracowanych funkcji uczenia maszynowego (ML). Drugą opcją jest użycie a Instancja notebooka SageMaker, czyli w pełni zarządzana instancja obliczeniowa ML z uruchomioną aplikacją Jupyter Notebook.
W tym poście przedstawiamy rozwiązanie RAG, które poszerza wiedzę modelu o dodatkowe dane z zewnętrznych źródeł wiedzy, aby zapewnić dokładniejsze odpowiedzi specyficzne dla niestandardowej domeny. Używamy jednego notebooka SageMaker Studio działającego na komputerze ml.g5.2xlarge
instancja (1 procesor graficzny A10G) i Lama 2 7b czat hf, dopracowana wersja Llama 2 7b, zoptymalizowana pod kątem zastosowań dialogowych z Hugging Face Hub. Wykorzystujemy dwa posty na blogu AWS Media & Entertainment jako przykładowe dane zewnętrzne, które konwertujemy na osadzanie za pomocą pliku BAAI/bge-small-en-v1.5 osadzania. Przechowujemy osady w szyszka, wektorowa baza danych oferująca wydajne wyszukiwanie i dopasowywanie podobieństw. Omawiamy także, jak przejść od eksperymentowania w notatniku do wdrażania modeli w punktach końcowych SageMaker w celu wnioskowania w czasie rzeczywistym po zakończeniu prototypowania. To samo podejście można zastosować w przypadku różnych modeli i wektorowych baz danych.
Omówienie rozwiązania
Poniższy schemat ilustruje architekturę rozwiązania.
Wdrożenie rozwiązania składa się z dwóch ogólnych etapów: opracowania rozwiązania przy użyciu notatników SageMaker Studio oraz wdrożenia modeli na potrzeby wnioskowania.
Opracuj rozwiązanie, korzystając z notatników SageMaker Studio
Wykonaj następujące kroki, aby rozpocząć opracowywanie rozwiązania:
- Załaduj model czatu Llama-2 7b z Hugging Face Hub do notatnika.
- Utwórz szablon podpowiedzi za pomocą LangChain i użyj go do utworzenia podpowiedzi dla swojego przypadku użycia.
- W przypadku 1–2 przykładowych podpowiedzi dodaj odpowiedni tekst statyczny z dokumentów zewnętrznych jako kontekst podpowiedzi i oceń, czy jakość odpowiedzi ulegnie poprawie.
- Zakładając, że jakość się poprawi, zaimplementuj przepływ odpowiedzi na pytania RAG:
- Zbierz dokumenty zewnętrzne, które mogą pomóc modelowi lepiej odpowiedzieć na pytania w Twoim przypadku użycia.
- Załaduj model osadzania BGE i użyj go do wygenerowania osadzania tych dokumentów.
- Przechowuj te osady w indeksie Pinecone.
- Gdy użytkownik zadaje pytanie, przeprowadź wyszukiwanie podobieństwa w Pinecone i dodaj treść z najbardziej podobnych dokumentów do kontekstu podpowiedzi.
Wdróż modele w SageMaker, aby uzyskać wnioski na dużą skalę
Kiedy osiągniesz swoje cele w zakresie wydajności, możesz wdrożyć modele w SageMaker, aby mogły być używane przez generatywne aplikacje AI:
- Wdróż model czatu Llama-2 7b w punkcie końcowym czasu rzeczywistego SageMaker.
- Wdróż BAAI/bge-small-en-v1.5 osadza model w punkcie końcowym czasu rzeczywistego SageMaker.
- Użyj wdrożonych modeli w swoim pytaniu, odpowiadając na generatywne aplikacje AI.
W poniższych sekcjach przeprowadzimy Cię przez kolejne etapy wdrażania tego rozwiązania w notatnikach SageMaker Studio.
Wymagania wstępne
Aby wykonać kroki opisane w tym poście, musisz mieć konto AWS i AWS Zarządzanie tożsamością i dostępem (IAM) z uprawnieniami do tworzenia zasobów rozwiązania i uzyskiwania do nich dostępu. Jeśli jesteś nowy w AWS, zobacz Utwórz samodzielne konto AWS.
Aby używać notatników SageMaker Studio na koncie AWS, potrzebujesz: Domena SageMakera z profilem użytkownika mającym uprawnienia do uruchamiania aplikacji SageMaker Studio. Jeśli jesteś nowy w SageMaker Studio, Szybka konfiguracja studia to najszybszy sposób na rozpoczęcie. Za pomocą jednego kliknięcia SageMaker przydziela domenę SageMaker domyślne ustawienia wstępne, w tym konfiguruje profil użytkownika, rolę IAM, uwierzytelnianie IAM i publiczny dostęp do Internetu. Notatnik do tego postu zakłada ml.g5.2xlarge
typ instancji. Aby sprawdzić lub zwiększyć swój limit, otwórz konsolę AWS Service Quotas i wybierz Usługi AWS-a w okienku nawigacji wybierz Amazon Sage Makeri zapoznaj się z wartością dla działających aplikacji Studio KernelGateway ml.g5.2xlarge
instancje.
Po potwierdzeniu limitu przydziału musisz uzupełnić zależności, aby móc korzystać z czatu Llama 2 7b.
Czat Llama 2 7b jest dostępny pod adresem Licencja Lamy 2. Aby uzyskać dostęp do Lamy 2 na Hugging Face, musisz najpierw wykonać kilka kroków:
- Utwórz konto Hugging Face, jeśli jeszcze go nie masz.
- Wypełnij formularz „Poproś o dostęp do następnej wersji Lamy” w Meta .
- Poproś o dostęp do Czat Lamy 2 7b na Przytulonej Twarzy.
Po przyznaniu dostępu możesz utworzyć nowy token dostępu, aby uzyskać dostęp do modeli. Aby utworzyć token dostępu, przejdź do Ustawienia na stronie Hugging Face.
Aby używać go jako bazy danych wektorowych, musisz mieć konto w Pinecone. Pinecone jest dostępny na AWS za pośrednictwem Rynek AWS. Witryna Pinecone oferuje również opcję utworzenia pliku darmowe konto zawiera uprawnienia do utworzenia pojedynczego indeksu, co jest wystarczające do celów tego postu. Aby odzyskać klucze Pinecone, otwórz plik Konsola Pinecone i wybierz Klucze API.
Skonfiguruj notatnik i środowisko
Aby postępować zgodnie z kodem z tego posta, otwórz SageMaker Studio i sklonuj poniższy plik Repozytorium GitHub. Następnie otwórz notatnik studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb i wybierz zoptymalizowany obraz PyTorch 2.0.0 Python 3.10 GPU, jądro Python 3 i ml.g5.2xlarge
jako typ instancji. Jeśli po raz pierwszy korzystasz z notatników SageMaker Studio, zapoznaj się z sekcją Utwórz lub otwórz notatnik Amazon SageMaker Studio.
Aby skonfigurować środowisko programistyczne, musisz zainstalować niezbędne biblioteki Pythona, jak pokazano w następującym kodzie:
%%writefile requirements.txt
sagemaker>=2.175.0
transformers==4.33.0
accelerate==0.21.0
datasets==2.13.0
langchain==0.0.297
pypdf>=3.16.3
pinecone-client
sentence_transformers
safetensors>=0.3.3
!pip install -U -r requirements.txt
Załaduj wstępnie wyszkolony model i tokenizer
Po zaimportowaniu wymaganych bibliotek można załadować plik Czat Lamy-2 7b model wraz z odpowiadającymi mu tokenizerami z Hugging Face. Te załadowane artefakty modelu są przechowywane w katalogu lokalnym w SageMaker Studio. Dzięki temu możesz szybko załadować je ponownie do pamięci, gdy zajdzie potrzeba wznowienia pracy w innym momencie.
import torch from transformers import ( AutoTokenizer, LlamaTokenizer, LlamaForCausalLM, GenerationConfig, AutoModelForCausalLM
)
import transformers tg_model_id = "meta-llama/Llama-2-7b-chat-hf" #the model id in Hugging Face
tg_model_path = f"./tg_model/{tg_model_id}" #the local directory where the model will be saved tg_model = AutoModelForCausalLM.from_pretrained(tg_model_id, token=hf_access_token,do_sample=True, use_safetensors=True, device_map="auto", torch_dtype=torch.float16
tg_tokenizer = AutoTokenizer.from_pretrained(tg_model_id, token=hf_access_token) tg_model.save_pretrained(save_directory=tg_model_path, from_pt=True)
tg_tokenizer.save_pretrained(save_directory=tg_model_path, from_pt=True)
Zadaj pytanie wymagające aktualnych informacji
Możesz teraz zacząć korzystać z modelu i zadawać pytania. Modele czatu Lama-2 oczekują, że monit będzie zgodny z następującym formatem:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
Możesz użyć Szablon podpowiedzi z LangChain, aby utworzyć przepis w oparciu o format podpowiedzi, dzięki czemu można łatwo tworzyć podpowiedzi w przyszłości:
from langchain import PromptTemplate template = """<s>[INST] <<SYS>>nYou are an assistant for question-answering tasks. You are helpful and friendly. Use the following pieces of retrieved context to answer the query. If you don't know the answer, you just say I don't know. Use three sentences maximum and keep the answer concise.
<<SYS>>n
{context}n
{question} [/INST] """
prompt_template = PromptTemplate( template=template, input_variables=['context','question'] )
Zadajmy modelowi pytanie, które potrzebuje aktualnych informacji z 2023 roku. Możesz użyć LangChain, a konkretnie LLMCain typ łańcucha i podaj jako parametry LLM, utworzony wcześniej szablon podpowiedzi oraz pytanie:
question = "When can I visit the AWS M&E Customer Experience Center in New York City?" tg_tokenizer.add_special_tokens( {"pad_token": "[PAD]"} )
tg_tokenizer.padding_side = "left" tg_pipe = transformers.pipeline(task='text-generation', model=tg_model, tokenizer=tg_tokenizer, num_return_sequences=1, eos_token_id=tg_tokenizer.eos_token_id, pad_token_id=tg_tokenizer.eos_token_id, max_new_tokens=400, temperature=0.7) from langchain.chains import LLMChain
from langchain.llms import HuggingFacePipeline llm=HuggingFacePipeline(pipeline=tg_pipe, model_kwargs={'temperature':0.7})
llm_chain = LLMChain(llm=llm, prompt=prompt_template)
no_context_response = llm_chain.predict(context="", question=question)
print(no_context_response)
Otrzymujemy następującą wygenerowaną odpowiedź:
Dziękujemy za kontakt! Centrum obsługi klienta AWS M&E w Nowym Jorku jest obecnie zamknięte ze względu na pandemię COVID-19. Możesz jednak sprawdzić ich oficjalną stronę internetową lub konta w mediach społecznościowych, aby uzyskać aktualne informacje na temat ponownego otwarcia centrum. W międzyczasie możesz przeglądać ich wirtualne wycieczki i zasoby dostępne online.
Popraw odpowiedź, dodając kontekst do podpowiedzi
Odpowiedź, którą wygenerowaliśmy, nie jest do końca prawdziwa. Zobaczmy, czy możemy to ulepszyć, podając kontekst. Możesz dodać fragment postu AWS ogłasza nowe Centrum Obsługi Klienta M&E w Nowym Jorku, który zawiera aktualizacje tematu z 2023 roku:
context = """Media and entertainment (M&E) customers continue to face challenges in creating more content, more quickly, and distributing it to more endpoints than ever before in their quest to delight viewers globally. Amazon Web Services (AWS), along with AWS Partners, have showcased the rapid evolution of M&E solutions for years at industry events like the National Association of Broadcasters (NAB) Show and the International Broadcast Convention (IBC). Until now, AWS for M&E technology demonstrations were accessible in this way just a few weeks out of the year. Customers are more engaged than ever before; they want to have higher quality conversations regarding user experience and media tooling. These conversations are best supported by having an interconnected solution architecture for reference. Scheduling a visit of the M&E Customer Experience Center will be available starting November 13th, please send an email to AWS-MediaEnt-CXC@amazon.com."""
Użyj ponownie LLMChain i przekaż poprzedni tekst jako kontekst:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
Nowa odpowiedź odpowiada na pytanie, podając aktualne informacje:
Centrum obsługi klienta AWS M&E w Nowym Jorku będzie można odwiedzić już od 13 listopada. Aby umówić się na wizytę, wyślij e-mail na adres AWS-MediaEnt-CXC@amazon.com.
Potwierdziliśmy, że dodanie odpowiedniego kontekstu poprawia wydajność modelu. Teraz możesz skupić swoje wysiłki na znalezieniu i dodaniu odpowiedniego kontekstu dla zadawanego pytania. Innymi słowy, wdroż RAG.
Zaimplementuj odpowiadanie na pytania RAG za pomocą osadzania BGE i Pinecone
W tym momencie musisz zdecydować o źródłach informacji, aby poszerzyć wiedzę modelu. Źródłami tymi mogą być wewnętrzne strony internetowe lub dokumenty w Twojej organizacji albo publicznie dostępne źródła danych. Na potrzeby tego wpisu i dla uproszczenia wybraliśmy dwa wpisy na blogu AWS opublikowane w 2023 roku:
Posty te są już dostępne jako dokumenty PDF w katalogu projektu danych w SageMaker Studio, co umożliwia szybki dostęp. Aby podzielić dokumenty na łatwe do zarządzania części, możesz zastosować metodę Rekurencyjny rozdzielacz tekstu znaków metoda z LangChain:
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import PyPDFDirectoryLoader loader = PyPDFDirectoryLoader("./data/") documents = loader.load() text_splitter=RecursiveCharacterTextSplitter( chunk_size=1000, chunk_overlap=5
)
docs = text_splitter.split_documents(documents)
Następnie użyj modelu osadzania BGE bge-small-en Stworzony przez Pekińska Akademia Sztucznej Inteligencji (BAAI) który jest dostępny w Hugging Face i umożliwia generowanie osadzania tych fragmentów. Pobierz i zapisz model w katalogu lokalnym w Studio. Używamy fp32, aby mógł działać na procesorze instancji.
em_model_name = "BAAI/bge-small-en"
em_model_path = f"./em-model" from transformers import AutoModel
# Load model from HuggingFace Hub
em_model = AutoModel.from_pretrained(em_model_name,torch_dtype=torch.float32)
em_tokenizer = AutoTokenizer.from_pretrained(em_model_name,device="cuda") # save model to disk
em_tokenizer.save_pretrained(save_directory=f"{em_model_path}/model",from_pt=True)
em_model.save_pretrained(save_directory=f"{em_model_path}/model",from_pt=True)
em_model.eval()
Użyj poniższego kodu, aby utworzyć funkcję embedding_generator, która pobiera fragmenty dokumentu jako dane wejściowe i generuje osady przy użyciu modelu BGE:
# Tokenize sentences
def tokenize_text(_input, device): return em_tokenizer( [_input], padding=True, truncation=True, return_tensors='pt' ).to(device) # Run embedding task as a function with model and text sentences as input
def embedding_generator(_input, normalize=True): # Compute token embeddings with torch.no_grad(): embedded_output = em_model( **tokenize_text( _input, em_model.device ) ) sentence_embeddings = embedded_output[0][:, 0] # normalize embeddings if normalize: sentence_embeddings = torch.nn.functional.normalize( sentence_embeddings, p=2, dim=1 ) return sentence_embeddings[0, :].tolist() sample_sentence_embedding = embedding_generator(docs[0].page_content)
print(f"Embedding size of the document --->", len(sample_sentence_embedding))
W tym poście demonstrujemy przepływ pracy RAG przy użyciu Pinecone, zarządzanego rozwiązania natywnego w chmurze baza danych wektorowych który oferuje również API do wyszukiwania podobieństw. Możesz przepisać poniższy kod, aby skorzystać z preferowanej bazy danych wektorów.
Inicjujemy a Klient Pythona Pinecone i utwórz nowy indeks wyszukiwania wektorowego, korzystając z długości wyjściowej modelu osadzania. Używamy wbudowanej klasy Pinecone LangChain do przyjmowania osadów, które utworzyliśmy w poprzednim kroku. Potrzebuje trzech parametrów: dokumentów do przyjęcia, funkcji generatora osadzania i nazwy indeksu Pinecone.
import pinecone
pinecone.init( api_key = os.environ["PINECONE_API_KEY"], environment = os.environ["PINECONE_ENV"]
)
#check if index already exists, if not we create it
index_name = "rag-index"
if index_name not in pinecone.list_indexes(): pinecone.create_index( name=index_name, dimension=len(sample_sentence_embedding), ## 384 for bge-small-en metric='cosine' ) #insert the embeddings
from langchain.vectorstores import Pinecone
vector_store = Pinecone.from_documents( docs, embedding_generator, index_name=index_name
)
Po załadowaniu do pamięci modelu czatu Llama-2 7B i osadzeniu zintegrowanym z indeksem Pinecone można teraz połączyć te elementy, aby ulepszyć odpowiedzi Lamy 2 w naszym przypadku użycia polegającym na odpowiadaniu na pytania. Aby to osiągnąć, możesz zastosować LangChain PobieranieQA, który rozszerza początkowy monit o najbardziej podobne dokumenty ze sklepu wektorowego. Przez ustawienie return_source_documents=True
zyskujesz wgląd w dokładne dokumenty użyte do wygenerowania odpowiedzi w ramach odpowiedzi, dzięki czemu możesz zweryfikować poprawność odpowiedzi.
from langchain.chains import RetrievalQA
import textwrap #helper method to improve the readability of the response
def print_response(llm_response): temp = [textwrap.fill(line, width=100) for line in llm_response['result'].split('n')] response = 'n'.join(temp) print(f"{llm_response['query']}n n{response}'n n Source Documents:") for source in llm_response["source_documents"]: print(source.metadata) llm_qa_chain = RetrievalQA.from_chain_type( llm=llm, #the Llama-2 7b chat model chain_type='stuff', retriever=vector_store.as_retriever(search_kwargs={"k": 2}), # perform similarity search in Pinecone return_source_documents=True, #show the documents that were used to answer the question chain_type_kwargs={"prompt": prompt_template}
)
print_response(llm_qa_chain(question))
Otrzymujemy następującą odpowiedź:
P: Kiedy mogę odwiedzić Centrum Obsługi Klienta AWS M&E w Nowym Jorku?
Odp.: chętnie pomogę! W zależności od kontekstu Centrum Obsługi Klienta AWS M&E w Nowym Jorku będzie dostępne do zwiedzania od 13 listopada. Możesz wysłać e-mail na adres AWS-MediaEnt-CXC@amazon.com, aby umówić się na wizytę.'
Dokumenty źródłowe:
{'page': 4.0, 'source': 'data/AWS ogłasza nowe centrum obsługi klienta M&E w Nowym Jorku _ AWS dla bloga M&E.pdf'}
{'page': 2.0, 'source': 'data/AWS ogłasza nowe centrum obsługi klienta M&E w Nowym Jorku _ AWS dla bloga M&E.pdf'}
Spróbujmy innego pytania:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
Otrzymujemy następującą odpowiedź:
P: Ile nagród zdobyła usługa AWS Media Services w 2023 r.?
Odp.: Według wpisu na blogu firma AWS Media Services zdobyła w 2023 r. pięć nagród branżowych.
Dokumenty źródłowe:
{'page': 0.0, 'source': 'data/AWS Media Services nagrodzone wyróżnieniami branżowymi _ AWS dla M&E Blog.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services nagrodzone wyróżnieniami branżowymi _ AWS dla M&E Blog.pdf'}
Po ustaleniu wystarczającego poziomu pewności można wdrożyć modele Punkty końcowe SageMaker do wnioskowania w czasie rzeczywistym. Te punkty końcowe są w pełni zarządzane i oferują obsługę automatycznego skalowania.
SageMaker oferuje wnioskowanie o dużych modelach przy użyciu kontenerów wnioskowania o dużych modelach (LMI), które możemy wykorzystać do wdrażania naszych modeli. Kontenery te są wyposażone w preinstalowane biblioteki open source, takie jak DeepSpeed, ułatwiające wdrażanie technik zwiększających wydajność, takich jak równoległość tensorów podczas wnioskowania. Dodatkowo używają DJLServing jako gotowego zintegrowanego serwera modelowego. DJLSobsługa to wysokowydajne, uniwersalne rozwiązanie do obsługi modeli, które oferuje obsługę dynamicznego przetwarzania wsadowego i automatycznego skalowania procesów roboczych, zwiększając w ten sposób przepustowość.
W naszym podejściu używamy SageMaker LMI z DJLServing i DeepSpeed Inference do wdrażania modeli Llama-2-chat 7b i BGE na punktach końcowych SageMaker działających na ml.g5.2xlarge
instancji, umożliwiając wnioskowanie w czasie rzeczywistym. Jeśli chcesz samodzielnie wykonać te kroki, zapoznaj się z załączoną instrukcją notatnik dla szczegółowych instrukcji.
Będziesz potrzebować dwóch ml.g5.2xlarge
instancji do wdrożenia. Aby sprawdzić lub zwiększyć swój limit, otwórz konsolę AWS Service Quotas i wybierz Usługi AWS-a w okienku nawigacji wybierz Amazon Sage Makeri zapoznaj się z wartością dla ml.g5.2xlarge
do użytku w punkcie końcowym.
Poniższe kroki opisują proces wdrażania niestandardowych modeli dla przepływu pracy RAG na punkcie końcowym SageMaker:
- Wdróż Lama-2 7b model czatu z punktem końcowym czasu rzeczywistego SageMaker działającym na komputerze
ml.g5.2xlarge
przykład szybkiego generowania tekstu. - Wdróż BAAI/bge-small-en-v1.5 osadza model w punkcie końcowym czasu rzeczywistego SageMaker działającym na platformie
ml.g5.2xlarge
instancja. Alternatywnie możesz wdrożyć własny model osadzania. - Zadaj pytanie i skorzystaj z LangChain PobieranieQA aby rozszerzyć podpowiedzi o najbardziej podobne dokumenty z Pinecone, tym razem wykorzystując model wdrożony w punkcie końcowym czasu rzeczywistego SageMaker:
# convert your local LLM into SageMaker endpoint LLM
llm_sm_ep = SagemakerEndpoint( endpoint_name=tg_sm_model.endpoint_name, # <--- Your text-gen model endpoint name region_name=region, model_kwargs={ "temperature": 0.05, "max_new_tokens": 512 }, content_handler=content_handler,
) llm_qa_smep_chain = RetrievalQA.from_chain_type( llm=llm_sm_ep, # <--- This uses SageMaker Endpoint model for inference chain_type='stuff', retriever=vector_store.as_retriever(search_kwargs={"k": 2}), return_source_documents=True, chain_type_kwargs={"prompt": prompt_template}
)
- Użyj LangChain, aby sprawdzić, czy punkt końcowy SageMaker z modelem osadzania działa zgodnie z oczekiwaniami, aby można go było wykorzystać do przyszłego przetwarzania dokumentów:
response_model = smr_client.invoke_endpoint( EndpointName=em_sm_model.endpoint_name, <--- Your embedding model endpoint name Body=json.dumps({ "text": "This is a sample text" }), ContentType="application/json",
) outputs = json.loads(response_model["Body"].read().decode("utf8"))['outputs']
Sprzątać
Wykonaj następujące kroki, aby wyczyścić zasoby:
- Po zakończeniu pracy w notatniku SageMaker Studio pamiętaj o wyłączeniu
ml.g5.2xlarge
na przykład, aby uniknąć opłat, wybierając ikonę stop. Możesz także skonfigurować skrypty konfiguracji cyklu życia aby automatycznie wyłączać zasoby, gdy nie są używane.
- Jeśli wdrożyłeś modele na punktach końcowych SageMaker, uruchom następujący kod na końcu notatnika, aby usunąć punkty końcowe:
#delete your text generation endpoint
sm_client.delete_endpoint( EndpointName=tg_sm_model.endpoint_name
)
# delete your text embedding endpoint
sm_client.delete_endpoint( EndpointName=em_sm_model.endpoint_name
)
- Na koniec uruchom następujący wiersz, aby usunąć indeks Pinecone:
pinecone.delete_index(index_name)
Wnioski
Notatniki SageMaker to prosty sposób na rozpoczęcie przygody z technologią Augmented Generation. Umożliwiają interaktywne eksperymentowanie z różnymi modelami, konfiguracjami i pytaniami bez konieczności uruchamiania dodatkowej infrastruktury. W tym poście pokazaliśmy, jak zwiększyć wydajność czatu Llama 2 7b w przypadku użycia odpowiedzi na pytanie, używając LangChain, modelu osadzania BGE i Pinecone. Aby rozpocząć, uruchom SageMaker Studio i uruchom plik notatnik dostępne poniżej GitHub repo. Podziel się swoimi przemyśleniami w sekcji komentarzy!
O autorach
Anastazja Ceweleka jest architektem rozwiązań w zakresie uczenia maszynowego i sztucznej inteligencji w AWS. Pracuje z klientami w regionie EMEA i pomaga im w projektowaniu rozwiązań uczenia maszynowego na dużą skalę przy użyciu usług AWS. Pracowała nad projektami z różnych dziedzin, w tym z przetwarzaniem języka naturalnego (NLP), MLOps i narzędziami Low Code No Code.
Pranava Murthy’ego jest Architektem Rozwiązań Specjalistycznych AI/ML w AWS. Koncentruje się na pomaganiu klientom w tworzeniu, szkoleniu, wdrażaniu i migracji obciążeń uczenia maszynowego (ML) do SageMaker. Wcześniej pracował w branży półprzewodników, opracowując duże modele wizji komputerowej (CV) i przetwarzania języka naturalnego (NLP) w celu ulepszenia procesów półprzewodnikowych. W wolnym czasie lubi grać w szachy i podróżować.
- Dystrybucja treści i PR oparta na SEO. Uzyskaj wzmocnienie już dziś.
- PlatoData.Network Pionowe generatywne AI. Wzmocnij się. Dostęp tutaj.
- PlatoAiStream. Inteligencja Web3. Wiedza wzmocniona. Dostęp tutaj.
- PlatonESG. Węgiel Czysta technologia, Energia, Środowisko, Słoneczny, Gospodarowanie odpadami. Dostęp tutaj.
- Platon Zdrowie. Inteligencja w zakresie biotechnologii i badań klinicznych. Dostęp tutaj.
- Źródło: https://aws.amazon.com/blogs/machine-learning/use-amazon-sagemaker-studio-to-build-a-rag-question-answering-solution-with-llama-2-langchain-and-pinecone-for-fast-experimentation/
- :ma
- :Jest
- :nie
- :Gdzie
- $W GÓRĘ
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- Akademia
- dostęp
- Dostęp do danych
- dostępny
- Stosownie
- Konto
- Konta
- precyzja
- dokładny
- Osiągać
- Dodaj
- dodanie
- Dodatkowy
- do tego
- przylegać
- ponownie
- AI
- AI / ML
- dopuszczać
- Pozwalać
- pozwala
- wzdłuż
- już
- również
- Amazonka
- Amazon Sage Maker
- Studio Amazon SageMaker
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- i
- Ogłasza
- odpowiedź
- odpowiedzi
- każdy
- Pszczoła
- Aplikacja
- aplikacje
- podejście
- mobilne i webowe
- architektura
- SĄ
- sztuczny
- sztuczna inteligencja
- AS
- zapytać
- oszacować
- Asystent
- Stowarzyszenie
- zakłada
- At
- zwiększać
- zwiększona
- rozszerzenia
- Uwierzytelnianie
- samochód
- automatycznie
- dostępny
- uniknąć
- Stephen Schwartz wygrywa
- nagrody
- AWS
- na podstawie
- BE
- być
- zanim
- BEST
- Ulepsz Swój
- Blog
- Najnowsze wpisy
- ciało
- nadawanie
- budować
- wbudowany
- by
- CAN
- walizka
- Etui
- Centrum
- łańcuch
- więzy
- wyzwania
- Opłaty
- ZOBACZ
- Szachy
- Dodaj
- Wybierając
- wybrany
- Miasto
- klasa
- kleń
- kliknij
- zamknięte
- kod
- współpracować
- koledzy
- COM
- połączyć
- kombajny
- jak
- byliśmy spójni, od początku
- komentarze
- kompletny
- obliczać
- komputer
- Wizja komputerowa
- zwięzły
- pewność siebie
- systemu
- ZATWARDZIAŁY
- składa się
- Konsola
- Pojemniki
- zawartość
- kontekst
- kontynuować
- Konwencja
- rozmowy
- konwertować
- Odpowiedni
- mógłby
- COVID-19
- Pandemia COVID-19
- Stwórz
- stworzony
- Tworzenie
- Obecnie
- zwyczaj
- klient
- doświadczenie klienta
- Klientów
- dane
- Baza danych
- Bazy danych
- zdecydować
- Domyślnie
- zachwycać
- wykazać
- wykazać
- Zależności
- rozwijać
- wdrażane
- wdrażanie
- Wdrożenie
- szczegółowe
- rozwijanie
- oprogramowania
- urządzenie
- Dialog
- różne
- dyskutować
- rozdzielczy
- podzielić
- dokument
- dokumenty
- domena
- domeny
- darowizna
- nie
- na dół
- pobieranie
- z powodu
- podczas
- dynamiczny
- e
- Wcześniej
- z łatwością
- starania
- Elementy
- osadzanie
- EMEA
- Umożliwia
- umożliwiając
- zakończenia
- Punkt końcowy
- zaangażowany
- wzmacniać
- rozrywka
- całkowicie
- Środowisko
- wyposażony
- ustanowiony
- wydarzenia
- EVER
- ewolucja
- przykład
- istnieje
- oczekiwać
- spodziewany
- doświadczenie
- eksperyment
- odkryj
- zewnętrzny
- wyciąg
- Twarz
- ułatwienie
- FAST
- najszybszy
- Korzyści
- kilka
- finał
- znalezieniu
- i terminów, a
- pierwszy raz
- pięć
- Skupiać
- koncentruje
- obserwuj
- następujący
- W razie zamówieenia projektu
- Nasz formularz
- format
- Naprzód
- Darmowy
- przyjazny
- od
- w pełni
- funkcjonować
- funkcjonalny
- przyszłość
- Wzrost
- Generować
- wygenerowane
- generuje
- generacja
- generatywny
- generatywna sztuczna inteligencja
- generator
- otrzymać
- Globalnie
- Gole
- będzie
- GPU
- udzielony
- Zaoszczędzić
- Have
- mający
- he
- pomoc
- pomocny
- pomoc
- pomaga
- na wysokim szczeblu
- wysoka wydajność
- wyższy
- jego
- Dobranie (Hit)
- W jaki sposób
- How To
- Jednak
- HTML
- HTTPS
- Piasta
- Przytulanie twarzy
- i
- IBC
- ICON
- ID
- tożsamość
- if
- ilustruje
- obraz
- wdrożenia
- realizacja
- wykonawczych
- importować
- podnieść
- ulepszony
- poprawia
- in
- W innych
- obejmuje
- Włącznie z
- Zwiększać
- wzrastający
- wskaźnik
- przemysł
- Wydarzenia branżowe
- Informacja
- Infrastruktura
- początkowy
- wkład
- zainstalować
- przykład
- instrukcje
- zintegrowany
- Inteligencja
- połączone
- wewnętrzny
- na świecie
- Internet
- dostęp do Internetu
- najnowszych
- IT
- JEGO
- podróż
- jpg
- json
- właśnie
- Trzymać
- Klawisze
- Wiedzieć
- wiedza
- język
- duży
- uruchomić
- nauka
- lewo
- Długość
- poziom
- biblioteki
- lubić
- LIMIT
- Linia
- Lama
- LLM
- załadować
- ładowarka
- miejscowy
- niski
- maszyna
- uczenie maszynowe
- robić
- wykonalny
- zarządzane
- wiele
- dopasowywanie
- maksymalny
- w międzyczasie
- Media
- Pamięć
- Meta
- Metadane
- metoda
- migrować
- ML
- MLOps
- model
- modele
- jeszcze
- większość
- musi
- NAB
- Nazwa
- narodowy
- Naturalny
- Przetwarzanie języka naturalnego
- Nawigacja
- Nawigacja
- niezbędny
- Potrzebować
- wymagania
- Nowości
- Nowy dostęp
- I Love New York
- nowy jork
- Następny
- nlp
- Nie
- notatnik
- listopad
- już dziś
- of
- oferta
- Oferty
- urzędnik
- Oficjalna strona internetowa
- on
- ONE
- Online
- koncepcja
- open source
- zoptymalizowane
- Option
- Opcje
- or
- organizacja
- OS
- Inne
- ludzkiej,
- na zewnątrz
- zarys
- wydajność
- Wyjścia
- własny
- ścieżka
- strona
- pandemiczny
- chleb
- parametry
- część
- wzmacniacz
- przechodzić
- wykonać
- jest gwarancją najlepszej jakości, które mogą dostarczyć Ci Twoje monitory,
- uprawnienia
- faza
- sztuk
- plato
- Analiza danych Platona
- PlatoDane
- gra
- Proszę
- Post
- Wiadomości
- Korzystny
- teraźniejszość
- poprzedni
- poprzednio
- wygląda tak
- procesów
- przetwarzanie
- Profil
- projekt
- projektowanie
- prototyp
- prototypowanie
- zapewniać
- że
- publiczny
- publicznie
- opublikowany
- cele
- Python
- płomień
- jakość
- poszukiwanie
- pytanie
- pytania
- Szybki
- szybko
- szybki
- szybko
- osiągnięcie
- w czasie rzeczywistym
- niedawny
- Przepis
- odnosić się
- odniesienie
- w sprawie
- otworzyć na nowo
- wymagać
- wymagany
- wymagania
- Wymaga
- Zasoby
- odpowiedź
- Odpowiedzi
- dalsze
- Resume
- powrót
- przeglądu
- prawo
- Rola
- run
- bieganie
- sagemaker
- wzgląd
- taki sam
- Zapisz
- zapisywane
- powiedzieć
- Skala
- skalowaniem
- rozkład
- szeregowanie
- Szukaj
- wyszukiwania
- druga
- działy
- widzieć
- Semiconductor
- wysłać
- wysłany
- serwer
- usługa
- Usługi
- zestaw
- ustawienie
- Share
- ona
- pokazać
- prezentowany
- pokazał
- zamknąć
- zamknąć
- podobny
- prostota
- pojedynczy
- Rozmiar
- So
- Obserwuj Nas
- Media społecznościowe
- rozwiązanie
- Rozwiązania
- kilka
- Źródło
- Źródła
- specjalista
- specyficzny
- swoiście
- standalone
- początek
- rozpoczęty
- Startowy
- statyczny
- Ewolucja krok po kroku
- Cel
- Stop
- sklep
- przechowywany
- sklep
- bezpośredni
- studio
- taki
- wystarczający
- wsparcie
- Utrzymany
- pewnie
- szybko
- trwa
- Zadanie
- zadania
- Techniki
- Technologia
- szablon
- XNUMX
- niż
- że
- Połączenia
- ich
- Im
- Tam.
- a tym samym
- Te
- one
- to
- trzy
- Przez
- wydajność
- czas
- do
- żeton
- tokenizować
- narzędzia
- aktualny
- pochodnia
- Wycieczki
- Pociąg
- Transformatory
- przejście
- Podróżowanie
- prawdziwy
- próbować
- drugiej
- rodzaj
- typy
- typowy
- zazwyczaj
- dla
- uniwersalny
- aż do
- nowomodny
- Nowości
- Stosowanie
- posługiwać się
- przypadek użycia
- używany
- Użytkownik
- Doświadczenie użytkownika
- zastosowania
- za pomocą
- wykorzystać
- wartość
- różnorodny
- Weryfikacja
- zweryfikować
- wersja
- przez
- widzów
- Wirtualny
- wirtualne wycieczki
- widoczność
- wizja
- Odwiedzić
- Wizyty
- spacer
- chcieć
- Droga..
- we
- sieć
- usługi internetowe
- Strona internetowa
- tygodni
- były
- jeśli chodzi o komunikację i motywację
- ilekroć
- który
- Podczas
- będzie
- w
- w ciągu
- bez
- Wygrał
- słowa
- Praca
- pracował
- pracownik
- workflow
- pracujący
- działa
- rok
- lat
- york
- You
- Twój
- siebie
- zefirnet