


Verwendung mehrerer ChatGPT-APIs zur Implementierung von Tsinghua UltraChat-Mehrrundengesprächen
Seit der Veröffentlichung von ChatGPT hat die Beliebtheit von Konversationsmodellen in diesem Zeitraum nur zugenommen. Während wir die erstaunliche Leistung dieser Modelle bewundern, sollten wir auch die enorme Rechenleistung und die massive Datenunterstützung hinter ihnen erraten.
Was die Daten betrifft, sind qualitativ hochwertige Daten von entscheidender Bedeutung. Aus diesem Grund hat OpenAI viel Mühe in die Daten- und Annotationsarbeit gesteckt. Mehrere Studien haben gezeigt, dass ChatGPT ein zuverlässigerer Datenannotator ist als Menschen. Wenn die Open-Source-Community große Mengen an Dialogdaten von leistungsstarken Sprachmodellen wie ChatGPT erhalten kann, kann sie Dialogmodelle mit besserer Leistung trainieren. Das beweist die Modellfamilie Alpaca – Alpaca, Vicuna, Koala. Beispielsweise hat Vicuna den neunstufigen Erfolg von ChatGPT nachgeahmt, indem es die Anweisungen für das LLaMA-Modell mithilfe der von ShareGPT gesammelten Benutzerfreigabedaten verfeinerte. Zunehmende Beweise zeigen, dass Daten die primäre Produktivität für das Training leistungsstarker Sprachmodelle sind.
ShareGPT ist eine ChatGPT-Datenaustausch-Website, auf der Benutzer ChatGPT-Antworten hochladen, die sie interessant finden. Die Daten auf ShareGPT sind offen, aber trivial und müssen von den Forschern selbst gesammelt und organisiert werden. Wenn ein qualitativ hochwertiger, umfassender Datensatz vorliegt, wird die Open-Source-Community mit halbem Aufwand für die Entwicklung von Konversationsmodellen das doppelte Ergebnis erzielen.
Auf dieser Grundlage hat ein aktuelles Projekt namens UltraChat systematisch einen Konversationsdatensatz von höchster Qualität erstellt. Die Projektautoren versuchten, zwei unabhängige ChatGPT-Turbo-APIs zur Durchführung von Gesprächen zu verwenden, um mehrere Runden von Gesprächsdaten zu generieren.
- Projektadresse: https://github.com/thunlp/UltraChat
- Datensatzadresse: http://39.101.77.220/
- Datensatz-Interaktionsadresse: https://atlas.nomic.ai/map/0ce65783-c3a9-40b5-895d-384933f50081/a7b46301-022f-45d8-bbf4-98107eabdbac
Konkret zielt dieses Projekt darauf ab, eine Open-Source-, Skalierbare, mehrrunde Dialogdaten basierend auf Turbo-APIs, praktisch für Forscher, um leistungsstarke Sprachmodelle mit universellen Dialogfunktionen zu entwickeln. Darüber hinaus wird das Projekt unter Berücksichtigung des Datenschutzes und anderer Faktoren Daten im Internet nicht direkt als Eingabeaufforderungen verwenden. Um die Qualität der generierten Daten sicherzustellen, verwendeten die Forscher im Generierungsprozess zwei unabhängige ChatGPT Turbo APIs, bei denen ein Modell die Rolle des Benutzers übernimmt, um Fragen oder Anweisungen zu generieren, und das andere Modell Feedback generiert.
Wenn Sie ChatGPT direkt verwenden, um es basierend auf einigen Startgesprächen und Fragen frei zu generieren, treten leicht Probleme wie einzelne Themen und wiederholte Inhalte auf, was es schwierig macht, die Vielfalt der Daten selbst sicherzustellen. Zu diesem Zweck hat UltraChat die von den Konversationsdaten abgedeckten Themen und Aufgabentypen systematisch klassifiziert und entworfen und außerdem ein detailliertes Prompt-Engineering für das Benutzermodell und das Antwortmodell durchgeführt. Es enthält drei Teile:
- Fragen zur Welt ( Fragen zur Welt): Dieser Teil des Gesprächs basiert auf umfassenden Fragen zu Konzepten, Entitäten und Objekten in der realen Welt. Die behandelten Themen umfassen Technologie, Kunst, Finanzen und andere Bereiche.
- Schreiben und Erstellen: Dieser Teil der Konversationsdaten konzentriert sich darauf, die KI anzuweisen, ein vollständiges Textmaterial von Grund auf zu erstellen, und auf dieser Grundlage Folgefragen oder weitere Anleitungen zur Verbesserung des Schreibens und Inhalts des Textes zu stellen Zu den schriftlichen Materialtypen gehören Artikel, Blogs, Gedichte, Geschichten, Theaterstücke, E-Mails und mehr.
- Unterstütztes Umschreiben (Schreiben und Erstellen) vorhandener Daten: Diese Dialogdaten werden auf der Grundlage vorhandener Daten generiert. Die Anweisungen umfassen unter anderem Umschreiben, Fortsetzung, Übersetzung, Einführung, Begründung usw. Die behandelten Themen sind ebenfalls sehr vielfältig.
Diese drei Datenteile decken die Anforderungen der meisten Benutzer an KI-Modelle ab. Gleichzeitig stehen diese drei Datentypen auch vor unterschiedlichen Herausforderungen und erfordern unterschiedliche Konstruktionsmethoden.
Die größte Herausforderung des ersten Teils der Daten besteht beispielsweise darin, das allgemeine Wissen in der menschlichen Gesellschaft in insgesamt Hunderttausenden Gesprächen möglichst umfassend abzudecken. Dazu gingen die Forscher von automatisch generierten Themen aus und Aus Wikidata abgeleitete Entitäten.
Die Herausforderungen im zweiten und dritten Teil bestehen hauptsächlich darin, Benutzeranweisungen zu simulieren und die Generierung von Benutzermodellen in nachfolgenden Gesprächen so vielfältig wie möglich zu gestalten, ohne vom ultimativen Ziel des Gesprächs (Materialerstellung oder Umschreibung von Materialien wie folgt) abzuweichen erforderlich) Aus diesem Grund haben die Forscher die Eingabeaufforderungen des Benutzermodells vollständig entworfen und damit experimentiert. Nach Abschluss der Konstruktion haben die Autoren die Daten auch nachbearbeitet, um das Halluzinationsproblem abzuschwächen.
Derzeit hat das Projekt die ersten beiden Datenteile mit einem Datenvolumen von 1,24 Millionen veröffentlicht, was der größte verwandte Datensatz in der Open-Source-Community sein dürfte. Der Inhalt enthält reichhaltige und farbenfrohe Gespräche in der realen Welt, und der letzte Teil der Daten wird in Zukunft veröffentlicht.
Weltproblemdaten stammen aus 30 repräsentativen und vielfältigen Metathemen, wie in der folgenden Abbildung dargestellt:
- Basierend auf den oben genannten Metathemen generierte das Projekt über 1100 Unterthemen. Themen Für die Datenkonstruktion;
- Generieren Sie für jedes Unterthema bis zu 10 spezifische Fragen.
- Verwenden Sie dann die Turbo-API, um für jede der 10 Fragen neue verwandte Fragen zu generieren Wie oben beschrieben, werden zwei Modelle iterativ verwendet, um 3 bis 7 Dialogrunden zu generieren.
- Darüber hinaus sammelte dieses Projekt die 10.000 am häufigsten verwendeten benannten Entitäten aus Wikidata; verwendete die ChatGPT-API, um 5 Metafragen für jede Entität zu generieren, und generierte 10 spezifischere Fragen und 20 verwandte, aber allgemeine Es wurden 200.000 spezifische Fragen, 250.000 allgemeine Fragen und 50.000 Metafragen befragt und für jede Frage wurden 3–7 Dialogrunden erstellt.
Als nächstes schauen wir uns ein konkretes Beispiel an:
Wir haben den Datensucheffekt auf der UltraChat-Plattform getestet. Wenn Sie beispielsweise „Musik“ eingeben, sucht das System automatisch nach 10.000 ChatGPT-Konversationsdatensätzen im Zusammenhang mit Musik, und jeder Satz ist eine mehrrunde Konversation
Geben Sie das Schlüsselwort „Mathe“ ein. Die Suche Die Ergebnisse zeigen 3346 Gruppen von Mehrrundengesprächen:
Derzeit deckt UltraChat viele Informationsbereiche ab, darunter Medizin, Bildung, Sport, Umweltschutz und andere Themen. Gleichzeitig versuchte der Autor, das Open-Source-Modell LLaMa-7B zu verwenden, um eine Feinabstimmung der überwachten Anweisungen auf UltraChat durchzuführen, und stellte fest, dass nach nur 10.000 Trainingsschritten ein sehr beeindruckender Effekt erzielt wurde. Einige Beispiele sind wie folgt:
Weltwissen: separat aufgeführt Hier sind 10 gute chinesische und amerikanische Universitäten
Stellen Sie sich die Frage vor: Was sind die möglichen Konsequenzen, wenn Raumfahrt möglich wird?
Syllogismus: Ist ein Wal ein Fisch?
Hypothetische Frage: Beweisen Sie, dass Jackie Chan besser ist als Bruce Lee
Insgesamt ist UltraChat ein hochwertiger, umfassender ChatGPT-Konversationsdatensatz, der mit anderen kombiniert werden kann Datensätze, wodurch die Qualität von Open-Source-Dialogmodellen erheblich verbessert wird. Derzeit veröffentlicht UltraChat nur die englische Version, wird aber in Zukunft auch die chinesische Version der Daten veröffentlichen. Interessierte Leser sind herzlich eingeladen, sich damit auseinanderzusetzen.
Das obige ist der detaillierte Inhalt vonVerwendung mehrerer ChatGPT-APIs zur Implementierung von Tsinghua UltraChat-Mehrrundengesprächen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Das Char -Array speichert Zeichensequenzen in der C -Sprache und wird als char Array_name [Größe] deklariert. Das Zugriffselement wird durch den Einweisoperator weitergeleitet, und das Element endet mit dem Null -Terminator '\ 0', der den Endpunkt der Zeichenfolge darstellt. Die C -Sprache bietet eine Vielzahl von String -Manipulationsfunktionen wie Strlen (), Strcpy (), Strcat () und strcmp ().

