Heim > Artikel > Technologie-Peripheriegeräte > Der erste Beitrag, seit der Chef gegangen ist! Stabilität, offizielles Codemodell, Stable Code Instruct 3B
Nachdem der Chef gegangen ist, ist das erste Modell da!
Erst heute hat Stability AI offiziell ein neues Codemodell angekündigt, Stable Code Instruct 3B.
Bilder
Stabilität ist sehr wichtig. Der Abgang des CEO hat bei Stable Diffusion einige Probleme verursacht, und es kann zu Problemen mit Ihrem eigenen Gehalt kommen.
Draußen vor dem Gebäude toben jedoch Wind und Regen, aber das Labor bleibt bewegungslos. Es sollten Untersuchungen durchgeführt, Diskussionen geführt und Modelle angepasst werden nichts.
Es weitet nicht nur seinen Stall aus, um sich auf einen umfassenden Krieg einzulassen, sondern jede Forschung macht auch kontinuierliche Fortschritte. Beispielsweise basiert der heutige Stable Code Instruct 3B auf dem vorherigen Stable Code 3B mit Befehlsoptimierung.
Bilder
Papieradresse: https://static1.squarespace.com/static/6213c340453c3f502425776e/t/6601c5713150412edcd56f8e/1711392114564/Stable _C ode_TechReport_release.pdf
Mit Eingabeaufforderungen in natürlicher Sprache, Stable Code Instruct 3B kann verschiedene Aufgaben wie Codegenerierung, Mathematik und andere Fragen zur Softwareentwicklung bearbeiten.
Bilder
Stable Code Instruct 3B hat den aktuellen SOTA in einem Modell mit der gleichen Anzahl von Parametern erreicht, sogar besser als CodeLlama, das ist mehr als doppelt so groß wie 7B Instruct und andere Modelle und seine Leistung bei softwaretechnischen Aufgaben ist vergleichbar mit StarChat 15B.
Bilder
Wie Sie auf dem Bild oben sehen können, schneidet Stable Code Instruct 3B im Vergleich zu führenden Modellen wie Codellama 7B Instruct und DeepSeek-Coder Instruct 1.3B bei einer Reihe von Codierungsaufgaben gut ab.
Tests zeigen, dass Stable Code Instruct 3B in der Lage ist, mit der Konkurrenz in Bezug auf die Genauigkeit der Codevervollständigung, das Verständnis natürlichsprachlicher Anweisungen und die Vielseitigkeit in verschiedenen Programmiersprachen mitzuhalten oder diese zu übertreffen.
Bilder
Stable Code Instruct 3B basiert auf den Ergebnissen der Entwicklerumfrage Stack Overflow 2023 und konzentriert das Training auf Programmiersprachen wie Python, Javascript, Java, C, C++ und Gehen.
Die obige Grafik vergleicht die Stärke der Ausgabe, die von drei Modellen in verschiedenen Programmiersprachen mithilfe des Multi-PL-Benchmarks generiert wurde. Es kann festgestellt werden, dass Stable Code Instruct 3B in allen Sprachen deutlich besser ist als CodeLlama und die Anzahl der Parameter mehr als die Hälfte beträgt.
Zusätzlich zu den oben genannten beliebten Programmiersprachen umfasst Stable Code Instruct 3B auch Schulungen für andere Sprachen (wie SQL, PHP und Rust) und kann selbst in Sprachen leistungsstarke Schulungen anbieten Testleistung ohne Training (z. B. Lua).
Stable Code Instruct 3B beherrscht nicht nur die Codegenerierung, sondern auch FIM-Aufgaben (füllen Sie die Mitte aus), Datenbankabfragen, Codeübersetzung, -interpretation und -erstellung.
Durch die Optimierung von Anweisungen sind Modelle in der Lage, subtile Anweisungen zu verstehen und darauf zu reagieren, was eine breite Palette von Codierungsaufgaben erleichtert, die über die einfache Codevervollständigung hinausgehen, wie etwa mathematisches Verständnis, logisches Denken und den Umgang mit komplexen Techniken der Softwareentwicklung.
Bilder
Modell-Download: https://huggingface.co/stabilityai/stable-code-instruct-3b
Stable Code Instruct 3B ist jetzt für kommerzielle Zwecke mit Stability AI-Mitgliedschaft verfügbar. Für den nichtkommerziellen Gebrauch können Modellgewichte und Code auf Hugging Face heruntergeladen werden.
Bilder
Stable Code basiert auf Stable LM 3B und ist eine Nur-Decoder-Transformerstruktur mit einem ähnlichen Design wie LLaMA. Die folgende Tabelle enthält einige wichtige Strukturinformationen:
Bilder
Die Hauptunterschiede zu LLaMA umfassen:
Positionelle Einbettung: Verwenden Sie eine gedrehte positionelle Einbettung in den ersten 25 % der Kopfeinbettung, um die nachfolgende zu verbessern Durchsatz.
Regularisierung: Verwenden Sie LayerNorm mit Learning-Bias-Term anstelle von RMSNorm.
Bias-Begriffe: Alle Bias-Begriffe im Feedforward-Netzwerk und in der Multi-Head-Selbstaufmerksamkeitsschicht werden gelöscht, mit Ausnahme von KQV.
Verwendet den gleichen Tokenizer (BPE) wie das Stable LM 3B-Modell mit einer Größe von 50.257; außerdem werden auch spezielle Tags von StarCoder referenziert, einschließlich der Anzahl der Sterne, die zur Angabe des Dateinamens, des Repositorys usw. verwendet werden. und Zwischenfüllung (FIM) warten.
Für langes Kontexttraining verwenden Sie spezielle Markierungen, um anzuzeigen, wann zwei verkettete Dateien zum selben Repository gehören.
Trainingsdaten
Der Pre-Training-Datensatz sammelt eine Vielzahl öffentlich zugänglicher großer Datenquellen, einschließlich Code-Repositorys, technischer Dokumentation (z. B. readthedocs) und mathematikbasierter Konzentrieren Sie sich auf Text und große Webdatensätze.
Das Hauptziel der anfänglichen Vortrainingsphase besteht darin, umfangreiche interne Darstellungen zu erlernen, um die Fähigkeit des Modells zum mathematischen Verständnis, zum logischen Denken und zur Verarbeitung komplexer technischer Texte im Zusammenhang mit der Softwareentwicklung erheblich zu verbessern.
Darüber hinaus enthalten die Trainingsdaten auch einen gemeinsamen Textdatensatz, um dem Modell breitere Sprachkenntnisse und Kontext bereitzustellen, wodurch das Modell letztendlich in die Lage versetzt wird, ein breiteres Spektrum an Abfragen und Aufgaben auf konversationelle Weise zu bearbeiten.
Die folgende Tabelle zeigt die Datenquellen, Kategorien und Stichprobengewichte des Korpus vor dem Training, wobei das Verhältnis von Code- und natürlichsprachlichen Daten 80:20 beträgt.
Bilder
Darüber hinaus führten die Forscher auch einen kleinen synthetischen Datensatz ein. Die Daten wurden aus den Samenspitzen des CodeAlpaca-Datensatzes synthetisiert, der 174.000 Spitzen enthält.
Und folgen Sie der WizardLM-Methode, erhöhen Sie schrittweise die Komplexität der vorgegebenen Seed-Eingabeaufforderungen und erhalten Sie weitere 100.000 Eingabeaufforderungen.
Der Autor glaubt, dass die Einführung dieser synthetischen Daten zu Beginn der Vortrainingsphase dazu beiträgt, dass das Modell besser auf Text in natürlicher Sprache reagiert.
Langer Kontextdatensatz
Da mehrere Dateien in einem Repository häufig voneinander abhängen, ist die Kontextlänge für die Codierung von Modellen wichtig.
Die Forscher schätzten die mittlere und durchschnittliche Anzahl der Token im Software-Repository auf 12.000 bzw. 18.000, daher wurde 16.384 als Kontextlänge gewählt.
Der nächste Schritt bestand darin, einen langen Kontextdatensatz zu erstellen, der in gängigen Sprachen im Repository verfasst war, und sie miteinander zu kombinieren, wobei zwischen den einzelnen Dateien ein spezielles Tag eingefügt wurde, um die Trennung beizubehalten Inhaltsfluss.
Um mögliche Verzerrungen zu umgehen, die sich aus der festen Reihenfolge der Dateien ergeben könnten, haben die Autoren eine Randomisierungsstrategie gewählt. Für jedes Repository werden zwei unterschiedliche Sequenzen von Verbindungsdateien generiert.
Bilder
Phasenweises Training
Stable Code wird mit 32 Amazon P4d-Instanzen trainiert, die 256 NVIDIA A100 (40 GB HBM2) GPUs enthalten, und verwendet ZeRO für die verteilte Optimierung.
Bilder
Hier kommt eine phasenweise Trainingsmethode zum Einsatz, wie im Bild oben dargestellt.
Das Training folgt der standardmäßigen autoregressiven Sequenzmodellierung, um den nächsten Token vorherzusagen. Das Modell wird mit dem Prüfpunkt von Stable LM 3B initialisiert. Die Kontextlänge der ersten Trainingsstufe beträgt 4096, und dann wird ein kontinuierliches Vortraining durchgeführt.
Das Training wird mit BFloat16 Mixed Precision durchgeführt und FP32 wird für die Gesamtreduzierung verwendet. Die Einstellungen des AdamW-Optimierers sind: β1=0,9, β2=0,95, ε=1e−6, λ (Gewichtsabfall)=0,1. Beginnen Sie mit der Lernrate = 3,2e-4, stellen Sie die minimale Lernrate auf 3,2e-5 ein und verwenden Sie den Kosinuszerfall.
Bilder
Eine der Kernannahmen des Modelltrainings in natürlicher Sprache ist die kausale Reihenfolge von links nach rechts. Für Code gilt diese Annahme jedoch nicht immer (z. B. Funktionsaufrufe und Funktion). Deklarationen können für viele Funktionen in beliebiger Reihenfolge vorliegen).
Um dieses Problem zu lösen, verwendeten Forscher FIM (Fill in the Middle). Teilen Sie das Dokument nach dem Zufallsprinzip in drei Segmente auf: Präfix, Mitte und Suffix, und verschieben Sie dann das mittlere Segment an das Ende des Dokuments. Nach der Neuordnung wird derselbe autoregressive Trainingsprozess durchgeführt.
Nach dem Vortraining verbessert der Autor die Dialogfähigkeiten des Modells durch eine Feinabstimmungsphase weiter, die überwachte Feinabstimmung (SFT) und direkte Präferenzoptimierung (DPO) umfasst.
Führen Sie zunächst die SFT-Feinabstimmung mithilfe öffentlich verfügbarer Datensätze auf Hugging Face durch: einschließlich OpenHermes, Code Feedback, CodeAlpaca.
Nach der Durchführung der exakten Match-Deduplizierung liefern die drei Datensätze insgesamt etwa 500.000 Trainingsbeispiele.
Verwenden Sie den Kosinus-Lernratenplaner, um den Trainingsprozess zu steuern, und legen Sie die globale Stapelgröße auf 512 fest, um die Eingabe in Sequenzen mit einer Länge von nicht mehr als 4096 zu packen.
Starten Sie nach SFT die DPO-Phase und verwenden Sie Daten von UltraFeedback, um einen Datensatz mit etwa 7.000 Proben zu kuratieren. Um die Sicherheit des Modells zu verbessern, hat der Autor außerdem den hilfreichen und harmlosen RLFH-Datensatz einbezogen.
Die Forscher übernahmen RMSProp als Optimierungsalgorithmus und erhöhten die Lernrate in der Anfangsphase des DPO-Trainings auf einen Spitzenwert von 5e-7.
Im Folgenden wird die Leistung der Modelle bei Code-Vervollständigungsaufgaben verglichen, wobei der Multi-PL-Benchmark zur Bewertung der Modelle verwendet wird.
Stabile Codebasis
Die folgende Tabelle zeigt die Leistung verschiedener Codemodelle mit Parametern der Größe 3B und darunter auf Multi-PL.
Bilder
Obwohl die Anzahl der Parameter von Stable Code weniger als 40 % bzw. 20 % von Code Llama und StarCoder 15B beträgt, ist die durchschnittliche Leistung des Modells in verschiedenen Programmiersprachen gleichwertig ihnen.
Stable Code Instruct
In der folgenden Tabelle werden fein abgestimmte Instruct-Versionen mehrerer Modelle im Multi-PL-Benchmark bewertet.
Bilder
SQL-Leistung
Eine wichtige Anwendung des Code-Sprachmodells ist die Datenbankabfrageaufgabe. In diesem Bereich wird die Leistung von Stable Code Instruct mit anderen gängigen, auf Anweisungen abgestimmten Modellen und speziell für SQL trainierten Modellen verglichen. Benchmarks, die hier mit Defog AI erstellt wurden.
Bilder
Inferenzleistung
Die folgende Tabelle gibt den Durchsatz und den Stromverbrauch an, wenn stabiler Code auf Verbrauchergeräten und entsprechenden Systemumgebungen ausgeführt wird.
Bilder
Die Ergebnisse zeigen, dass sich der Durchsatz bei Verwendung einer geringeren Präzision um fast das Doppelte erhöht. Es ist jedoch wichtig zu beachten, dass die Implementierung einer Quantisierung mit geringerer Präzision zu einer (möglicherweise erheblichen) Verschlechterung der Modellleistung führen kann.
Referenz: https://www.php.cn/link/8cb3522da182ff9ea5925bbd8975b203
Das obige ist der detaillierte Inhalt vonDer erste Beitrag, seit der Chef gegangen ist! Stabilität, offizielles Codemodell, Stable Code Instruct 3B. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!