1 Punkte von GN⁺ 2023-11-01 | 1 Kommentare | Auf WhatsApp teilen
  • Artikel mit dem Titel „Phind-Modell übertrifft GPT-4 beim Programmieren mit GPT-3.5-Geschwindigkeit und 16k Kontext“
  • Das Phind-Modell übertrifft GPT-4 bei Programmieraufgaben, während es die Geschwindigkeit von GPT-3.5 und einen 16k-Kontext beibehält
  • Website www.phind.com, Sicherheitsprüfung vor dem Zugriff erforderlich
  • Die Website weist darauf hin, dass der Browser des Nutzers veraltet ist und aktualisiert werden muss
  • Auf der Entwicklerseite von Cloudflare sind weitere Informationen zur Browser-Unterstützung verfügbar
  • Leistung und Sicherheit der Website werden von Cloudflare bereitgestellt

1 Kommentare

 
GN⁺ 2023-11-01
Hacker-News-Kommentare
  • Ich habe Phind und GPT-4 ein paar Minuten lang mit einer ziemlich vagen Architekturfrage auf hohem Niveau zu einer verteilten Job-Queue verglichen. Phind empfahl aktiv konkrete Bibliotheken für die Implementierung, die auch gut zu meinen Recherchen passten, und lieferte Beispielcode mit den empfohlenen Bibliotheken.
    Phind hängte viele relevante Quellen wie GitHub und Stack Overflow an, was sich gut als Ausgangspunkt für weitere Recherchen eignete, und auch die vorgeschlagenen Folgefragen waren ziemlich gut.
    Allerdings war die Antwortqualität von GPT-4 besser, und für ein Systemdesign-Interview wirkte es wie der stärkere Kandidat. Es sprach sogar Kontext außerhalb der eigentlichen Frage an, etwa Logging und Metriken, erkannte die „Frage hinter der Frage“ besser und vermittelte auch bei Folgefragen stärker das Gefühl, die Richtung des Gesprächs einzuengen.
    Das war kein Vergleich als Coding-Fähigkeitstest wie bei einer Algorithmus-Implementierung, sondern als Denkhilfe für High-Level-Design und Architekturentscheidungen.

    • GPT-4 erkennt im Vergleich zu anderen Modellen die „Frage hinter der Frage“ wirklich gut und war sogar bei völlig unbekannten, beliebigen Aufgaben wie der Reparatur einer Hauswand sehr nützlich.
    • Ich frage mich, ob die von Phind gelieferten zahlreichen Quellen wie GitHub und Stack Overflow tatsächlich korrekt waren.
    • Man sollte auch offenlegen, ob es benutzerdefinierte Anweisungen gab, damit der Vergleich nicht bloß anekdotisch bleibt. Die Prompts sollten ebenfalls mit veröffentlicht werden.
    • Der Teil mit dem „Kontext geben“ hängt stark damit zusammen, Prompts passend zum Modell gut zu formulieren. Für einen fairen Vergleich sollte man nur den Code geben und sehen, was erzeugt wird.
    • Es wäre gut, wenn ein Teil der verwendeten Prompts geteilt würde.
  • Als häufige Fangfrage an LLMs habe ich gefragt: „Nenne mir 5 aktuelle Machine-Learning-Paper und Codebasen, die Geodaten wie GeoJSON als Ein- und Ausgabe verwenden.“
    Meines Wissens gibt es kein solches aktuelles Forschungsfeld; Geodaten seien diskontinuierlich, daher für Transformer ungeeignet, und wegen ihrer Kontextabhängigkeit auch für andere Ansätze schwierig. Einer besseren Erklärung durch echte ML-Expertinnen und -Experten würde ich natürlich folgen.
    Normalerweise erfinden LLMs dann 5 nicht existierende Paper und Codebasen, aber Phind gab 5 tatsächlich existierende Links und erklärte zugleich, warum diese keine Paper+Code zu GIS-Daten waren. Das war bisher die beste Antwort, die ich darauf bekommen habe.

    • Ich verstehe nicht, was das mit einem Code-Modell zu tun haben soll. Ein Code-Modell ist nicht darauf trainiert, nach Papers oder Texten zu suchen, sondern für Code-Vervollständigung, und Halluzinationen bei irrelevanten Aufgaben zu finden, ist nicht besonders interessant.
    • ChatGPT 4 mit Web-Browsing: https://chat.openai.com/share/19a425b5-ed37-469e-860d-65ee70...
      ChatGPT 4 ohne Web-Browsing: https://chat.openai.com/share/7e11b4a6-52f2-441a-8614-7266c3...
    • Einige GIS-Aufgaben verwenden Vektordaten aus Punkten, Linien oder Polygonen wie Straßenverläufe oder Gebäudekonturen, die in Formaten wie GeoJSON oder WKT gespeichert werden können.
      Fernerkundungsdaten oder Satellitenbilder können dagegen in Rasterformaten wie GeoTIFF gespeichert sein, also praktisch TIFF-Bilder mit Georeferenzierungsinformationen.
      Machine Learning mit Satellitenbildern, bei dem Ein- und Ausgabe beide Geodaten sind, ist durchaus möglich. Bei der Landnutzungsklassifikation kann die Eingabe zum Beispiel ein multispektrales Bild sein und die Ausgabe ein Bild, dessen Pixelwerte die erkannte Landnutzung darstellen.
      Auch für Gebäude-Footprint-Erkennung und Konturextraktion auf Basis von Satellitenbildern lässt sich Machine Learning einsetzen, und die ausgegebenen Polygone können als GeoJSON gespeichert werden. Solche Fälle würde ich als Beispiele für „Machine Learning mit Geodaten als Ein- und Ausgabe“ ansehen.
      [1]: https://azure.microsoft.com/en-us/blog/how-to-extract-buildi...
    • EarthPT ist ebenfalls einen Blick wert: https://arxiv.org/abs/2309.07207
  • Mehr Wettbewerb ist willkommen, aber ich finde weiterhin, dass GPT-4 besser ist. Als ich nach einer Query fragte, die in einer PostgreSQL-Tabelle full_text grob mit den ersten 200 Wörtern nach teaser füllt, lieferte Phind eine Antwort, die eine separate PL/pgSQL-Funktion schrieb und Wörter in einer Schleife zählte, während GPT-4 direkt eine UPDATE-Query mit generate_series und STRING_AGG vorschlug.

    • Wenn man „Ignore Web Context“ einschaltet, kann die Leistung bei solchen Designaufgaben besser werden. Ich bekam plausiblere Antworten, und an der Konsistenz wird gearbeitet: https://www.phind.com/search?cache=f0fkv5mxscwvagxgkuwnwgtl
    • Aus nur einem Beispiel Leistungsurteile abzuleiten, ist nicht ausreichend.
    • Als ich einfach klar und direkt fragte, bekam ich eine Antwort wie UPDATE your_table SET teaser = substring(full_text from '(\\S+\\s*){1,200}').
    • Ich hasse Artikel-Teaser und „Read more“-Buttons wirklich, aber jetzt weiß ich, dass sie das Ergebnis eines absichtlich abgeschnittenen Texts sind.
  • Ich frage mich, ob die Aussage „mit einem einzelnen Stream sind bis zu 100 Token pro Sekunde möglich, während GPT-4 bestenfalls auf etwa 20 Token pro Sekunde kommt“ das Ergebnis von Batch-Verarbeitung ist. Falls ja, ist das ziemlich beeindruckend.
    Der Punkt, dass das Phind Model bei schwierigen Fragen mehr Generierungsversuche als GPT-4 brauchen könnte, um zur richtigen Antwort zu kommen, wirkt teilweise wie ein Problem des Sampler-Tunings.
    Falls das noch nicht verwendet wird, sollte man sich grammar-based sampling(https://github.com/ggerganov/llama.cpp/pull/1773) sowie dynamisches Sampling(https://github.com/LostRuins/koboldcpp/pull/464) wie mirostat und dynatemp ansehen.
    Es sieht so aus, als würde es auch in der Nvidia-Implementierung funktionieren, wenn man nur das Sampling auf die Hugging Face-Version umstellt, und dass man solche experimentellen Funktionen selbst implementieren kann, ist ein großer Vorteil gegenüber OpenAI.

    • Um auf dem H100 100 Token pro Sekunde zu erreichen, wird Flash Decoding von TensorRT-LLM genutzt: https://crfm.stanford.edu/2023/10/12/flashdecoding.html
    • Ich weiß nicht, ob das ein beeindruckender Wert ist. Wenn man bedenkt, dass LMDeploy auf dem A100 bei großen Batch-Größen mehr als 2000 Token pro Sekunde beansprucht, wirken 100 Token pro Sekunde auf dem H100 ziemlich langsam.
  • Ich nutze GPT-4 viel, und bei mehreren Programmieraufgaben, die ich Phind zuerst gegeben habe, war es überraschenderweise auf Augenhöhe mit GPT-4. Wenn man das lange Kontextfenster von Phind berücksichtigt, scheint es bei manchen Aufgaben sogar das Potenzial zu haben, GPT-4 zu übertreffen, und das ist als Leistung beeindruckend.

    • Zur Info: Das standardmäßige Kontextfenster von GPT-4 über ChatGPT soll bald auf 32k umgestellt werden.
  • Ich finde gut, dass Phind die Quellen zitiert von dem, was es eingesammelt hat. Meiner Meinung nach sollte das für alle LLMs verpflichtend sein, und deshalb empfehle ich oft eher Phind als ChatGPT.

    • Zitiert wird nicht das, was das LLM „eingesammelt“ hat, sondern das, was das Suchmodell dem LLM gegeben hat. Es gibt keine Garantie, dass es das im tatsächlichen Output verwendet hat, und es ist auch nicht das gesamte Wissen, das zur Generierung der Antwort nötig ist.
      Das Wissen ist über Millionen Beispiele verteilt, aus denen Sprache und menschliche Sprache gelernt wurden, und liegt auch nicht in einer für Menschen verständlichen Form vor.
    • Aus Sicht der Nutzer ist es besser, die richtige Antwort zu bekommen, als nur Links ausgespuckt zu bekommen. Das heißt nicht, dass Phind schlecht ist, aber bevor man LLMs in diesem noch frühen Stadium einschränkt, sollte man sich zuerst darauf konzentrieren, dass sie überhaupt richtig liegen.
  • Ich habe es früher mit einem selbst geschriebenen Programm ausprobiert und mit GPT-4 verglichen, und Phind hat nicht richtig verstanden, was ich wollte, während GPT-4 es perfekt verstanden hat und bereit war, den Prompt fortzuführen und zu vervollständigen.
    https://www.phind.com/agent?cache=cloeowfla000dl1084ermly3c
    vs
    https://chat.openai.com/share/4147da33-3669-4657-88fa-3a9dfc...
    Das ist vielleicht nicht repräsentativ für alles, aber es driftete in ungefragte irrelevante Inhalte und grundlegende Informationen ab, die ich bereits kannte.

    • Der Pair Programmer-Modus nutzt derzeit GPT-4 oder, wenn das Limit ausgeschöpft ist, GPT-3.5. Um das Phind Model zu verwenden, muss man es im normalen Suchmodus erneut versuchen.
      Im normalen Suchmodus scheint das Phind Model gut zu funktionieren: https://www.phind.com/search?cache=ln6dpdtv5auwn4cq1ofg3gs9
    • Das Problem ist, dass nach relativ speziellen Problemen gesucht wird und dabei vermutlich Ergebnisse geringerer Qualität hereinkommen. Der Suchtext hat ein größeres Gewicht als beim Basismodell, und wenn dieser Kontext wenig hilfreich ist, verschlechtert das die Leistung eher.
      Dasselbe kann man bei der Bing-Suche von ChatGPT beobachten, und ich habe es auch in meinem eigenen Projekt erlebt.
  • Es ist überraschend, dass CodeLlama bis zu 16k Token unterstützt. Das Token-Fenster ist eine der Einschränkungen beim Bau von KI, die sich an Nutzer erinnert und frühere Gespräche fortführen kann.
    Für künftige KI-Apps, in denen lange Gespräche über Wochen, Monate oder Jahre weiterlaufen, ist ein großes Kontextfenster entscheidend, und die Technik ist schon jetzt beeindruckend, aber noch interessanter wird es, wenn sie sich wie ein echter Pair Programmer an alles erinnert, was man gemeinsam früher gelernt und bearbeitet hat.
    [0] https://huggingface.co/docs/transformers/main/model_doc/llam...

    • 640k ist für jeden genug.
    • Durch Ansätze wie MemGPT wird die Größe des Token-Fensters virtualisiert, daher wird ihr Einfluss wohl geringer werden.
    • Ich warte auf den Tag, an dem mittelfristiges Gedächtnis wie Token-Mean-Pooling bei sentence transformers für so etwas verwendet wird. Es wirkt wie etwas, das für alle Unternehmen offensichtlich vor ihnen liegt, aber niemand scheint es umsetzen zu wollen.
  • Ich weiß, dass das nicht besonders populär ist, aber ich wünschte, es gäbe eine Möglichkeit, das in Emacs oder Vim zu nutzen. Ich möchte VS Code nicht länger verwenden.

    • Dass sich in den letzten Jahren alles auf VS Code als Standard zubewegt hat, ist wirklich eine bedauerliche Entwicklung. Es ist gut, dass VS Code existiert, aber wir steuern auf eine Welt zu, in der man VS Code nutzen muss, um die besten Tools zu verwenden.
      In der Java-Entwicklung war es mit IntelliJ genauso, und ich halte das für sehr ungesund für das Ökosystem. Ich bin wirklich froh, dass Copilot Vim unterstützt, aber ich mache mir Sorgen, dass das bald nicht mehr so sein könnte.
    • Ich wünschte, die tiefe Zuneigung zu Emacs würde am Markt stärker gewürdigt.
      Es gibt etwa die Logik, dass Musik und Kunst nach unten nivelliert werden, weil es viel lukrativer ist, ein Album zu machen, das für viele Millionen Menschen 10 Dollar wert ist, als eines, das für einige Dutzend Menschen eine Million Dollar wert ist.
      Der Albumpreis liegt am Ende ohnehin bei 10 Dollar, und mir ist erst jetzt klar geworden, dass dasselbe Phänomen auch auf Entwicklungswerkzeuge zutrifft.
    • Ich habe schon versucht, einen Shortcut zu bauen, der in Vim ausgewählten Text an Phind oder ein anderes LLM sendet, bis hin zu :'<,'>y|call system('firefox ?q='.shellescape(@*).' &').
      Das verbleibende Problem ist, dass der Text nicht URL-kodiert wird; vermutlich gibt es eine elegante Lösung, aber ich habe sie noch nicht gefunden.
    • Auf Basis des Copilot-Beispiels von jemand anderem habe ich mir eine einfache Emacs-ollama-API-Integration zusammengebastelt, die einfache Code-Vervollständigung mit einem lokalen LLM macht.
      Auf einem M1 Mac dauert die Inferenz normalerweise etwa 7 Sekunden, also langsamer als ich es gern hätte, und auch die Auswahl des gesendeten Kontexts ist sehr simpel, aber gerade noch brauchbar.
      Ich hatte nicht vor, das zu veröffentlichen, weil es auf einer Python-Façade beruht, um Anfragen und Antworten im Copilot-Stil mit ollama auszutauschen, aber wenn Interesse besteht, könnte ich es aufpolieren und herausgeben.
    • Soweit ich weiß, gibt es für GitHub Copilot eine Emacs-/Vim-Integration.
  • Nach einem schnellen Vergleich sind die Ergebnisse hervorragend, und wenn man den Vorteil von Websuche und Referenzen dazunimmt, ist es GPT-4 ähnlich, aber schneller. Zwei kleinere Dinge sind allerdings etwas schade.
    Im Dark Mode ist die Schrift im Antworttext zu fett und zu hell, sodass lange nicht-codeartige Absätze schwer zu lesen sind, und im Light Mode ist insgesamt alles zu hell. Für lange Texte wäre ein grauer dunkler Hintergrund wie bei OpenAI oder ein sepiafarbener heller Hintergrund wie bei HN besser.
    Auf der Preisseite ist außerdem unklar, was GPT-4 in „500+ best model uses (GPT-4) per day“ bedeuten soll. Es wirkt merkwürdig, dass Phind sich als GPT-4-Konkurrent präsentiert und zugleich die GPT-4-Nutzung in der Preisübersicht aufführt.

    • GPT-4 wird auch als Antwortmodell unterstützt, sodass Nutzer je nach Einsatzzweck wählen können. Den meisten Nutzern wird allerdings das Phind Model empfohlen.