Eine Strategie zur Vermeidung von Fehlern, die in C -Switch -Anweisungen standardmäßig verursacht wurden: Verwenden Sie die Umgebungen anstelle von Konstanten, wodurch der Wert der Fallerklärung auf ein gültiges Mitglied des Enum beschränkt wird. Verwenden Sie in der letzten Fallanweisung Falsch, um das Programm weiterhin den folgenden Code auszuführen. Fügen Sie für Switch -Anweisungen ohne Falle immer eine Standardanweisung für die Fehlerbehandlung hinzu oder geben Sie das Standardverhalten an.

Es gibt keine integrierte Summenfunktion in der C-Sprache, daher muss sie selbst geschrieben werden. Die Summe kann erreicht werden, indem das Array durchquert und Elemente akkumulieren: Schleifenversion: Die Summe wird für die Schleifen- und Arraylänge berechnet. Zeigerversion: Verwenden Sie Zeiger, um auf Array-Elemente zu verweisen, und eine effiziente Summierung wird durch Selbststillstandszeiger erzielt. Dynamisch Array -Array -Version zuweisen: Zuordnen Sie Arrays dynamisch und verwalten Sie selbst den Speicher selbst, um sicherzustellen, dass der zugewiesene Speicher befreit wird, um Speicherlecks zu verhindern.

