paint-brush
AWS SageMaker'da MPT-7B Nasıl Çalıştırılır: MosaicML'in ChatGPT Rakibiile@redgeoff
444 okumalar
444 okumalar

AWS SageMaker'da MPT-7B Nasıl Çalıştırılır: MosaicML'in ChatGPT Rakibi

ile Geoff Cox8m2023/07/19
Read on Terminal Reader
Read this story w/o Javascript

Çok uzun; Okumak

Blog gönderisinde, sohbet robotu modellerini kendi altyapınızda çalıştırmak için OpenAI'nin ChatGPT'sine alternatif olarak MosaicML'nin MPT-7B'si tanıtılıyor. MPT-7B'nin AWS SageMaker'da nasıl çalıştırılacağına ilişkin adım adım bir kılavuz sağlayarak maliyet kontrolü, kolay yineleme ve üretime geçiş yeteneği gibi avantajları vurgular. Gönderide ayrıca veri gizliliğinin ve maliyet etkinliğinin önemi vurgulanarak modelle ilgili performans karşılaştırmaları ve zorluklar tartışılıyor.
featured image - AWS SageMaker'da MPT-7B Nasıl Çalıştırılır: MosaicML'in ChatGPT Rakibi
Geoff Cox HackerNoon profile picture
0-item
1-item
2-item

Bu blog yazısında, MosaicML'in ChatGPT rakibi MPT-7B'yi kendi AWS SageMaker örneğinizde çalıştırma sürecinde size adım adım yol göstereceğim.


ChatGPT'nin yetenekleri konusunda heyecanlı mısınız, ancak hassas verilerinizin OpenAI'ye ifşa edilmesi konusunda endişeleriniz mi var? Neyse ki kendi altyapınızda çalıştırabileceğiniz alternatifler var. Böyle bir alternatif, ChatGPT'nin rakibi olan MosaicML MPT-7b'dir ve bu blog yazısında bunu inceleyeceğiz.

MosaicML ve MPT-7B'ye Giriş

Yakın zamanda Databricks tarafından 1,3 milyar dolara satın alınan MosaicML, ChatGPT'nin sözde rakibi olan MPT-7B modeliyle makine öğrenimi topluluğunda ses getiriyor. Verdiği söze rağmen, bu modeli çalıştırmak, belgelerin az olması ve yoğun kaynak gereksinimleri nedeniyle göz korkutucu olabilir. Bununla birlikte, MPT-7B, yeni başlayanlar için uygun ve hızlı yineleme için son derece esnek bir ortam olan Jupyter dizüstü bilgisayardaki AWS SageMaker'da çalıştırılabilir. Bu kurulum, üretime geçmeye karar vermeden önce modelin fizibilitesini ve donanım gereksinimlerini test etmenize olanak tanır.

MPT-7B'yi AWS SageMaker'da çalıştırma

MPT-7B'yi AWS SageMaker'da bir Jupyter dizüstü bilgisayarda çalıştırmak çeşitli avantajlar sağlar. Yalnızca kullandığınız kadar ödeyip işiniz bittiğinde onu kapatmakla kalmaz, aynı zamanda modeli yeniden yüklemeye gerek kalmadan kodunuzun bazı bölümlerini kolayca yeniden çalıştırma yeteneği, yinelemeli geliştirme sırasında zaman tasarrufu sağlar. Ama dikkatli olun! Not defteri bulut sunucularınızı durdurmayı unutursanız ücretler hızla artabilir.


Bu yöntem nispeten uygun olsa da dikkate almanız gereken bazı hususlar vardır. İlk olarak, modelin yüklenmesi yüksek performanslı bir GPU'da bile 20 dakikaya kadar sürebiliyor ve bu da bu işlemi biraz zaman alıcı hale getiriyor. Ayrıca işletme maliyeti saat başına en az 4$ olduğundan maliyet de dikkate alınması gereken bir faktördür. MPT-7B'yi en az bir p3.2xlarge örneğinde çalıştırmanız gerekir; daha küçük bir şey mümkün görünmüyor. SageMaker yerine EC2'yi tercih ederseniz p3.2xlarge bulut sunucusunu kullanmak için AWS'den izin istemeniz gerekir.


