Zephyrnet Logosu

Hızlı deneyler için Llama 2, LangChain ve Pinecone ile bir RAG soru yanıtlama çözümü oluşturmak için Amazon SageMaker Studio'yu kullanın | Amazon Web Hizmetleri

Tarih:

Alma Artırılmış Nesil (RAG), ince ayar yapmanıza gerek kalmadan depolar, veritabanları ve API'ler gibi harici bilgi kaynaklarından verilere erişim sağlayan büyük bir dil modeli (LLM) sağlamanıza olanak tanır. Soru yanıtlama için üretken yapay zeka kullanıldığında RAG, Yüksek Lisans Kurumlarının soruları en alakalı, güncel bilgilerle yanıtlamasına ve isteğe bağlı olarak doğrulama için veri kaynaklarını belirtmesine olanak tanır.

Belgelerden bilgi alımına yönelik tipik bir RAG çözümü, verileri veri kaynaklarından yerleştirmelere dönüştürmek için bir yerleştirme modeli kullanır ve bu yerleştirmeleri bir vektör veritabanında saklar. Bir kullanıcı bir soru sorduğunda vektör veritabanında arama yapar ve kullanıcının sorgusuna en çok benzeyen belgeleri alır. Daha sonra, alınan belgeleri ve kullanıcının sorgusunu, metin oluşturmak için Yüksek Lisans'a gönderilen genişletilmiş bir bilgi isteminde birleştirir. Bu uygulamada iki model vardır: yerleştirme modeli ve nihai yanıtı oluşturan LLM.

Bu yazıda, nasıl kullanılacağını gösteriyoruz Amazon SageMaker Stüdyosu bir RAG soru yanıtlama çözümü oluşturmak.

RAG tabanlı soru yanıtlama için not defterlerini kullanma

RAG'ı uygulamak genellikle çeşitli yerleştirme modelleri, vektör veritabanları, metin oluşturma modelleri ve bilgi istemleriyle denemeler yapmayı ve aynı zamanda işlevsel bir prototip elde edene kadar kodunuzda hata ayıklamayı gerektirir. Amazon Adaçayı Yapıcı GPU bulut sunucularıyla donatılmış, yönetilen Jupyter dizüstü bilgisayarlar sunarak bu ilk aşamada ek altyapıyı çalıştırmadan hızlı bir şekilde denemeler yapmanızı sağlar. SageMaker'da not defterlerini kullanmanın iki seçeneği vardır. İlk seçenek hızlı başlatmadır dizüstü bilgisayarlar SageMaker Studio aracılığıyla kullanılabilir. ML için özel olarak tasarlanmış entegre geliştirme ortamı (IDE) olan SageMaker Studio'da, farklı bulut sunucusu türlerinde ve farklı yapılandırmalarla çalışan not defterlerini başlatabilir, iş arkadaşlarınızla işbirliği yapabilir ve makine öğrenimi (ML) için amaca yönelik olarak oluşturulmuş ek özelliklere erişebilirsiniz. İkinci seçenek bir kullanmaktır SageMaker dizüstü bilgisayar örneğiJupyter Notebook uygulamasını çalıştıran, tam olarak yönetilen bir ML işlem örneğidir.

Bu yazıda, özel bir alana özgü daha doğru yanıtlar sağlamak için modelin bilgisini dış bilgi kaynaklarından alınan ek verilerle artıran bir RAG çözümü sunuyoruz. Bir bilgisayarda çalışan tek bir SageMaker Studio dizüstü bilgisayar kullanıyoruz. ml.g5.2xlarge örnek (1 A10G GPU) ve Lama 2 7b sohbet hfHugging Face Hub'ın diyalog kullanım durumları için optimize edilmiş Llama 2 7b'nin ince ayarlı versiyonu. Örnek harici veriler olarak iki AWS Medya ve Eğlence Blog gönderisini kullanıyoruz ve bunları yerleştirmelere dönüştürüyoruz. BAAI/bge-small-en-v1.5 gömmeler. Gömmeleri saklıyoruz Çam kozalağı, yüksek performanslı arama ve benzerlik eşleştirme sunan vektör tabanlı bir veritabanıdır. Ayrıca, prototip oluşturma işlemini tamamladığınızda gerçek zamanlı çıkarım için dizüstü bilgisayarda deneme yapmaktan modellerinizi SageMaker uç noktalarına dağıtmaya nasıl geçiş yapacağınızı da tartışıyoruz. Aynı yaklaşım farklı modeller ve vektör veritabanları ile de kullanılabilir.

