paint-brush
So führen Sie MPT-7B auf AWS SageMaker aus: dem ChatGPT-Konkurrenten von MosaicMLvon@redgeoff
444 Lesungen
444 Lesungen

So führen Sie MPT-7B auf AWS SageMaker aus: dem ChatGPT-Konkurrenten von MosaicML

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

Zu lang; Lesen

Der Blogbeitrag stellt den MPT-7B von MosaicML als Alternative zu ChatGPT von OpenAI für die Ausführung von Chatbot-Modellen auf Ihrer eigenen Infrastruktur vor. Es bietet eine Schritt-für-Schritt-Anleitung zur Ausführung von MPT-7B auf AWS SageMaker und hebt Vorteile wie Kostenkontrolle, einfache Iteration und die Möglichkeit des Übergangs zur Produktion hervor. Der Beitrag erörtert auch Leistungsvergleiche und Herausforderungen mit dem Modell und betont die Bedeutung von Datenschutz und Kosteneffizienz.
featured image - So führen Sie MPT-7B auf AWS SageMaker aus: dem ChatGPT-Konkurrenten von MosaicML
Geoff Cox HackerNoon profile picture
0-item
1-item
2-item

In diesem Blogbeitrag werde ich Sie Schritt für Schritt durch den Prozess der Ausführung des ChatGPT- Konkurrenten von MosaicML, MPT-7B, auf Ihrer eigenen AWS SageMaker-Instanz führen.


Sind Sie von den Funktionen von ChatGPT begeistert, haben aber Bedenken, Ihre sensiblen Daten OpenAI preiszugeben? Glücklicherweise gibt es Alternativen, die Sie auf Ihrer eigenen Infrastruktur ausführen können. Eine solche Alternative ist MPT-7b von MosaicML, ein Konkurrent von ChatGPT, den wir in diesem Blogbeitrag untersuchen werden.

Einführung in MosaicML und MPT-7B

MosaicML, das kürzlich von Databricks für 1,3 Milliarden US-Dollar übernommen wurde , hat mit seinem MPT-7B-Modell, einem angeblichen Konkurrenten von ChatGPT, in der ML-Community für Aufsehen gesorgt. Obwohl es vielversprechend ist, kann die Ausführung dieses Modells aufgrund der spärlichen Dokumentation und des hohen Ressourcenbedarfs entmutigend sein. Man kann MPT-7B jedoch auf AWS SageMaker in einem Jupyter-Notebook ausführen, einer Umgebung, die einsteigerfreundlich und äußerst flexibel für eine schnelle Iteration ist. Mit diesem Setup können Sie die Machbarkeit und Hardwareanforderungen des Modells testen, bevor Sie sich für die Produktion entscheiden.

Ausführen von MPT-7B auf AWS SageMaker

Das Ausführen von MPT-7B in einem Jupyter-Notebook auf AWS SageMaker bietet mehrere Vorteile. Sie können nicht nur nur für das bezahlen, was Sie nutzen, und es deaktivieren, wenn Sie fertig sind, sondern die Möglichkeit, Teile Ihres Codes einfach erneut auszuführen, ohne das Modell neu laden zu müssen, spart Zeit bei der iterativen Entwicklung. Aber Vorsicht! Wenn Sie vergessen, Ihre Notebook-Instanzen zu stoppen, können sich die Kosten schnell summieren.


Obwohl diese Methode relativ praktisch ist, müssen Sie einige Überlegungen berücksichtigen. Erstens kann das Laden des Modells selbst auf einer Hochleistungs-GPU bis zu 20 Minuten dauern, was diesen Vorgang etwas zeitaufwändig macht. Auch die Kosten sind ein zu berücksichtigender Faktor, da die laufenden Kosten mindestens 4 US-Dollar pro Stunde betragen. Sie müssen MPT-7B auf mindestens einer p3.2xlarge- Instanz ausführen; alles kleinere scheint nicht machbar. Wenn Sie sich für EC2 anstelle von SageMaker entscheiden, müssen Sie AWS um Erlaubnis zur Verwendung einer p3.2xlarge- Instanz bitten.


In den nächsten Abschnitten erkläre ich Ihnen Schritt für Schritt, wie Sie das MPT-7B-Modell in Ihrem eigenen SageMaker-Jupyter-Notebook ausführen:

Schritt 1 – Öffnen Sie die SageMaker-Konsole

Starten Sie die AWS-Konsole und suchen Sie nach SageMaker:


Suchen Sie nach SageMaker. Bildnachweis: Autor

Schritt 2: Erstellen Sie eine Notebook-Instanz

Wählen Sie im Menü auf der linken Seite Notebook->Notebook-Instanzen aus:


Notebook-Instanzen. Bildnachweis: Autor


Klicken Sie auf die Schaltfläche „Notebook-Instanz erstellen“ :


Erstellen Sie eine Notebook-Instanz. Bildnachweis: Autor