Sonraki bölümlerde MPT-7B modelini kendi SageMaker jupyter dizüstü bilgisayarınızda nasıl çalıştıracağınızı adım adım anlatacağım:

Adım 1 - SageMaker Konsolunu açın

AWS Konsolunu çalıştırın ve SageMaker'ı arayın:


SageMaker'ı arayın. Resim kredisi: Yazar

2. Adım - Bir not defteri örneği oluşturun

Sol taraftaki menüden Notebook->Notebook örnekleri'ni seçin:


Not defteri örnekleri. Resim kredisi: Yazar


Not defteri örneği oluştur düğmesini tıklayın:


Not defteri örneği oluşturun. Resim kredisi: Yazar


Bir örnek adı belirtin. m1.p3.2xlarge bulut sunucusu tipini seçin. Ne yazık ki, m1.p3.2xlarge kadar güçlü bir örneğin gerekli olduğu görülüyor, aksi takdirde örneğinizin belleği dolabilir veya en basit sorulara bile yanıt vermek çok fazla zaman alabilir. Ancak, bu örneğin saat başına yaklaşık 4 ABD Doları tutarında bir maliyete sahip olacağını lütfen unutmayın, bu nedenle kullanımınızı dikkatle izlemeniz önemlidir.


Not defteri örneği ayrıntılarını belirtin. Resim kredisi: Yazar


Yeni bir IAM rolü oluşturun:


Yeni bir rol oluşturun. Resim kredisi: Yazar


Test ortamınızda özellikle hassas veriler yoksa Herhangi bir S3 klasörüne erişim izni verebilirsiniz. Aksi halde daha açıklayıcı olmanız gerekir.


S3 erişimini belirtin. Resim kredisi: Yazar


Not defteri örneği oluştur düğmesini tıklayın:


Not defteri örneği oluşturun. Resim kredisi: Yazar


Not defteri daha sonra Beklemede durumunda olacaktır. Bu muhtemelen yaklaşık 10 dakika sürecektir:


Bekleyen not defteri örneği. Resim kredisi: Yazar


Bu arada, AWS SageMaker örneğinin hazırlığı tamamlandıktan sonra yükleyebilmek için bir not defteri indireceğiz.

3. Adım - Not defterini indirin

AWS SageMaker.ipynb'de MPT-7B adresindeki dizüstü bilgisayara gidin ve indirin:


Google Colab'daki not defteri. Resim kredisi: Yazar



Not defterini indirin. Resim kredisi: Yazar


Bu not defterinde iki ana kod bloğunu göreceksiniz. İlk blok MPT-7B tokenizerını ve modelini yükler:


 from torch import cuda, bfloat16 from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu' tokenizer = AutoTokenizer.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True) config={"init_device": "meta"} model = AutoModelForCausalLM.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True, config=config, torch_dtype=bfloat16) print(f"device={device}") print('model loaded')


Tokenizer, modele gönderilen soruyu kodlamak ve modelden gelen yanıtın kodunu çözmek için kullanılır. Ek olarak, modeli daha sonra kullanacak şekilde yapılandırabilmek için GPU'muzun cihaz özelliklerini de alıyoruz:


 import time from IPython.display import Markdown import torch from transformers import StoppingCriteria, StoppingCriteriaList # mtp-7b is trained to add "<|endoftext|>" at the end of generations stop_token_ids = [tokenizer.eos_token_id] # Define custom stopping criteria object. # Source: https://github.com/pinecone-io/examples/blob/master/generation/llm-field-guide/mpt-7b/mpt-7b-huggingface-langchain.ipynb class StopOnTokens(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor,scores: torch.FloatTensor, **kwargs) -> bool: for stop_id in stop_token_ids: if input_ids[0][-1] == stop_id: return True return False stopping_criteria = StoppingCriteriaList([StopOnTokens()]) def ask_question(question, max_length=100): start_time = time.time() # Encode the question input_ids = tokenizer.encode(question, return_tensors='pt') # Use the GPU input_ids = input_ids.to(device) # Generate a response output = model.generate( input_ids, max_new_tokens=max_length, temperature=0.9, stopping_criteria=stopping_criteria ) # Decode the response response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True) end_time = time.time() duration = end_time - start_time display(Markdown(response)) print("Function duration:", duration, "seconds")