Çözüme genel bakış

Aşağıdaki şemada çözüm mimarisi gösterilmektedir.

Çözümün uygulanması iki üst düzey adımdan oluşur: SageMaker Studio dizüstü bilgisayarlarını kullanarak çözümün geliştirilmesi ve çıkarım için modellerin dağıtılması.

SageMaker Studio dizüstü bilgisayarlarını kullanarak çözümü geliştirin

Çözümü geliştirmeye başlamak için aşağıdaki adımları tamamlayın:

  1. Hugging Face Hub'dan Llama-2 7b sohbet modelini not defterine yükleyin.
  2. İle bir PromptTemplate oluşturun Dil Zinciri ve bunu kullanım durumunuza yönelik istemler oluşturmak için kullanın.
  3. 1-2 örnek bilgi istemi için, bilgi istemi bağlamı olarak harici belgelerden ilgili statik metni ekleyin ve yanıtların kalitesinin iyileşip iyileşmediğini değerlendirin.
  4. Kalitenin arttığını varsayarak RAG soru yanıtlama iş akışını uygulayın:
    • Modelin kullanım durumunuzdaki sorulara daha iyi yanıt vermesine yardımcı olabilecek harici belgeleri toplayın.
    • BGE yerleştirme modelini yükleyin ve bu belgelerin yerleştirmelerini oluşturmak için kullanın.
    • Bu yerleştirmeleri bir Çam Kozalağı dizininde saklayın.
    • Bir kullanıcı bir soru sorduğunda, Pinecone'da bir benzerlik araması gerçekleştirin ve en benzer belgelerdeki içeriği istemin bağlamına ekleyin.

Geniş ölçekte çıkarım için modelleri SageMaker'a dağıtın

Performans hedeflerinize ulaştığınızda, modelleri üretken yapay zeka uygulamaları tarafından kullanılmak üzere SageMaker'a dağıtabilirsiniz:

  1. Llama-2 7b sohbet modelini bir SageMaker gerçek zamanlı uç noktasına dağıtın.
  2. dağıtmak BAAI/bge-small-en-v1.5 modeli SageMaker gerçek zamanlı uç noktasına gömer.
  3. Üretken yapay zeka uygulamalarını yanıtlarken sorunuzda dağıtılan modelleri kullanın.

Aşağıdaki bölümlerde, bu çözümü SageMaker Studio not defterlerinde uygulama adımlarında size yol göstereceğiz.

Önkoşullar

Bu gönderideki adımları takip etmek için bir AWS hesabınızın ve bir AWS Kimlik ve Erişim Yönetimi Çözüm kaynaklarını oluşturma ve bunlara erişme izinlerine sahip (IAM) rolü. AWS'de yeniyseniz bkz. Bağımsız bir AWS hesabı oluşturun.

SageMaker Studio not defterlerini AWS hesabınızda kullanmak için bir SageMaker etki alanı SageMaker Studio uygulamasını başlatma izinlerine sahip bir kullanıcı profiliyle. SageMaker Studio'da yeniyseniz, Hızlı Stüdyo kurulumu başlamanın en hızlı yoludur. SageMaker, tek bir tıklamayla SageMaker etki alanını, kullanıcı profilinin ayarlanması, IAM rolü, IAM kimlik doğrulaması ve genel internet erişimi dahil olmak üzere varsayılan ön ayarlarla sağlar. Bu yazıya ait not defteri, ml.g5.2xlarge örnek türü. Kotanızı incelemek veya artırmak için AWS Hizmet Kotaları konsolunu açın, AWS Hizmetleri gezinme bölmesinde öğesini seçin. Amazon Adaçayı Yapıcıve üzerinde çalışan Studio KernelGateway uygulamalarının değerine bakın. ml.g5.2xlarge örnekleri.