Geben Sie einen Instanznamen an. Wählen Sie den Instanztyp m1.p3.2xlarge . Leider scheint eine so leistungsstarke Instanz wie m1.p3.2xlarge erforderlich zu sein, da Ihrer Instanz sonst möglicherweise nicht mehr genügend Arbeitsspeicher zur Verfügung steht oder die Beantwortung selbst der einfachsten Fragen übermäßig lange dauert. Bitte beachten Sie jedoch, dass diese Instanz etwa 4 US-Dollar pro Stunde kostet. Daher ist es wichtig, Ihre Nutzung sorgfältig zu überwachen.


Geben Sie Details zur Notebook-Instanz an. Bildnachweis: Autor


Erstellen Sie eine neue IAM-Rolle:


Erstellen Sie eine neue Rolle. Bildnachweis: Autor


Wenn Ihre Testumgebung keine besonders vertraulichen Daten enthält, können Sie Zugriff auf einen beliebigen S3-Bucket gewähren. Andernfalls müssen Sie expliziter sein.


Geben Sie den S3-Zugriff an. Bildnachweis: Autor


Klicken Sie auf die Schaltfläche „Notebook-Instanz erstellen“ :


Erstellen Sie eine Notebook-Instanz. Bildnachweis: Autor


Das Notebook befindet sich dann im Status „Ausstehend“ . Dies wird wahrscheinlich etwa 10 Minuten dauern:


Ausstehende Notebook-Instanz. Bildnachweis: Autor


In der Zwischenzeit laden wir ein Notebook herunter, damit wir es hochladen können, nachdem die Bereitstellung der AWS SageMaker-Instanz abgeschlossen ist.

Schritt 3 – Laden Sie das Notizbuch herunter

Besuchen Sie das Notebook unter MPT-7B auf AWS SageMaker.ipynb und laden Sie es herunter:


Das Notizbuch auf Google Colab. Bildnachweis: Autor



Laden Sie das Notizbuch herunter. Bildnachweis: Autor


In diesem Notizbuch werden Sie zwei Hauptcodeblöcke bemerken. Der erste Block lädt den MPT-7B-Tokenizer und das Modell:


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


Der Tokenizer wird verwendet, um die an das Modell gesendete Frage zu kodieren und die Antwort des Modells zu dekodieren. Darüber hinaus erhalten wir die Gerätespezifikation für unsere GPU, damit wir das Modell für die spätere Nutzung konfigurieren können:


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


Beachten Sie die Verwendung von stopping_critera , die erforderlich ist, da das Modell sonst einfach weiterplappert, selbst nachdem es unsere Frage beantwortet hat.


Sehen Sie sich die Modellgenerierungsparameter an, wenn Sie die verschiedenen Optionen erkunden möchten.


Jetzt laden wir dieses Notizbuch auf SageMaker hoch.

Schritt 4 – Laden Sie das Notizbuch hoch

Hoffentlich ist die Bereitstellung Ihrer SageMaker-Notebook-Instanz zu diesem Zeitpunkt abgeschlossen. Wenn dies der Fall ist, klicken Sie auf den Link „Jupyter öffnen“ :


Öffnen Sie Jupyter. Bildnachweis: Autor


Klicken Sie dann oben rechts auf dem Bildschirm auf die Schaltfläche „Hochladen“ und wählen Sie das Notizbuch aus, das Sie gerade heruntergeladen haben:


Laden Sie das Notizbuch hoch. Bildnachweis: Autor


Setzen Sie den Kernel auf conda_python3 :


Legen Sie den Kernel fest. Bildnachweis: Autor


Schritt 5 – Führen Sie das Notebook aus

Wählen Sie Zelle -> Alle ausführen :


Führen Sie alle Zellen aus. Bildnachweis: Autor


Anschließend erscheint im Browser-Tab ein Sanduhr-Logo:


Warten Sie auf das Notizbuch. Bildnachweis: Autor


Anschließend müssen Sie etwa 10 Minuten warten, bis das Modell heruntergeladen ist:


Modell herunterladen. Bildnachweis: Autor


Nachdem es ausgeführt wurde, sehen Sie die Antwort auf die Frage Erklären Sie mir den Unterschied zwischen Kernspaltung und Kernfusion :


Erklären Sie mir den Unterschied zwischen Kernspaltung und Kernfusion. Bildnachweis: Autor


Da das Modell und der Tokenizer oben bereits geladen wurden, können Sie einfach den Codeblock „ask_question “ ändern und auf die Schaltfläche „Ausführen “ klicken, um weitere Fragen zu stellen. Dadurch ersparen Sie sich den Zeitaufwand für jedes Mal, wenn Sie eine neue Frage testen möchten.


Was ist die Hauptstadt von Frankreich?. Bildnachweis: Autor


Schritt 6 – Stoppen Sie das Notebook

Sobald Sie das Testen des Modells abgeschlossen haben, möchten Sie zu Ihrer Liste der Notebook-Instanzen zurückkehren und es stoppen. Wenn Sie das nicht tun, summieren sich die 4 $ pro Stunde sehr schnell 💸


Stoppen Sie das Notebook. Bildnachweis: Autor


Leistungsvergleich