Gerekli olan stopping_critera kullanımına dikkat edin, aksi halde model sorumuzu yanıtladıktan sonra bile gevezelik etmeye başlayacaktır.


Farklı seçenekleri keşfetmek istiyorsanız model oluşturma parametrelerine bakın.


Şimdi bu not defterini SageMaker'a yükleyelim.

4. Adım - Not defterini yükleyin

Bu zamana kadar SageMaker not defteri örneğinizin sağlanmasının tamamlandığını umuyoruz. Açıldığında Jupyter'ı Aç bağlantısını tıklayın:


Jupyter'ı açın. Resim kredisi: Yazar


Ardından ekranınızın sağ üst köşesindeki Yükle düğmesini tıklayın ve az önce indirdiğiniz not defterini seçin:


Not defterini yükleyin. Resim kredisi: Yazar


Çekirdeği conda_python3 olarak ayarlayın:


Çekirdeği ayarlayın. Resim kredisi: Yazar


5. Adım - Not defterini çalıştırın

Hücreyi Seç -> Tümünü Çalıştır :


Tüm hücreleri çalıştır. Resim kredisi: Yazar


Daha sonra tarayıcı sekmesinde bir kum saati logosu görünecektir:


Not defterini bekle. Resim kredisi: Yazar


Daha sonra modelin indirilmesi için yaklaşık 10 dakika beklemeniz gerekecektir:


Modeli indirin. Resim kredisi: Yazar


Çalıştırıldıktan sonra Bana nükleer fisyon ve füzyon arasındaki farkı açıklayın sorusunun cevabını göreceksiniz:


Bana nükleer fisyon ve füzyon arasındaki farkı açıkla. Resim kredisi: Yazar


Model ve belirteç yukarıda zaten yüklendiğinden, ask_question kod bloğunu değiştirebilir ve başka sorular sormak için Çalıştır düğmesine tıklayabilirsiniz. Bu sizi her yeni soruyu test etmek istediğinizde 10 dakika harcamaktan kurtaracaktır.


Fransa'nın başkenti neresidir? Resim kredisi: Yazar


Adım 6 - Dizüstü bilgisayarı durdurun

Modeli test etmeyi bitirir bitirmez dizüstü bilgisayar bulut sunucuları listenize geri dönüp onu durdurmak isteyeceksiniz. Bunu yapmazsanız saatte 4$ çok hızlı bir şekilde artacaktır 💸


Not defterini durdurun. Resim kredisi: Yazar


Performans karşılaştırması

Performans açısından ön testlerim MPT-7B'nin sonuçlarının ChatGPT'ler kadar iyi olmayabileceğini gösteriyor. Aşağıdaki gibi soruları yanıtlayarak iyi bir iş çıkarıyor:

  • Fransa'nın başkenti neresidir? ,
  • Bana nükleer fisyon ve füzyon arasındaki farkı açıkla
  • Bir csv'yi pdf'ye dönüştüren python kodunu yazın .


Ancak "Belize'nin başkenti nedir?" oldukça korkunç bir şekilde başarısız oluyor:


Belize'nin başkenti neresidir? Resim kredisi: Yazar


