Retrieval Augmented Generation (RAG) به شما امکان می دهد یک مدل زبان بزرگ (LLM) با دسترسی به داده ها از منابع دانش خارجی مانند مخازن، پایگاه های داده و API ها بدون نیاز به تنظیم دقیق آن ارائه دهید. هنگام استفاده از هوش مصنوعی مولد برای پاسخگویی به سؤال، RAG به LLMها این امکان را می دهد که به سؤالات با مرتبط ترین و به روزترین اطلاعات پاسخ دهند و به صورت اختیاری منابع داده خود را برای تأیید استناد کنند.
یک راه حل معمولی RAG برای بازیابی دانش از اسناد از یک مدل جاسازی برای تبدیل داده ها از منابع داده به جاسازی ها استفاده می کند و این جاسازی ها را در یک پایگاه داده برداری ذخیره می کند. هنگامی که کاربر سوالی می پرسد، پایگاه داده برداری را جستجو می کند و اسنادی را که بیشتر شبیه به درخواست کاربر هستند، بازیابی می کند. سپس، اسناد بازیابی شده و درخواست کاربر را در یک اعلان تقویت شده ترکیب می کند که برای تولید متن به LLM ارسال می شود. دو مدل در این پیاده سازی وجود دارد: مدل embeddings و LLM که پاسخ نهایی را ایجاد می کند.
در این پست نحوه استفاده را نشان می دهیم Amazon SageMaker Studio برای ایجاد راه حل پاسخگویی به پرسش 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 GPU A10G) و Llama 2 7b چت hf، نسخه تنظیم شده Llama 2 7b که برای موارد استفاده گفتگو از Hugging Face Hub بهینه شده است. ما از دو پست وبلاگ AWS Media & Entertainment به عنوان نمونه داده های خارجی استفاده می کنیم که با استفاده از 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 embeddings به یک نقطه پایانی بلادرنگ SageMaker مدل می دهد.
- از مدل های مستقر در سؤال خود برای پاسخ به برنامه های کاربردی هوش مصنوعی استفاده کنید.
در قسمت های بعدی شما را با مراحل پیاده سازی این راه حل در نوت بوک های SageMaker Studio آشنا می کنیم.
پیش نیازها
برای انجام مراحل این پست، باید یک حساب کاربری AWS و یک حساب کاربری داشته باشید هویت AWS و مدیریت دسترسی نقش (IAM) با مجوز برای ایجاد و دسترسی به منابع راه حل. اگر تازه وارد AWS هستید، ببینید یک حساب AWS مستقل ایجاد کنید.
برای استفاده از نوت بوک های SageMaker Studio در حساب AWS خود، به یک دامنه SageMaker با یک نمایه کاربری که مجوز راه اندازی برنامه SageMaker Studio را دارد. اگر تازه وارد استودیو SageMaker هستید، راه اندازی Quick Studio سریعترین راه برای شروع است. با یک کلیک، SageMaker دامنه SageMaker را با تنظیمات پیشفرض، از جمله تنظیم نمایه کاربر، نقش IAM، احراز هویت IAM و دسترسی به اینترنت عمومی فراهم میکند. دفترچه یادداشت این پست یک ml.g5.2xlarge
نوع نمونه برای بررسی یا افزایش سهمیه خود، کنسول AWS Service Quotas را باز کنید، انتخاب کنید خدمات AWS در قسمت ناوبری، را انتخاب کنید آمازون SageMakerو به مقدار برنامه های Studio KernelGateway در حال اجرا مراجعه کنید ml.g5.2xlarge
مصادیق
پس از تأیید محدودیت سهمیه خود، برای استفاده از چت Llama 2 7b باید وابستگی ها را تکمیل کنید.
چت Llama 2 7b در زیر در دسترس است مجوز لاما 2. برای دسترسی به Llama 2 در Hugging Face، ابتدا باید چند مرحله را انجام دهید:
- اگر قبلاً ندارید یک حساب Hugging Face ایجاد کنید.
- فرم "درخواست دسترسی به نسخه بعدی Llama" را در متا تکمیل کنید سایت اینترنتی.
- درخواست دسترسی به چت Llama 2 7b در بغل کردن صورت.
پس از اینکه به شما اجازه دسترسی داده شد، می توانید یک نشانه دسترسی جدید برای دسترسی به مدل ها ایجاد کنید. برای ایجاد یک نشانه دسترسی، به مسیر بروید تنظیمات صفحه در وب سایت Hugging Face.
برای استفاده از آن به عنوان پایگاه داده برداری، باید یک حساب کاربری با Pinecone داشته باشید. Pinecone از طریق AWS در دسترس است بازار AWS. وب سایت Pinecone همچنین گزینه ای برای ایجاد a حساب کاربری رایگان که با مجوزهای ایجاد یک نمایه واحد همراه است که برای اهداف این پست کافی است. برای بازیابی کلیدهای 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 Optimized، هسته Python 3 و ml.g5.2xlarge
به عنوان نوع نمونه اگر اولین بار است که از نوت بوک های SageMaker Studio استفاده می کنید، مراجعه کنید یک نوت بوک Amazon SageMaker Studio ایجاد یا باز کنید.
برای راه اندازی محیط توسعه، باید کتابخانه های پایتون لازم را نصب کنید، همانطور که در کد زیر نشان داده شده است:
%%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 و به طور خاص استفاده کنید. LLMCchain نوع زنجیره و پاس کردن به عنوان پارامتر 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)
پاسخ جدید با اطلاعات به روز به این سوال پاسخ می دهد:
از 13 نوامبر می توانید به مرکز تجربه مشتری AWS M&E در شهر نیویورک مراجعه کنید. لطفاً برای برنامه ریزی بازدید، یک ایمیل به AWS-MediaEnt-CXC@amazon.com ارسال کنید.
ما تایید کردهایم که با افزودن زمینه مناسب، عملکرد مدل بهبود مییابد. اکنون می توانید تلاش خود را بر یافتن و افزودن زمینه مناسب برای سوال پرسیده شده متمرکز کنید. به عبارت دیگر RAG را پیاده سازی کنید.
پاسخگویی به سوالات RAG را با تعبیههای BGE و Pinecone پیادهسازی کنید
در این مرحله، شما باید در مورد منابع اطلاعاتی تصمیم بگیرید تا دانش مدل را افزایش دهید. این منابع می توانند صفحات وب داخلی یا اسناد درون سازمان شما یا منابع داده در دسترس عموم باشند. برای اهداف این پست و به خاطر سادگی، ما دو پست وبلاگ AWS منتشر شده در سال 2023 را انتخاب کرده ایم:
این پست ها در حال حاضر به عنوان اسناد PDF در فهرست پروژه داده در SageMaker Studio برای دسترسی سریع در دسترس هستند. برای تقسیم اسناد به تکه های قابل مدیریت، می توانید از آن استفاده کنید RecursiveCharacterTextSplitter روش از 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) که در Hugging Face برای ایجاد جاسازیهای این تکهها موجود است. مدل را در فهرست محلی در Studio دانلود و ذخیره کنید. ما از fp32 استفاده می کنیم تا بتواند روی CPU نمونه اجرا شود.
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، embedding ها را تولید می کند:
# 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 برای جستجوی شباهت شما می توانید کد زیر را بازنویسی کنید تا از پایگاه داده برداری دلخواه خود استفاده کنید.
a را مقداردهی اولیه می کنیم مشتری پایتون Pinecone و یک نمایه جستجوی برداری جدید با استفاده از طول خروجی مدل تعبیه شده ایجاد کنید. ما از کلاس 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 استفاده کنید RetrievalQA، که دستور اولیه را با مشابه ترین اسناد از فروشگاه برداری تقویت می کند. با تنظیم 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 مرکز جدید تجربه مشتری M&E را در شهر نیویورک اعلام کرد _ AWS for M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS مرکز جدید تجربه مشتری M&E را در شهر نیویورک اعلام کرد _ AWS for M&E Blog.pdf'}
بیایید یک سوال متفاوت را امتحان کنیم:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
پاسخ زیر را دریافت می کنیم:
س: خدمات رسانه ای AWS در سال 2023 چند جایزه کسب کرده است؟
پاسخ: طبق پست وبلاگ، خدمات رسانه ای AWS در سال 2023 برنده پنج جایزه صنعت شده است.
اسناد منبع:
{"صفحه": 0.0، "منبع": "دادهها/خدمات رسانهای AWS تحسینهای صنعت اعطا کردند _ AWS برای M&E Blog.pdf"}
{"صفحه": 1.0، "منبع": "دادهها/خدمات رسانهای AWS تحسینهای صنعت اعطا کردند _ AWS برای M&E Blog.pdf"}
پس از اینکه سطح اطمینان کافی را ایجاد کردید، می توانید مدل ها را در آن مستقر کنید نقاط پایانی SageMaker برای استنتاج بلادرنگ. این نقاط پایانی به طور کامل مدیریت می شوند و از مقیاس خودکار پشتیبانی می کنند.
SageMaker استنتاج مدل بزرگی را با استفاده از ظروف استنتاج مدل بزرگ (LMIs) ارائه میکند، که ما میتوانیم از آنها برای استقرار مدلهای خود استفاده کنیم. این ظروف مجهز به کتابخانه های منبع باز از پیش نصب شده مانند DeepSpeed هستند که اجرای تکنیک های افزایش عملکرد مانند موازی سازی تانسور را در طول استنتاج تسهیل می کند. علاوه بر این، آنها از DJLServing به عنوان یک سرور مدل یکپارچه از پیش ساخته شده استفاده می کنند. سرویس DJLS یک راه حل با کارایی بالا و جهانی برای سرویس دهی مدل است که از دسته بندی پویا و مقیاس خودکار کارگر پشتیبانی می کند و در نتیجه توان عملیاتی را افزایش می دهد.
در رویکرد خود، ما از SageMaker LMI با DJLServing و DeepSpeed Inference برای استقرار مدلهای Llama-2-chat 7b و BGE در نقاط پایانی SageMaker در حال اجرا استفاده میکنیم. ml.g5.2xlarge
نمونه ها، امکان استنتاج بلادرنگ را فراهم می کند. اگر می خواهید خودتان این مراحل را دنبال کنید، به همراه مراجعه کنید دفتر یادداشت برای دستورالعمل های دقیق
شما به دو مورد نیاز خواهید داشت ml.g5.2xlarge
نمونه هایی برای استقرار برای بررسی یا افزایش سهمیه خود، کنسول AWS Service Quotas را باز کنید، انتخاب کنید خدمات AWS در قسمت ناوبری، را انتخاب کنید آمازون SageMaker، و به مقدار برای مراجعه کنید ml.g5.2xlarge
برای استفاده از نقطه پایانی
مراحل زیر روند استقرار مدلهای سفارشی برای گردش کار RAG در نقطه پایانی SageMaker را تشریح میکند:
- مستقر کنید لاما-2 7b مدل چت به نقطه پایانی بلادرنگ SageMaker در حال اجرا بر روی یک
ml.g5.2xlarge
نمونه ای برای تولید سریع متن - مستقر کنید BAAI/bge-small-en-v1.5 embeddings به یک نقطه پایانی بلادرنگ SageMaker در حال اجرا بر روی یک مدل
ml.g5.2xlarge
نمونه، مثال. از طرف دیگر، می توانید مدل تعبیه شده خود را به کار بگیرید. - یک سوال بپرسید و از LangChain استفاده کنید RetrievalQA برای تقویت درخواست با مشابه ترین اسناد از 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 repo. لطفا نظرات خود را در بخش نظرات به اشتراک بگذارید!
درباره نویسندگان
آناستازیا تزولکا یک معمار راه حل های تخصصی یادگیری ماشین و هوش مصنوعی در AWS است. او با مشتریان در EMEA کار می کند و به آنها کمک می کند تا راه حل های یادگیری ماشین را در مقیاس با استفاده از خدمات AWS معمار کنند. او روی پروژههایی در حوزههای مختلف از جمله پردازش زبان طبیعی (NLP)، MLOps و ابزارهای Low Code No Code کار کرده است.
پراناو مورتی یک معمار راه حل های تخصصی AI/ML در AWS است. او بر کمک به مشتریان در ساخت، آموزش، استقرار و انتقال بارهای کاری یادگیری ماشینی (ML) به SageMaker تمرکز دارد. او قبلاً در صنعت نیمه هادی ها کار می کرد و مدل های بینایی کامپیوتری بزرگ (CV) و پردازش زبان طبیعی (NLP) را برای بهبود فرآیندهای نیمه هادی توسعه می داد. در اوقات فراغت از بازی شطرنج و مسافرت لذت می برد.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoData.Network Vertical Generative Ai. به خودت قدرت بده دسترسی به اینجا.
- PlatoAiStream. هوش وب 3 دانش تقویت شده دسترسی به اینجا.
- PlatoESG. کربن ، CleanTech، انرژی، محیط، خورشیدی، مدیریت پسماند دسترسی به اینجا.
- 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/
- : دارد
- :است
- :نه
- :جایی که
- $UP
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- دانشگاه
- دسترسی
- دسترسی به داده ها
- در دسترس
- مطابق
- حساب
- حساب ها
- دقت
- دقیق
- رسیدن
- اضافه کردن
- اضافه کردن
- اضافی
- علاوه بر این
- پایبند بودن
- از نو
- AI
- AI / ML
- اجازه دادن
- اجازه دادن
- اجازه می دهد تا
- در امتداد
- قبلا
- همچنین
- آمازون
- آمازون SageMaker
- Amazon SageMaker Studio
- آمازون خدمات وب
- خدمات وب آمازون (AWS)
- an
- و
- اعلام
- پاسخ
- پاسخ
- هر
- رابط های برنامه کاربردی
- نرم افزار
- برنامه های کاربردی
- روش
- برنامه های
- معماری
- هستند
- مصنوعی
- هوش مصنوعی
- AS
- پرسیدن
- ارزیابی کنید
- دستیار
- انجمن
- فرض می کند
- At
- تقویت کردن
- افزوده شده
- تقویت می کند
- تصدیق
- خودکار
- بطور خودکار
- در دسترس
- اجتناب از
- اهدا
- جوایز
- AWS
- مستقر
- BE
- بوده
- قبل از
- بهترین
- بهتر
- بلاگ
- پست های وبلاگ
- بدن
- پخش
- ساختن
- ساخته شده در
- by
- CAN
- مورد
- موارد
- مرکز
- زنجیر
- زنجیر
- چالش ها
- بار
- بررسی
- شطرنج
- را انتخاب کنید
- انتخاب
- برگزیده
- شهر:
- کلاس
- تمیز
- کلیک
- بسته
- رمز
- همکاری
- همکاران
- COM
- ترکیب
- ترکیب
- بیا
- می آید
- نظرات
- کامل
- محاسبه
- کامپیوتر
- چشم انداز کامپیوتر
- مختصر
- اعتماد به نفس
- پیکر بندی
- تایید شده
- تشکیل شده است
- کنسول
- ظروف
- محتوا
- زمینه
- ادامه دادن
- قرارداد
- گفتگو
- تبدیل
- متناظر
- میتوانست
- Covid-19
- بیماری همه گیر COVID-19
- ایجاد
- ایجاد شده
- ایجاد
- در حال حاضر
- سفارشی
- مشتری
- تجربه مشتری
- مشتریان
- داده ها
- پایگاه داده
- پایگاه های داده
- تصمیم گیری
- به طور پیش فرض
- لذت
- نشان دادن
- نشان
- وابستگی
- گسترش
- مستقر
- استقرار
- گسترش
- دقیق
- در حال توسعه
- پروژه
- دستگاه
- گفتگو
- مختلف
- بحث و تبادل نظر
- توزیع
- تقسیم
- سند
- اسناد و مدارک
- دامنه
- حوزه
- دان
- آیا
- پایین
- دانلود
- دو
- در طی
- پویا
- e
- پیش از آن
- به آسانی
- تلاش
- عناصر
- پست الکترونیک
- تعبیه کردن
- EMEA
- را قادر می سازد
- را قادر می سازد
- پایان
- نقطه پایانی
- مشغول
- بالا بردن
- سرگرمی
- به طور کامل
- محیط
- مجهز بودن
- تاسیس
- حوادث
- تا کنون
- تکامل
- مثال
- وجود دارد
- انتظار
- انتظار می رود
- تجربه
- تجربه
- اکتشاف
- خارجی
- عصاره
- چهره
- تسهیل کننده
- FAST
- سریعترین
- امکانات
- کمی از
- نهایی
- پیدا کردن
- نام خانوادگی
- بار اول
- پنج
- تمرکز
- تمرکز
- به دنبال
- پیروی
- برای
- فرم
- قالب
- به جلو
- رایگان
- دوستانه
- از جانب
- کاملا
- تابع
- تابعی
- آینده
- افزایش
- تولید می کنند
- تولید
- تولید می کند
- نسل
- مولد
- هوش مصنوعی مولد
- ژنراتور
- دریافت کنید
- در سطح جهانی
- اهداف
- رفتن
- GPU
- اعطا شده
- خوشحال
- آیا
- داشتن
- he
- کمک
- مفید
- کمک
- کمک می کند
- در سطح بالا
- عملکرد بالا
- بالاتر
- خود را
- اصابت
- چگونه
- چگونه
- اما
- HTML
- HTTPS
- قطب
- صورت در آغوش گرفته
- i
- IBC
- ICON
- ID
- هویت
- if
- نشان می دهد
- تصویر
- انجام
- پیاده سازی
- اجرای
- واردات
- بهبود
- بهبود یافته
- را بهبود می بخشد
- in
- در دیگر
- شامل
- از جمله
- افزایش
- افزایش
- شاخص
- صنعت
- رویدادهای صنعت
- اطلاعات
- شالوده
- اول
- ورودی
- نصب
- نمونه
- دستورالعمل
- یکپارچه
- اطلاعات
- به هم پیوسته
- داخلی
- بین المللی
- اینترنت
- دسترسی به اینترنت
- به
- IT
- ITS
- سفر
- JPG
- json
- تنها
- نگاه داشتن
- کلید
- دانستن
- دانش
- زبان
- بزرگ
- راه اندازی
- یادگیری
- ترک کرد
- طول
- سطح
- کتابخانه ها
- پسندیدن
- محدود
- لاین
- پشم لاما
- LLM
- بار
- بارکننده
- محلی
- کم
- دستگاه
- فراگیری ماشین
- ساخت
- قابل کنترل
- اداره می شود
- بسیاری
- مطابق
- بیشترین
- در ضمن
- رسانه ها
- حافظه
- متا
- متاداده
- روش
- مهاجرت
- ML
- MLO ها
- مدل
- مدل
- بیش
- اکثر
- باید
- NAB
- نام
- ملی
- طبیعی
- پردازش زبان طبیعی
- هدایت
- جهت یابی
- لازم
- نیاز
- نیازهای
- جدید
- دسترسی جدید
- نیویورک
- شهر نیویورک
- بعد
- nlp
- نه
- دفتر یادداشت
- نوامبر
- اکنون
- of
- ارائه
- پیشنهادات
- رسمی
- وب سایت رسمی
- on
- ONE
- آنلاین
- باز کن
- منبع باز
- بهینه
- گزینه
- گزینه
- or
- کدام سازمان ها
- OS
- دیگر
- ما
- خارج
- طرح کلی
- تولید
- خروجی
- خود
- لایی
- با ما
- بیماری همه گیر
- قطعه
- پارامترهای
- بخش
- شرکای
- عبور
- انجام
- کارایی
- مجوز
- فاز
- قطعات
- افلاطون
- هوش داده افلاطون
- PlatoData
- بازی
- لطفا
- پست
- پست ها
- مرجح
- در حال حاضر
- قبلی
- قبلا
- روند
- فرآیندهای
- در حال پردازش
- مشخصات
- پروژه
- پروژه ها
- نمونه اولیه
- نمونه سازی
- ارائه
- ارائه
- عمومی
- عمومی
- منتشر شده
- اهداف
- پــایتــون
- مارماهی
- کیفیت
- جستجو
- سوال
- سوالات
- سریع
- به سرعت
- سریع
- سریعا
- رسیدن به
- زمان واقعی
- اخیر
- دستور العمل
- مراجعه
- مرجع
- با توجه
- مربوط
- باز کردن
- نیاز
- ضروری
- مورد نیاز
- نیاز
- منابع
- پاسخ
- پاسخ
- نتیجه
- ادامه
- برگشت
- این فایل نقد می نویسید:
- راست
- نقش
- دویدن
- در حال اجرا
- حکیم ساز
- دلیل
- همان
- ذخیره
- نگهداری می شود
- گفتن
- مقیاس
- مقیاس گذاری
- برنامه
- زمان بندی
- جستجو
- جستجو
- دوم
- بخش
- دیدن
- نیمه هادی
- ارسال
- فرستاده
- سرور
- سرویس
- خدمات
- تنظیم
- محیط
- اشتراک گذاری
- او
- نشان
- نمایش داده شده
- نشان داد
- بسته
- خاموش
- مشابه
- سادگی
- تنها
- اندازه
- So
- آگاهی
- رسانه های اجتماعی
- راه حل
- مزایا
- برخی از
- منبع
- منابع
- متخصص
- خاص
- به طور خاص
- مستقل
- شروع
- آغاز شده
- راه افتادن
- ایستا
- گام
- مراحل
- توقف
- opbevare
- ذخیره شده
- پرده
- ساده
- استودیو
- چنین
- کافی
- پشتیبانی
- پشتیبانی
- مطمئن
- به سرعت
- طول می کشد
- کار
- وظایف
- تکنیک
- پیشرفته
- قالب
- متن
- نسبت به
- که
- La
- شان
- آنها
- آنجا.
- در نتیجه
- اینها
- آنها
- این
- سه
- از طریق
- توان
- زمان
- به
- رمز
- tokenize
- ابزار
- موضوع
- مشعل
- برج
- قطار
- ترانسفورماتور
- انتقال
- سفر
- درست
- امتحان
- دو
- نوع
- انواع
- نوعی
- به طور معمول
- زیر
- جهانی
- تا
- در جریان روز
- به روز رسانی
- استفاده
- استفاده کنید
- مورد استفاده
- استفاده
- کاربر
- سابقه کاربر
- استفاده
- با استفاده از
- استفاده کنید
- ارزش
- مختلف
- تایید
- بررسی
- نسخه
- از طريق
- بینندگان
- مجازی
- تورهای مجازی
- دید
- دید
- بازدید
- بازدیدکننده داشته است
- راه رفتن
- می خواهم
- مسیر..
- we
- وب
- خدمات وب
- سایت اینترنتی
- هفته
- بود
- چه زمانی
- هر زمان که
- که
- در حین
- اراده
- با
- در داخل
- بدون
- برنده شد
- کلمات
- مهاجرت کاری
- مشغول به کار
- کارگر
- گردش کار
- کارگر
- با این نسخهها کار
- سال
- سال
- نیویورک
- شما
- شما
- خودت
- زفیرنت