Kota sınırınızı onayladıktan sonra Llama 2 7b chat'i kullanabilmek için bağımlılıkları tamamlamanız gerekmektedir.

Llama 2 7b sohbeti şu adreste mevcuttur: Lama 2 lisansı. Hugging Face'te Llama 2'ye erişmek için önce birkaç adımı tamamlamanız gerekir:

  1. Henüz bir hesabınız yoksa Hugging Face hesabı oluşturun.
  2. Meta'daki "Lama'nın sonraki sürümüne erişim isteyin" formunu doldurun Web sitesi.
  3. Erişim iste Lama 2 7b sohbet Sarılma Yüzünde.

Size erişim izni verildikten sonra modellere erişmek için yeni bir erişim belirteci oluşturabilirsiniz. Erişim belirteci oluşturmak için şuraya gidin: Ayarlar Hugging Face web sitesindeki sayfa.

Vektör veritabanı olarak kullanmak için Pinecone'da bir hesabınızın olması gerekir. Çam kozalağı AWS'de şu adresten edinilebilir: AWS Pazar Yeri. Çam Kozalağı web sitesi aynı zamanda bir kozalak oluşturma seçeneği de sunuyor. Ücretsiz bir hesap Bu, bu yazının amaçları için yeterli olan tek bir dizin oluşturma izinleriyle birlikte gelir. Çam kozalağı anahtarlarınızı almak için Çam kozalağı konsolu Ve seç API Keys.

Dizüstü bilgisayarı ve ortamı kurma

Bu yazıdaki kodu takip etmek için SageMaker Studio'yu açın ve aşağıdakileri kopyalayın GitHub deposu. Daha sonra not defterini açın studio-local-gen-ai/rag/RAG-with-Llama-2-on-Studio.ipynb ve PyTorch 2.0.0 Python 3.10 GPU Optimize Edilmiş görüntüyü, Python 3 çekirdeğini ve ml.g5.2xlarge örnek türü olarak. SageMaker Studio dizüstü bilgisayarlarını ilk defa kullanıyorsanız, bkz. Amazon SageMaker Studio Not Defteri Oluşturun veya Açın.

Geliştirme ortamını ayarlamak için aşağıdaki kodda gösterildiği gibi gerekli Python kitaplıklarını yüklemeniz gerekir:

%%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

Önceden eğitilmiş modeli ve belirteci yükleyin

Gerekli kütüphaneleri içe aktardıktan sonra yükleyebilirsiniz. Lama-2 7b sohbeti model, Hugging Face'in ilgili tokenizer'larıyla birlikte. Yüklenen bu model yapıları SageMaker Studio içindeki yerel dizinde saklanır. Bu, çalışmanıza farklı bir zamanda devam etmeniz gerektiğinde bunları hızlı bir şekilde belleğe yeniden yüklemenizi sağlar.

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)

Güncel bilgi gerektiren bir soru sorun

Artık modeli kullanmaya başlayabilir ve soru sorabilirsiniz. Llama-2 sohbet modelleri, istemin aşağıdaki formata uymasını bekler:

<s>[INST] <<SYS>>
system_prompt
<<SYS>>
{{ user_message }} [/INST]

Sen kullanabilirsiniz İstem Şablonu LangChain'den bilgi istemi formatını temel alan bir tarif oluşturmak için, böylece ileriye yönelik istemleri kolayca oluşturabilirsiniz:

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'] )

Modele 2023'e ait güncel bilgileri gerektiren bir soru soralım. LangChain'i ve özellikle LLLMChain zincirin türünü seçin ve LLM'yi, daha önce oluşturduğunuz bilgi istemi şablonunu ve soruyu parametre olarak iletin:

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şağıdaki oluşturulan yanıtı alıyoruz:

Bize ulaştığınız için teşekkür ederiz! New York City'deki AWS M&E Müşteri Deneyimi Merkezi, COVID-19 salgını nedeniyle şu anda ziyarete kapalı. Ancak merkezin ne zaman yeniden açılacağına dair güncellemeler için resmi web sitelerini veya sosyal medya hesaplarını kontrol edebilirsiniz. Bu arada sanal turlarını ve çevrimiçi olarak sunulan kaynakları keşfedebilirsiniz.

Bilgi istemine bağlam ekleyerek yanıtı iyileştirin

Ürettiğimiz cevap tamamen doğru değil. Bakalım bağlam sağlayarak bunu geliştirebilecek miyiz? Gönderiden bir alıntı ekleyebilirsiniz AWS, New York'ta yeni İzleme ve Değerlendirme Müşteri Deneyimi Merkezi'ni duyurdu2023'ten itibaren konuyla ilgili güncellemeleri içeren:

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'i tekrar kullanın ve önceki metni bağlam olarak iletin:

context_response = llm_chain.predict(context=context, question=question)
print(context_response)

Yeni yanıt, soruyu güncel bilgilerle yanıtlıyor:

13 Kasım'dan itibaren New York City'deki AWS M&E Müşteri Deneyimi Merkezini ziyaret edebilirsiniz. Bir ziyaret planlamak için lütfen AWS-MediaEnt-CXC@amazon.com adresine bir e-posta gönderin.

Doğru bağlamın eklenmesiyle modelin performansının arttığını doğruladık. Artık çabalarınızı sorulan soru için doğru bağlamı bulmaya ve eklemeye odaklayabilirsiniz. Başka bir deyişle RAG'ı uygulayın.

BGE yerleştirmeleri ve Çam Kozalağı ile RAG soru yanıtını uygulayın

Bu noktada modelin bilgisini geliştirmek için bilgi kaynaklarına karar vermelisiniz. Bu kaynaklar, kuruluşunuz içindeki dahili web sayfaları veya belgeler ya da kamuya açık veri kaynakları olabilir. Bu yazının amaçları doğrultusunda ve basitlik adına 2023'te yayınlanan iki AWS Blog gönderisini seçtik:

Bu gönderiler, hızlı erişim için SageMaker Studio'daki veri projesi dizininde PDF belgeleri olarak zaten mevcuttur. Belgeleri yönetilebilir parçalara bölmek için ÖzyinelemeliKarakterMetin Bölücü LangChain'den yöntem:

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)

Daha sonra BGE yerleştirme modelini kullanın bge-small-tr tarafından oluşturulan Pekin Yapay Zeka Akademisi (BAAI) Bu, bu parçaların yerleştirmelerini oluşturmak için Hugging Face'te mevcuttur. Modeli Studio'daki yerel dizine indirip kaydedin. Örneğin CPU'sunda çalışabilmesi için fp32 kullanıyoruz.

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()

Belge parçalarını girdi olarak alan ve yerleştirmeleri BGE modelini kullanarak oluşturan bir embedding_generator işlevi oluşturmak için aşağıdaki kodu kullanın:

# 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))

Bu yazıda, yönetilen, bulutta yerel bir çözüm olan Pinecone'u kullanan bir RAG iş akışını gösteriyoruz. vektör veritabanı bu aynı zamanda bir teklif sunuyor API benzerlik araması için. Tercih ettiğiniz vektör veritabanını kullanmak için aşağıdaki kodu yeniden yazmakta özgürsünüz.

Bir başlatıyoruz Çam kozalağı python istemcisi ve gömme modelinin çıktı uzunluğunu kullanarak yeni bir vektör arama dizini oluşturun. Önceki adımda oluşturduğumuz yerleştirmeleri almak için LangChain'in yerleşik Pinecone sınıfını kullanıyoruz. Üç parametreye ihtiyacı vardır: alınacak belgeler, yerleştirme oluşturucu işlevi ve Çam Kozalağı endeksinin adı.

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
)