Şu anda daha fazla veri topluyorum ve bir sonraki blog yazısında kapsamlı bir karşılaştırmalı analiz yapacağım. Bu yazıda MPT-7B, MPT-30B, Falcon-40b ve ChatGPT'nin soru-cevap performansını gerçek konuşma geçmişini kullanarak karşılaştıracağım.

Testten Üretime

Test aşamasından üretim aşamasına geçmeye hazır olduğunuzda SageMaker ek bir avantaj sunar: modeliniz için bir uç nokta oluşturma yeteneği. SageMaker ile talebe göre uç noktaya kadar otomatik ölçeklendirme yaparak kaynaklarınızı optimize edebilirsiniz.

Ek İpuçları

Jupyter not defterinde çalışırken işleminizin çatallanmasının ve belleğinin tükenmesinin kolay olduğunu unutmayın. Böyle bir durumda çekirdeği kapatın ve tüm komutları yeniden çalıştırın.


Bu modeli AWS dışında bir platformda çalıştırmayı merak ediyorsanız, Google Colab Pro ayda 9 ABD doları karşılığında başka bir uygun seçenektir. Ancak testlerimize dayanarak sağlanan kredileri yalnızca birkaç saat içinde tükettiğimizi gördük. 😳


Karşılaşabileceğiniz diğer bir zorluk da CUDA sürümü uyumsuzluğu nedeniyle SageMaker'da Triton optimizasyonunun kullanılamamasıdır. Ne yazık ki AWS'nin mevcut P3 bulut sunucuları güncel bir CUDA sürümünü içermiyor. Bu nedenle Triton optimizasyonunu kullanmak istiyorsanız komut satırı erişimine sahip bir EC2 konteyneri oluşturmanız gerekecektir. Ancak 8 VCPU'lu bir bulut sunucusunu çalıştırmak için AWS Support'tan özel izne de ihtiyacınız olacağını unutmayın. Gelecekteki bir gönderide Triton'un nasıl entegre edileceğine ve Lambda Labs gibi daha uygun maliyetli bir GPU bulut sağlayıcısının nasıl kullanılacağına dair ayrıntılı bir kılavuz sunacağım.

Son düşünceler

MosaicML'in MPT-7B'si, OpenAI'nin ChatGPT'sine uygun bir alternatif sunarken, kendi zorluklarını da beraberinde getiriyor. Modelin çalıştırılması zaman alıcı, pahalı olabilir ve mevcut belgeler eksik olabilir. Ancak modeli şirket içinde tutma ve verilerinizi OpenAI'ye maruz kalmaktan koruma yeteneği, belirli kullanım durumları için zorlayıcı olabilir.


SageMaker, modeli hızlı bir şekilde test etmek için büyük kolaylık sağlar ve hazır olduğunuzda üretime geçme esnekliği sağlar. İster MPT-7B'ye yeni başlıyor olun ister bir süredir kullanıyor olun, bu kılavuzun değerli bilgiler sağladığını umuyoruz.


MPT-7B, MPT-30B, Falcon-40b ve ChatGPT arasındaki performans karşılaştırmalarını daha derinlemesine inceleyeceğimiz bir sonraki blog gönderimiz için bizi takip etmeye devam edin.


MPT-7B veya onun daha büyük çeşidi MPT-30B hakkında daha fazla bilgi edinmek istiyorsanız aşağıdaki bağlantılara bakın.


Unutmayın, ister ChatGPT ister MPT-7B ile çalışıyor olun, önemli olan, kullanım senaryonuzun veri gizliliğinden ve maliyet etkinliğinden ödün vermeden sunulmasını sağlamaktır. Mutlu tamircilik!

Verilerinizle MPT veya ChatGPT Kullanmak İçin Anahtar Teslim Bir Çözüm İster misiniz?

MindfulDataAI.com'da işletmeler için ChatGPT'yi sunuyoruz. Şirketinizin verileriyle ChatGPT, MPT veya diğer modellerden yararlanmak istiyorsanız lütfen bizimle iletişime geçin.