Mit Retrieval Augmented Generation (RAG) können Sie einem großen Sprachmodell (LLM) Zugriff auf Daten aus externen Wissensquellen wie Repositorys, Datenbanken und APIs bereitstellen, ohne dass eine Feinabstimmung erforderlich ist. Beim Einsatz generativer KI zur Beantwortung von Fragen ermöglicht RAG LLMs, Fragen mit den relevantesten und aktuellsten Informationen zu beantworten und optional ihre Datenquellen zur Überprüfung anzugeben.
Eine typische RAG-Lösung zum Abrufen von Wissen aus Dokumenten verwendet ein Einbettungsmodell, um die Daten aus den Datenquellen in Einbettungen umzuwandeln, und speichert diese Einbettungen in einer Vektordatenbank. Wenn ein Benutzer eine Frage stellt, durchsucht es die Vektordatenbank und ruft Dokumente ab, die der Anfrage des Benutzers am ähnlichsten sind. Anschließend werden die abgerufenen Dokumente und die Anfrage des Benutzers in einer erweiterten Eingabeaufforderung kombiniert, die zur Textgenerierung an das LLM gesendet wird. In dieser Implementierung gibt es zwei Modelle: das Einbettungsmodell und das LLM, das die endgültige Antwort generiert.
In diesem Beitrag demonstrieren wir die Verwendung Amazon SageMaker-Studio um eine RAG-Lösung zur Beantwortung von Fragen zu erstellen.
Verwendung von Notebooks für die RAG-basierte Beantwortung von Fragen
Die Implementierung von RAG erfordert in der Regel das Experimentieren mit verschiedenen Einbettungsmodellen, Vektordatenbanken, Textgenerierungsmodellen und Eingabeaufforderungen sowie das Debuggen Ihres Codes, bis Sie einen funktionsfähigen Prototyp erhalten. Amazon Sage Maker bietet verwaltete Jupyter-Notebooks mit GPU-Instanzen an, sodass Sie in dieser Anfangsphase schnell experimentieren können, ohne zusätzliche Infrastruktur aufzubauen. Es gibt zwei Möglichkeiten, Notizbücher in SageMaker zu verwenden. Die erste Option ist der Schnellstart Laptops verfügbar über SageMaker Studio. In SageMaker Studio, der speziell für ML entwickelten integrierten Entwicklungsumgebung (IDE), können Sie Notebooks starten, die auf verschiedenen Instanztypen und mit unterschiedlichen Konfigurationen ausgeführt werden, mit Kollegen zusammenarbeiten und auf zusätzliche speziell entwickelte Funktionen für maschinelles Lernen (ML) zugreifen. Die zweite Möglichkeit ist die Verwendung von a SageMaker-Notebook-Instanz, eine vollständig verwaltete ML-Recheninstanz, auf der die Jupyter Notebook-App ausgeführt wird.
In diesem Beitrag stellen wir eine RAG-Lösung vor, die das Wissen des Modells mit zusätzlichen Daten aus externen Wissensquellen erweitert, um genauere Antworten speziell für eine benutzerdefinierte Domäne bereitzustellen. Wir verwenden ein einzelnes SageMaker Studio-Notebook, das auf einem läuft ml.g5.2xlarge
Instanz (1 A10G GPU) und Lama 2 7b Chat HF, die fein abgestimmte Version von Llama 2 7b, die für Dialog-Anwendungsfälle von Hugging Face Hub optimiert ist. Als externe Beispieldaten verwenden wir zwei AWS Media & Entertainment-Blogbeiträge, die wir mit dem in Einbettungen umwandeln BAAI/bge-small-en-v1.5 Einbettungen. Wir speichern die Einbettungen in Tannenzapfen, eine vektorbasierte Datenbank, die leistungsstarke Suche und Ähnlichkeitsabgleich bietet. Wir besprechen auch, wie Sie vom Experimentieren im Notebook zur Bereitstellung Ihrer Modelle auf SageMaker-Endpunkten für Echtzeit-Inferenzen übergehen, wenn Sie Ihr Prototyping abgeschlossen haben. Der gleiche Ansatz kann mit verschiedenen Modellen und Vektordatenbanken verwendet werden.
Lösungsüberblick
Das folgende Diagramm zeigt die Lösungsarchitektur.
Die Implementierung der Lösung besteht aus zwei übergeordneten Schritten: Entwickeln der Lösung mithilfe von SageMaker Studio-Notebooks und Bereitstellen der Modelle für die Inferenz.
Entwickeln Sie die Lösung mit SageMaker Studio-Notebooks
Führen Sie die folgenden Schritte aus, um mit der Entwicklung der Lösung zu beginnen:
- Laden Sie das Chat-Modell Llama-2 7b von Hugging Face Hub in das Notizbuch.
- Erstellen Sie eine PromptTemplate mit LangChain und verwenden Sie es, um Eingabeaufforderungen für Ihren Anwendungsfall zu erstellen.
- Fügen Sie für 1–2 Beispielaufforderungen relevanten statischen Text aus externen Dokumenten als Aufforderungskontext hinzu und beurteilen Sie, ob sich die Qualität der Antworten verbessert.
- Unter der Annahme, dass sich die Qualität verbessert, implementieren Sie den RAG-Fragen-Antwort-Workflow:
- Sammeln Sie externe Dokumente, die dem Modell helfen können, die Fragen in Ihrem Anwendungsfall besser zu beantworten.
- Laden Sie das BGE-Einbettungsmodell und verwenden Sie es, um Einbettungen dieser Dokumente zu generieren.
- Speichern Sie diese Einbettungen in einem Pinecone-Index.
- Wenn ein Benutzer eine Frage stellt, führen Sie in Pinecone eine Ähnlichkeitssuche durch und fügen Sie den Inhalt der ähnlichsten Dokumente zum Kontext der Eingabeaufforderung hinzu.
Stellen Sie die Modelle für maßstabsgetreue Inferenzen in SageMaker bereit
Wenn Sie Ihre Leistungsziele erreicht haben, können Sie die Modelle in SageMaker bereitstellen, um sie von generativen KI-Anwendungen zu verwenden:
- Stellen Sie das Chat-Modell Llama-2 7b auf einem SageMaker-Echtzeitendpunkt bereit.
- Bereitstellen der BAAI/bge-small-en-v1.5 Einbettungsmodell in einen SageMaker-Echtzeitendpunkt.
- Verwenden Sie die bereitgestellten Modelle in Ihrer Frage zur Beantwortung generativer KI-Anwendungen.
In den folgenden Abschnitten führen wir Sie durch die Schritte zur Implementierung dieser Lösung in SageMaker Studio-Notebooks.
Voraussetzungen:
Um die Schritte in diesem Beitrag ausführen zu können, benötigen Sie ein AWS-Konto und ein AWS Identity and Access Management and (IAM)-Rolle mit Berechtigungen zum Erstellen und Zugreifen auf die Lösungsressourcen. Wenn Sie neu bei AWS sind, lesen Sie Erstellen Sie ein eigenständiges AWS-Konto.
Um SageMaker Studio-Notebooks in Ihrem AWS-Konto verwenden zu können, benötigen Sie eine SageMaker-Domäne mit einem Benutzerprofil, das Berechtigungen zum Starten der SageMaker Studio-App hat. Wenn Sie neu bei SageMaker Studio sind, ist dies der Fall Schnelle Studio-Einrichtung ist der schnellste Weg, um loszulegen. Mit einem einzigen Klick stellt SageMaker die SageMaker-Domäne mit Standardvoreinstellungen bereit, einschließlich der Einrichtung des Benutzerprofils, der IAM-Rolle, der IAM-Authentifizierung und des öffentlichen Internetzugangs. Das Notizbuch für diesen Beitrag geht von einem aus ml.g5.2xlarge
Instanztyp. Um Ihr Kontingent zu überprüfen oder zu erhöhen, öffnen Sie die AWS Service Quotas-Konsole und wählen Sie AWS-Services Wählen Sie im Navigationsbereich Amazon Sage Maker, und beziehen Sie sich auf den Wert für Studio KernelGateway-Apps, die darauf ausgeführt werden ml.g5.2xlarge
Instanzen.
Nachdem Sie Ihr Kontingentlimit bestätigt haben, müssen Sie die Abhängigkeiten abschließen, um den Llama 2 7b-Chat nutzen zu können.
Der Lama 2 7b-Chat ist unter verfügbar Lama 2-Lizenz. Um auf Llama 2 auf Hugging Face zuzugreifen, müssen Sie zunächst einige Schritte ausführen:
- Erstellen Sie ein Hugging Face-Konto, falls Sie noch keines haben.
- Füllen Sie das Formular „Zugriff auf die nächste Version von Llama anfordern“ auf der Meta aus Website .
- Fordern Sie Zugriff auf an Lama 2 7b Chat auf Hugging Face.
Nachdem Ihnen der Zugriff gewährt wurde, können Sie ein neues Zugriffstoken erstellen, um auf Modelle zuzugreifen. Um ein Zugriffstoken zu erstellen, navigieren Sie zu Einstellungen Seite auf der Hugging Face-Website.
Sie benötigen ein Konto bei Pinecone, um es als Vektordatenbank verwenden zu können. Pinecone ist auf AWS über verfügbar AWS-Marktplatz. Die Pinecone-Website bietet auch die Möglichkeit, eine zu erstellen kostenloses Konto Damit sind Berechtigungen zum Erstellen eines einzelnen Indexes verbunden, was für die Zwecke dieses Beitrags ausreichend ist. Um Ihre Pinecone-Schlüssel abzurufen, öffnen Sie die Tannenzapfenkonsole und wählen Sie API-Keys.
Richten Sie das Notebook und die Umgebung ein
Um dem Code in diesem Beitrag zu folgen, öffnen Sie SageMaker Studio und klonen Sie Folgendes GitHub-Repository. Öffnen Sie als Nächstes das Notizbuch studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb und wählen Sie das PyTorch 2.0.0 Python 3.10 GPU Optimized-Image, den Python 3-Kernel und ml.g5.2xlarge
als Instanztyp. Wenn Sie SageMaker Studio-Notizbücher zum ersten Mal verwenden, lesen Sie weiter Erstellen oder öffnen Sie ein Amazon SageMaker Studio-Notizbuch.
Um die Entwicklungsumgebung einzurichten, müssen Sie die erforderlichen Python-Bibliotheken installieren, wie im folgenden Code gezeigt:
%%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
Laden Sie das vorab trainierte Modell und den Tokenizer
Nachdem Sie die benötigten Bibliotheken importiert haben, können Sie diese laden Lama-2 7b Chat Modell zusammen mit den entsprechenden Tokenizern von Hugging Face. Diese geladenen Modellartefakte werden im lokalen Verzeichnis in SageMaker Studio gespeichert. Dadurch können Sie sie schnell wieder in den Speicher laden, wenn Sie Ihre Arbeit zu einem anderen Zeitpunkt fortsetzen müssen.
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)
Stellen Sie eine Frage, die aktuelle Informationen erfordert
Sie können nun mit der Nutzung des Modells beginnen und Fragen stellen. Llama-2-Chatmodelle erwarten, dass die Eingabeaufforderung dem folgenden Format entspricht:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
Sie können die Verwendung PromptTemplate von LangChain, um ein Rezept basierend auf dem Eingabeaufforderungsformat zu erstellen, damit Sie in Zukunft problemlos Eingabeaufforderungen erstellen können:
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'] )
Stellen wir dem Modell eine Frage, die aktuelle Informationen aus dem Jahr 2023 benötigt. Sie können LangChain und insbesondere das verwenden LLMChain Typ der Kette und übergeben Sie als Parameter das LLM, die Eingabeaufforderungsvorlage, die Sie zuvor erstellt haben, und die Frage:
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)
Wir erhalten die folgende generierte Antwort:
Vielen Dank, dass Sie sich gemeldet haben! Das AWS M&E Customer Experience Center in New York City ist derzeit aufgrund der COVID-19-Pandemie für Besuche geschlossen. Sie können jedoch auf der offiziellen Website oder in den Social-Media-Konten nach Updates zum Zeitpunkt der Wiedereröffnung des Zentrums suchen. In der Zwischenzeit können Sie die virtuellen Touren und online verfügbaren Ressourcen erkunden.
Verbessern Sie die Antwort, indem Sie der Eingabeaufforderung Kontext hinzufügen
Die von uns generierte Antwort ist nicht ganz richtig. Mal sehen, ob wir es verbessern können, indem wir etwas Kontext bereitstellen. Sie können einen Auszug aus dem Beitrag hinzufügen AWS kündigt neues M&E Customer Experience Center in New York an, das Updates zum Thema ab 2023 enthält:
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."""
Verwenden Sie erneut die LLMChain und übergeben Sie den vorhergehenden Text als Kontext:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
Die neue Antwort beantwortet die Frage mit aktuellen Informationen:
Ab dem 13. November können Sie das AWS M&E Customer Experience Center in New York City besuchen. Bitte senden Sie eine E-Mail an AWS-MediaEnt-CXC@amazon.com, um einen Besuch zu vereinbaren.
Wir haben bestätigt, dass durch das Hinzufügen des richtigen Kontexts die Leistung des Modells verbessert wird. Jetzt können Sie sich darauf konzentrieren, den richtigen Kontext für die gestellte Frage zu finden und hinzuzufügen. Mit anderen Worten: Implementieren Sie RAG.
Implementieren Sie die Beantwortung von RAG-Fragen mit BGE-Einbettungen und Pinecone
An diesem Punkt müssen Sie sich für die Informationsquellen entscheiden, um das Wissen des Modells zu erweitern. Bei diesen Quellen kann es sich um interne Webseiten oder Dokumente innerhalb Ihrer Organisation oder um öffentlich zugängliche Datenquellen handeln. Für die Zwecke dieses Beitrags und der Einfachheit halber haben wir zwei AWS-Blogbeiträge ausgewählt, die im Jahr 2023 veröffentlicht wurden:
Diese Beiträge sind bereits als PDF-Dokumente im Datenprojektverzeichnis in SageMaker Studio für den schnellen Zugriff verfügbar. Um die Dokumente in überschaubare Abschnitte aufzuteilen, können Sie Folgendes verwenden: RekursiverCharacterTextSplitter Methode von 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)
Als nächstes verwenden Sie das BGE-Einbettungsmodell bge-small-en durch die erstellt Pekinger Akademie für Künstliche Intelligenz (BAAI) das auf Hugging Face verfügbar ist, um die Einbettungen dieser Chunks zu generieren. Laden Sie das Modell herunter und speichern Sie es im lokalen Verzeichnis in Studio. Wir verwenden fp32, damit es auf der CPU der Instanz ausgeführt werden kann.
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()
Verwenden Sie den folgenden Code, um eine Funktion „embedding_generator“ zu erstellen, die die Dokumentblöcke als Eingabe verwendet und die Einbettungen mithilfe des BGE-Modells generiert:
# 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))
In diesem Beitrag demonstrieren wir einen RAG-Workflow mit Pinecone, einem verwalteten, cloudnativen System Vektordatenbank das bietet auch eine API zur Ähnlichkeitssuche. Es steht Ihnen frei, den folgenden Code umzuschreiben, um Ihre bevorzugte Vektordatenbank zu verwenden.
Wir initialisieren a Pinecone-Python-Client und erstellen Sie einen neuen Vektorsuchindex unter Verwendung der Ausgabelänge des Einbettungsmodells. Wir verwenden die integrierte Pinecone-Klasse von LangChain, um die Einbettungen aufzunehmen, die wir im vorherigen Schritt erstellt haben. Es benötigt drei Parameter: die aufzunehmenden Dokumente, die Einbettungsgeneratorfunktion und den Namen des Pinecone-Index.
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
)
Nachdem das Llama-2 7B-Chat-Modell in den Speicher geladen und die Einbettungen in den Pinecone-Index integriert sind, können Sie diese Elemente nun kombinieren, um die Antworten von Llama 2 für unseren Anwendungsfall zur Beantwortung von Fragen zu verbessern. Um dies zu erreichen, können Sie LangChain verwenden RetrievalQA, wodurch die anfängliche Eingabeaufforderung um die ähnlichsten Dokumente aus dem Vektorspeicher erweitert wird. Indem man es einstellt return_source_documents=True
erhalten Sie Einblick in die genauen Dokumente, die zur Generierung der Antwort als Teil der Antwort verwendet wurden, und können so die Richtigkeit der Antwort überprüfen.
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))
Wir bekommen folgende Antwort:
F: Wann kann ich das AWS M&E Customer Experience Center in New York City besuchen?
A: Ich helfe gerne! Dem Kontext entsprechend wird das AWS M&E Customer Experience Center in New York City ab dem 13. November für Besuche zur Verfügung stehen. Sie können eine E-Mail an AWS-MediaEnt-CXC@amazon.com senden, um einen Besuch zu vereinbaren.'
Quelldokumente:
{'page': 4.0, 'source': 'data/AWS kündigt neues M&E Customer Experience Center in New York City an _ AWS for M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS kündigt neues M&E Customer Experience Center in New York City an _ AWS for M&E Blog.pdf'}
Versuchen wir es mit einer anderen Frage:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
Wir bekommen folgende Antwort:
F: Wie viele Auszeichnungen haben AWS Media Services im Jahr 2023 gewonnen?
A: Dem Blogbeitrag zufolge haben AWS Media Services im Jahr 2023 fünf Branchenpreise gewonnen.“
Quelldokumente:
{'page': 0.0, 'source': 'data/AWS Media Services erhält Branchenauszeichnungen _ AWS für M&E Blog.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services erhält Branchenauszeichnungen _ AWS für M&E Blog.pdf'}
Nachdem Sie ein ausreichendes Maß an Vertrauen hergestellt haben, können Sie die Modelle bereitstellen SageMaker-Endpunkte für Echtzeit-Inferenz. Diese Endpunkte werden vollständig verwaltet und bieten Unterstützung für automatische Skalierung.
SageMaker bietet große Modellinferenz mithilfe von Large Model Inference-Containern (LMIs), die wir zum Bereitstellen unserer Modelle verwenden können. Diese Container sind mit vorinstallierten Open-Source-Bibliotheken wie DeepSpeed ausgestattet und erleichtern die Implementierung leistungssteigernder Techniken wie Tensorparallelität während der Inferenz. Darüber hinaus nutzen sie DJLServing als vorgefertigten integrierten Modellserver. DJLServing ist eine leistungsstarke, universelle Model-Serving-Lösung, die Unterstützung für dynamisches Batching und Worker-Auto-Scaling bietet und dadurch den Durchsatz erhöht.
In unserem Ansatz verwenden wir die SageMaker LMI mit DJLServing und DeepSpeed Inference, um die Llama-2-chat 7b- und BGE-Modelle auf SageMaker-Endpunkten bereitzustellen, auf denen sie ausgeführt werden ml.g5.2xlarge
Instanzen, die Inferenz in Echtzeit ermöglichen. Wenn Sie diese Schritte selbst ausführen möchten, lesen Sie die beigefügte Anleitung Notizbuch Detaillierte Anweisungen.
Sie benötigen zwei ml.g5.2xlarge
Instanzen für die Bereitstellung. Um Ihr Kontingent zu überprüfen oder zu erhöhen, öffnen Sie die AWS Service Quotas-Konsole und wählen Sie AWS-Services Wählen Sie im Navigationsbereich Amazon Sage Maker, und beziehen Sie sich auf den Wert für ml.g5.2xlarge
für die Endpunktnutzung.
Die folgenden Schritte beschreiben den Prozess der Bereitstellung benutzerdefinierter Modelle für den RAG-Workflow auf einem SageMaker-Endpunkt:
- Bereitstellen der Lama-2 7b Chat-Modell an einen SageMaker-Echtzeitendpunkt, der auf einem ausgeführt wird
ml.g5.2xlarge
Instanz zur schnellen Textgenerierung. - Bereitstellen der BAAI/bge-small-en-v1.5 Einbettungsmodell in einen SageMaker-Echtzeitendpunkt, der auf einem ausgeführt wird
ml.g5.2xlarge
Beispiel. Alternativ können Sie Ihr eigenes Einbettungsmodell bereitstellen. - Stellen Sie eine Frage und nutzen Sie die LangChain RetrievalQA um die Eingabeaufforderung mit den ähnlichsten Dokumenten von Pinecone zu ergänzen, diesmal unter Verwendung des im SageMaker-Echtzeitendpunkt bereitgestellten Modells:
# 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}
)
- Verwenden Sie LangChain, um zu überprüfen, ob der SageMaker-Endpunkt mit dem Einbettungsmodell wie erwartet funktioniert, sodass er für die zukünftige Dokumentenaufnahme verwendet werden kann:
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']
Aufräumen
Führen Sie die folgenden Schritte aus, um Ihre Ressourcen zu bereinigen:
- Wenn Sie mit der Arbeit in Ihrem SageMaker Studio-Notebook fertig sind, stellen Sie sicher, dass Sie es herunterfahren
ml.g5.2xlarge
Um beispielsweise Gebühren zu vermeiden, wählen Sie das Stopp-Symbol. Sie können auch einrichten Lebenszykluskonfigurationsskripte um Ressourcen automatisch herunterzufahren, wenn sie nicht verwendet werden.
- Wenn Sie die Modelle auf SageMaker-Endpunkten bereitgestellt haben, führen Sie am Ende des Notebooks den folgenden Code aus, um die Endpunkte zu löschen:
#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
)
- Führen Sie abschließend die folgende Zeile aus, um den Pinecone-Index zu löschen:
pinecone.delete_index(index_name)
Zusammenfassung
SageMaker-Notizbücher bieten eine unkomplizierte Möglichkeit, Ihre Reise mit Retrieval Augmented Generation anzukurbeln. Sie ermöglichen es Ihnen, interaktiv mit verschiedenen Modellen, Konfigurationen und Fragen zu experimentieren, ohne zusätzliche Infrastruktur aufzubauen. In diesem Beitrag haben wir gezeigt, wie man die Leistung des Llama 2 7b-Chats in einem Frage-Antwort-Anwendungsfall mit LangChain, dem BGE-Einbettungsmodell und Pinecone verbessern kann. Starten Sie zunächst SageMaker Studio und führen Sie das aus Notizbuch im Folgenden verfügbar GitHub Repo. Bitte teilen Sie Ihre Gedanken im Kommentarbereich mit!
Über die Autoren
Anastasia Tzeveleka ist Machine Learning and AI Specialist Solutions Architect bei AWS. Sie arbeitet mit Kunden in EMEA zusammen und unterstützt sie bei der Entwicklung von Lösungen für maschinelles Lernen in großem Maßstab mithilfe von AWS-Services. Sie hat an Projekten in verschiedenen Bereichen gearbeitet, darunter Natural Language Processing (NLP), MLOps und Low-Code-No-Code-Tools.
Pranav Murthy ist ein AI/ML Specialist Solutions Architect bei AWS. Er konzentriert sich darauf, Kunden beim Erstellen, Trainieren, Bereitstellen und Migrieren von Workloads für maschinelles Lernen (ML) zu SageMaker zu unterstützen. Zuvor arbeitete er in der Halbleiterindustrie und entwickelte große Modelle für Computer Vision (CV) und Natural Language Processing (NLP), um Halbleiterprozesse zu verbessern. In seiner Freizeit spielt er gerne Schach und reist.
- SEO-gestützte Content- und PR-Distribution. Holen Sie sich noch heute Verstärkung.
- PlatoData.Network Vertikale generative KI. Motiviere dich selbst. Hier zugreifen.
- PlatoAiStream. Web3-Intelligenz. Wissen verstärkt. Hier zugreifen.
- PlatoESG. Kohlenstoff, CleanTech, Energie, Umwelt, Solar, Abfallwirtschaft. Hier zugreifen.
- PlatoHealth. Informationen zu Biotechnologie und klinischen Studien. Hier zugreifen.
- Quelle: 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/
- :hast
- :Ist
- :nicht
- :Wo
- $UP
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- Academy
- Zugang
- Zugriff auf Daten
- zugänglich
- Nach
- Konto
- Trading Konten
- Genauigkeit
- genau
- Erreichen
- hinzufügen
- Hinzufügen
- Zusätzliche
- zusätzlich
- haften
- aufs Neue
- AI
- AI / ML
- erlauben
- Zulassen
- erlaubt
- entlang
- bereits
- ebenfalls
- Amazon
- Amazon Sage Maker
- Amazon SageMaker-Studio
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- und
- Kündigt an
- beantworten
- Antworten
- jedem
- APIs
- App
- Anwendungen
- Ansatz
- Apps
- Architektur
- SIND
- künstlich
- künstliche Intelligenz
- AS
- fragen
- beurteilen
- Assistentin
- Verein
- übernimmt
- At
- vermehren
- Augmented
- Augmentationen
- Authentifizierung
- Auto
- Im Prinzip so, wie Sie es von Google Maps kennen.
- verfügbar
- vermeiden
- ausgezeichnet
- Auszeichnungen
- AWS
- basierend
- BE
- war
- Bevor
- BESTE
- Besser
- Blog
- Blog-Beiträge
- Körper
- Sendung
- bauen
- eingebaut
- by
- CAN
- Häuser
- Fälle
- Center
- Kette
- Ketten
- Herausforderungen
- Gebühren
- aus der Ferne überprüfen
- Schach
- Auswählen
- Auswahl
- gewählt
- Stadt
- Klasse
- reinigen
- klicken Sie auf
- geschlossen
- Code
- zusammenarbeiten
- Kopien
- COM
- kombinieren
- vereint
- wie die
- kommt
- Bemerkungen
- abschließen
- Berechnen
- Computer
- Computer Vision
- prägnant
- Vertrauen
- Konfiguration
- BESTÄTIGT
- besteht
- Konsul (Console)
- Behälter
- Inhalt
- Kontext
- fortsetzen
- Convention
- Gespräche
- verkaufen
- Dazugehörigen
- könnte
- COVID-19
- COVID-19-Pandemie
- erstellen
- erstellt
- Erstellen
- Zur Zeit
- Original
- Kunde
- Customer Experience
- Kunden
- technische Daten
- Datenbase
- Datenbanken
- entscheidet
- Standard
- erfreuen
- zeigen
- Synergie
- Abhängigkeiten
- einsetzen
- Einsatz
- Bereitstellen
- Einsatz
- detailliert
- Entwicklung
- Entwicklung
- Gerät
- Dialog
- anders
- diskutieren
- verteilen
- aufteilen
- Dokument
- Unterlagen
- Domain
- Domains
- Don
- Nicht
- nach unten
- herunterladen
- zwei
- im
- dynamisch
- e
- Früher
- leicht
- Bemühungen
- Elemente
- Einbettung
- EMEA
- ermöglicht
- ermöglichen
- Ende
- Endpunkt
- beschäftigt
- zu steigern,
- Unterhaltung
- vollständig
- Arbeitsumfeld
- ausgestattet
- etablierten
- Veranstaltungen
- ÜBERHAUPT
- Evolution
- Beispiel
- existiert
- erwarten
- erwartet
- ERFAHRUNGEN
- Experiment
- ERKUNDEN
- extern
- Extrakt
- Gesicht
- erleichtern
- FAST
- schnellsten
- Eigenschaften
- wenige
- Finale
- Suche nach
- Vorname
- erstes Mal
- fünf
- Setzen Sie mit Achtsamkeit
- konzentriert
- folgen
- Folgende
- Aussichten für
- unten stehende Formular
- Format
- vorwärts
- Frei
- freundlich
- für
- voll
- Funktion
- funktional
- Zukunft
- Gewinnen
- erzeugen
- erzeugt
- erzeugt
- Generation
- generativ
- Generative KI
- Generator
- bekommen
- Global
- Ziele
- gehen
- GPU
- erteilt
- glücklich
- Haben
- mit
- he
- Hilfe
- hilfreich
- Unternehmen
- hilft
- High-Level
- Hohe Leistungsfähigkeit
- höher
- seine
- Hit
- Ultraschall
- Hilfe
- aber
- HTML
- HTTPS
- Nabe
- Umarmendes Gesicht
- i
- IBC
- ICON
- ID
- Identitätsschutz
- if
- zeigt
- Image
- implementieren
- Implementierung
- Umsetzung
- importieren
- zu unterstützen,
- verbessert
- verbessert
- in
- In anderen
- Dazu gehören
- Einschließlich
- Erhöhung
- zunehmend
- Index
- Energiegewinnung
- Branchenveranstaltungen
- Information
- Infrastruktur
- Anfangs-
- Varianten des Eingangssignals:
- installieren
- Instanz
- Anleitung
- integriert
- Intelligenz
- verbunden
- intern
- International
- Internet
- Internetzugang
- in
- IT
- SEINE
- Reise
- jpg
- JSON
- nur
- Behalten
- Tasten
- Wissen
- Wissen
- Sprache
- grosse
- starten
- lernen
- links
- Länge
- Niveau
- Bibliotheken
- Gefällt mir
- LIMIT
- Line
- Lama
- LLM
- Belastung
- Ladeprogramm
- aus einer regionalen
- Sneaker
- Maschine
- Maschinelles Lernen
- um
- handhabbar
- verwaltet
- viele
- Abstimmung
- maximal
- inzwischen
- Medien
- Memory
- Meta
- Metadaten
- Methode
- migriert
- ML
- MLOps
- Modell
- für
- mehr
- vor allem warme
- sollen
- NAB
- Name
- National
- Natürliche
- Verarbeitung natürlicher Sprache
- Navigieren
- Menü
- notwendig,
- Need
- Bedürfnisse
- Neu
- Neuer Zugang
- New York
- New York City
- weiter
- Nlp
- nicht
- Notizbuch
- November
- jetzt an
- of
- bieten
- Angebote
- offiziell
- Offizielle Website
- on
- EINEM
- Online
- XNUMXh geöffnet
- Open-Source-
- optimiert
- Option
- Optionen
- or
- Organisation
- OS
- Andere
- UNSERE
- skizzieren
- Möglichkeiten für das Ausgangssignal:
- Ausgänge
- besitzen
- Unterlage
- Seite
- Pandemie
- Brot
- Parameter
- Teil
- passieren
- Ausführen
- Leistung
- Berechtigungen
- Phase
- Stücke
- Plato
- Datenintelligenz von Plato
- PlatoData
- spielend
- Bitte
- Post
- BLOG-POSTS
- bevorzugt
- Gegenwart
- früher
- vorher
- Prozessdefinierung
- anpassen
- Verarbeitung
- Profil
- Projekt
- Projekte
- Prototyp
- Prototyping
- die
- Bereitstellung
- Öffentlichkeit
- öffentlich
- veröffentlicht
- Zwecke
- Python
- Pytorch
- Qualität
- Suche
- Frage
- Fragen
- Direkt
- schnell
- schnell
- schnell
- Erreichen
- Echtzeit
- kürzlich
- Rezept
- siehe
- Referenz
- in Bezug auf
- relevant
- wieder öffnen
- erfordern
- falls angefordert
- Voraussetzungen:
- erfordert
- Downloads
- Antwort
- Antworten
- Folge
- fortsetzen
- Rückkehr
- Überprüfen
- Recht
- Rollen
- Führen Sie
- Laufen
- sagemaker
- Sake
- gleich
- Speichern
- Gerettet
- Skalieren
- Skalierung
- Zeitplan
- Planung
- Suche
- Suchbegriffe
- Zweite
- Abschnitte
- sehen
- Halbleiter
- senden
- geschickt
- Server
- Lösungen
- kompensieren
- Einstellung
- Teilen
- sie
- erklären
- präsentiert
- zeigte
- geschlossen
- schließen
- ähnlich
- Einfachheit
- Single
- Größe
- So
- Social Media
- Social Media
- Lösung
- Lösungen
- einige
- Quelle
- Quellen
- Spezialist
- spezifisch
- speziell
- standalone
- Anfang
- begonnen
- Beginnen Sie
- statisch
- Schritt
- Shritte
- Stoppen
- speichern
- gelagert
- Läden
- einfach
- Studio Adressen
- so
- ausreichend
- Support
- Unterstützte
- sicher
- schnell
- nimmt
- Aufgabe
- und Aufgaben
- Techniken
- Technologie
- Vorlage
- Text
- als
- zur Verbesserung der Gesundheitsgerechtigkeit
- Das
- ihr
- Sie
- Dort.
- damit
- Diese
- vom Nutzer definierten
- fehlen uns die Worte.
- nach drei
- Durch
- Durchsatz
- Zeit
- zu
- Zeichen
- tokenisieren
- Werkzeuge
- Thema
- Fackel
- in
- Training
- Transformer
- Übergang
- Reise
- was immer dies auch sein sollte.
- versuchen
- XNUMX
- tippe
- Typen
- typisch
- typisch
- für
- Universal-
- bis
- auf dem neusten Stand
- Updates
- Anwendungsbereich
- -
- Anwendungsfall
- benutzt
- Mitglied
- Benutzererfahrung
- verwendet
- Verwendung von
- Nutzen
- Wert
- verschiedene
- Verification
- überprüfen
- Version
- weltweit
- Assistent
- virtuelle Touren
- Sichtbarkeit
- Seh-
- Besuchen Sie
- Besuche
- Spaziergang
- wollen
- Weg..
- we
- Netz
- Web-Services
- Webseite
- Wochen
- waren
- wann
- sobald
- welche
- während
- werden wir
- mit
- .
- ohne
- Gewonnen
- Worte
- Arbeiten
- gearbeitet
- Arbeiter
- Arbeitsablauf.
- arbeiten,
- Werk
- Jahr
- Jahr
- York
- Du
- Ihr
- sich selbst
- Zephyrnet