Retrieval Augmented Generation (RAG) מאפשר לך לספק מודל שפה גדול (LLM) עם גישה לנתונים ממקורות ידע חיצוניים כגון מאגרים, מסדי נתונים וממשקי API ללא צורך לכוונן אותו. בעת שימוש בבינה מלאכותית גנרטיבית למענה על שאלות, RAG מאפשרת ל-LLMs לענות על שאלות עם המידע הרלוונטי והמעודכן ביותר ולציט באופן אופציונלי את מקורות הנתונים שלהם לצורך אימות.
פתרון RAG טיפוסי לאחזור ידע ממסמכים משתמש במודל הטמעות כדי להמיר את הנתונים ממקורות הנתונים להטמעות ומאחסן את ההטבעות הללו במסד נתונים וקטורי. כאשר משתמש שואל שאלה, הוא מחפש במסד הנתונים הווקטוריים ומחזיר מסמכים הדומים ביותר לשאילתה של המשתמש. לאחר מכן, הוא משלב את המסמכים שאוחזרו ואת השאילתה של המשתמש בהנחיה מוגברת הנשלחת ל-LLM להפקת טקסט. ישנם שני מודלים ביישום זה: מודל ההטמעות וה-LLM שמייצר את התגובה הסופית.
בפוסט זה, אנו מדגימים כיצד להשתמש סטודיו SageMaker של אמזון לבנות פתרון לשאלת RAG.
שימוש במחברות למענה על שאלות מבוססות RAG
הטמעת RAG כרוכה בדרך כלל בניסוי עם מודלים שונים של הטבעה, מסדי נתונים וקטוריים, מודלים של יצירת טקסט והנחיות, תוך איתור באגים בקוד שלך עד להשגת אב טיפוס פונקציונלי. אמזון SageMaker מציע מחברות מנוהלות של Jupyter המצוידות במופעי GPU, המאפשרים לך להתנסות במהירות במהלך השלב הראשוני הזה מבלי ליצור תשתית נוספת. ישנן שתי אפשרויות לשימוש במחברות ב- SageMaker. האפשרות הראשונה היא הפעלה מהירה מחשבים ניידים זמין דרך SageMaker Studio. ב-SageMaker Studio, סביבת הפיתוח המשולבת (IDE) שנבנתה ייעודית עבור ML, תוכל להפעיל מחברות הפועלות על סוגי מופעים שונים ועם תצורות שונות, לשתף פעולה עם עמיתים ולגשת לתכונות ייעודיות נוספות ללמידת מכונה (ML). האפשרות השנייה היא שימוש ב- a מופע מחברת SageMaker, שהוא מופע מחשוב ML מנוהל במלואו המריץ את אפליקציית Jupyter Notebook.
בפוסט זה, אנו מציגים פתרון RAG שמגדיל את הידע של המודל עם נתונים נוספים ממקורות ידע חיצוניים כדי לספק תשובות מדויקות יותר ספציפיות לתחום מותאם אישית. אנו משתמשים במחברת אחת של SageMaker Studio הפועלת על ml.g5.2xlarge
מופע (1 A10G GPU) ו Llama 2 7b chat hf, הגרסה המכווננת של Llama 2 7b, המותאמת למקרי שימוש בדיאלוג מ-Hugging Face Hub. אנו משתמשים בשני פוסטים של AWS Media & Entertainment Blog בתור הנתונים החיצוניים לדוגמה, אותם אנו ממירים להטמעות עם BAAI/bge-small-en-v1.5 הטבעות. אנו מאחסנים את ההטבעות בפנים צנובר, מסד נתונים מבוסס וקטור המציע ביצועים גבוהים של חיפוש והתאמת דמיון. אנו גם דנים כיצד לעבור מניסוי במחברת לפריסת המודלים שלך לנקודות קצה של SageMaker להסקת מסקנות בזמן אמת כאשר אתה משלים את אב הטיפוס שלך. ניתן להשתמש באותה גישה עם מודלים שונים ומסדי נתונים וקטוריים.
סקירת פתרונות
התרשים הבא ממחיש את ארכיטקטורת הפתרונות.
הטמעת הפתרון מורכבת משני שלבים ברמה גבוהה: פיתוח הפתרון באמצעות מחברות SageMaker Studio, ופריסה של המודלים להסקת מסקנות.
פתח את הפתרון באמצעות מחברות SageMaker Studio
השלם את השלבים הבאים כדי להתחיל בפיתוח הפתרון:
- טען את דגם הצ'אט Llama-2 7b מ-Hugging Face Hub במחברת.
- צור PromptTemplate עם LangChain והשתמש בו כדי ליצור הנחיות למקרה השימוש שלך.
- עבור 1-2 הנחיות לדוגמה, הוסף טקסט סטטי רלוונטי ממסמכים חיצוניים כהקשר מיידית והעריך אם איכות התגובות משתפרת.
- בהנחה שהאיכות משתפרת, יישם את זרימת העבודה של תשובה לשאלה RAG:
- אסוף את המסמכים החיצוניים שיכולים לעזור למודל לענות טוב יותר על השאלות במקרה השימוש שלך.
- טען את מודל ההטמעות של BGE והשתמש בו כדי ליצור הטבעות של מסמכים אלה.
- אחסן את ההטבעות הללו באינדקס אצטרובל.
- כאשר משתמש שואל שאלה, בצע חיפוש דמיון ב- Pinecone והוסף את התוכן מהמסמכים הדומים ביותר להקשר של הבקשה.
פרוס את הדגמים ל- SageMaker להסקה בקנה מידה
כאשר אתה מגיע ליעדי הביצועים שלך, אתה יכול לפרוס את הדגמים ל- SageMaker לשימוש ביישומי בינה מלאכותית:
- פרוס את מודל הצ'אט Llama-2 7b לנקודת קצה של SageMaker בזמן אמת.
- פרוס את BAAI/bge-small-en-v1.5 מודל הטמעה לנקודת קצה של SageMaker בזמן אמת.
- השתמש במודלים הפרוסים בשאלתך בתשובה ליישומי AI גנרטיביים.
בסעיפים הבאים, אנו מדריכים אותך בשלבי הטמעת פתרון זה במחברות של SageMaker Studio.
תנאים מוקדמים
כדי לבצע את השלבים בפוסט זה, עליך להיות בעל חשבון AWS וחשבון AWS זהות וניהול גישה תפקיד (IAM) עם הרשאות ליצור ולגשת למשאבי הפתרון. אם אתה חדש ב-AWS, ראה צור חשבון AWS עצמאי.
כדי להשתמש במחברות של SageMaker Studio בחשבון AWS שלך, אתה צריך א תחום SageMaker עם פרופיל משתמש בעל הרשאות להפעיל את אפליקציית SageMaker Studio. אם אתה חדש ב-SageMaker Studio, ה הגדרה מהירה של סטודיו היא הדרך המהירה ביותר להתחיל. בלחיצה אחת, SageMaker מספקת לתחום SageMaker הגדרות מוגדרות מראש של ברירת מחדל, כולל הגדרת פרופיל המשתמש, תפקיד IAM, אימות IAM וגישה ציבורית לאינטרנט. המחברת לפוסט זה מניחה ש- ml.g5.2xlarge
סוג מופע. כדי לבדוק או להגדיל את המכסה שלך, פתח את מסוף מכסות השירות של AWS, בחר שירותי AWS בחלונית הניווט, בחר אמזון SageMaker, ועיין בערך עבור אפליקציות Studio KernelGateway הפועלות ml.g5.2xlarge
מקרים.
לאחר אישור מגבלת המכסה שלך, עליך להשלים את התלות כדי להשתמש בצ'אט Llama 2 7b.
צ'אט Llama 2 7b זמין תחת רישיון לאמה 2. כדי לגשת ל-Llama 2 ב-Huging Face, עליך לבצע תחילה כמה שלבים:
- צור חשבון Hugging Face אם עדיין אין לך.
- מלא את הטופס "בקש גישה לגרסה הבאה של Llama" ב-Meta אתר אינטרנט.
- בקש גישה ל צ'אט של Lama 2 7b על חיבוק פנים.
לאחר שקיבלת גישה, תוכל ליצור אסימון גישה חדש כדי לגשת לדגמים. כדי ליצור אסימון גישה, נווט אל הגדרות עמוד באתר חיבוק פנים.
אתה צריך להיות בעל חשבון עם Pinecone כדי להשתמש בו כמסד נתונים וקטורי. Pinecone זמין ב-AWS דרך AWS שוק. אתר Pinecone מציע גם אפשרות ליצור א חשבון חינמי שמגיע עם הרשאות ליצור אינדקס בודד, וזה מספיק למטרות הפוסט הזה. כדי לאחזר את מפתחות ה-Pinecone שלך, פתח את קונסולת אצטרובל ולבחור מפתחות API.
הגדר את המחברת והסביבה
כדי לעקוב אחר הקוד בפוסט זה, פתח את SageMaker Studio ושכפל את הדברים הבאים מאגר GitHub. לאחר מכן, פתח את המחברת studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb ובחר בתמונה אופטימלית של PyTorch 2.0.0 Python 3.10 GPU, ליבת Python 3, ו ml.g5.2xlarge
כסוג המופע. אם זו הפעם הראשונה שאתה משתמש במחברות של SageMaker Studio, עיין ב צור או פתח מחברת אמזון SageMaker Studio.
כדי להגדיר את סביבת הפיתוח, עליך להתקין את ספריות Python הדרושות, כפי שמודגם בקוד הבא:
%%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
טען את הדגם והאסימון המאומנים מראש
לאחר שייבאת את הספריות הנדרשות, תוכל לטעון את צ'אט Llama-2 7b דגם יחד עם האסימונים המקבילים שלו מבית Hugging Face. חפצי מודל טעונים אלה מאוחסנים בספרייה המקומית בתוך SageMaker Studio. זה מאפשר לך לטעון אותם מחדש במהירות לזיכרון בכל פעם שאתה צריך לחדש את העבודה שלך בזמן אחר.
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)
שאל שאלה הדורשת מידע עדכני
כעת תוכל להתחיל להשתמש במודל ולשאול שאלות. דגמי הצ'אט של Llama-2 מצפים שההנחיה תעמוד בפורמט הבא:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
אתה יכול להשתמש ב PromptTemplate מ-LangChain כדי ליצור מתכון המבוסס על פורמט ההנחיות, כך שתוכל ליצור בקלות הנחיות קדימה:
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'] )
בוא נשאל את הדגם שאלה שצריכה מידע עדכני משנת 2023. אתה יכול להשתמש ב-LangChain ובמיוחד ב- LLMChain סוג השרשרת והעברת כפרמטרים את ה-LLM, תבנית ההנחיה שיצרת קודם לכן, והשאלה:
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)
אנו מקבלים את התשובה הבאה שנוצרה:
תודה על פנייתך! מרכז חוויית הלקוחות של AWS M&E בניו יורק סגור כעת לביקורים עקב מגיפת COVID-19. עם זאת, אתה יכול לבדוק באתר הרשמי שלהם או בחשבונות המדיה החברתית שלהם אם יש עדכונים לגבי מתי המרכז ייפתח מחדש. בינתיים, אתה יכול לחקור את הסיורים הווירטואליים שלהם ואת המשאבים הזמינים באינטרנט.
שפר את התשובה על ידי הוספת הקשר להנחיה
התשובה שהפקנו לא לגמרי נכונה. בוא נראה אם נוכל לשפר את זה על ידי מתן הקשר כלשהו. ניתן להוסיף תמצית מהפוסט AWS מכריזה על מרכז חווית לקוחות חדש M&E בניו יורק, הכולל עדכונים בנושא מ-2023:
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."""
השתמש שוב ב-LLMChain והעביר את הטקסט הקודם כהקשר:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
התגובה החדשה עונה על השאלה עם מידע עדכני:
אתה יכול לבקר במרכז חוויית הלקוחות של AWS M&E בניו יורק החל מה-13 בנובמבר. אנא שלח אימייל אל AWS-MediaEnt-CXC@amazon.com כדי לתאם ביקור.
אישרנו שעל ידי הוספת ההקשר הנכון, ביצועי הדגם משתפרים. כעת תוכל למקד את המאמצים שלך במציאת והוספת ההקשר הנכון לשאלה שנשאלה. במילים אחרות, יישם RAG.
יישם מענה לשאלות RAG עם הטבעות BGE ואצטרובל
בשלב זה, עליך להחליט על מקורות המידע לשיפור הידע של המודל. מקורות אלה יכולים להיות דפי אינטרנט פנימיים או מסמכים בתוך הארגון שלך, או מקורות נתונים זמינים לציבור. למטרות פוסט זה ולמען הפשטות, בחרנו שני פוסטים בבלוג של AWS שפורסמו בשנת 2023:
פוסטים אלה כבר זמינים כמסמכי PDF בספריית פרויקט הנתונים ב- SageMaker Studio לגישה מהירה. כדי לחלק את המסמכים לנתחים ניתנים לניהול, אתה יכול להשתמש ב- מפצל טקסט רקורסיבי שיטה מ-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)
לאחר מכן, השתמש במודל ההטמעות של BGE bge-small-en נוצר על ידי האקדמיה לבינה מלאכותית של בייג'ינג (BAAI) שזמין ב-Huging Face כדי ליצור את ההטמעות של הנתחים האלה. הורד ושמור את הדגם בספרייה המקומית בסטודיו. אנו משתמשים ב-fp32 כדי שהוא יוכל לפעול על המעבד של המופע.
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()
השתמש בקוד הבא כדי ליצור פונקציה embedding_generator, שלוקחת את נתחי המסמך כקלט ומייצרת את ההטבעות באמצעות מודל 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))
בפוסט זה, אנו מדגימים זרימת עבודה של RAG באמצעות Pinecone, מנוהל, מקורי בענן מסד נתונים וקטורי שמציע גם א API לחיפוש דמיון. אתה חופשי לשכתב את הקוד הבא כדי להשתמש במסד הנתונים הוקטור המועדף עליך.
אנו מאתחלים את א לקוח פיתון אצטרובל וליצור אינדקס חיפוש וקטור חדש באמצעות אורך הפלט של מודל ההטמעה. אנו משתמשים במחלקת Pinecone המובנית של LangChain כדי להטמיע את ההטבעות שיצרנו בשלב הקודם. הוא זקוק לשלושה פרמטרים: המסמכים להטמעה, פונקציית מחולל ההטמעות, והשם של אינדקס 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
)
עם מודל הצ'אט Llama-2 7B שנטען בזיכרון וההטמעות המשולבות באינדקס Pinecone, כעת תוכל לשלב את האלמנטים הללו כדי לשפר את התגובות של Llama 2 עבור מקרה השימוש שלנו לתשובות לשאלות. כדי להשיג זאת, אתה יכול להשתמש ב-LangChain שליפהQA, אשר מגדיל את ההנחיה הראשונית עם המסמכים הדומים ביותר מחנות הווקטורים. על פי הגדרה return_source_documents=True
, אתה מקבל נראות לתוך המסמכים המדויקים ששימשו להפקת התשובה כחלק מהתשובה, מה שמאפשר לך לאמת את דיוק התשובה.
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))
נקבל את התשובה הבאה:
ש: מתי אוכל לבקר במרכז חווית הלקוחות של AWS M&E בניו יורק?
ת: אני שמח לעזור! על פי ההקשר, מרכז חווית הלקוחות של AWS M&E בניו יורק יהיה זמין לביקורים החל מה-13 בנובמבר. אתה יכול לשלוח אימייל אל AWS-MediaEnt-CXC@amazon.com כדי לתאם ביקור.'
מסמכי מקור:
{'page': 4.0, 'source': 'data/AWS announces new M&E Customer Experience Center בניו יורק _ AWS for M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS announces new M&E Customer Experience Center בניו יורק _ AWS for M&E Blog.pdf'}
בוא ננסה שאלה אחרת:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
נקבל את התשובה הבאה:
ש: בכמה פרסים זכו AWS Media Services בשנת 2023?
ת: לפי הפוסט בבלוג, שירותי המדיה של AWS זכו בחמישה פרסי תעשייה ב-2023.'
מסמכי מקור:
{'page': 0.0, 'source': 'data/AWS Media Services זכו לשבחי התעשייה _ AWS for M&E Blog.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services זכו לשבחי התעשייה _ AWS for M&E Blog.pdf'}
לאחר שתבסס רמה מספקת של ביטחון, תוכל לפרוס את המודלים נקודות קצה של SageMaker להסקת מסקנות בזמן אמת. נקודות קצה אלו מנוהלות באופן מלא ומציעות תמיכה בשינוי קנה מידה אוטומטי.
SageMaker מציע הסקת מודלים גדולים באמצעות מיכלי מסקנות מודלים גדולים (LMIs), שאנו יכולים להשתמש בהם כדי לפרוס את המודלים שלנו. קונטיינרים אלה מצוידים בספריות קוד פתוח מותקנות מראש כמו DeepSpeed, מה שמקל על הטמעת טכניקות משפרות ביצועים כגון מקביליות טנזור במהלך הסקת הסקה. בנוסף, הם משתמשים ב- DJLServing כשרת מודל משולב בנוי מראש. DJLSserving הוא פתרון אוניברסלי להגשת דגמים בעל ביצועים גבוהים, המציע תמיכה באצווה דינמית ושינוי קנה מידה אוטומטי של עובדים, ובכך מגדיל את התפוקה.
בגישה שלנו, אנו משתמשים ב-SageMaker LMI עם DJLServing ו-DeepSpeed Inference כדי לפרוס את דגמי Llama-2-chat 7b ו-BGE לנקודות קצה של SageMaker הפועלות על ml.g5.2xlarge
מופעים, המאפשרים הסקת מסקנות בזמן אמת. אם ברצונך לבצע את השלבים הללו בעצמך, עיין בקובץ המצורף מחברה להוראות מפורטות.
אתה תדרוש שניים ml.g5.2xlarge
מופעים לפריסה. כדי לבדוק או להגדיל את המכסה שלך, פתח את מסוף מכסות השירות של AWS, בחר שירותי AWS בחלונית הניווט, בחר אמזון SageMaker, והתייחס לערך עבור ml.g5.2xlarge
לשימוש בנקודות קצה.
השלבים הבאים מתארים את התהליך של פריסת מודלים מותאמים אישית עבור זרימת העבודה RAG בנקודת קצה של SageMaker:
- פרוס את לאמה-2 7ב מודל צ'אט לנקודת קצה של SageMaker בזמן אמת הפועלת על
ml.g5.2xlarge
דוגמה ליצירת טקסט מהירה. - פרוס את BAAI/bge-small-en-v1.5 מודל הטמעה לנקודת קצה של SageMaker בזמן אמת הפועלת על an
ml.g5.2xlarge
למשל. לחלופין, אתה יכול לפרוס מודל הטמעה משלך. - שאל שאלה והשתמש ב-LangChain שליפהQA כדי להגדיל את ההנחיה עם המסמכים הדומים ביותר מ- Pinecone, הפעם באמצעות המודל שנפרס בנקודת הקצה של 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}
)
- השתמש ב-LangChain כדי לוודא שנקודת הקצה של SageMaker עם מודל ההטמעה פועלת כצפוי כך שניתן יהיה להשתמש בה להטמעת מסמכים עתידית:
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']
לנקות את
השלם את השלבים הבאים כדי לנקות את המשאבים שלך:
- לאחר שתסיים לעבוד במחברת SageMaker Studio שלך, וודא שאתה מכבה את
ml.g5.2xlarge
כדי למנוע חיובים על ידי בחירה בסמל העצירה. אתה יכול גם להגדיר סקריפטים של תצורת מחזור החיים כדי לכבות אוטומטית משאבים כאשר הם אינם בשימוש.
- אם פרסת את המודלים לנקודות קצה של SageMaker, הפעל את הקוד הבא בסוף המחברת כדי למחוק את נקודות הקצה:
#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
)
- לבסוף, הפעל את השורה הבאה כדי למחוק את אינדקס Pinecone:
pinecone.delete_index(index_name)
סיכום
מחברות SageMaker מספקות דרך פשוטה להתחיל את המסע שלך עם Retrieval Augmented Generation. הם מאפשרים לך להתנסות באופן אינטראקטיבי עם דגמים, תצורות ושאלות שונות מבלי ליצור תשתית נוספת. בפוסט זה, הראינו כיצד לשפר את הביצועים של צ'אט Llama 2 7b במקרה שימוש המענה על שאלות באמצעות LangChain, מודל ההטמעות של BGE ו- Pinecone. כדי להתחיל, הפעל את SageMaker Studio והפעל את מחברה זמין בהמשך GitHub ריפו. אנא שתפו את המחשבות שלכם בקטע התגובות!
על המחברים
אנסטסיה צבלקה הוא ארכיטקט פתרונות מומחה למידת מכונה ו-AI ב-AWS. היא עובדת עם לקוחות ב-EMEA ועוזרת להם לתכנן פתרונות למידת מכונה בקנה מידה באמצעות שירותי AWS. היא עבדה על פרויקטים בתחומים שונים כולל עיבוד שפה טבעית (NLP), MLOps וכלי Low Code No Code.
פראנב מרתי הוא אדריכל פתרונות AI/ML מומחה ב-AWS. הוא מתמקד בסיוע ללקוחות לבנות, לאמן, לפרוס ולהעביר עומסי עבודה של למידת מכונה (ML) אל SageMaker. הוא עבד בעבר בתעשיית המוליכים למחצה בפיתוח מודלים של ראייה ממוחשבת גדולה (CV) ועיבוד שפה טבעית (NLP) לשיפור תהליכי מוליכים למחצה. בזמנו הפנוי הוא נהנה לשחק שח ולטייל.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: 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/
- :יש ל
- :הוא
- :לֹא
- :איפה
- $ למעלה
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- אֲקָדֶמִיָה
- גישה
- גישה לנתונים
- נגיש
- פי
- חֶשְׁבּוֹן
- חשבונות
- דיוק
- מדויק
- להשיג
- להוסיף
- מוסיף
- נוסף
- בנוסף
- לדבוק
- שוב
- AI
- AI / ML
- להתיר
- מאפשר
- מאפשר
- לאורך
- כְּבָר
- גם
- אמזון בעברית
- אמזון SageMaker
- סטודיו SageMaker של אמזון
- אמזון שירותי אינטרנט
- אמזון שירותי אינטרנט (AWS)
- an
- ו
- מכריז
- לענות
- תשובות
- כל
- ממשקי API
- האפליקציה
- יישומים
- גישה
- אפליקציות
- ארכיטקטורה
- ARE
- מלאכותי
- בינה מלאכותית
- AS
- לשאול
- לְהַעֲרִיך
- עוזר
- עמותה
- מניח
- At
- לְהַגדִיל
- מוגבר
- תוספות
- אימות
- המכונית
- באופן אוטומטי
- זמין
- לְהִמָנַע
- הוענק
- פרסים
- AWS
- מבוסס
- BE
- היה
- לפני
- הטוב ביותר
- מוטב
- בלוג
- בלוג הודעות
- גוּף
- מִשׁדָר
- לִבנוֹת
- מובנה
- by
- CAN
- מקרה
- מקרים
- מרכז
- שרשרת
- שרשראות
- האתגרים
- חיובים
- לבדוק
- שחמט
- בחרו
- בחירה
- נבחר
- עִיר
- בכיתה
- לְנַקוֹת
- קליק
- סגור
- קוד
- לשתף פעולה
- עמיתים
- COM
- לשלב
- משלב
- איך
- מגיע
- הערות
- להשלים
- לחשב
- המחשב
- ראייה ממוחשבת
- תמציתית
- אמון
- תְצוּרָה
- מְאוּשָׁר
- מורכב
- קונסול
- מכולות
- תוכן
- הקשר
- להמשיך
- אמנה
- שיחות
- להמיר
- תוֹאֵם
- יכול
- תקופת הקורונה
- מגיפת COVID-19
- לִיצוֹר
- נוצר
- יוצרים
- כיום
- מנהג
- לקוח
- חווית לקוח
- לקוחות
- נתונים
- מסד נתונים
- מאגרי מידע
- להחליט
- בְּרִירַת מֶחדָל
- לענג
- להפגין
- מופגן
- תלות
- לפרוס
- פרס
- פריסה
- פריסה
- מְפוֹרָט
- מתפתח
- צעצועי התפתחות
- מכשיר
- דיאלוג
- אחר
- לדון
- הפצה
- לחלק
- מסמך
- מסמכים
- תחום
- תחומים
- דון
- לא
- מטה
- להורדה
- ראוי
- בְּמַהֲלָך
- דינמי
- e
- מוקדם יותר
- בקלות
- מַאֲמָצִים
- אלמנטים
- אמייל
- הטבעה
- EMEA
- מאפשר
- מה שמאפשר
- סוף
- נקודת קצה
- מאורס
- להגביר את
- בידור
- לַחֲלוּטִין
- סביבה
- מְצוּיָד
- נוסד
- אירועים
- אי פעם
- אבולוציה
- דוגמה
- קיים
- לצפות
- צפוי
- ניסיון
- לְנַסוֹת
- לחקור
- חיצוני
- תמצית
- פָּנִים
- הקלה
- מהר
- המהיר ביותר
- תכונות
- מעטים
- סופי
- מציאת
- ראשון
- firsttime
- חמש
- להתמקד
- מתמקד
- לעקוב
- הבא
- בעד
- טופס
- פוּרמָט
- קדימה
- חופשי
- ידידותי
- החל מ-
- לגמרי
- פונקציה
- פונקציונלי
- עתיד
- לְהַשִׂיג
- ליצור
- נוצר
- מייצר
- דור
- גנרטטיבית
- AI Generative
- גנרטור
- לקבל
- ברחבי עולם
- שערים
- הולך
- GPU
- כמובן מאליו
- שמח
- יש
- יש
- he
- לעזור
- מועיל
- עזרה
- עוזר
- ברמה גבוהה
- ביצועים גבוהים
- גבוה יותר
- שֶׁלוֹ
- מכה
- איך
- איך
- אולם
- HTML
- HTTPS
- טבור
- חיבוק פנים
- i
- IBC
- ICON
- ID
- זהות
- if
- מדגים
- תמונה
- ליישם
- הפעלה
- יישום
- לייבא
- לשפר
- משופר
- משפר
- in
- באחר
- כולל
- כולל
- להגדיל
- גדל
- מדד
- תעשייה
- תעשיית האירועים
- מידע
- תשתית
- בתחילה
- קלט
- להתקין
- למשל
- הוראות
- משולב
- מוֹדִיעִין
- מקושרים
- פנימי
- ברמה בינלאומית
- אינטרנט
- גישה לאינטרנט
- אל תוך
- IT
- שֶׁלָה
- מסע
- jpg
- ג'סון
- רק
- שמור
- מפתחות
- לדעת
- ידע
- שפה
- גָדוֹל
- לשגר
- למידה
- עזבו
- אורך
- רמה
- ספריות
- כמו
- להגביל
- קו
- לאמה
- LLM
- לִטעוֹן
- מטעין
- מקומי
- נמוך
- מכונה
- למידת מכונה
- לעשות
- ניתן לניהול
- הצליח
- רב
- תואם
- מקסימום
- בינתיים
- מדיה
- זכרון
- meta
- מידע נוסף
- שיטה
- נודד
- ML
- MLOps
- מודל
- מודלים
- יותר
- רוב
- צריך
- NAB
- שם
- לאומי
- טבעי
- עיבוד שפה טבעית
- נווט
- ניווט
- הכרחי
- צורך
- צרכי
- חדש
- גישה חדשה
- ניו יורק
- ניו יורק
- הבא
- NLP
- לא
- מחברה
- נוֹבֶמבֶּר
- עַכשָׁיו
- of
- הַצָעָה
- המיוחדות שלנו
- רשמי
- אתר רשמי
- on
- ONE
- באינטרנט
- לפתוח
- קוד פתוח
- אופטימיזציה
- אפשרות
- אפשרויות
- or
- ארגון
- OS
- אחר
- שלנו
- הַחוּצָה
- מתווה
- תפוקה
- פלטים
- שֶׁלוֹ
- נתיב
- עמוד
- מגיפה
- זגוגית
- פרמטרים
- חלק
- שותפים
- לעבור
- לְבַצֵעַ
- ביצועים
- הרשאות
- שלב
- חתיכות
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- משחק
- אנא
- הודעה
- הודעות
- מועדף
- להציג
- קודם
- קוֹדֶם
- תהליך
- תהליכים
- תהליך
- פּרוֹפִיל
- פּרוֹיֶקט
- פרויקטים
- אב טיפוס
- prototyping
- לספק
- מתן
- ציבורי
- בפומבי
- לאור
- למטרות
- פיתון
- פיטורך
- איכות
- לחקור
- שאלה
- שאלות
- מָהִיר
- מהירות
- מהיר
- מהר
- הגעה
- זמן אמת
- לאחרונה
- מתכון
- להתייחס
- הפניה
- בדבר
- רלוונטי
- לפתוח מחדש
- לדרוש
- נדרש
- דרישות
- דורש
- משאבים
- תגובה
- תגובות
- תוצאה
- קורות חיים
- לַחֲזוֹר
- סקירה
- תקין
- תפקיד
- הפעלה
- ריצה
- בעל חכמים
- טוֹבָה
- אותו
- שמור
- הציל
- לומר
- סולם
- דרוג
- לוח זמנים
- תזמון
- חיפוש
- חיפושים
- שְׁנִיָה
- סעיפים
- לִרְאוֹת
- סמיקונדקטור
- לשלוח
- נשלח
- שרת
- שרות
- שירותים
- סט
- הצבה
- שיתוף
- היא
- לְהַצִיג
- הוצג
- הראה
- לסגור
- כבה
- דומה
- פשטות
- יחיד
- מידה
- So
- חֶברָתִי
- מדיה חברתית
- פִּתָרוֹן
- פתרונות
- כמה
- מָקוֹר
- מקורות
- מומחה
- ספציפי
- במיוחד
- עצמאי
- התחלה
- החל
- החל
- סטטי
- שלב
- צעדים
- עצור
- חנות
- מאוחסן
- חנויות
- פשוט
- סטודיו
- כזה
- מספיק
- תמיכה
- נתמך
- בטוח
- במהירות
- לוקח
- המשימות
- משימות
- טכניקות
- טכנולוגיה
- תבנית
- טֶקסט
- מֵאֲשֶׁר
- זֶה
- השמיים
- שֶׁלָהֶם
- אותם
- שם.
- בכך
- אלה
- הֵם
- זֶה
- שְׁלוֹשָׁה
- דרך
- תפוקה
- זמן
- ל
- אסימון
- tokenize
- כלים
- נושא
- לפיד
- סיורים
- רכבת
- רוֹבּוֹטרִיקִים
- מַעֲבָר
- נסיעה
- נָכוֹן
- לנסות
- שתיים
- סוג
- סוגים
- טיפוסי
- בדרך כלל
- תחת
- אוניברסלי
- עד
- עדכן
- עדכונים
- נוֹהָג
- להשתמש
- במקרה להשתמש
- מְשׁוּמָשׁ
- משתמש
- חוויית משתמש
- שימושים
- באמצעות
- לנצל
- ערך
- שונים
- אימות
- לאמת
- גרסה
- באמצעות
- צופים
- וירטואלי
- סיורים וירטואליים
- ראות
- חזון
- לְבַקֵר
- ביקורים
- ללכת
- רוצה
- דֶרֶך..
- we
- אינטרנט
- שירותי אינטרנט
- אתר
- שבועות
- היו
- מתי
- בכל פעם
- אשר
- בזמן
- יצטרך
- עם
- בתוך
- לְלֹא
- נצחנות
- מילים
- תיק עבודות
- עבד
- עובד
- זרימת עבודה
- עובד
- עובד
- שנה
- שנים
- york
- אתה
- עצמך
- זפירנט