Thế hệ tăng cường truy xuất (RAG) cho phép bạn cung cấp mô hình ngôn ngữ lớn (LLM) với quyền truy cập vào dữ liệu từ các nguồn kiến thức bên ngoài như kho lưu trữ, cơ sở dữ liệu và API mà không cần phải tinh chỉnh. Khi sử dụng AI tổng quát để trả lời câu hỏi, RAG cho phép LLM trả lời các câu hỏi với thông tin cập nhật, phù hợp nhất và tùy ý trích dẫn nguồn dữ liệu của họ để xác minh.
Giải pháp RAG điển hình để truy xuất kiến thức từ tài liệu sử dụng mô hình nhúng để chuyển đổi dữ liệu từ nguồn dữ liệu sang phần nhúng và lưu trữ các phần nhúng này trong cơ sở dữ liệu vectơ. Khi người dùng đặt câu hỏi, nó sẽ tìm kiếm cơ sở dữ liệu vectơ và truy xuất các tài liệu giống nhất với truy vấn của người dùng. Tiếp theo, nó kết hợp các tài liệu được truy xuất và truy vấn của người dùng trong một lời nhắc tăng cường được gửi tới LLM để tạo văn bản. Có hai mô hình trong quá trình triển khai này: mô hình nhúng và LLM tạo ra phản hồi cuối cùng.
Trong bài đăng này, chúng tôi trình bày cách sử dụng Xưởng sản xuất Amazon SageMaker để xây dựng giải pháp trả lời câu hỏi RAG.
Sử dụng sổ ghi chép để trả lời câu hỏi dựa trên RAG
Việc triển khai RAG thường đòi hỏi phải thử nghiệm nhiều mô hình nhúng, cơ sở dữ liệu vectơ, mô hình tạo văn bản và lời nhắc, đồng thời gỡ lỗi mã của bạn cho đến khi bạn đạt được nguyên mẫu chức năng. Amazon SageMaker cung cấp sổ ghi chép Jupyter được quản lý được trang bị phiên bản GPU, cho phép bạn thử nghiệm nhanh chóng trong giai đoạn đầu này mà không cần tăng cường cơ sở hạ tầng bổ sung. Có hai tùy chọn để sử dụng sổ ghi chép trong SageMaker. Tùy chọn đầu tiên là khởi chạy nhanh máy tính xách tay có sẵn thông qua SageMaker Studio. Trong SageMaker Studio, môi trường phát triển tích hợp (IDE) được xây dựng có mục đích cho ML, bạn có thể khởi chạy sổ ghi chép chạy trên các loại phiên bản khác nhau và có cấu hình khác nhau, cộng tác với đồng nghiệp và truy cập các tính năng bổ sung được xây dựng có mục đích cho machine learning (ML). Tùy chọn thứ hai là sử dụng một Phiên bản sổ ghi chép SageMaker, đây là phiên bản điện toán ML được quản lý hoàn toàn chạy ứng dụng Jupyter Notebook.
Trong bài đăng này, chúng tôi trình bày giải pháp RAG giúp nâng cao kiến thức của mô hình với dữ liệu bổ sung từ các nguồn kiến thức bên ngoài để cung cấp phản hồi chính xác hơn dành riêng cho một miền tùy chỉnh. Chúng tôi sử dụng một sổ ghi chép SageMaker Studio duy nhất chạy trên một ml.g5.2xlarge
phiên bản (1 GPU A10G) và Llama 2 7b trò chuyện hf, phiên bản tinh chỉnh của Llama 2 7b, được tối ưu hóa cho các trường hợp sử dụng hộp thoại từ Hugging Face Hub. Chúng tôi sử dụng hai bài đăng trên Blog AWS Media & Entertainment làm dữ liệu ngoài mẫu mà chúng tôi chuyển đổi thành phần nhúng bằng BAAI/bge-small-en-v1.5 nhúng. Chúng tôi lưu trữ các phần nhúng trong trái tùng, một cơ sở dữ liệu dựa trên vectơ cung cấp khả năng tìm kiếm hiệu suất cao và kết hợp độ tương tự. Chúng tôi cũng thảo luận cách chuyển từ thử nghiệm trong sổ tay sang triển khai mô hình của bạn đến điểm cuối SageMaker để suy luận theo thời gian thực khi bạn hoàn thành quá trình tạo mẫu của mình. Cách tiếp cận tương tự có thể được sử dụng với các mô hình và cơ sở dữ liệu vectơ khác nhau.
Tổng quan về giải pháp
Sơ đồ sau minh họa kiến trúc giải pháp.
Việc triển khai giải pháp bao gồm hai bước cấp cao: phát triển giải pháp bằng sổ ghi chép SageMaker Studio và triển khai các mô hình để suy luận.
Phát triển giải pháp bằng sổ ghi chép SageMaker Studio
Hoàn thành các bước sau để bắt đầu phát triển giải pháp:
- Tải mô hình trò chuyện Llama-2 7b từ Hugging Face Hub vào sổ ghi chép.
- Tạo một mẫu nhắc nhở với LangChain và sử dụng nó để tạo lời nhắc cho trường hợp sử dụng của bạn.
- Đối với 1–2 lời nhắc ví dụ, hãy thêm văn bản tĩnh có liên quan từ các tài liệu bên ngoài làm ngữ cảnh lời nhắc và đánh giá xem chất lượng của phản hồi có cải thiện hay không.
- Giả sử rằng chất lượng được cải thiện, hãy triển khai quy trình trả lời câu hỏi RAG:
- Thu thập các tài liệu bên ngoài có thể giúp mô hình trả lời tốt hơn các câu hỏi trong trường hợp sử dụng của bạn.
- Tải mô hình nhúng BGE và sử dụng nó để tạo các phần nhúng của các tài liệu này.
- Lưu trữ các phần nhúng này trong chỉ mục Pinecone.
- Khi người dùng đặt câu hỏi, hãy thực hiện tìm kiếm tương tự trong Pinecone và thêm nội dung từ các tài liệu giống nhau nhất vào ngữ cảnh của lời nhắc.
Triển khai các mô hình vào SageMaker để suy luận trên quy mô lớn
Khi đạt được mục tiêu hiệu suất của mình, bạn có thể triển khai các mô hình lên SageMaker để các ứng dụng AI tổng hợp sử dụng:
- Triển khai mô hình trò chuyện Llama-2 7b cho điểm cuối thời gian thực SageMaker.
- Triển khai BAAI/bge-small-en-v1.5 mô hình nhúng vào điểm cuối thời gian thực của SageMaker.
- Sử dụng các mô hình đã triển khai trong câu hỏi của bạn để trả lời các ứng dụng AI tổng quát.
Trong các phần sau, chúng tôi sẽ hướng dẫn bạn các bước triển khai giải pháp này trong sổ ghi chép SageMaker Studio.
Điều kiện tiên quyết
Để làm theo các bước trong bài đăng này, bạn cần có tài khoản AWS và Quản lý truy cập và nhận dạng AWS (IAM) có quyền tạo và truy cập tài nguyên giải pháp. Nếu bạn chưa quen với AWS, hãy xem Tạo tài khoản AWS độc lập.
Để sử dụng sổ ghi chép SageMaker Studio trong tài khoản AWS của bạn, bạn cần có Miền SageMaker với hồ sơ người dùng có quyền khởi chạy ứng dụng SageMaker Studio. Nếu bạn chưa quen với SageMaker Studio, Thiết lập Studio nhanh là cách nhanh nhất để bắt đầu. Chỉ với một cú nhấp chuột, SageMaker cung cấp cho miền SageMaker các giá trị đặt trước mặc định, bao gồm thiết lập hồ sơ người dùng, vai trò IAM, xác thực IAM và truy cập internet công cộng. Sổ ghi chép cho bài đăng này giả định một ml.g5.2xlarge
loại ví dụ. Để xem lại hoặc tăng hạn mức của bạn, hãy mở bảng điều khiển Hạn mức dịch vụ AWS, chọn AWS Services trong ngăn điều hướng, chọn Amazon SageMakervà tham khảo giá trị cho các ứng dụng Studio KernelGateway chạy trên ml.g5.2xlarge
các trường hợp.
Sau khi xác nhận giới hạn hạn ngạch của mình, bạn cần hoàn thành các phần phụ thuộc để sử dụng trò chuyện Llama 2 7b.
Trò chuyện Llama 2 7b có sẵn dưới Giấy phép Llama 2. Để truy cập Llama 2 trên Hugging Face, trước tiên bạn cần hoàn thành một số bước:
- Tạo tài khoản Ôm Mặt nếu bạn chưa có.
- Hoàn thành biểu mẫu “Yêu cầu quyền truy cập vào phiên bản tiếp theo của Llama” trên Meta trang mạng.
- Yêu cầu quyền truy cập vào Trò chuyện Llama 2 7b trên Ôm Mặt.
Sau khi được cấp quyền truy cập, bạn có thể tạo mã thông báo truy cập mới để truy cập vào các mô hình. Để tạo mã thông báo truy cập, hãy điều hướng đến Cài đặt trang trên trang web Ôm Mặt.
Bạn cần có tài khoản với Pinecone để sử dụng nó làm cơ sở dữ liệu vectơ. Pinecone có sẵn trên AWS thông qua Thị trường AWS. Trang web Pinecone cũng cung cấp tùy chọn để tạo một Tài khoản miễn phí đi kèm với quyền tạo một chỉ mục duy nhất, đủ cho mục đích của bài đăng này. Để lấy lại các phím Pinecone của bạn, hãy mở Bảng điều khiển quả thông Và chọn phím API.
Thiết lập sổ ghi chép và môi trường
Để làm theo mã trong bài đăng này, hãy mở SageMaker Studio và sao chép đoạn mã sau Kho GitHub. Tiếp theo, mở sổ ghi chép studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb và chọn hình ảnh được tối ưu hóa GPU PyTorch 2.0.0 Python 3.10, hạt nhân Python 3 và ml.g5.2xlarge
làm loại cá thể. Nếu đây là lần đầu tiên bạn sử dụng sổ ghi chép SageMaker Studio, hãy tham khảo Tạo hoặc mở sổ ghi chép Amazon SageMaker Studio.
Để thiết lập môi trường phát triển, bạn cần cài đặt các thư viện Python cần thiết, như được minh họa trong đoạn mã sau:
%%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ải mô hình và mã thông báo được đào tạo trước
Sau khi đã nhập các thư viện cần thiết, bạn có thể tải Trò chuyện Llama-2 7b mô hình cùng với các mã thông báo tương ứng từ Ôm mặt. Các tạo phẩm mô hình đã tải này được lưu trữ trong thư mục cục bộ trong SageMaker Studio. Điều này cho phép bạn nhanh chóng tải lại chúng vào bộ nhớ bất cứ khi nào bạn cần tiếp tục công việc của mình vào một thời điểm khác.
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)
Đặt câu hỏi yêu cầu thông tin cập nhật
Bây giờ bạn có thể bắt đầu sử dụng mô hình và đặt câu hỏi. Mô hình trò chuyện Llama-2 yêu cầu lời nhắc tuân theo định dạng sau:
<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]
Bạn có thể sử dụng Mẫu nhắc nhở từ LangChain để tạo công thức dựa trên định dạng lời nhắc, nhờ đó bạn có thể dễ dàng tạo lời nhắc trong tương lai:
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'] )
Hãy hỏi mô hình một câu hỏi cần thông tin gần đây từ năm 2023. Bạn có thể sử dụng LangChain và cụ thể là Chuỗi LLM loại chuỗi và chuyển dưới dạng tham số LLM, mẫu lời nhắc bạn đã tạo trước đó và câu hỏi:
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)
Chúng tôi nhận được câu trả lời được tạo ra sau đây:
Cảm ơn bạn đã liên hệ! Trung tâm Trải nghiệm Khách hàng AWS M&E tại Thành phố New York hiện không cho phép khách tham quan do đại dịch COVID-19. Tuy nhiên, bạn có thể kiểm tra trang web chính thức hoặc tài khoản mạng xã hội của họ để biết mọi thông tin cập nhật về thời điểm trung tâm sẽ mở cửa trở lại. Trong thời gian chờ đợi, bạn có thể khám phá các chuyến tham quan ảo và tài nguyên có sẵn trực tuyến của họ.
Cải thiện câu trả lời bằng cách thêm ngữ cảnh vào lời nhắc
Câu trả lời chúng tôi tạo ra không hoàn toàn đúng. Hãy xem liệu chúng ta có thể cải thiện nó bằng cách cung cấp một số ngữ cảnh hay không. Bạn có thể thêm một trích đoạn từ bài viết AWS công bố Trung tâm trải nghiệm khách hàng M&E mới ở New York, bao gồm các cập nhật về chủ đề này từ năm 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."""
Sử dụng lại LLMChain và chuyển văn bản trước đó làm ngữ cảnh:
context_response = llm_chain.predict(context=context, question=question)
print(context_response)
Câu trả lời mới trả lời câu hỏi với thông tin cập nhật:
Bạn có thể ghé thăm Trung tâm trải nghiệm khách hàng AWS M&E tại Thành phố New York bắt đầu từ ngày 13 tháng XNUMX. Vui lòng gửi email đến AWS-MediaEnt-CXC@amazon.com để lên lịch ghé thăm.
Chúng tôi đã xác nhận rằng bằng cách thêm ngữ cảnh phù hợp, hiệu suất của mô hình sẽ được cải thiện. Bây giờ bạn có thể tập trung nỗ lực vào việc tìm và thêm ngữ cảnh phù hợp cho câu hỏi được hỏi. Nói cách khác, hãy triển khai RAG.
Triển khai trả lời câu hỏi RAG bằng phần nhúng BGE và Pinecone
Tại thời điểm này, bạn phải quyết định nguồn thông tin để nâng cao kiến thức của mô hình. Những nguồn này có thể là các trang web hoặc tài liệu nội bộ trong tổ chức của bạn hoặc các nguồn dữ liệu có sẵn công khai. Vì mục đích của bài đăng này và để đơn giản hóa, chúng tôi đã chọn hai bài đăng trên Blog AWS được xuất bản vào năm 2023:
Những bài đăng này đã có sẵn dưới dạng tài liệu PDF trong thư mục dự án dữ liệu trong SageMaker Studio để truy cập nhanh. Để chia tài liệu thành các phần có thể quản lý được, bạn có thể sử dụng Bộ chia văn bản ký tự đệ quy phương pháp từ 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)
Tiếp theo, sử dụng mô hình nhúng BGE bge-nhỏ-en được tạo ra bởi Học viện Trí tuệ nhân tạo Bắc Kinh (BAAI) có sẵn trên Ôm mặt để tạo phần nhúng của các khối này. Tải xuống và lưu mô hình vào thư mục cục bộ trong Studio. Chúng tôi sử dụng fp32 để nó có thể chạy trên CPU của phiên bả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()
Sử dụng đoạn mã sau để tạo hàm embedding_generator, hàm này lấy các đoạn tài liệu làm đầu vào và tạo các phần nhúng bằng mô hình 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))
Trong bài đăng này, chúng tôi trình bày quy trình làm việc RAG bằng cách sử dụng Pinecone, một quy trình làm việc gốc trên nền tảng đám mây được quản lý cơ sở dữ liệu véc tơ điều đó cũng cung cấp một API để tìm kiếm sự tương tự. Bạn có thể viết lại đoạn mã sau để sử dụng cơ sở dữ liệu vectơ ưa thích của mình.
Chúng tôi khởi tạo một Khách hàng trăn Pinecone và tạo chỉ mục tìm kiếm vectơ mới bằng cách sử dụng độ dài đầu ra của mô hình nhúng. Chúng tôi sử dụng lớp Pinecone tích hợp của LangChain để sử dụng các phần nhúng mà chúng tôi đã tạo ở bước trước. Nó cần ba tham số: tài liệu cần nhập, chức năng tạo phần nhúng và tên của chỉ mục 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
)
Với mô hình trò chuyện Llama-2 7B được tải vào bộ nhớ và các phần nhúng được tích hợp vào chỉ mục Pinecone, giờ đây bạn có thể kết hợp các yếu tố này để nâng cao phản hồi của Llama 2 cho trường hợp sử dụng trả lời câu hỏi của chúng tôi. Để đạt được điều này, bạn có thể sử dụng LangChain Truy xuấtQA, làm tăng lời nhắc ban đầu bằng các tài liệu tương tự nhất từ kho lưu trữ vectơ. Bằng cách thiết lập return_source_documents=True
, bạn sẽ có được khả năng hiển thị chính xác các tài liệu được sử dụng để tạo câu trả lời như một phần của câu trả lời, cho phép bạn xác minh tính chính xác của câu trả lời.
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))
Chúng tôi nhận được câu trả lời sau:
Câu hỏi: Khi nào tôi có thể ghé thăm Trung tâm trải nghiệm khách hàng AWS M&E ở Thành phố New York?
Đáp: Tôi rất vui được giúp đỡ! Theo bối cảnh, Trung tâm Trải nghiệm Khách hàng AWS M&E ở Thành phố New York sẽ sẵn sàng cho khách tham quan bắt đầu từ ngày 13 tháng XNUMX. Bạn có thể gửi email đến AWS-MediaEnt-CXC@amazon.com để lên lịch ghé thăm.'
Tài liệu Nguồn:
{'page': 4.0, 'source': 'data/AWS công bố Trung tâm Trải nghiệm Khách hàng M&E mới tại Thành phố New York _ AWS cho M&E Blog.pdf'}
{'page': 2.0, 'source': 'data/AWS công bố Trung tâm Trải nghiệm Khách hàng M&E mới tại Thành phố New York _ AWS cho M&E Blog.pdf'}
Hãy thử một câu hỏi khác:
question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))
Chúng tôi nhận được câu trả lời sau:
Câu hỏi: AWS Media Services đã giành được bao nhiêu giải thưởng vào năm 2023?
Đáp: Theo bài đăng trên blog, AWS Media Services đã giành được 2023 giải thưởng trong ngành vào năm XNUMX.'
Tài liệu Nguồn:
{'page': 0.0, 'source': 'data/AWS Media Services được trao giải thưởng trong ngành _ AWS cho M&E Blog.pdf'}
{'page': 1.0, 'source': 'data/AWS Media Services được trao giải thưởng trong ngành _ AWS cho M&E Blog.pdf'}
Sau khi đã thiết lập đủ mức độ tin cậy, bạn có thể triển khai các mô hình để Điểm cuối SageMaker để suy luận theo thời gian thực. Các điểm cuối này được quản lý hoàn toàn và cung cấp hỗ trợ cho việc tự động mở rộng quy mô.
SageMaker cung cấp khả năng suy luận mô hình lớn bằng cách sử dụng các bộ chứa Suy luận mô hình lớn (LMIs) mà chúng tôi có thể sử dụng để triển khai các mô hình của mình. Các bộ chứa này được trang bị các thư viện nguồn mở được cài đặt sẵn như DeepSpeed, tạo điều kiện thuận lợi cho việc triển khai các kỹ thuật nâng cao hiệu suất như song song tensor trong quá trình suy luận. Ngoài ra, họ sử dụng DJLServing làm máy chủ mô hình tích hợp sẵn. DJLPhục vụ là một giải pháp phục vụ mô hình phổ quát, hiệu suất cao, cung cấp hỗ trợ cho việc tạo khối động và tự động thay đổi quy mô công nhân, từ đó tăng thông lượng.
Theo cách tiếp cận của mình, chúng tôi sử dụng SageMaker LMI với DJLServing và DeepSpeed Inference để triển khai các mô hình Llama-2-chat 7b và BGE cho các điểm cuối SageMaker đang chạy trên ml.g5.2xlarge
trường hợp, cho phép suy luận thời gian thực. Nếu bạn muốn tự mình làm theo các bước này, hãy tham khảo tài liệu đi kèm máy tính xách tay để có hướng dẫn chi tiết.
Bạn sẽ cần hai ml.g5.2xlarge
các trường hợp để triển khai. Để xem lại hoặc tăng hạn mức của bạn, hãy mở bảng điều khiển Hạn mức dịch vụ AWS, chọn AWS Services trong ngăn điều hướng, chọn Amazon SageMaker, và tham khảo giá trị của ml.g5.2xlarge
để sử dụng điểm cuối.
Các bước sau đây phác thảo quy trình triển khai các mô hình tùy chỉnh cho quy trình làm việc RAG trên điểm cuối SageMaker:
- Triển khai Llama-2 7b mô hình trò chuyện tới điểm cuối thời gian thực của SageMaker chạy trên
ml.g5.2xlarge
ví dụ để tạo văn bản nhanh. - Triển khai BAAI/bge-small-en-v1.5 mô hình nhúng vào điểm cuối thời gian thực của SageMaker chạy trên
ml.g5.2xlarge
ví dụ. Ngoài ra, bạn có thể triển khai mô hình nhúng của riêng mình. - Đặt câu hỏi và sử dụng LangChain Truy xuấtQA để tăng cường lời nhắc bằng các tài liệu tương tự nhất từ Pinecone, lần này sử dụng mô hình được triển khai ở điểm cuối thời gian thực 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}
)
- Sử dụng LangChain để xác minh rằng điểm cuối SageMaker với mô hình nhúng hoạt động như mong đợi để có thể sử dụng điểm cuối này cho việc nhập tài liệu trong tương lai:
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']
Làm sạch
Hoàn thành các bước sau để dọn sạch tài nguyên của bạn:
- Khi bạn làm việc xong trong sổ ghi chép SageMaker Studio của mình, hãy đảm bảo bạn đã tắt
ml.g5.2xlarge
ví dụ để tránh mọi khoản phí bằng cách chọn biểu tượng dừng. Bạn cũng có thể thiết lập tập lệnh cấu hình vòng đời để tự động tắt tài nguyên khi chúng không được sử dụng.
- Nếu bạn đã triển khai mô hình cho điểm cuối SageMaker, hãy chạy mã sau ở cuối sổ ghi chép để xóa điểm cuối:
#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
)
- Cuối cùng, chạy dòng sau để xóa chỉ mục Pinecone:
pinecone.delete_index(index_name)
Kết luận
Sổ ghi chép SageMaker cung cấp một cách đơn giản để bắt đầu hành trình của bạn với Thế hệ tăng cường truy xuất. Chúng cho phép bạn thử nghiệm tương tác với nhiều mô hình, cấu hình và câu hỏi khác nhau mà không cần tăng cường cơ sở hạ tầng bổ sung. Trong bài đăng này, chúng tôi đã trình bày cách nâng cao hiệu suất trò chuyện Llama 2 7b trong trường hợp sử dụng trả lời câu hỏi bằng cách sử dụng LangChain, mô hình nhúng BGE và Pinecone. Để bắt đầu, hãy khởi chạy SageMaker Studio và chạy máy tính xách tay có sẵn sau đây Repo GitHub. Hãy chia sẻ suy nghĩ của bạn trong phần bình luận!
Giới thiệu về tác giả
Anastasia Tzeveleka là Kiến trúc sư giải pháp chuyên gia về máy học và trí tuệ nhân tạo tại AWS. Cô làm việc với các khách hàng ở EMEA và giúp họ thiết kế các giải pháp máy học trên quy mô lớn bằng các dịch vụ AWS. Cô ấy đã làm việc cho các dự án trong các lĩnh vực khác nhau bao gồm Xử lý ngôn ngữ tự nhiên (NLP), MLOps và các công cụ Low Code No Code.
Pranav Murthy là Kiến trúc sư giải pháp chuyên gia AI/ML tại AWS. Anh tập trung vào việc giúp khách hàng xây dựng, đào tạo, triển khai và di chuyển khối lượng công việc máy học (ML) sang SageMaker. Trước đây, ông từng làm việc trong ngành bán dẫn, phát triển các mô hình thị giác máy tính (CV) lớn và xử lý ngôn ngữ tự nhiên (NLP) để cải thiện quy trình bán dẫn. Khi rảnh rỗi, anh thích chơi cờ và đi du lịch.
- Phân phối nội dung và PR được hỗ trợ bởi SEO. Được khuếch đại ngay hôm nay.
- PlatoData.Network Vertical Generative Ai. Trao quyền cho chính mình. Truy cập Tại đây.
- PlatoAiStream. Thông minh Web3. Kiến thức khuếch đại. Truy cập Tại đây.
- Trung tâmESG. Than đá, công nghệ sạch, Năng lượng, Môi trường Hệ mặt trời, Quản lý chất thải. Truy cập Tại đây.
- PlatoSức khỏe. Tình báo thử nghiệm lâm sàng và công nghệ sinh học. Truy cập Tại đây.
- nguồn: 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/
- : có
- :là
- :không phải
- :Ở đâu
- $ LÊN
- 1
- 10
- 100
- 13
- 16
- 2023
- 33
- 500
- 7
- a
- AC
- Học viện
- truy cập
- Truy cập dữ liệu
- có thể truy cập
- Theo
- Tài khoản
- Trợ Lý Giám Đốc
- chính xác
- chính xác
- Đạt được
- thêm vào
- thêm
- thêm vào
- Ngoài ra
- tham gia
- một lần nữa
- AI
- AI / ML
- cho phép
- Cho phép
- cho phép
- dọc theo
- Đã
- Ngoài ra
- đàn bà gan dạ
- Amazon SageMaker
- Xưởng sản xuất Amazon SageMaker
- Amazon Web Services
- Amazon Web Services (AWS)
- an
- và
- thông báo
- trả lời
- câu trả lời
- bất kì
- API
- ứng dụng
- các ứng dụng
- phương pháp tiếp cận
- ứng dụng
- kiến trúc
- LÀ
- nhân tạo
- trí tuệ nhân tạo
- AS
- xin
- đánh giá
- Trợ lý
- Hiệp hội
- giả định
- At
- tăng
- tăng cường
- gia tăng
- Xác thực
- tự động
- tự động
- có sẵn
- tránh
- trao
- giải thưởng
- AWS
- dựa
- BE
- được
- trước
- BEST
- Hơn
- Blog
- Blog Posts
- thân hình
- phát sóng
- xây dựng
- được xây dựng trong
- by
- CAN
- trường hợp
- trường hợp
- Trung tâm
- chuỗi
- chuỗi
- thách thức
- tải
- kiểm tra
- Tướng
- Chọn
- lựa chọn
- lựa chọn
- City
- tốt nghiệp lớp XNUMX
- giống cá lăng
- Nhấp chuột
- đóng cửa
- mã
- hợp tác
- đồng nghiệp
- COM
- kết hợp
- kết hợp
- Đến
- đến
- Bình luận
- hoàn thành
- Tính
- máy tính
- Tầm nhìn máy tính
- ngắn gọn
- sự tự tin
- Cấu hình
- XÁC NHẬN
- bao gồm
- An ủi
- Container
- nội dung
- bối cảnh
- tiếp tục
- Công ước
- cuộc hội thoại
- chuyển đổi
- Tương ứng
- có thể
- Covid-19
- Đại dịch COVID-19
- tạo
- tạo ra
- Tạo
- Hiện nay
- khách hàng
- khách hàng
- kinh nghiệm khach hang
- khách hàng
- dữ liệu
- Cơ sở dữ liệu
- cơ sở dữ liệu
- quyết định
- Mặc định
- hân hoan
- chứng minh
- chứng minh
- phụ thuộc
- triển khai
- triển khai
- triển khai
- triển khai
- chi tiết
- phát triển
- Phát triển
- thiết bị
- Đối thoại
- khác nhau
- thảo luận
- phân phối
- phân chia
- tài liệu
- tài liệu
- miền
- lĩnh vực
- don
- dont
- xuống
- tải về
- hai
- suốt trong
- năng động
- e
- Sớm hơn
- dễ dàng
- những nỗ lực
- các yếu tố
- nhúng
- EMEA
- cho phép
- cho phép
- cuối
- Điểm cuối
- tham gia
- nâng cao
- Giải trí
- hoàn toàn
- Môi trường
- đã trang bị
- thành lập
- sự kiện
- BAO GIỜ
- sự tiến hóa
- ví dụ
- tồn tại
- mong đợi
- dự kiến
- kinh nghiệm
- thử nghiệm
- khám phá
- ngoài
- trích xuất
- Đối mặt
- tạo điều kiện
- NHANH
- nhanh nhất
- Tính năng
- vài
- cuối cùng
- tìm kiếm
- Tên
- lần đầu tiên
- năm
- Tập trung
- tập trung
- theo
- tiếp theo
- Trong
- hình thức
- định dạng
- Forward
- Miễn phí
- thân thiện
- từ
- đầy đủ
- chức năng
- chức năng
- tương lai
- Thu được
- tạo ra
- tạo ra
- tạo
- thế hệ
- thế hệ
- Trí tuệ nhân tạo
- máy phát điện
- được
- Toàn cầu
- Các mục tiêu
- đi
- GPU
- cấp
- vui mừng
- Có
- có
- he
- giúp đỡ
- hữu ích
- giúp đỡ
- giúp
- cấp độ cao
- hiệu suất cao
- cao hơn
- của mình
- Đánh
- Độ đáng tin của
- Hướng dẫn
- Tuy nhiên
- HTML
- HTTPS
- Hub
- ÔmKhuôn Mặt
- i
- IBC
- ICON
- ID
- Bản sắc
- if
- minh họa
- hình ảnh
- thực hiện
- thực hiện
- thực hiện
- nhập khẩu
- nâng cao
- cải thiện
- cải thiện
- in
- Mặt khác
- bao gồm
- Bao gồm
- Tăng lên
- tăng
- chỉ số
- ngành công nghiệp
- Sự kiện công nghiệp
- thông tin
- Cơ sở hạ tầng
- ban đầu
- đầu vào
- cài đặt, dựng lên
- ví dụ
- hướng dẫn
- tích hợp
- Sự thông minh
- kết nối với nhau
- nội bộ
- Quốc Tế
- Internet
- truy cập internet
- trong
- IT
- ITS
- cuộc hành trình
- jpg
- json
- chỉ
- Giữ
- phím
- Biết
- kiến thức
- Ngôn ngữ
- lớn
- phóng
- học tập
- trái
- Chiều dài
- Cấp
- thư viện
- Lượt thích
- LIMIT
- Dòng
- Loài đà mã ở nam mỹ
- LLM
- tải
- loader
- địa phương
- Thấp
- máy
- học máy
- làm cho
- quản lý
- quản lý
- nhiều
- phù hợp
- tối đa
- trong khi đó
- Phương tiện truyền thông
- Bộ nhớ
- Siêu dữ liệu
- Siêu dữ liệu
- phương pháp
- di chuyển
- ML
- MLOps
- kiểu mẫu
- mô hình
- chi tiết
- hầu hết
- phải
- NAB
- tên
- quốc dân
- Tự nhiên
- Xử lý ngôn ngữ tự nhiên
- Điều hướng
- THÔNG TIN
- cần thiết
- Cần
- nhu cầu
- Mới
- Quyền truy cập mới
- Newyork
- thành phố new york
- tiếp theo
- nlp
- Không
- máy tính xách tay
- Tháng mười một
- tại
- of
- cung cấp
- Cung cấp
- chính thức
- Trang web chinh thưc
- on
- ONE
- Trực tuyến
- mở
- mã nguồn mở
- tối ưu hóa
- Tùy chọn
- Các lựa chọn
- or
- cơ quan
- OS
- Nền tảng khác
- vfoXNUMXfipXNUMXhfpiXNUMXufhpiXNUMXuf
- ra
- đề cương
- đầu ra
- kết quả đầu ra
- riêng
- tập giấy
- trang
- đại dịch
- cửa sổ
- thông số
- một phần
- Đối tác
- vượt qua
- Thực hiện
- hiệu suất
- quyền
- giai đoạn
- miếng
- plato
- Thông tin dữ liệu Plato
- PlatoDữ liệu
- chơi
- xin vui lòng
- Bài đăng
- bài viết
- ưa thích
- trình bày
- trước
- trước đây
- quá trình
- Quy trình
- xử lý
- Hồ sơ
- dự án
- dự án
- nguyên mẫu
- tạo mẫu
- cho
- cung cấp
- công khai
- công khai
- công bố
- mục đích
- Python
- ngọn đuốc
- chất lượng
- nhiệm vụ
- câu hỏi
- Câu hỏi
- Nhanh chóng
- Mau
- nhanh
- nhanh chóng
- đạt
- thời gian thực
- gần đây
- công thức
- xem
- tài liệu tham khảo
- về
- có liên quan
- mở lại
- yêu cầu
- cần phải
- Yêu cầu
- đòi hỏi
- Thông tin
- phản ứng
- phản ứng
- kết quả
- tiếp tục
- trở lại
- xem xét
- ngay
- Vai trò
- chạy
- chạy
- nhà làm hiền triết
- sake
- tương tự
- Lưu
- lưu
- nói
- Quy mô
- mở rộng quy mô
- lịch trình
- lập kế hoạch
- Tìm kiếm
- tìm kiếm
- Thứ hai
- phần
- xem
- bán dẫn
- gửi
- gởi
- máy chủ
- dịch vụ
- DỊCH VỤ
- định
- thiết lập
- Chia sẻ
- chị ấy
- hiển thị
- giới thiệu
- cho thấy
- đóng cửa
- Đóng cửa
- tương tự
- đơn giản
- duy nhất
- Kích thước máy
- So
- Mạng xã hội
- truyền thông xã hội
- giải pháp
- Giải pháp
- một số
- nguồn
- nguồn
- chuyên gia
- riêng
- đặc biệt
- độc lập
- Bắt đầu
- bắt đầu
- Bắt đầu
- tĩnh
- Bước
- Các bước
- Dừng
- hàng
- lưu trữ
- cửa hàng
- đơn giản
- phòng thu
- như vậy
- đủ
- hỗ trợ
- Hỗ trợ
- chắc chắn
- nhanh chóng
- mất
- Nhiệm vụ
- nhiệm vụ
- kỹ thuật
- Công nghệ
- mẫu
- văn bản
- hơn
- việc này
- Sản phẩm
- cung cấp their dịch
- Them
- Đó
- bằng cách ấy
- Kia là
- họ
- điều này
- số ba
- Thông qua
- thông lượng
- thời gian
- đến
- mã thông báo
- token hóa
- công cụ
- chủ đề
- ngọn đuốc
- tour du lịch
- Train
- máy biến áp
- quá trình chuyển đổi
- Đi du lịch
- đúng
- thử
- hai
- kiểu
- loại
- điển hình
- thường
- Dưới
- phổ cập
- cho đến khi
- up-to-date
- Cập nhật
- Sử dụng
- sử dụng
- ca sử dụng
- đã sử dụng
- người sử dang
- Kinh nghiệm người dùng
- sử dụng
- sử dụng
- sử dụng
- giá trị
- khác nhau
- Xác minh
- xác minh
- phiên bản
- thông qua
- Người xem
- ảo
- tour du lịch ảo
- khả năng hiển thị
- tầm nhìn
- Truy cập
- Thăm
- đi bộ
- muốn
- Đường..
- we
- web
- các dịch vụ web
- Website
- tuần
- là
- khi nào
- bất cứ khi nào
- cái nào
- trong khi
- sẽ
- với
- ở trong
- không có
- Won
- từ
- Công việc
- làm việc
- công nhân
- quy trình làm việc
- đang làm việc
- công trinh
- năm
- năm
- york
- Bạn
- trên màn hình
- mình
- zephyrnet