1 points par GN⁺ 2023-11-01 | 1 commentaires | Partager sur WhatsApp
  • Article intitulé « Le modèle Phind surpasse GPT-4 en codage avec la vitesse de GPT-3.5 et un contexte de 16k »
  • Le modèle Phind surpasse GPT-4 dans les tâches de codage, tout en conservant la vitesse de GPT-3.5 et un contexte de 16k
  • Le site www.phind.com nécessite un examen de sécurité avant l’accès
  • Le site indique que le navigateur de l’utilisateur est obsolète et doit être mis à jour
  • Plus d’informations sur la prise en charge des navigateurs sont disponibles sur la page développeur de Cloudflare
  • Les performances et la sécurité du site sont fournies par Cloudflare

1 commentaires

 
GN⁺ 2023-11-01
Avis sur Hacker News
  • J’ai comparé rapidement Phind et GPT-4 pendant quelques minutes avec une question de conception assez vague et de haut niveau sur une file de travaux distribuée ; Phind a recommandé activement des bibliothèques concrètes liées à l’implémentation, ce qui correspondait bien à mes propres recherches, et a même fourni du code d’exemple avec les bibliothèques recommandées
    Phind a aussi joint de nombreuses sources pertinentes, comme GitHub et Stack Overflow, ce qui en faisait un bon point de départ pour approfondir, et ses suggestions de questions de suivi étaient plutôt bonnes
    Cela dit, GPT-4 donnait des réponses de meilleure qualité et semblait être un meilleur candidat pour un entretien de conception système. Il relevait même du contexte hors de la question, comme le logging et les métriques, comprenait mieux « la question derrière la question » et donnait davantage l’impression d’affiner la direction de la conversation dans les questions de suivi
    Il ne s’agissait pas d’un test de compétences en code comme l’implémentation d’algorithmes, mais d’une comparaison en tant qu’outil d’aide à la réflexion pour des décisions de conception et d’architecture de haut niveau

    • GPT-4 identifie vraiment très bien « la question derrière la question » par rapport aux autres modèles, et il m’a aussi été très utile pour des tâches arbitraires que je ne connaissais pas du tout, comme réparer un mur chez moi
    • Je me demande si les nombreuses sources fournies par Phind, comme GitHub et Stack Overflow, étaient réellement exactes
    • Il faut aussi préciser s’il y avait des instructions personnalisées, sinon la comparaison reste anecdotique. Il faudrait publier le prompt également
    • La partie sur le fait de « donner du contexte » est largement liée à la manière de bien écrire les prompts selon le modèle. Pour comparer équitablement, il faudrait ne donner que le code et voir ce qu’il produit
    • Ce serait bien de partager au moins une partie du prompt utilisé
  • J’ai utilisé comme question piège fréquente pour les LLM : « donne-moi 5 articles récents de machine learning et leur code qui utilisent des données géospatiales comme GeoJSON en entrée et en sortie »
    Je considère qu’un tel domaine de recherche récent n’existe pas, et que les données géographiques sont discrètes, donc mal adaptées aux transformers, tout en étant dépendantes du contexte, ce qui les rend difficiles aussi pour d’autres approches. Je m’en remettrai volontiers à une meilleure explication d’un vrai spécialiste du machine learning
    D’habitude, les LLM inventent 5 articles et dépôts de code qui n’existent pas, mais Phind a fourni 5 liens bien réels et a expliqué pourquoi il ne s’agissait pas réellement d’articles + code utilisant des données SIG, ce qui en fait la meilleure réponse que j’aie reçue jusqu’à présent

    • Je ne vois pas bien le rapport avec un modèle de code. Un modèle de code n’est pas entraîné à rechercher des articles ou des textes, mais à compléter du code, donc chercher des hallucinations sur une tâche sans rapport n’a rien de très intéressant
    • ChatGPT 4 avec navigation web : https://chat.openai.com/share/19a425b5-ed37-469e-860d-65ee70...
      ChatGPT 4 sans navigation web : https://chat.openai.com/share/7e11b4a6-52f2-441a-8614-7266c3...
    • Certaines tâches SIG utilisent des données vectorielles de points, lignes et polygones, comme la position des routes ou le contour des bâtiments, qu’on peut stocker dans des formats comme GeoJSON ou WKT
      À l’inverse, les données de télédétection ou les images satellite peuvent être stockées dans des formats raster comme GeoTIFF, qui sont essentiellement des images TIFF accompagnées d’informations de géoréférencement
      Le machine learning sur images satellite, avec des données géospatiales à la fois en entrée et en sortie, est tout à fait possible. Par exemple, pour la classification de l’occupation des sols, l’entrée peut être une image multispectrale et la sortie une image dont la valeur de chaque pixel représente le type d’occupation identifié
      On peut aussi utiliser le machine learning sur des images satellite pour la détection de l’emprise des bâtiments et l’extraction de leurs contours, puis enregistrer les polygones de sortie en GeoJSON. Cela me semble correspondre à des exemples de « machine learning utilisant des données géospatiales en entrée et en sortie »
      [1]: https://azure.microsoft.com/en-us/blog/how-to-extract-buildi...
    • EarthPT mérite aussi un coup d’œil : https://arxiv.org/abs/2309.07207
  • Je me réjouis de voir plus de concurrence, mais pour l’instant je pense toujours que GPT-4 est meilleur. Quand j’ai demandé une requête pour remplir teaser avec environ les 200 premiers mots de full_text dans une table PostgreSQL, Phind a répondu en créant une fonction PL/pgSQL séparée avec une boucle pour compter les mots, tandis que GPT-4 a proposé directement une requête UPDATE avec generate_series et STRING_AGG

    • Activer « Ignore Web Context » peut améliorer les performances sur ce type de travail de conception. J’ai obtenu une réponse plus plausible, et la cohérence est justement un aspect en cours d’amélioration : https://www.phind.com/search?cache=f0fkv5mxscwvagxgkuwnwgtl
    • Un seul exemple ne suffit pas pour tirer une conclusion sur les performances
    • En demandant simplement et clairement, j’ai obtenu une réponse du type UPDATE your_table SET teaser = substring(full_text from '(\\S+\\s*){1,200}')
    • Je déteste vraiment les teasers d’articles avec un bouton « read more », mais maintenant je sais que c’est le résultat d’un découpage volontaire du texte
  • Je me demande si l’affirmation « jusqu’à 100 tokens/s sur un seul flux, alors que GPT-4 atteint au mieux environ 20 tokens/s » est le résultat d’un traitement par lots. Si oui, c’est assez impressionnant.
    La partie disant que le Phind Model peut avoir besoin de davantage de tentatives de génération que GPT-4 pour arriver à la bonne réponse sur des questions difficiles ressemble en partie à un problème de réglage du sampler.
    S’ils ne l’utilisent pas encore, ils devraient regarder l’échantillonnage basé sur une grammaire (https://github.com/ggerganov/llama.cpp/pull/1773) ainsi que l’échantillonnage dynamique comme mirostat et dynatemp (https://github.com/LostRuins/koboldcpp/pull/464).
    Même dans l’implémentation Nvidia, il devrait suffire de remplacer l’échantillonnage par la version Hugging Face pour que cela fonctionne, et le fait de pouvoir implémenter soi-même ce type de fonctionnalités expérimentales est un gros avantage du fait de ne pas dépendre d’OpenAI.

    • Ils utilisent le Flash Decoding de TensorRT-LLM pour atteindre 100 tokens/s sur H100 : https://crfm.stanford.edu/2023/10/12/flashdecoding.html
    • Je ne sais pas si c’est si impressionnant que ça. Quand on voit que LMDeploy revendique plus de 2a0000 tokens/s sur A100 avec une grande taille de batch, 100 tokens/s sur H100 paraît plutôt lent
  • J’utilise beaucoup GPT-4, et Phind a étonnamment tenu tête à GPT-4 sur plusieurs tâches de programmation que je lui ai soumises en premier. Vu la grande fenêtre de contexte de Phind, il semble même possible qu’il dépasse GPT-4 sur certains travaux, ce qui en ferait un résultat impressionnant.

    • À noter que la fenêtre de contexte par défaut de GPT-4 via ChatGPT devrait bientôt passer à 32k
  • J’apprécie que Phind cite les sources de ce qu’il a récupéré. À mon avis, cela devrait être obligatoire pour tous les LLM, et c’est pour cela que je recommande souvent Phind plutôt que ChatGPT.

    • Ce qui est cité n’est pas ce que le LLM a « récupéré », mais ce que le modèle de recherche lui a fourni. Rien ne garantit qu’il s’en soit réellement servi dans la sortie, ni que cela représente l’ensemble des connaissances nécessaires à la réponse.
      Les connaissances sont réparties entre le langage et des millions d’exemples appris de langage humain, et elles ne sont pas conservées d’une manière compréhensible pour un humain.
    • Du point de vue de l’utilisateur, il vaut mieux obtenir la bonne réponse que recevoir une série de liens. Cela ne veut pas dire que Phind est mauvais, mais avant d’imposer des contraintes à des LLM encore à leurs débuts, il faudrait d’abord se concentrer sur le fait de les faire répondre correctement.
  • J’avais comparé GPT-4 et Phind en leur faisant essayer un programme que j’avais écrit moi-même ; Phind n’a pas bien compris ce que je voulais, alors que GPT-4 l’a compris parfaitement et semblait prêt à poursuivre le prompt jusqu’à l’aboutissement.
    https://www.phind.com/agent?cache=cloeowfla000dl1084ermly3c
    vs
    https://chat.openai.com/share/4147da33-3669-4657-88fa-3a9dfc...
    Ce n’est peut-être pas représentatif de l’ensemble, mais la réponse est partie vers des choses hors sujet non demandées et des informations de base que je connaissais déjà.

    • Le mode Pair Programmer utilise actuellement GPT-4, ou GPT-3.5 une fois le quota épuisé. Pour utiliser le Phind Model, il faut réessayer dans le mode de recherche par défaut.
      Le Phind Model semble bien fonctionner dans la recherche par défaut : https://www.phind.com/search?cache=ln6dpdtv5auwn4cq1ofg3gs9
    • Le problème, c’est qu’il cherche sur des sujets relativement de niche et récupère probablement des résultats de faible qualité. Le texte de recherche pèse davantage que dans le modèle de base, et si ce contexte n’aide pas beaucoup, cela peut au contraire dégrader les performances.
      On peut voir le même phénomène avec la recherche Bing de ChatGPT, et je l’ai aussi constaté sur mon propre projet.
  • Je trouve surprenant que CodeLlama prenne en charge jusqu’à 16k tokens. La taille de la fenêtre de tokens est l’une des limites pour créer une IA capable de se souvenir de l’utilisateur et de prolonger les conversations passées.
    Pour de futures applications d’IA où les longues conversations s’étalent sur des semaines, des mois ou des années, une grande fenêtre de contexte sera essentielle ; la technologie est déjà impressionnante aujourd’hui, mais ce sera encore plus intéressant lorsqu’elle pourra se souvenir, comme un vrai pair programmer, de tout ce qu’elle a appris et sur quoi elle a travaillé avec nous par le passé.
    [0] https://huggingface.co/docs/transformers/main/model_doc/llam...

    • 640k, c’est suffisant pour n’importe qui
    • Avec des approches comme MemGPT, la taille de la fenêtre de tokens est en train d’être virtualisée, donc son impact va diminuer
    • J’attends le jour où une mémoire à moyen terme comme le mean pooling de tokens des sentence transformers sera utilisée pour ce genre de cas. On dirait que c’est évident pour toutes les entreprises, mais qu’aucune n’envisage vraiment de l’implémenter
  • Je sais que ce n’est pas populaire, mais j’aimerais qu’il y ait un moyen d’utiliser ça dans Emacs ou Vim. Je n’ai plus envie d’utiliser VS Code.

    • La standardisation autour de VS Code ces dernières années est vraiment l’une des évolutions les plus regrettables. C’est bien que VS Code existe, mais on se dirige vers un monde où il faut utiliser VS Code pour avoir les meilleurs outils.
      C’était déjà le cas avec IntelliJ dans le développement Java, et à mon avis ce n’était pas du tout sain pour l’écosystème. Heureusement, Copilot prend en charge Vim, mais j’ai peur que ça ne dure pas.
    • J’aurais aimé que l’attachement profond à Emacs soit davantage valorisé par le marché.
      Il y a cette idée selon laquelle la musique et l’art sont tirés vers le bas parce qu’il est bien plus rentable de faire un album qui vaut 10 dollars pour des dizaines de millions de personnes que de faire un album qui vaut un million de dollars pour quelques dizaines de personnes.
      Comme le prix d’un album finit de toute façon à 10 dollars, je viens seulement de réaliser que le même phénomène s’applique aussi aux outils de développement.
    • J’ai essayé de créer dans Vim un raccourci pour envoyer le texte sélectionné à Phind ou à un autre LLM, jusqu’à :'<,'>y|call system('firefox ?q='.shellescape(@*).' &').
      Le problème restant, c’est que le texte n’est pas encodé en URL, et il existe sans doute une manière élégante de le faire, mais je ne l’ai pas encore trouvée.
    • En m’appuyant sur l’exemple Copilot de quelqu’un d’autre, j’ai bricolé une intégration basique de l’API ollama dans Emacs pour faire de la simple complétion de code avec un LLM local.
      Sur un Mac M1, l’inférence prend généralement environ 7 secondes, donc c’est plus lent que ce que je voudrais, et la logique pour décider quel contexte envoyer est très rudimentaire, mais ça reste tout juste utilisable.
      Je ne comptais pas le publier, car cela dépend d’une façade Python pour échanger avec ollama dans un style requête/réponse à la Copilot, mais si ça intéresse du monde, je peux le peaufiner et le sortir.
    • À ma connaissance, GitHub Copilot a une intégration Emacs/Vim.
  • Après une comparaison rapide, les résultats sont excellents et, en tenant compte de l’avantage supplémentaire de la recherche web avec références, c’est comparable à GPT-4 tout en étant plus rapide. J’ai quand même deux petits reproches.
    En mode sombre, la police du corps des réponses est trop grasse et trop lumineuse, ce qui rend les longs paragraphes non liés au code difficiles à lire ; et en mode clair, l’ensemble est trop lumineux. Pour les longs textes, un fond sombre gris comme chez OpenAI ou un fond clair sépia comme sur HN serait préférable.
    La mention « 500+ best model uses (GPT-4) par jour » sur la page de tarification est aussi déroutante : on ne comprend pas bien ce que GPT-4 désigne ici. Phind se présente comme un concurrent de GPT-4 tout en affichant en même temps un volume d’usage GPT-4 dans ses tarifs, ce qui paraît étrange.

    • GPT-4 est aussi pris en charge comme modèle de réponse, afin que les utilisateurs puissent choisir selon leur usage. Cela dit, pour la grande majorité des utilisateurs, Phind Model est recommandé.