Belleğe yüklenen Llama-2 7B sohbet modeli ve Çam Kozalağı endeksine entegre edilen yerleştirmeler sayesinde artık bu öğeleri birleştirerek soru yanıtlama kullanım durumumuz için Llama 2'nin yanıtlarını geliştirebilirsiniz. Bunu başarmak için LangChain'i kullanabilirsiniz. Geri AlmaQA, ilk istemi vektör deposundaki en benzer belgelerle zenginleştirir. Ayarlayarak return_source_documents=True, yanıtın bir parçası olarak yanıtı oluşturmak için kullanılan tam belgeleri görebilir ve yanıtın doğruluğunu doğrulamanıza olanak tanır.

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şağıdaki cevabı alıyoruz:

S: New York City'deki AWS M&E Müşteri Deneyimi Merkezi'ni ne zaman ziyaret edebilirim?

C: Yardım etmekten mutluluk duyuyorum! Bağlama göre, New York City'deki AWS M&E Müşteri Deneyimi Merkezi 13 Kasım'dan itibaren ziyarete açık olacak. Ziyaret planlamak için AWS-MediaEnt-CXC@amazon.com adresine e-posta gönderebilirsiniz.'

Kaynak dökümanlar:

{'page': 4.0, 'source': 'data/AWS, New York City'deki yeni M&E Müşteri Deneyim Merkezini duyurdu _ M&E Blogu için AWS.pdf'}

{'page': 2.0, 'source': 'data/AWS, New York City'deki yeni M&E Müşteri Deneyim Merkezini duyurdu _ M&E Blogu için AWS.pdf'}

Farklı bir soru deneyelim:

question2=" How many awards have AWS Media Services won in 2023?"
print_response(llm_qa_chain(question2))

Aşağıdaki cevabı alıyoruz:

S: AWS Medya Hizmetleri 2023'te kaç ödül kazandı?

C: Blog gönderisine göre AWS Media Services, 2023'te beş sektör ödülü kazandı.'

Kaynak dökümanlar:

{'page': 0.0, 'source': 'data/AWS Medya Hizmetleri sektörden övgüler aldı _ AWS for M&E Blog.pdf'}

{'page': 1.0, 'source': 'data/AWS Medya Hizmetleri sektörden övgüler aldı _ AWS for M&E Blog.pdf'}

Yeterli düzeyde güven oluşturduktan sonra modelleri dağıtabilirsiniz. Gerçek zamanlı çıkarım için SageMaker uç noktaları. Bu uç noktalar tamamen yönetilir ve otomatik ölçeklendirme desteği sunar.

SageMaker, modellerimizi dağıtmak için kullanabileceğimiz Büyük Model Çıkarımı kapsayıcılarını (LMI'ler) kullanarak büyük model çıkarımı sunar. Bu konteynerler, çıkarım sırasında tensör paralelliği gibi performansı artıran tekniklerin uygulanmasını kolaylaştıran DeepSpeed ​​gibi önceden yüklenmiş açık kaynak kitaplıklarla donatılmıştır. Ayrıca DJLServing'i önceden oluşturulmuş entegre bir model sunucu olarak kullanıyorlar. DJLSserving Dinamik gruplama ve çalışanların otomatik ölçeklendirmesini destekleyerek verimi artıran, yüksek performanslı, evrensel bir model sunma çözümüdür.

Yaklaşımımızda, Llama-2-chat 7b ve BGE modellerini üzerinde çalışan SageMaker uç noktalarına dağıtmak için DJLServing ve DeepSpeed ​​Inference ile SageMaker LMI'yı kullanıyoruz. ml.g5.2xlarge gerçek zamanlı çıkarıma olanak sağlayan örnekler. Bu adımları kendiniz takip etmek istiyorsanız, ekteki defter detaylı talimatlar için.

İki taneye ihtiyacınız olacak ml.g5.2xlarge dağıtım için örnekler. Kotanızı incelemek veya artırmak için AWS Hizmet Kotaları konsolunu açın, AWS Hizmetleri gezinme bölmesinde öğesini seçin. Amazon Adaçayı Yapıcıve değerine bakın ml.g5.2xlarge uç nokta kullanımı için.

Aşağıdaki adımlar, bir SageMaker uç noktasında RAG iş akışı için özel modellerin dağıtılması sürecini özetlemektedir:

  • dağıtmak Lama-2 7b üzerinde çalışan bir SageMaker gerçek zamanlı uç noktasına sohbet modeli ml.g5.2xlarge hızlı metin üretimi için örnek.
  • dağıtmak BAAI/bge-small-en-v1.5 modeli, üzerinde çalışan bir SageMaker gerçek zamanlı uç noktasına gömer. ml.g5.2xlarge misal. Alternatif olarak kendi yerleştirme modelinizi dağıtabilirsiniz.
  • Bir soru sorun ve LangChain'i kullanın Geri AlmaQA İstemi Pinecone'daki en benzer belgelerle genişletmek için bu sefer SageMaker gerçek zamanlı uç noktasında konuşlandırılan modeli kullanarak:
# 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}
)
  • Gelecekte belge alımı için kullanılabilmesi amacıyla, yerleştirme modeliyle SageMaker uç noktasının beklendiği gibi çalıştığını doğrulamak için LangChain'i kullanın:
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']

Temizlemek

Kaynaklarınızı temizlemek için aşağıdaki adımları tamamlayın:

  • SageMaker Studio dizüstü bilgisayarınızda çalışmayı bitirdiğinizde, SageMaker Studio dizüstü bilgisayarınızı kapattığınızdan emin olun. ml.g5.2xlarge Durdurma simgesini seçerek herhangi bir ücretlendirmeden kaçınmak için örnek. Ayrıca kurabilirsiniz yaşam döngüsü yapılandırma komut dosyaları Kullanılmadıklarında kaynakları otomatik olarak kapatmak için.

  • Modelleri SageMaker uç noktalarına dağıttıysanız uç noktaları silmek için not defterinin sonunda aşağıdaki kodu çalıştırı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
)
  • Son olarak Çam Kozalağı dizinini silmek için aşağıdaki satırı çalıştırın:
pinecone.delete_index(index_name)

Sonuç

SageMaker dizüstü bilgisayarları, Retrieval Augmented Generation ile yolculuğunuza hızlı bir başlangıç ​​yapmanızı sağlar. Ek altyapıyı çalıştırmadan çeşitli modeller, konfigürasyonlar ve sorularla etkileşimli olarak denemeler yapmanıza olanak tanır. Bu yazıda, LangChain, BGE yerleştirme modeli ve Pinecone kullanarak soru yanıtlama kullanım senaryosunda Llama 2 7b sohbetinin performansının nasıl artırılacağını gösterdik. Başlamak için SageMaker Studio'yu başlatın ve defter aşağıda mevcut GitHub repo. Lütfen düşüncelerinizi yorum kısmında paylaşın!


yazarlar hakkında

Anastasia Tzeveleka AWS'de Makine Öğrenimi ve Yapay Zeka Uzmanı Çözüm Mimarıdır. EMEA'daki müşterilerle birlikte çalışıyor ve AWS hizmetlerini kullanarak geniş ölçekte makine öğrenimi çözümleri tasarlamalarına yardımcı oluyor. Doğal Dil İşleme (NLP), MLOps ve Low Code No Code araçları dahil olmak üzere farklı alanlarda projeler üzerinde çalıştı.

Pranav Murthy AWS'de AI/ML Uzman Çözüm Mimarıdır. Müşterilerin makine öğrenimi (ML) iş yüklerini oluşturmasına, eğitmesine, dağıtmasına ve SageMaker'a taşımasına yardımcı olmaya odaklanıyor. Daha önce yarı iletken endüstrisinde yarı iletken süreçlerini iyileştirmek için büyük bilgisayarlı görüntü (CV) ve doğal dil işleme (NLP) modelleri geliştirerek çalıştı. Boş zamanlarında satranç oynamaktan ve seyahat etmekten hoşlanıyor.

spot_img

En Son İstihbarat

spot_img