A Retrieval Augmented Generation (RAG) lehetővé teszi egy nagy nyelvi modell (LLM) biztosítását, amely hozzáférést biztosít külső tudásforrásokból, például tárhelyekből, adatbázisokból és API-kból származó adatokhoz anélkül, hogy finomhangolni kellene azokat. Amikor generatív mesterséges intelligenciát használ a kérdések megválaszolásához, a RAG lehetővé teszi az LLM-ek számára, hogy a legrelevánsabb, legfrissebb információkkal válaszoljanak a kérdésekre, és opcionálisan hivatkozzanak adatforrásaikra az ellenőrzéshez.
Egy tipikus RAG-megoldás a dokumentumokból való tudás-visszakereséshez egy beágyazási modellt használ az adatforrásokból származó adatok beágyazásokká való konvertálására, és ezeket a beágyazásokat vektoradatbázisban tárolja. Amikor a felhasználó feltesz egy kérdést, keres a vektoradatbázisban, és lekéri azokat a dokumentumokat, amelyek leginkább hasonlítanak a felhasználó lekérdezéséhez. Ezután egyesíti a letöltött dokumentumokat és a felhasználó lekérdezését egy kiterjesztett promptban, amelyet elküld az LLM-nek szöveggenerálás céljából. Ebben a megvalósításban két modell található: a beágyazási modell és az LLM, amely a végső választ generálja.
Ebben a bejegyzésben bemutatjuk, hogyan kell használni Amazon SageMaker Studio egy RAG kérdésre válaszoló megoldás felépítéséhez.
Jegyzetfüzetek használata RAG-alapú kérdésválaszokhoz
A RAG megvalósítása általában magában foglalja a különféle beágyazási modellekkel, vektoros adatbázisokkal, szöveggeneráló modellekkel és promptokkal való kísérletezést, valamint a kód hibakeresését, amíg el nem éri a működőképes prototípust. Amazon SageMaker GPU-példányokkal felszerelt, menedzselt Jupyter notebookokat kínál, amelyek lehetővé teszik a gyors kísérletezést ebben a kezdeti szakaszban anélkül, hogy további infrastruktúrát kellene felpörgetni. A SageMakerben két lehetőség van a notebook használatára. Az első lehetőség a gyors indítás laptopok elérhető a SageMaker Studio-n keresztül. A SageMaker Studióban, az integrált fejlesztőkörnyezetben (IDE), amely kifejezetten az ML-hez készült, olyan notebookokat indíthat el, amelyek különböző példánytípusokon és különböző konfigurációkkal futnak, együttműködhet kollégáival, és hozzáférhet a gépi tanuláshoz (ML) további, célzott funkciókhoz. A második lehetőség az a SageMaker notebook példány, amely egy teljesen felügyelt ML számítási példány, amely a Jupyter Notebook alkalmazást futtatja.
Ebben a bejegyzésben egy olyan RAG-megoldást mutatunk be, amely a modell tudását külső tudásforrásokból származó további adatokkal egészíti ki, hogy pontosabb válaszokat adjon egy egyedi tartományra. Egyetlen SageMaker Studio notebookot használunk, amely egy ml.g5.2xlarge
példány (1 A10G GPU) és Llama 2 7b chat hf, a Llama 2 7b finomhangolt változata, amelyet a Hugging Face Hub párbeszédes felhasználási eseteire optimalizáltak. Két AWS Media & Entertainment Blog bejegyzést használunk minta külső adatként, amelyeket beágyazásokká konvertálunk a BAAI/bge-small-en-v1.5 beágyazások. A beágyazásokat tároljuk benne Fenyőtoboz, egy vektor alapú adatbázis, amely nagy teljesítményű keresést és hasonlósági egyeztetést kínál. Azt is megvitatjuk, hogyan lehet áttérni a notebookban végzett kísérletezésről a modellek SageMaker végpontokra való üzembe helyezésére, hogy valós idejű következtetéseket lehessen levonni a prototípuskészítés befejezése után. Ugyanez a megközelítés használható különböző modellekkel és vektoradatbázisokkal.
Megoldás áttekintése
A következő ábra a megoldás architektúráját mutatja be.
A megoldás megvalósítása két magas szintű lépésből áll: a megoldás kifejlesztése SageMaker Studio notebookok segítségével, és a modellek bevezetése a következtetésekhez.
A megoldás fejlesztése SageMaker Studio notebookokkal
A megoldás fejlesztésének megkezdéséhez hajtsa végre a következő lépéseket:
- Töltsd be a Hugging Face Hub Llama-2 7b chatmodelljét a notebookba.
- Hozzon létre egy PromptTemplate-et ezzel LangChain és használja fel az Ön használati esetére vonatkozó promptok létrehozására.
- 1–2 példakérdés esetén adjon hozzá releváns statikus szöveget külső dokumentumokból azonnali kontextusként, és értékelje, hogy javul-e a válaszok minősége.
- Feltételezve, hogy a minőség javul, hajtsa végre a RAG kérdés megválaszolására szolgáló munkafolyamatot:
- Gyűjtsd össze azokat a külső dokumentumokat, amelyek segítségével a modell jobban megválaszolja az Ön használati esetére vonatkozó kérdéseket.
- Töltse be a BGE beágyazási modellt, és használja a dokumentumok beágyazásainak létrehozásához.
- Tárolja ezeket a beágyazásokat egy fenyőtoboz indexben.
- Amikor a felhasználó feltesz egy kérdést, végezzen hasonlósági keresést a Pinecone alkalmazásban, és adja hozzá a leginkább hasonló dokumentumok tartalmát a prompt kontextusához.
Telepítse a modelleket a SageMakerbe, hogy nagyarányú következtetéseket lehessen végezni
Ha eléri teljesítménycéljait, telepítheti a modelleket a SageMakerben, hogy azokat a generatív AI-alkalmazások használják:
- Telepítse a Llama-2 7b csevegési modellt egy SageMaker valós idejű végpontra.
- Telepítse a BAAI/bge-small-en-v1.5 beágyazási modellt egy SageMaker valós idejű végponthoz.
- Használja a telepített modelleket kérdésében a generatív AI-alkalmazások megválaszolásához.
A következő szakaszokban végigvezetjük a megoldás SageMaker Studio notebookokon való megvalósításának lépésein.
Előfeltételek
A bejegyzés lépéseinek követéséhez AWS-fiókkal és egy AWS Identity and Access Management (IAM) szerepkör a megoldás-erőforrások létrehozásához és eléréséhez szükséges engedélyekkel. Ha új az AWS-ben, lásd Hozzon létre egy önálló AWS-fiókot.
A SageMaker Studio jegyzetfüzetek AWS-fiókjában való használatához szüksége van a SageMaker domain olyan felhasználói profillal, amely jogosult a SageMaker Studio alkalmazás elindítására. Ha még új a SageMaker Studio-ban, a Gyors stúdióbeállítás az indulás leggyorsabb módja. A SageMaker egyetlen kattintással ellátja a SageMaker tartományt alapértelmezett előre beállított értékekkel, beleértve a felhasználói profil beállítását, az IAM-szerepet, az IAM-hitelesítést és a nyilvános internet-hozzáférést. A bejegyzés jegyzetfüzete egy ml.g5.2xlarge
példány típusa. A kvóta áttekintéséhez vagy növeléséhez nyissa meg az AWS szolgáltatáskvóták konzolját, és válassza a lehetőséget AWS szolgáltatások a navigációs ablakban válassza a lehetőséget Amazon SageMaker, és tekintse meg az azon futó Studio KernelGateway-alkalmazások értékét ml.g5.2xlarge
példányok.
A kvótakorlát megerősítése után be kell fejeznie a függőséget a Llama 2 7b chat használatához.
Llama 2 7b chat elérhető a Llama 2 licenc. Ahhoz, hogy hozzáférjen a Llama 2-höz Hugging Face-n, először el kell végeznie néhány lépést:
- Hozzon létre egy Hugging Face fiókot, ha még nem rendelkezik ilyennel.
- Töltse ki a „Hozzáférés kérése a Llama következő verziójához” űrlapot a Metában .
- Kérjen hozzáférést a következőhöz Llama 2 7b chat átölelő Arcon.
Miután megkapta a hozzáférést, létrehozhat egy új hozzáférési tokent a hozzáférési modellekhez. Hozzáférési token létrehozásához navigáljon a beállítások oldalon a Hugging Face honlapján.
Vektoros adatbázisként való használatához fiókkal kell rendelkeznie a Pinecone-nál. Pinecone elérhető az AWS-en keresztül AWS piactér. A Fenyőtoboz weboldal lehetőséget kínál arra is, hogy a ingyenes fiók amely egyetlen index létrehozására vonatkozó engedélyekkel jár, ami elegendő ennek a bejegyzésnek a céljaira. A Pinecone kulcsok lekéréséhez nyissa meg a Fenyőtoboz konzol És válasszon API Keys.
Állítsa be a notebookot és a környezetet
A bejegyzésben szereplő kód követéséhez nyissa meg a SageMaker Studio-t, és klónozza a következőket GitHub tárház. Ezután nyissa meg a notebookot studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb és válassza ki a PyTorch 2.0.0 Python 3.10 GPU optimalizált képet, a Python 3 kernelt és ml.g5.2xlarge
mint a példány típusa. Ha ez az első alkalom, hogy SageMaker Studio notebookokat használ, olvassa el a következőt: Hozzon létre vagy nyisson meg egy Amazon SageMaker Studio notebookot.
A fejlesztői környezet beállításához telepítenie kell a szükséges Python-könyvtárakat, amint azt a következő kód mutatja:
%%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
Töltse be az előre betanított modellt és a tokenizert
Miután importálta a szükséges könyvtárakat, betöltheti a Llama-2 7b chat modellt a Hugging Face megfelelő tokenizátoraival együtt. Ezek a betöltött modelltermékek a SageMaker Studio helyi könyvtárában tárolódnak. Ez lehetővé teszi, hogy gyorsan újratöltse őket a memóriába, amikor más időpontban kell folytatnia a munkát.
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)
Tegyen fel egy kérdést, amely naprakész információkat igényel
Most elkezdheti használni a modellt, és kérdéseket tehet fel. A Llama-2 chat-modellek elvárják, hogy a felszólítás a következő formátumot kövesse:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
Használhatja a PromptTemplate a LangChainből, hogy a prompt formátum alapján készítsen receptet, hogy a továbbiakban könnyen létrehozhasson promptokat:
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'] )
Tegyünk fel a modellnek egy kérdést, amelyhez 2023-tól friss információkra van szükség. Használhatja a LangChaint és különösen a LLMCchain lánc típusát, és adja át paraméterként az LLM-et, a korábban létrehozott prompt sablont és a kérdést:
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)
A következő generált választ kapjuk:
Köszönjük, hogy megkereste! A COVID-19 világjárvány miatt a New York-i AWS M&E Ügyfélélmény Központ jelenleg zárva tart. Azonban megtekintheti a hivatalos webhelyüket vagy a közösségi média fiókjaikat a központ újranyitásának időpontjáról. Addig is felfedezheti virtuális túráikat és online elérhető forrásaikat.
Javítsa a választ a szövegkörnyezet hozzáadásával a prompthoz
Az általunk generált válasz nem teljesen igaz. Lássuk, tudunk-e javítani, ha némi kontextust biztosítunk. Hozzáadhat egy kivonatot a bejegyzésből Az AWS bejelentette az új M&E Ügyfélélmény Központot New Yorkban, amely frissítéseket tartalmaz a témában 2023-tól:
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."""
Használja újra az LLMChaint, és adja át az előző szöveget kontextusként:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
Az új válasz naprakész információkkal válaszol a kérdésre:
November 13-tól látogathatja meg a New York-i AWS M&E Ügyfélélmény Központot. Kérjük, küldjön egy e-mailt az AWS-MediaEnt-CXC@amazon.com címre a látogatás ütemezéséhez.
Megerősítettük, hogy a megfelelő kontextus hozzáadásával a modell teljesítménye javul. Most már összpontosíthatja erőfeszítéseit a feltett kérdés megfelelő kontextusának megtalálására és hozzáadására. Más szóval, hajtsa végre a RAG-t.
Valósítsa meg a RAG-kérdések megválaszolását BGE beágyazásokkal és Pinecone segítségével
Ezen a ponton el kell döntenie az információforrásokat a modell ismereteinek bővítése érdekében. Ezek a források lehetnek a szervezeten belüli belső weboldalak vagy dokumentumok, vagy nyilvánosan elérhető adatforrások. A bejegyzés céljaira és az egyszerűség kedvéért két 2023-ban közzétett AWS-blogbejegyzést választottunk:
Ezek a bejegyzések már elérhetőek PDF-dokumentumként a SageMaker Studio adatprojekt-könyvtárában a gyors hozzáférés érdekében. A dokumentumok kezelhető darabokra osztásához használhatja a RecursiveCharacterTextSplitter módszer a LangChaintől:
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)
Ezután használja a BGE beágyazási modellt bge-small-en által létrehozott Pekingi Mesterséges Intelligencia Akadémia (BAAI) amely elérhető a Hugging Face-en, hogy létrehozza ezeknek a daraboknak a beágyazását. Töltse le és mentse a modellt a Studio helyi könyvtárába. Az fp32-t használjuk, hogy futhasson a példány CPU-ján.
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()
Használja a következő kódot egy embedding_generator függvény létrehozásához, amely bemenetként veszi a dokumentumdarabokat, és a BGE modell segítségével hozza létre a beágyazásokat:
# 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))
Ebben a bejegyzésben egy RAG-munkafolyamatot mutatunk be a Pinecone felügyelt, felhőalapú natív használatával vektoros adatbázis amely egyben egy API hasonlóságkereséshez. Szabadon átírhatja a következő kódot a kívánt vektor adatbázis használatához.
Inicializáljuk a Pinecone python kliens és hozzon létre egy új vektoros keresési indexet a beágyazási modell kimeneti hosszának felhasználásával. A LangChain beépített Pinecone osztályát használjuk az előző lépésben létrehozott beágyazások feldolgozásához. Három paraméterre van szüksége: a feldolgozandó dokumentumokra, a beágyazásgenerátor funkcióra és a Pinecone index nevére.
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
)
A memóriába betöltött Llama-2 7B chatmodellel és a Pinecone indexbe integrált beágyazásokkal most kombinálhatja ezeket az elemeket, hogy javítsa a Llama 2 válaszait a kérdés-megválaszolásos használati esetünkhöz. Ennek eléréséhez használhatja a LangChaint RetrievalQA, amely a kezdeti promptot a vektortárból a leginkább hasonló dokumentumokkal egészíti ki. A beállítással return_source_documents=True
, akkor a válasz részeként betekintést nyerhet a válasz generálásához használt pontos dokumentumokba, így ellenőrizheti a válasz pontosságát.
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))
A következő választ kapjuk:
K: Mikor látogathatom el a New York-i AWS M&E Ügyfélélmény Központot?
V: Örömmel segítek! A kontextusnak megfelelően a New York-i AWS M&E Customer Experience Center november 13-tól látogatható lesz. A látogatás ütemezéséhez küldjön egy e-mailt az AWS-MediaEnt-CXC@amazon.com címre.'
Forrásdokumentumok:
{'page': 4.0, 'source': 'data/AWS bejelenti az új M&E Ügyfélélmény Központot New Yorkban _ AWS for M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS bejelenti az új M&E Ügyfélélmény Központot New Yorkban _ AWS for M&E Blog.pdf'}
Próbáljunk meg egy másik kérdést:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
A következő választ kapjuk:
K: Hány díjat nyert az AWS Media Services 2023-ban?
V: A blogbejegyzés szerint az AWS Media Services öt iparági díjat nyert 2023-ban.'
Forrásdokumentumok:
{'page': 0.0, 'source': 'data/AWS Media Services iparági elismerésben részesült _ AWS for M&E Blog.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services iparági elismerésben részesült _ AWS for M&E Blog.pdf'}
Miután megteremtette a megfelelő szintű megbízhatóságot, telepítheti a modelleket SageMaker végpontok valós idejű következtetésekhez. Ezek a végpontok teljes mértékben felügyeltek, és támogatják az automatikus méretezést.
A SageMaker nagy modellkövetkeztetést kínál a Large Model Inference konténerek (LMI) segítségével, amelyeket felhasználhatunk modelljeink üzembe helyezéséhez. Ezek a tárolók előre telepített nyílt forráskódú könyvtárakkal, például a DeepSpeed-del vannak felszerelve, amelyek megkönnyítik a teljesítménynövelő technikák, például a tenzorpárhuzam alkalmazását a következtetés során. Ezenkívül a DJLServinget előre beépített integrált modellkiszolgálóként használják. DJLS-szolgáltatás egy nagy teljesítményű, univerzális modellkiszolgáló megoldás, amely támogatja a dinamikus kötegelést és a dolgozói automatikus skálázást, ezáltal növeli az átviteli sebességet.
Megközelítésünkben a SageMaker LMI-t használjuk DJLServing és DeepSpeed Inference segítségével a Llama-2-chat 7b és BGE modellek telepítéséhez a SageMaker-en futó végpontokon. ml.g5.2xlarge
példányok, lehetővé téve a valós idejű következtetést. Ha ezeket a lépéseket saját maga szeretné követni, olvassa el a mellékelt részt jegyzetfüzet részletes útmutatásért.
Kettőre lesz szüksége ml.g5.2xlarge
példányokat a telepítéshez. A kvóta áttekintéséhez vagy növeléséhez nyissa meg az AWS szolgáltatáskvóták konzolját, és válassza a lehetőséget AWS szolgáltatások a navigációs ablakban válassza a lehetőséget Amazon SageMaker, és hivatkozzon a következő értékére ml.g5.2xlarge
végpont használathoz.
A következő lépések felvázolják az egyéni modellek üzembe helyezésének folyamatát a RAG-munkafolyamathoz egy SageMaker-végponton:
- Telepítse a Láma-2 7b csevegési modellt egy valós idejű SageMaker végponthoz, amely egy
ml.g5.2xlarge
példa a gyors szöveggeneráláshoz. - Telepítse a BAAI/bge-small-en-v1.5 beágyazási modellt egy olyan SageMaker valós idejű végponthoz, amely egy
ml.g5.2xlarge
példa. Alternatív megoldásként telepítheti saját beágyazási modelljét. - Tegyen fel kérdést, és használja a LangChaint RetrievalQA hogy a promptot a Pinecone leginkább hasonló dokumentumaival egészítsük ki, ezúttal a SageMaker valós idejű végpontban telepített modellt használva:
# 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}
)
- A LangChain segítségével ellenőrizze, hogy a SageMaker végpont a beágyazási modellel a várt módon működik-e, hogy későbbi dokumentumfeldolgozáshoz is használható legyen:
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']
Tisztítsuk meg
Az erőforrások tisztításához hajtsa végre a következő lépéseket:
- Ha befejezte a munkát a SageMaker Studio notebookon, feltétlenül kapcsolja ki a
ml.g5.2xlarge
Például a leállítás ikon kiválasztásával elkerülheti a költségeket. Azt is beállíthatja életciklus konfigurációs szkriptek az erőforrások automatikus leállításához, ha nem használják őket.
- Ha a modelleket SageMaker-végpontokra telepítette, a végpontok törléséhez futtassa a következő kódot a notebook végén:
#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
)
- Végül futtassa a következő sort a Pinecone index törléséhez:
pinecone.delete_index(index_name)
Következtetés
A SageMaker notebookok egyszerű módot kínálnak az utazás elindítására a Retrieval Augmented Generation segítségével. Lehetővé teszik, hogy interaktívan kísérletezzen különféle modellekkel, konfigurációkkal és kérdésekkel anélkül, hogy további infrastruktúrát kellene felpörgetnie. Ebben a bejegyzésben megmutattuk, hogyan javítható a Llama 2 7b chat teljesítménye egy kérdésre válaszoló használati eset során a LangChain, a BGE beágyazási modell és a Pinecone használatával. A kezdéshez indítsa el a SageMaker Studio-t, és futtassa a jegyzetfüzet elérhető a következőkben GitHub repo. Kérjük, ossza meg gondolatait a megjegyzés rovatban!
A szerzőkről
Anasztázia Tzeveleka az AWS gépi tanulással és mesterséges intelligencia megoldásokkal foglalkozó építészmérnöke. Az EMEA-beli ügyfelekkel dolgozik, és segít nekik az AWS-szolgáltatások segítségével nagyszabású gépi tanulási megoldások kidolgozásában. Különféle területeken dolgozott projekteken, beleértve a Natural Language Processing (NLP), az MLOps és a Low Code No Code eszközöket.
Pranav Murthy AI/ML Specialist Solutions Architect az AWS-nél. Arra összpontosít, hogy segítse az ügyfeleket a gépi tanulási (ML) munkaterhelések felépítésében, betanításában, üzembe helyezésében és a SageMakerre való migrálásában. Korábban a félvezetőiparban dolgozott nagy számítógépes látás (CV) és természetes nyelvi feldolgozási (NLP) modellek fejlesztésével a félvezető folyamatok javítása érdekében. Szabadidejében szívesen sakkozik és utazik.
- SEO által támogatott tartalom és PR terjesztés. Erősödjön még ma.
- PlatoData.Network Vertical Generative Ai. Erősítse meg magát. Hozzáférés itt.
- PlatoAiStream. Web3 Intelligence. Felerősített tudás. Hozzáférés itt.
- PlatoESG. Carbon, CleanTech, Energia, Környezet, Nap, Hulladékgazdálkodás. Hozzáférés itt.
- PlatoHealth. Biotechnológiai és klinikai vizsgálatok intelligencia. Hozzáférés itt.
- Forrás: 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/
- :van
- :is
- :nem
- :ahol
- $ UP
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- Akadémia
- hozzáférés
- Az adatokhoz való hozzáférés
- hozzáférhető
- Szerint
- Fiók
- Fiókok
- pontosság
- pontos
- Elérése
- hozzá
- hozzáadásával
- További
- Ezen kívül
- tapad
- újra
- AI
- AI / ML
- lehetővé
- lehetővé téve
- lehetővé teszi, hogy
- mentén
- már
- Is
- amazon
- Amazon SageMaker
- Amazon SageMaker Studio
- Az Amazon Web Services
- Amazon Web Services (AWS)
- an
- és a
- bejelenti
- válasz
- válaszok
- bármilyen
- API-k
- app
- alkalmazások
- megközelítés
- alkalmazások
- építészet
- VANNAK
- mesterséges
- mesterséges intelligencia
- AS
- kérdez
- értékeli
- Helyettes
- Egyesület
- feltételezi
- At
- fokozza
- bővített
- gyarapítja
- Hitelesítés
- auto
- automatikusan
- elérhető
- elkerülése érdekében
- Díjazott
- Díjak
- AWS
- alapján
- BE
- óta
- előtt
- BEST
- Jobb
- Blog
- Blogbejegyzések
- test
- rádióadás
- épít
- beépített
- by
- TUD
- eset
- esetek
- Központ
- lánc
- láncok
- kihívások
- díjak
- ellenőrizze
- sakk
- A pop-art design, négy időzóna kijelzése egyszerre és méretének arányai azok az érvek, amelyek a NeXtime Time Zones-t kiváló választássá teszik. Válassza a
- választja
- választott
- Város
- osztály
- ragadozó ölyv
- kettyenés
- zárt
- kód
- együttműködik
- munkatársai
- COM
- össze
- kombájnok
- hogyan
- jön
- Hozzászólások
- teljes
- Kiszámít
- számítógép
- Számítógépes látás
- tömör
- bizalom
- Configuration
- MEGERŐSÍTETT
- áll
- Konzol
- Konténerek
- tartalom
- kontextus
- folytatódik
- Konvenció
- beszélgetések
- megtérít
- Megfelelő
- tudott
- Covid-19
- COVID-19 járvány
- teremt
- készítette
- létrehozása
- Jelenleg
- szokás
- vevő
- Vásárlói élmény
- Ügyfelek
- dátum
- adatbázis
- adatbázisok
- dönt
- alapértelmezett
- élvezet
- bizonyítani
- igazolták
- függőségek
- telepíteni
- telepített
- bevezetéséhez
- bevetés
- részletes
- fejlesztése
- Fejlesztés
- eszköz
- Párbeszéd
- különböző
- megvitatni
- elosztó
- osszuk
- dokumentum
- dokumentumok
- domain
- domainek
- Don
- ne
- le-
- letöltés
- két
- alatt
- dinamikus
- e
- Korábban
- könnyen
- erőfeszítések
- elemek
- beágyazás
- EMEA
- lehetővé teszi
- lehetővé téve
- végén
- Endpoint
- elkötelezett
- növelése
- Szórakozás
- teljesen
- Környezet
- felszerelt
- megalapozott
- események
- EVER
- evolúció
- példa
- létezik
- vár
- várható
- tapasztalat
- kísérlet
- feltárása
- külső
- kivonat
- Arc
- megkönnyítését
- GYORS
- leggyorsabb
- Jellemzők
- kevés
- utolsó
- megtalálása
- vezetéknév
- első
- öt
- Összpontosít
- koncentrál
- következik
- következő
- A
- forma
- formátum
- Előre
- Ingyenes
- barátságos
- ból ből
- teljesen
- funkció
- funkcionális
- jövő
- Nyereség
- generál
- generált
- generál
- generáció
- nemző
- Generatív AI
- generátor
- kap
- globálisan
- Célok
- megy
- GPU
- megadott
- boldog
- Legyen
- tekintettel
- he
- segít
- hasznos
- segít
- segít
- magas szinten
- nagy teljesítményű
- <p></p>
- övé
- Találat
- Hogyan
- How To
- azonban
- HTML
- HTTPS
- Kerékagy
- HuggingFace
- i
- IBC
- ICON
- ID
- Identitás
- if
- illusztrálja
- kép
- végre
- végrehajtás
- végrehajtási
- importál
- javul
- javított
- javítja
- in
- Más
- magában foglalja a
- Beleértve
- Növelje
- növekvő
- index
- ipar
- Ipari Események
- információ
- Infrastruktúra
- kezdetben
- bemenet
- telepíteni
- példa
- utasítás
- integrált
- Intelligencia
- összekapcsolt
- belső
- Nemzetközi
- Internet
- internet-hozzáférés
- bele
- IT
- ITS
- utazás
- jpg
- json
- éppen
- Tart
- kulcsok
- Ismer
- tudás
- nyelv
- nagy
- indít
- tanulás
- balra
- Hossz
- szint
- könyvtárak
- mint
- LIMIT
- vonal
- Láma
- LLM
- kiszámításának
- rakodó
- helyi
- Elő/Utó
- gép
- gépi tanulás
- csinál
- kezelhető
- sikerült
- sok
- egyező
- maximális
- Addig
- Média
- Memory design
- meta
- Metaadatok
- módszer
- vándorol
- ML
- MLOps
- modell
- modellek
- több
- a legtöbb
- kell
- NAB
- név
- nemzeti
- Természetes
- Természetes nyelvi feldolgozás
- Keresse
- Navigáció
- elengedhetetlen
- Szükség
- igények
- Új
- Új hozzáférés
- New York
- new york city
- következő
- NLP
- nem
- jegyzetfüzet
- november
- Most
- of
- ajánlat
- Ajánlatok
- hivatalos
- Hivatalos honlapján
- on
- ONE
- online
- nyitva
- nyílt forráskódú
- optimalizált
- opció
- Opciók
- or
- szervezet
- OS
- Más
- mi
- ki
- vázlat
- teljesítmény
- kimenetek
- saját
- párna
- oldal
- járvány
- üvegtábla
- paraméterek
- rész
- partnerek
- elhalad
- Teljesít
- teljesítmény
- engedélyek
- fázis
- darabok
- Plató
- Platón adatintelligencia
- PlatoData
- játék
- kérem
- állás
- Hozzászólások
- előnyben részesített
- be
- előző
- korábban
- folyamat
- Folyamatok
- feldolgozás
- profil
- program
- projektek
- prototípus
- prototípus
- ad
- amely
- nyilvános
- nyilvánosan
- közzétett
- célokra
- Piton
- pytorch
- világítás
- keresés
- kérdés
- Kérdések
- Quick
- gyorsan
- gyors
- gyorsan
- elérése
- real-time
- új
- recept
- utal
- referencia
- tekintettel
- újra kinyit
- szükség
- kötelező
- követelmények
- megköveteli,
- Tudástár
- válasz
- válaszok
- eredményez
- folytatás
- visszatérés
- Kritika
- jobb
- Szerep
- futás
- futás
- sagemaker
- kedvéért
- azonos
- Megtakarítás
- mentett
- azt mondják
- Skála
- skálázás
- menetrend
- ütemezés
- Keresés
- keresések
- Második
- szakaszok
- lát
- félvezető
- küld
- küldött
- szerver
- szolgáltatás
- Szolgáltatások
- készlet
- beállítás
- Megosztás
- ő
- előadás
- bemutatásra
- kimutatta,
- becsuk
- Állítsa le
- hasonló
- egyszerűség
- egyetlen
- Méret
- So
- Közösség
- Közösségi média
- megoldások
- Megoldások
- néhány
- forrás
- Források
- szakember
- különleges
- kifejezetten
- önálló
- kezdet
- kezdődött
- Kezdve
- statikus
- Lépés
- Lépései
- megáll
- tárolni
- memorizált
- árnyékolók
- egyértelmű
- stúdió
- ilyen
- elegendő
- támogatás
- Támogatott
- biztos
- gyorsan
- tart
- Feladat
- feladatok
- technikák
- Technológia
- sablon
- szöveg
- mint
- hogy
- A
- azok
- Őket
- Ott.
- ezáltal
- Ezek
- ők
- ezt
- három
- Keresztül
- áteresztőképesség
- idő
- nak nek
- jelképes
- tokenizálni
- szerszámok
- téma
- fáklya
- túrák
- Vonat
- transzformerek
- átmenet
- Utazó
- igaz
- megpróbál
- kettő
- típus
- típusok
- tipikus
- jellemzően
- alatt
- Egyetemes
- -ig
- up-to-date
- Frissítés
- Használat
- használ
- használati eset
- használt
- használó
- User Experience
- használ
- segítségével
- hasznosít
- érték
- különféle
- Igazolás
- ellenőrzése
- változat
- keresztül
- nézők
- Tényleges
- virtuális túrák
- láthatóság
- látomás
- Látogat
- Látogatók
- séta
- akar
- Út..
- we
- háló
- webes szolgáltatások
- weboldal
- Hetek
- voltak
- amikor
- bármikor
- ami
- míg
- lesz
- val vel
- belül
- nélkül
- Nyerte
- szavak
- Munka
- dolgozott
- munkás
- munkafolyamat
- dolgozó
- művek
- év
- év
- york
- te
- A te
- magad
- zephyrnet