In Bezug auf die Leistung deuten meine vorläufigen Tests darauf hin, dass die Ergebnisse von MPT-7B möglicherweise nicht so gut sind wie die von ChatGPT. Es leistet gute Arbeit bei der Beantwortung von Fragen wie:

  • Was ist die Hauptstadt von Frankreich? ,
  • Erklären Sie mir den Unterschied zwischen Kernspaltung und Kernfusion
  • Schreiben Sie Python-Code, der eine CSV-Datei in eine PDF-Datei konvertiert .


Aber für Fragen wie „Was ist die Hauptstadt von Belize?“ es scheitert ganz furchtbar:


Was ist die Hauptstadt von Belize? Bildnachweis: Autor


Ich sammle derzeit weitere Daten und werde in einem Folge-Blogbeitrag eine umfassende Vergleichsanalyse durchführen. In diesem Beitrag werde ich die Frage- und Antwortleistung von MPT-7B, MPT-30B, Falcon-40b und ChatGPT anhand des tatsächlichen Gesprächsverlaufs vergleichen.

Vom Test bis zur Produktion

Sobald Sie bereit sind, vom Test zur Produktion überzugehen, bietet SageMaker einen zusätzlichen Vorteil – die Möglichkeit, einen Endpunkt für Ihr Modell zu erstellen. Mit SageMaker können Sie je nach Bedarf automatisch bis zum Endpunkt skalieren und so Ihre Ressourcen optimieren.

Zusätzliche Tipps

Bedenken Sie, dass Ihr Prozess während der Ausführung in einem Jupyter-Notebook leicht abgezweigt werden kann und nicht mehr über genügend Arbeitsspeicher verfügt. Wenn dies passiert, fahren Sie einfach den Kernel herunter und führen Sie alle Befehle erneut aus.


Wenn Sie daran interessiert sind, dieses Modell auf einer anderen Plattform als AWS auszuführen, ist Google Colab Pro eine weitere praktikable Option für 9 $/Monat. Bei unseren Tests haben wir jedoch festgestellt, dass wir das bereitgestellte Guthaben innerhalb weniger Stunden aufgebraucht hatten. 😳


Eine weitere Herausforderung, der Sie möglicherweise gegenüberstehen, ist die Unfähigkeit, die Triton-Optimierung auf SageMaker aufgrund einer Inkompatibilität mit der CUDA-Version zu nutzen. Leider enthalten die aktuellen P3-Instanzen von AWS keine aktuelle CUDA-Version. Wenn Sie die Triton-Optimierung nutzen möchten, müssen Sie daher einen EC2-Container mit Befehlszeilenzugriff erstellen. Beachten Sie jedoch, dass Sie auch eine Sondergenehmigung vom AWS-Support benötigen, um eine Instanz mit 8 VCPUs auszuführen. In einem zukünftigen Beitrag werde ich eine detaillierte Anleitung zur Integration von Triton und zur Nutzung eines kostengünstigeren GPU-Cloud-Anbieters wie Lambda Labs bereitstellen.

Abschließende Gedanken

Während der MPT-7B von MosaicML eine praktikable Alternative zum ChatGPT von OpenAI darstellt, bringt er seine eigenen Herausforderungen mit sich. Die Ausführung des Modells kann zeitaufwändig und teuer sein und es fehlt die verfügbare Dokumentation. Allerdings kann die Möglichkeit, das Modell intern zu behalten und Ihre Daten vor der Offenlegung durch OpenAI zu schützen, für bestimmte Anwendungsfälle überzeugend sein.


SageMaker bietet großen Komfort zum schnellen Testen des Modells und bietet die Flexibilität, zur Produktion überzugehen, wenn Sie dazu bereit sind. Unabhängig davon, ob Sie gerade erst mit dem MPT-7B beginnen oder es schon eine Weile nutzen, wir hoffen, dass Ihnen dieser Leitfaden wertvolle Erkenntnisse liefert.


Seien Sie gespannt auf unseren nächsten Blogbeitrag, in dem wir uns eingehender mit den Leistungsvergleichen zwischen MPT-7B, MPT-30B, Falcon-40b und ChatGPT befassen.


Sehen Sie sich die folgenden Links an, wenn Sie mehr über MPT-7B oder seine größere Variante MPT-30B erfahren möchten.


Und denken Sie daran: Unabhängig davon, ob Sie mit ChatGPT oder MPT-7B arbeiten, liegt der Schlüssel darin, sicherzustellen, dass Ihr Anwendungsfall ohne Beeinträchtigung des Datenschutzes und der Kosteneffizienz abgedeckt wird. Viel Spaß beim Basteln!

Möchten Sie eine schlüsselfertige Lösung für die Verwendung von MPT oder ChatGPT mit Ihren Daten?

Bei MindfulDataAI.com bieten wir ChatGPT für Unternehmen an. Wenn Sie daran interessiert sind, ChatGPT, MPT oder andere Modelle mit den Daten Ihres Unternehmens zu nutzen, nehmen Sie bitte Kontakt mit uns auf.