Workers AI Update: Hallo Mistral 7B
2023-11-21
Wir freuen uns, heute ankündigen zu können, dass wir Mistral-7B-v0.1-instruct zu Workers AI hinzugefügt haben...
\n \n \n
Mistral 7B ist ein 7,3 Milliarden Parameter-umfassendes KI-Modell, das bei Benchmarks beeindruckende Zahlen liefert. Das Modell:
übertrifft Llama 2 13B bei allen Benchmarks
übertrifft Llama 1 34B bei vielen Benchmarks,
erreicht bei Programmieraufgaben fast die Performance von CodeLlama 7B, während es bei Englisch-Aufgaben noch immer gut abschneidet
Die optimierte, auf Chat-Dialog ausgerichtete Version, die wir eingesetzt haben, übertrifft Llama 2 13B Chat in den von Mistral durchgeführten Benchmarks.
Es folgt ein Beispiel für das Streamen mit der REST-API:
Und hier sehen Sie ein Beispiel für die Verwendung eines Worker-Skripts:
\ncurl -X POST \\\n“https://api.cloudflare.com/client/v4/accounts/{account-id}/ai/run/@cf/mistral/mistral-7b-instruct-v0.1” \\\n-H “Authorization: Bearer {api-token}” \\\n-H “Content-Type:application/json” \\\n-d '{ “prompt”: “What is grouped query attention”, “stream”: true }'\n\nAPI Response: { response: “Grouped query attention is a technique used in natural language processing (NLP) and machine learning to improve the performance of models…” }
\n Mistral nutzt die sogenannte Grouped-Query Attention für schnellere Inferenz. Diese kürzlich entwickelte Technik verbessert die Geschwindigkeit der Inferenz, ohne die Qualität der Ergebnisse zu beeinträchtigen. Bei Modellen mit 7 Milliarden Parametern können wir dank der Grouped-Query Attention mit Mistral fast 4x so viele Token pro Sekunde generieren wie mit Llama.
\nimport { Ai } from '@cloudflare/ai';\nexport default {\n async fetch(request, env) {\n const ai = new Ai(env.AI);\n const stream = await ai.run('@cf/mistral/mistral-7b-instruct-v0.1', {\n prompt: 'What is grouped query attention',\n stream: true\n });\n return Response.json(stream, { headers: { “content-type”: “text/event-stream” } });\n }\n}
\n Sie benötigen natürlich keine weiteren Informationen als diese, um Mistral-7B zu nutzen. Sie können es noch heute testen unter ai.cloudflare.com. Wenn Sie mehr über Attention und Grouped-Query-Attention erfahren möchten, lesen Sie einfach weiter!
\nDer grundlegende Attention-Mechanismus, insbesondere die „Scaled Dot-Product Attention“, wie sie in der bahnbrechenden Forschungsarbeit „Attention Is All You Need“, vorgestellt wurde, ist recht einfach:
Wir nennen unsere spezielle Aufmerksamkeit „Scale Dot-Product Attention“. Der Input besteht aus der Abfrage und den Schlüsseln der Dimension d_k und den Werten der Dimension d_v. Wir berechnen die Dot-Produkte der Abfrage mit allen Schlüsseln, teilen jedes durch sqrt(d_k) und wenden eine Softmax-Funktion an, um die Gewichtung der Werte zu erhalten.
Konkret sieht das folgendermaßen aus:
\nVereinfacht ausgedrückt, können sich die Modelle so auf wichtige Teile des Inputs konzentrieren. Stellen Sie sich vor, Sie lesen einen Satz und versuchen, ihn zu verstehen. Scaled Dot-Product-Attention ermöglicht es Ihnen, bestimmten Wörtern auf der Grundlage ihrer Relevanz mehr Aufmerksamkeit zu schenken. Dabei wird die Ähnlichkeit zwischen jedem Wort (K) im Satz und einer Abfrage (Q) berechnet. Anschließend werden die Ähnlichkeitswerte durch die Quadratwurzel der Dimension der Abfrage geteilt. Diese Skalierung hilft, sehr kleine oder sehr große Werte zu vermeiden. Anhand dieser skalierten Ähnlichkeitswerte können wir schließlich bestimmen, wie viel Aufmerksamkeit oder Bedeutung jedes Wort erhalten sollte. Dieser Aufmerksamkeitsmechanismus hilft den Modellen, wichtige Informationen (V) zu erkennen und ihre Verständnis- und Übersetzungsfähigkeiten zu verbessern.
Eigentlich ganz einfach, oder? Um von diesem einfachen Mechanismus zu einer KI zu gelangen, der man komplexe Schreibaufträge erteilen kann wie z. B. „Schreibe eine Seinfeld-Folge, in der Jerry den Bubble-Sort-Algorithmus erlernt“, müssen wir ihn jedoch noch komplexer machen. (Tatsächlich hat alles, was wir gerade behandelt haben, nicht einmal gelernte Parameter – konstante Werte, die während des Trainierens des Modells gelernt werden und die die Ausgabe des Attention-Blocks anpassen!)
Attention-Blöcke im Stile von „Attention is All You Need“ führen hauptsächlich drei Arten von Komplexität ein:
\nGelernte Parameter beziehen sich auf Werte oder Gewichte, die während des Trainingsprozesses eines Modells angepasst werden, um dessen Performance zu verbessern. Diese Parameter werden verwendet, um den Informationsfluss oder die Aufmerksamkeit innerhalb des Modells zu steuern, damit es sich auf die wichtigsten Teile der Inputdaten konzentrieren kann. Einfacher ausgedrückt: Gelernte Parameter sind wie einstellbare Knöpfe an einer Maschine, an denen man drehen kann, um ihren Betrieb zu optimieren.
\nBei der vertikalen Stapelung werden mehrere Aufmerksamkeitsmechanismen übereinander gestapelt, wobei jede Schicht auf dem Ergebnis der vorherigen Schicht aufbaut. Dadurch kann sich das Modell auf verschiedene Teile der Inputdaten auf unterschiedlichen Abstraktionsebenen konzentrieren, was zu einer besseren Performance bei bestimmten Aufgaben führen kann.
\nDie Abbildung aus der Arbeit zeigt das vollständige Multi-Head-Attention-Modul. Mehrere Attention-Operationen werden parallel durchgeführt, wobei das Q-K-V-Input für jede durch eine eindeutige lineare Projektion der gleichen Input-Daten (definiert durch einen eindeutigen Satz gelernter Parameter) erzeugt wird. Diese parallelen Attention-Blöcke werden als „Attention-Heads“ bezeichnet. Die gewichteten Summen-Outputs aller Attention-Heads werden zu einem einzigen Vektor verkettet und durch eine weitere parametrisierte lineare Transformation geleitet, um das endgültige Output zu erhalten.
\nDieser Mechanismus ermöglicht es einem Modell, sich gleichzeitig auf verschiedene Teile der Inputdaten zu konzentrieren. Stellen Sie sich vor, Sie versuchen, eine komplexe Information zu verstehen, etwa einen Satz oder einen Absatz. Um diesen zu verstehen, müssen Sie gleichzeitig auf verschiedene Teile achten. So müssen Sie beispielsweise gleichzeitig auf das Subjekt des Satzes, das Verb und das Objekt achten, um die Bedeutung des Satzes zu begreifen. Die Multi-Headed-Attention funktioniert sehr ähnlich. Sie ermöglicht es einem Modell, gleichzeitig auf verschiedene Teile der Inputdaten zu achten, indem es mehrere „Bereiche“ der Aufmerksamkeit („Heads of Attention“) verwendet. Jeder Aufmerksamkeitsbereich konzentriert sich auf einen anderen Aspekt der Inputdaten, und die Ergebnisse aller Bereiche werden kombiniert, um das endgültige Ergebnis des Modells zu erhalten.
\nEs gibt drei gängige Anordnungen von Attention-Blöcken, die von LLMs verwendet werden, die in den letzten Jahren entwickelt wurden: Multi-Head-Attention, Grouped-Query-Attention und Multi-Query-Attention. Sie unterscheiden sich durch die Anzahl der K- und V-Vektoren im Verhältnis zur Anzahl der Abfragevektoren. Multi-Head-Attention verwendet die gleiche Anzahl von K- und V-Vektoren wie Q-Vektoren, in der folgenden Tabelle mit „N“ bezeichnet. Multi-Query-Attention verwendet nur einen einzigen K- und V-Vektor. Grouped-Query-Attention, die Art, die im Mistral 7B-Modell verwendet wird, teilt die Q-Vektoren gleichmäßig in Gruppen mit jeweils „G“ Vektoren auf und verwendet dann einen einzelnen K- und V-Vektor für jede Gruppe, so dass insgesamt N durch G Gruppen von K- und V-Vektoren geteilt werden. Soweit zu den Unterschieden. Wir werden uns weiter unten mit den Auswirkungen dieser Unterschiede befassen.
| \n\t\t\t\n\t\t\t Number of Key/Value Blocks \n\t\t\t | \n\t\t\t\n\t\t\t Quality \n\t\t\t | \n\t\t\t\n\t\t\t Memory Usage \n\t\t\t | \n\t\t
\n\t\t\t Multi-head attention (MHA) \n\t\t\t | \n\t\t\t\n\t\t\t N \n\t\t\t | \n\t\t\t\n\t\t\t Best \n\t\t\t | \n\t\t\t\n\t\t\t Most \n\t\t\t | \n\t\t
\n\t\t\t Grouped-query attention (GQA) \n\t\t\t | \n\t\t\t\n\t\t\t N / G \n\t\t\t | \n\t\t\t\n\t\t\t Better \n\t\t\t | \n\t\t\t\n\t\t\t Less \n\t\t\t | \n\t\t
\n\t\t\t Multi-query attention (MQA) \n\t\t\t | \n\t\t\t\n\t\t\t 1 \n\t\t\t | \n\t\t\t\n\t\t\t Good \n\t\t\t | \n\t\t\t\n\t\t\t Least \n\t\t\t | \n\t\t
Summary of attention styles
\n
Anzahl der Schlüssel/Wert-Blöcke
Qualität
Speicher-verbrauch
Multi-head attention (MHA)
N
Beste
Am meisten
Grouped-query attention (GQA)
N / G
Besser
Weniger
Multi-query attention (MQA)
1
Gutartiger
Am wenigsten
Zusammenfassung der Attention-Stile
Diese Abbildung verdeutlicht den Unterschied zwischen den drei Stilen:
\nMulti-Query Attention wurde 2019 in einer Arbeit von Google beschrieben: „Fast Transformer Decoding: One Write-Head is All You Need“. Die Idee besteht darin, dass für jeden Q-Vektor im Attention-Mechanismus keine separaten K- und V-Einträge erstellt werden, wie bei der obigen Multi-Head-Attention, sondern nur ein einziger K- und V-Vektor für den gesamten Satz von Q-Vektoren verwendet wird. Daher der Name: mehrere Abfragen kombiniert in einem einzigen Attention-Mechanismus. In der Arbeit wurde dies an einer Übersetzungsaufgabe getestet und zeigte die gleiche Performance wie die Multi-Head-Attention bei der Benchmark-Aufgabe.
Ursprünglich war die Idee, die Gesamtgröße des Speichers zu reduzieren, auf den bei der Durchführung der Inferenz für das Modell zugegriffen wird. Seitdem haben sich verallgemeinerte Modelle herausgebildet und die Anzahl der Parameter ist gestiegen. Der benötigte GPU-Speicher ist oft der Engpass. Hier zeigt sich die Stärke der Multi-Query-Attention, da sie von den drei Attention-Arten den geringsten Beschleunigungsspeicher benötigt. Mit zunehmender Größe und Allgemeingültigkeit der Modelle nahm die Performance der Multi-Query-Attention im Vergleich zur Multi-Head-Attention jedoch ab.
\nDer neueste – und der von Mistral verwendete Ansatz – ist die Grouped-Query-Attention, wie sie in der im Mai 2023 auf arxiv.org veröffentlichten Arbeit GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints beschrieben wurde. Grouped-Query-Attention kombiniert das Beste beider Ansätze: die Qualität von Multi-Head-Attention mit der Geschwindigkeit und dem geringen Speicherbedarf von Multi-Query-Attention. Anstelle eines einzigen Satzes von K- und V-Vektoren oder eines Satzes für jeden Q-Vektor wird ein festes Verhältnis von einem Satz von K- und V-Vektoren für jeden Q-Vektor verwendet, was die Speichernutzung reduziert, aber eine hohe Performance bei vielen Aufgaben sichert.
Bei der Auswahl eines für den laufenden Betrieb zu implementierenden Modells geht es oft nicht nur darum, das beste verfügbare Modell auszuwählen, denn wir müssen Kompromisse zwischen Performance, Speichernutzung, Batch-Größe und verfügbarer Hardware (oder Cloud-Kosten) berücksichtigen. Das Wissen um diese drei Arten der Attention (Aufmerksamkeit) kann uns helfen, diese Entscheidungen zu treffen und zu verstehen, wann wir unter den jeweiligen Umständen ein bestimmtes Modell wählen sollten.
\nAls eines der ersten Large-Language-Modelle, das die Grouped-Query-Attention nutzt und sie mit der Sliding-Window-Attention kombiniert, scheint Mistral die perfekte Lösung gefunden zu haben – niedrige Latenz, hoher Durchsatz und eine sehr gute Performance bei Benchmarks, selbst im Vergleich zu größeren Modellen (13B). Alles, was ich sagen will, ist, dass es für seine Größe sehr viel zu bieten hat, und wir freuen uns sehr, es heute allen Entwicklern über Workers AI zur Verfügung stellen zu können.
Schauen Sie sich unsere Entwicklerdokumente an, um loszulegen, und wenn Sie Hilfe benötigen, Feedback geben oder Ihre Arbeit mit anderen teilen möchten, besuchen Sie einfach unseren Developer Discord!
Das Workers AI-Team wächst und stellt neue Mitarbeitende ein. Schauen Sie auf unserer Karriere-Seite nach offenen Stellen, wenn Sie sich für KI-Engineering begeistern und uns beim Aufbau und der Weiterentwicklung unserer globalen, serverlosen GPU-gestützten Inferenzplattform unterstützen möchten.
"],"published_at":[0,"2023-11-21T14:00:58.000+00:00"],"updated_at":[0,"2024-10-09T23:26:27.655Z"],"feature_image":[0,"https://cf-assets.www.cloudflare.com/zkvhlag99gkb/4EvWsMf3whYL6fKg9YhekN/a81b321cc0a48054834db993a636b342/workers-ai-update-hello-mistral-7b.png"],"tags":[1,[[0,{"id":[0,"1Wf1Dpb2AFicG44jpRT29y"],"name":[0,"Workers AI"],"slug":[0,"workers-ai"]}],[0,{"id":[0,"6hbkItfupogJP3aRDAq6v8"],"name":[0,"Cloudflare Workers"],"slug":[0,"workers"]}],[0,{"id":[0,"4HIPcb68qM0e26fIxyfzwQ"],"name":[0,"Entwickler"],"slug":[0,"developers"]}],[0,{"id":[0,"3JAY3z7p7An94s6ScuSQPf"],"name":[0,"Entwicklerplattform"],"slug":[0,"developer-platform"]}]]],"relatedTags":[0],"authors":[1,[[0,{"name":[0,"Jesse Kipp"],"slug":[0,"jesse"],"bio":[0,null],"profile_image":[0,"https://cf-assets.www.cloudflare.com/zkvhlag99gkb/8yRqemLc8lLhE9Uwzd7G4/a303cca84c1840cc961831f1ea6b4213/jesse.jpg"],"location":[0,null],"website":[0,null],"twitter":[0,null],"facebook":[0,null]}],[0,{"name":[0,"Isaac Rehg"],"slug":[0,"isaac-rehg"],"bio":[0,null],"profile_image":[0,"https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1UL9SXrwwlSZ91njGDCyzD/89b2b5136f0d3c44c56903420c0ef650/isaac-rehg.jpeg"],"location":[0,null],"website":[0,null],"twitter":[0,null],"facebook":[0,null]}]]],"meta_description":[0,"Today we’re excited to announce that we’ve added the Mistral-7B-v0.1-instruct to Workers AI."],"primary_author":[0,{}],"localeList":[0,{"name":[0,"Workers AI Update: Hello, Mistral 7B! Config"],"enUS":[0,"English for Locale"],"zhCN":[0,"Translated for Locale"],"zhHansCN":[0,"No Page for Locale"],"zhTW":[0,"Translated for Locale"],"frFR":[0,"Translated for Locale"],"deDE":[0,"Translated for Locale"],"itIT":[0,"No Page for Locale"],"jaJP":[0,"Translated for Locale"],"koKR":[0,"Translated for Locale"],"ptBR":[0,"No Page for Locale"],"esLA":[0,"No Page for Locale"],"esES":[0,"No Page for Locale"],"enAU":[0,"No Page for Locale"],"enCA":[0,"No Page for Locale"],"enIN":[0,"No Page for Locale"],"enGB":[0,"No Page for Locale"],"idID":[0,"No Page for Locale"],"ruRU":[0,"No Page for Locale"],"svSE":[0,"No Page for Locale"],"viVN":[0,"No Page for Locale"],"plPL":[0,"No Page for Locale"],"arAR":[0,"No Page for Locale"],"nlNL":[0,"Translated for Locale"],"thTH":[0,"No Page for Locale"],"trTR":[0,"No Page for Locale"],"heIL":[0,"No Page for Locale"],"lvLV":[0,"No Page for Locale"],"etEE":[0,"No Page for Locale"],"ltLT":[0,"No Page for Locale"]}],"url":[0,"https://blog.cloudflare.com/workers-ai-update-hello-mistral-7b"],"metadata":[0,{"title":[0,"Workers AI Update: Hallo Mistral 7B"],"description":[0,"Today we’re excited to announce that we’ve added the Mistral-7B-v0.1-instruct to Workers AI."],"imgPreview":[0,"https://cf-assets.www.cloudflare.com/zkvhlag99gkb/1w0VFuyZxsKnVazrMmNrZ4/663cbc88572af8e2a17d89477c65998c/workers-ai-update-hello-mistral-7b-cMSP2d.png"]}]}],"locale":[0,"de-de"],"translations":[0,{"posts.by":[0,"VON"],"footer.gdpr":[0,"DSGVO"],"lang_blurb1":[0,"Dieser Beitrag ist auch auf {lang1} verfügbar."],"lang_blurb2":[0,"Dieser Beitrag ist auch auf {lang1} und {lang2} verfügbar."],"lang_blurb3":[0,"Dieser Beitrag ist auch auf {lang1}, {lang2}, und {lang3} verfügbar."],"footer.press":[0,"Presse"],"header.title":[0,"Der Cloudflare-Blog"],"search.clear":[0,"Löschen"],"search.filter":[0,"Filtern"],"search.source":[0,"Quelle"],"footer.careers":[0,"Stellenausschreibungen"],"footer.company":[0,"Unternehmen"],"footer.support":[0,"Support"],"footer.the_net":[0,"theNet"],"search.filters":[0,"Filter"],"footer.our_team":[0,"Unser Team"],"footer.webinars":[0,"Webinare"],"page.more_posts":[0,"Weitere Beiträge"],"posts.time_read":[0,"Lesezeit: {time} Min."],"search.language":[0,"Sprache"],"footer.community":[0,"Community"],"footer.resources":[0,"Ressourcen"],"footer.solutions":[0,"Lösungen"],"footer.trademark":[0,"Markenzeichen"],"header.subscribe":[0,"Abonnieren"],"footer.compliance":[0,"Compliance"],"footer.free_plans":[0,"Free-Tarife"],"footer.impact_ESG":[0,"Impact/ESG"],"posts.follow_on_X":[0,"Folgen auf X"],"footer.help_center":[0,"Hilfe-Center"],"footer.network_map":[0,"Netzwerkkarte"],"header.please_wait":[0,"Bitte warten"],"page.related_posts":[0,"Verwandte Beiträge"],"search.result_stat":[0,"Ergebnisse {search_range} von {search_total} für {search_keyword}"],"footer.case_studies":[0,"Kundenreferenzen"],"footer.connect_2024":[0,"Connect 2024"],"footer.terms_of_use":[0,"Nutzungsbedingungen"],"footer.white_papers":[0,"Studien"],"footer.cloudflare_tv":[0,"Cloudflare TV"],"footer.community_hub":[0,"Community-Hub"],"footer.compare_plans":[0,"Zum Tarifvergleich"],"footer.contact_sales":[0,"Kontakt zum Vertrieb"],"header.contact_sales":[0,"Kontakt zum Vertrieb"],"header.email_address":[0,"E-Mail-Adresse"],"page.error.not_found":[0,"Seite nicht gefunden"],"footer.developer_docs":[0,"Dokumentation für Entwickler"],"footer.privacy_policy":[0,"Datenschutzrichtlinie"],"footer.request_a_demo":[0,"Demo anfragen"],"page.continue_reading":[0,"Weiterlesen"],"footer.analysts_report":[0,"Analyseberichte"],"footer.for_enterprises":[0,"Für Unternehmen"],"footer.getting_started":[0,"Erste Schritte"],"footer.learning_center":[0,"Lernzentrum"],"footer.project_galileo":[0,"Projekt „Galileo“"],"pagination.newer_posts":[0,"Neuere Beiträge"],"pagination.older_posts":[0,"Ältere Beiträge"],"posts.social_buttons.x":[0,"Auf X diskutieren"],"search.icon_aria_label":[0,"Suche"],"search.source_location":[0,"Quelle/Standort"],"footer.about_cloudflare":[0,"Über Cloudflare"],"footer.athenian_project":[0,"Projekt Athenian"],"footer.become_a_partner":[0,"Partner werden"],"footer.cloudflare_radar":[0,"Cloudflare Radar"],"footer.network_services":[0,"Netzwerkservices"],"footer.trust_and_safety":[0,"Vertrauen und Sicherheit"],"header.get_started_free":[0,"Kostenlos loslegen"],"page.search.placeholder":[0,"Cloudflare-Website durchsuchen"],"footer.cloudflare_status":[0,"Cloudflare-Status"],"footer.cookie_preference":[0,"Cookie-Einstellungen"],"header.valid_email_error":[0,"Muss eine gültige E-Mail sein."],"search.result_stat_empty":[0,"Ergebnisse {search_range} von {search_total}"],"footer.connectivity_cloud":[0,"Connectivity Cloud"],"footer.developer_services":[0,"Dienste für Entwickler"],"footer.investor_relations":[0,"Anlegerbeziehungen"],"page.not_found.error_code":[0,"Fehlercode: 404"],"search.autocomplete_title":[0,"Suchanfrage eingeben. Zum Absenden Eingabetaste drücken."],"footer.logos_and_press_kit":[0,"Logos und Pressekit"],"footer.application_services":[0,"Anwendungsservices"],"footer.get_a_recommendation":[0,"Empfehlung erhalten"],"posts.social_buttons.reddit":[0,"Auf Reddit diskutieren"],"footer.sse_and_sase_services":[0,"SSE- und SASE-Dienste"],"page.not_found.outdated_link":[0,"Möglicherweise haben Sie einen veralteten Link verwendet oder die Adresse falsch eingegeben."],"footer.report_security_issues":[0,"Sicherheitsprobleme berichten"],"page.error.error_message_page":[0,"Leider können wir die von Ihnen gewünschte Seite nicht finden."],"header.subscribe_notifications":[0,"Jetzt abonnieren, um Benachrichtigungen über neue Beiträge zu erhalten:"],"footer.cloudflare_for_campaigns":[0,"Cloudflare for Campaigns"],"header.subscription_confimation":[0,"Abonnement bestätigt. Danke fürs Abonnieren!"],"posts.social_buttons.hackernews":[0,"Diskutieren Sie auf Hacker News"],"footer.diversity_equity_inclusion":[0,"Diversität, Gleichberechtigung und Inklusion"],"footer.critical_infrastructure_defense_project":[0,"Projekt zur Verteidigung kritischer Infrastruktur"]}]}" ssr="" client="load" opts="{"name":"PostCard","value":true}" await-children="">2023-11-21
Wir freuen uns, heute ankündigen zu können, dass wir Mistral-7B-v0.1-instruct zu Workers AI hinzugefügt haben...