Die Standardanweisung ist in der Switch -Fallanweisung von entscheidender Bedeutung, da sie einen Standardverarbeitungspfad enthält, der sicherstellt, dass ein Codeblock ausgeführt wird, wenn der variable Wert an keine Fallanweisung übereinstimmt. Dies verhindert unerwartetes Verhalten oder Fehler und verbessert die Robustheit des Codes.

Die Rückgabewerttypen von C -Sprachfunktion umfassen Int-, Float-, Doppel-, Zeichen-, Hohlraum- und Zeigertypen. INT wird verwendet, um Ganzzahlen zurückzugeben, zu schweben und doppelt zu doppelt sind, um Schwimmer zurückzugeben, und char gibt Zeichen zurück. Void bedeutet, dass die Funktion keinen Wert zurückgibt. Der Zeigertyp gibt die Speicheradresse zurück. Achten Sie darauf, Speicherverlust zu vermeiden. Eine Struktur oder ein Konsortium kann mehrere verwandte Daten zurückgeben.

C -Sprachfunktionen sind wiederverwendbare Codeblöcke. Sie erhalten Input, führen Vorgänge und Rückgabergebnisse aus, die modular die Wiederverwendbarkeit verbessert und die Komplexität verringert. Der interne Mechanismus der Funktion umfasst Parameterübergabe-, Funktionsausführung und Rückgabeteile. Der gesamte Prozess beinhaltet eine Optimierung wie die Funktion inline. Eine gute Funktion wird nach dem Prinzip der einzigen Verantwortung, der geringen Anzahl von Parametern, den Benennungsspezifikationen und der Fehlerbehandlung geschrieben. Zeiger in Kombination mit Funktionen können leistungsstärkere Funktionen erzielen, z. B. die Änderung der externen Variablenwerte. Funktionszeiger übergeben Funktionen als Parameter oder speichern Adressen und werden verwendet, um dynamische Aufrufe zu Funktionen zu implementieren. Das Verständnis von Funktionsmerkmalen und Techniken ist der Schlüssel zum Schreiben effizienter, wartbarer und leicht verständlicher C -Programme.

! X Understanding! X ist ein logischer Nicht-Operator in der C-Sprache. Es booleschen den Wert von x, dh wahre Änderungen zu falschen, falschen Änderungen an True. Aber seien Sie sich bewusst, dass Wahrheit und Falschheit in C eher durch numerische Werte als durch Boolesche Typen dargestellt werden, ungleich Null wird als wahr angesehen und nur 0 wird als falsch angesehen. Daher handelt es sich um negative Zahlen wie positive Zahlen und gilt als wahr.

Der Zweck von! X in der C-Sprache ist nicht auf inverse beschränkt: logisches Urteilsvermögen: Ob es 0 ist, ist prägnanter als x == 0. Steuerungsprogrammfluss oder Status: Verwenden Sie 0 und Nicht-0, um True oder False darzustellen. Bitbetrieb: schnell alle Bits umkehren (mit Vorsicht verwendet).
