À mesure que la technologie des modèles de langage à grande échelle (LLM) devient de plus en plus mature, diverses industries ont accéléré le rythme de mise en œuvre des applications LLM. Afin d'améliorer l'effet d'application pratique du LLM, l'industrie a déployé de nombreux efforts. Récemment, l'équipe LinkedIn a partagé sa précieuse expérience dans la création de produits d'IA générative. LinkedIn affirme que la création de produits basés sur l'IA générative n'a pas été facile et qu'ils ont rencontré des difficultés dans un certain nombre de domaines. Ce qui suit est le texte original du blog LinkedIn. Au cours des six derniers mois, notre équipe LinkedIn a travaillé dur pour développer une nouvelle expérience d'IA qui tente de réimaginer la façon dont nos membres postulent à des emplois et parcourent du contenu professionnel. La croissance explosive de l’IA générative nous fait réfléchir à ce qui est désormais possible et qui était impossible il y a un an. Nous avons essayé de nombreuses idées sans succès et avons finalement découvert que le produit avait besoin d'éléments clés tels que : un accès plus rapide à l'information, comme obtenir des points clés à partir de publications ou rester au courant des mises à jour de l'entreprise. Reliez les points d’information, comme l’évaluation de votre aptitude à un poste. Obtenez des conseils, comme améliorer votre profil ou préparer un entretien. ...
Exemple : Comment fonctionne un système nouvellement développéNous utilisons un scénario réel pour montrer comment fonctionne un système nouvellement développé. Imaginez que vous parcourez votre flux LinkedIn et que vous tombez sur un article intéressant sur l'accessibilité dans le design. En plus de cet article, vous trouverez également quelques questions d'introduction pour approfondir le sujet et vous êtes curieux, telles que "Quels sont quelques exemples d'accessibilité génératrice de valeur commerciale dans les entreprises technologiques ?"
Choisissez le bon agent : Le système prend votre problème et décide quel agent IA est le mieux adapté pour le gérer. Dans ce cas, il identifie votre intérêt pour l’accessibilité au sein des entreprises technologiques et achemine votre requête vers un agent IA spécialisé dans la réalisation de recherches de culture générale.
- Recueillir des informations : Les agents IA appellent une combinaison d'API internes et de Bing, à la recherche d'exemples spécifiques et d'études de cas qui mettent en évidence la manière dont l'accessibilité dans la conception contribue à la valeur commerciale de la technologie.
- Formuler une réponse : Avec les informations nécessaires, l'agent peut désormais rédiger une réponse. Il filtre et synthétise les données en réponses cohérentes et riches en informations, vous donnant des exemples clairs de la manière dont les initiatives d'accessibilité apportent de la valeur commerciale aux entreprises technologiques. Pour rendre l'expérience plus interactive, des appels d'API internes sont effectués pour utiliser des pièces jointes telles que des liens vers des articles ou des profils de personnes mentionnées dans les publications.
- Interactivité :
Vous pouvez demander "Comment puis-je orienter ma carrière vers ce domaine", puis le système répétera le processus ci-dessus, mais vous transférera maintenant vers la carrière et l'emploi (carrière et emploi) d'agent IA. En quelques clics, vous pouvez approfondir n'importe quel sujet, obtenir des informations exploitables ou trouver votre prochaine opportunité d'emploi.
Base technique :
La plupart des nouvelles fonctionnalités sont rendues possibles grâce à l'aide de la technologie LLM.
Conception globale :
Le pipeline du système suit la génération augmentée de récupération (RAG), qui est un modèle de conception courant pour les systèmes d'intelligence artificielle générative. Étonnamment, la construction du pipeline a été moins un casse-tête que prévu. En quelques jours seulement, nous avions le framework de base opérationnel :
Routage :
Décidez si une requête est à portée et à quel agent d'IA la transmettre.
- Récupération : Étape orientée rappel, l'agent IA décide quels services appeler et comment les appeler (comme la recherche de personnes LinkedIn, l'API Bing, etc.).
- Générer : Une étape axée sur la précision qui passe au crible les données bruitées récupérées, les filtre et génère la réponse finale.
- 查 Figure 1 : Simplifiez le PIPELINE de la requête utilisateur. KSA signifie « Knowledge Sharing Agent » et fait partie des dizaines d'agents capables de gérer les requêtes des utilisateurs.
Les conceptions clés incluent :
Pipeline fixe en trois étapes ;
Petit modèle pour le routage/récupération, pour les modèles plus grands générés
Récupération basée sur l'intégration (EBR), alimentée par une base de données en mémoire, injectant des exemples de réponses directement dans Prompt ; Pipeline d’évaluation spécifique à chaque étape, notamment pour le routage/récupération.
Vitesse de développement
Nous avons décidé de diviser les tâches de développement en développement d'agents indépendants par différentes personnes : bon sens, évaluation des tâches, points de travail, etc.
En parallélisant les tâches de développement, nous augmentons la vitesse de développement, mais cela se fait au prix de la « fragmentation ». Maintenir une expérience utilisateur unifiée devient un défi lorsque les interactions ultérieures se font avec des assistants gérés via différents modèles, invites ou outils.
Pour résoudre ce problème, nous avons adopté une structure organisationnelle simple :
Un petit module d'ingénierie "horizontal" qui gère les composants communs et se concentre sur l'expérience globale, qui comprend :
Services pour héberger le produit
Outils d'évaluation/test
Modèles d'invite globaux utilisé par tous les secteurs verticaux (par exemple, identité globale de l'agent, historique des conversations, défense contre le jailbreak, etc.)
Composants UX partagés pour les clients iOS/Android/Web
Cadre d'interface utilisateur piloté par le serveur pour publier de nouvelles modifications de l'interface utilisateur sans modifier ni publier le code client.
Les principales conceptions incluent :
Diviser pour mieux régner, mais limiter le nombre d'agents ;
Pipeline d'évaluation centralisée avec plusieurs cycles de dialogue ;
Modèles d'invite partagés (par exemple, définition d'« identité », modèles, outils et instruments UX)
Évaluation
Évaluation des faits la qualité des réponses s'est avérée plus difficile que prévu. Ces défis peuvent être globalement divisés en trois domaines : l'élaboration de lignes directrices, l'extension des annotations et l'évaluation automatisée.
L'élaboration d'une ligne directrice est le premier obstacle. Prenez les évaluations d'emploi, par exemple : il ne sert pas à grand-chose de cliquer sur "Évaluer mon aptitude à cet emploi" et d'obtenir "Vous êtes un bon candidat". Nous voulons que les réponses soient à la fois authentiques et empathiques. Certains utilisateurs envisagent peut-être de changer de carrière dans un domaine pour lequel ils ne sont pas actuellement bien adaptés et ont besoin d'aide pour comprendre les lacunes et les prochaines étapes. S'assurer que ces détails sont cohérents est essentiel pour l'annotateur.
L'extension des commentaires est la deuxième étape. Nous avons besoin d’annotateurs cohérents et diversifiés. Notre équipe interne de linguistes a créé des outils et des processus pour évaluer jusqu'à 500 conversations quotidiennes et capturer des mesures pertinentes : score de qualité global, taux d'hallucinations, violations de l'IA, cohérence, style, etc.
Le travail d'évaluation automatique est toujours en cours. Sans évaluation automatisée, les ingénieurs ne pouvaient qu'inspecter visuellement les résultats et tester sur un ensemble limité d'exemples, avec un délai de plus d'un jour avant de comprendre les métriques. Nous construisons des évaluateurs basés sur des modèles pour évaluer les mesures ci-dessus et travaillons à obtenir un certain succès dans la détection des hallucinations, et un pipeline d'évaluation automatisé de bout en bout permettra des itérations plus rapides.
Appelez l'API interne
LinkedIn possède une richesse de données uniques sur les personnes, les entreprises, les compétences, les cours et bien plus encore, essentielles à la création de produits offrant une valeur différenciée.
- Cependant, le LLM n'a pas été formé sur ces informations et ne peut donc pas les utiliser pour raisonner et générer des réponses.
- Le modèle standard pour résoudre ce problème consiste à configurer un pipeline de génération augmentée de récupération (RAG) à travers lequel une API interne est appelée et sa réponse est injectée dans les invites LLM ultérieures pour fournir un contexte supplémentaire pour prendre en charge la réponse.
- Une grande partie de ces données sont exposées en interne via les API RPC dans divers microservices.
- Nous résolvons ce problème en enveloppant les « compétences » autour de ces API. Chaque compétence comporte les composants suivants :
-
Une description conviviale de ce que fait l'API et quand l'utiliser
- Configuration pour appeler l'API RPC (points de terminaison, modes d'entrée, modes de sortie, etc.)
- LLM- modes d'entrée et de sortie conviviaux
- Valeurs de type primitif (String/Boolean/Number)
- Description du schéma d'entrée et de sortie pour le schéma JSON
- Logique métier pour le mappage entre le schéma convivial LLM et le schéma RPC réel
-
Ces compétences sont conçu pour permettre à LLM d'effectuer diverses opérations liées aux produits, telles que l'affichage de profils, la recherche d'articles/personnes/postes/entreprises et même l'interrogation des systèmes d'analyse internes.
Wir schreiben Eingabeaufforderungen, die den LLM auffordern, zu entscheiden, welche Fähigkeiten zur Lösung einer bestimmten Aufgabe verwendet werden sollen (Fähigkeitsauswahl über Planung), und geben dann Parameter aus, um die Fähigkeiten aufzurufen (Funktionsaufrufe). Da die Parameter des Aufrufs mit dem Eingabemuster übereinstimmen müssen, bitten wir das LLM, diese strukturiert auszugeben. Die meisten LLMs sind für die strukturierte Ausgabe auf YAML und JSON trainiert. Wir haben uns für YAML entschieden, weil es weniger ausführlich ist und daher weniger Token verbraucht als JSON.
Eine der Herausforderungen, auf die wir gestoßen sind, besteht darin, dass die LLM-Antwort zwar in etwa 90 % der Fälle korrekt formatierte Parameter enthält, das LLM jedoch in etwa 10 % der Fälle einen Fehler macht und oft ungültig formatierte Daten ausgibt, oder schlimmer noch, es handelt sich nicht einmal um gültiges YAML .
Diese Fehler sind für Menschen trivial, können aber zum Absturz des Codes führen, der sie analysiert. 10 % ist eine so hohe Zahl, dass wir sie nicht einfach ignorieren können, also haben wir uns vorgenommen, sie anzugehen.
Die Standardmethode zur Behebung dieses Problems besteht darin, es zu erkennen und LLM dann erneut aufzufordern, den Fehler zu beheben und zusätzliche Hinweise zu geben. Dieser Ansatz funktioniert zwar, führt jedoch zu erheblicher Latenz und verbraucht aufgrund zusätzlicher LLM-Aufrufe wertvolle GPU-Kapazität. Um diese Einschränkungen zu umgehen, haben wir letztendlich einen internen defensiven YAML-Parser geschrieben.
Durch die Analyse verschiedener Nutzlasten haben wir häufige Fehler von LLM identifiziert und Code geschrieben, um diese Fehler vor dem Parsen entsprechend zu erkennen und zu beheben. Wir haben auch die Hinweise geändert, um Hinweise für einige dieser häufigen Fehler einzufügen und so die Patch-Genauigkeit zu verbessern. Letztendlich konnten wir die Häufigkeit dieser Fehler auf etwa 0,01 % reduzieren.
Wir erstellen derzeit ein einheitliches Kompetenzregister für die dynamische Erkennung und den Aufruf von APIs/Agenten, die als LLM-freundliche Fähigkeiten in unseren generativen KI-Produkten verpackt sind.
Kapazität und Latenz
Kapazität und Latenz stehen immer im Vordergrund:
- Qualität und Latenz: Technologien wie Chain of Thoughts (CoT) sind sehr effektiv, um die Qualität zu verbessern und Illusionen zu reduzieren, aber sie brauchen niemals ein Token sein, was die Latenz erhöht.
- Durchsatz und Latenz: Bei der Ausführung großer generativer Modelle kommt es häufig vor, dass TimeToFirstToken (TTFT) und TimeBetweenTokens (TBT) mit zunehmender Auslastung zunehmen.
- Kosten: GPU-Cluster sind nicht leicht verfügbar und teuer. Wir mussten zu Beginn sogar einen Zeitplan für den Test des Produkts festlegen, da zu viele Token verbraucht würden.
- End-to-End-Streaming: Eine vollständige Antwort kann mehrere Minuten dauern, daher streamen wir alle Anfragen, um die wahrgenommene Latenz zu reduzieren. Darüber hinaus betreiben wir tatsächlich End-to-End-Streaming in der Pipeline. Beispielsweise wird die LLM-Antwort, die bestimmt, welche APIs aufgerufen werden sollen, inkrementell analysiert, und sobald die Parameter bereit sind, wird der API-Aufruf ausgelöst, ohne auf die vollständige LLM-Antwort zu warten. Die endgültige umfassende Antwort wird ebenfalls über eine Echtzeit-Messaging-Infrastruktur bis zum Kunden übermittelt und auf der Grundlage von „verantwortungsvoller KI“ und mehr schrittweise verarbeitet.
- Asynchrone, nicht blockierende Pipeline: Da die Verarbeitung von LLM-Aufrufen lange dauern kann, haben wir den Dienstdurchsatz optimiert, indem wir eine vollständig asynchrone, nicht blockierende Pipeline erstellt haben, die keine Ressourcen durch Blockierung von E/A-Threads verschwendet. Interessierte Leser können den Originaltext des Blogs lesen, um mehr über die Forschungsinhalte zu erfahren. Ursprünglicher Link: https://www.linkedin.com/blog/engineering/generative-ai/musings-on-building-a-generative-ai-product
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!