Maison > Périphériques technologiques > IA > Ingénierie rapide avancée: chaîne de pensée (COT)

Ingénierie rapide avancée: chaîne de pensée (COT)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2025-02-26 03:17:10
original
656 Les gens l'ont consulté

La capacité de raisonnement des grands modèles de langage: pensée en chaîne et autres technologies

Advanced Prompt Engineering: Chain of Thought (CoT) _Si vous n'êtes pas membre mais que vous souhaitez lire cet article, veuillez consulter ce lien d'ami. _

La pensée en chaîne (COT) existe depuis un certain temps et est techniquement une ingénierie avancée de la pointe, mais elle a encore une signification significative encore aujourd'hui quelques années après sa première introduction. Toutes les formes de COT sont souvent destinées à forcer les modèles de grandes langues à raisonner.

Après que OpenAI ait publié sa version de prévisualisation du modèle O1 en septembre de cette année, nous avons vu que la popularité autour de Cot avait augmenté.

Personne ne sait exactement comment fonctionne O1 (sauf OpenAI), qu'il s'agisse d'un système combinatoire, quelles données il utilise pour le réglage fin, que l'apprentissage du renforcement soit utilisé, ou s'il existe plusieurs modèles qui travaillent ensemble.

Peut-être qu'un modèle est responsable de la planification, l'autre est responsable de la réflexion et le troisième est responsable de l'évaluation. Mais nous savons qu'ils adoptent une sorte d'approche de raisonnement étape par étape.

Beaucoup de recherches publiques ont été effectuées autour de ce problème, et vous devrez peut-être vous y plonger. Donc, dans cet article, je couvrirai les méthodes existantes afin que vous sachiez quelles méthodes vous pouvez utiliser. Bien sûr, je vais tester différentes technologies pour voir si nous pouvons apporter des améliorations réelles.

Ensuite, si vous souhaitez faire des travaux techniques, je vous aiderai à créer un système qui examine le niveau de confiance interne du modèle pour générer des réponses.

Résultats de la recherche

Au cours des deux dernières années, de nombreux articles ont été publiés et j'en ai collecté beaucoup que j'ai trouvé ici.

Vous verrez les techniques de raisonnement dont ils discutent dans l'image ci-dessous.

La plupart des travaux proviennent directement de DeepMind ou de l'Université de Princeton. Merci à eux d'avoir ouvert autant de travail.

Advanced Prompt Engineering: Chain of Thought (CoT) Le mot COT provient du papier 2022 de DeepMind, en l'utilisant uniquement dans des invites, le dernier papier explore la réflexion deux fois avec les recherches et le COT de Monte Carlo sans invites.

Dans cet article, nous introduirons la pensée simple de la chaîne (COT), le chaînage de COT, le décodage gourmand, le COT-SC, le COT de décodage et la réflexion deux fois (tot) avec la recherche de Monte Carlo Tree.

Nous utiliserons également notre propre ensemble de données pour comprendre les améliorations que nous pouvons apporter lors de l'utilisation de ces techniques d'inférence.

Scores de base pour les modèles de grande langue

Pour comprendre comment améliorer les résultats des modèles de grande langue, nous devons d'abord établir une sorte de score de référence.

Lors de l'introduction d'un modèle, il est généralement livré avec des mesures d'évaluation. Il existe des indicateurs populaires, tels que MMLU (compréhension du langage), Bigbench (inférence), Hellaswag (raisonnement de bon sens), etc.

Advanced Prompt Engineering: Chain of Thought (CoT) Cependant, vous devez savoir que certains de ces ensembles de données sont obsolètes et peuvent être un peu contaminés.

Hugging Face a lancé un nouveau classement LLM en décembre, qui est évalué sur la base de nouveaux ensembles de données, et vous pouvez clairement voir que la plupart des modèles ont des scores beaucoup plus bas que l'ensemble de données d'origine.

Il vaut la peine de faire des recherches ici pour comprendre comment vous devriez considérer l'évaluation du modèle et quelles raisons que vous et votre organisation devriez évaluer. Avoir un ensemble de données privés interne pour les tests n'est peut-être pas la pire idée.

Mais de toute façon, j'ai extrait environ 350 questions de divers ensembles de données et quelques questions populaires que j'ai trouvées en ligne pour évaluer jusqu'à 11 modèles différents.

J'ai également besoin de comprendre à quoi ressemblent les réponses générées par ces ensembles de données et les grands modèles de langue.

J'ai donc construit mon propre script pour parcourir ces questions, puis j'ai évalué le modèle grand langage en utilisant 0 ou 1 de chaque question.

Vous pouvez m'appeler perfectionniste. Vous pouvez voir ce que j'ai trouvé ci-dessous.

Advanced Prompt Engineering: Chain of Thought (CoT) Qu'est-ce que cela nous dit? Eh bien, pas grand-chose.

J'ai utilisé des questions de Big Banc, MMLU, Putnam et des questions populaires comme "Combien de R y a-t-il dans les fraises", mais nous ne pouvons pas savoir si ces problèmes ont été entachés par eux. De plus, il s'agit d'un ensemble de données assez petit.

Cependant, nous pouvons clairement voir que les modèles plus grands fonctionnent mieux.

Fait intéressant, pouvons-nous améliorer ces scores en appliquant des méthodes qui font la raison du modèle et «réfléchir» avant la réponse.

Pensée à la chaîne (COT)

Les conseils de réflexion en chaîne (Cot)

ont été proposés par l'équipe du cerveau de DeepMind dans le papier de 2022 "Conseils de réflexion en chaîne pour indiquer l'inférence dans les modèles de grande langue".

L'idée de Cot existe depuis un certain temps.

Cependant, ce premier article est une étude sur la façon de forcer le modèle à raisonner sur les problèmes en activant la capacité de raisonnement inhérente du modèle en utilisant des stratégies de repère.

À ce moment-là, les gens provoquaient simplement la bonne manière en demandant au modèle de "penser à fond", qui pourrait être réalisé par un échantillon zéro (sans fournir des exemples) ou quelques échantillons (fournissant quelques exemples).

Advanced Prompt Engineering: Chain of Thought (CoT) Aujourd'hui, vous pouvez le faire pour divers modèles tels que Claude, Chatgpt ou d'autres modèles en ajoutant simplement "PENDANT STAP APPET" à la fin de l'invite. Si vous souhaitez essayer moins d'apprentissage par exemple, vous pouvez fournir quelques exemples dans les invites.

DeepMind rapporte qu'ils peuvent vérifier que des améliorations significatives de l'utilisation de la technologie COT sont améliorées en faisant les invites correctement.

Depuis lors, de nombreux articles ont été construits sur ces technologies, s'étendant à des chemins de plus en plus avancés.

construire la chaîne de raisonnement

Astuce que de nombreuses personnes de la communauté d'ingénieurs utilisent la technologie de style Cot pour expérimenter. J'ai collecté la plupart des référentiels que j'ai trouvés ici, donc c'est facile à trouver.

Advanced Prompt Engineering: Chain of Thought (CoT) Il n'y a pas longtemps, Benjamin Klieger a souligné quelque chose qu'il a construit une application de style rapide qui utilise Groq et Llama 3.1 70b pour induire la pensée en chaîne en décomposant davantage le processus de réflexion.

Vous pouvez trouver son application ici.

L'idée est de demander à un modèle de langue large de décomposer sa pensée en chaînes, et elle continuera de penser jusqu'à ce qu'elle soit pleine de confiance dans la réponse.

Le système continuera ensuite à générer des appels de modèle de langue importants pour chaque partie de la chaîne, plutôt que d'avoir tout le processus de réflexion en une seule réponse.

Voir l'exemple de l'application de cela à Grok-Beta, la question est "Combien de Rs y a-t-il dans les fraises?"

Le modèle lui-même met en place chaque section, le nommant et décide si une autre "idée" est nécessaire et doit continuer, ou si elle a atteint la réponse finale.

Advanced Prompt Engineering: Chain of Thought (CoT) Il s'agit toujours d'une technique de style Cot car elle a des relations linéaires, mais elle est légèrement plus avancée que de simplement demander au modèle de "penser étape par étape".

J'ai utilisé une partie de son code pour créer un script qui boucle à travers certains problèmes de référence de modèles de gros langues pour voir les améliorations que ce système produit réellement. J'ai également modifié les scripts de Claude et Grok pour évaluer cette stratégie.

Vous verrez l'amélioration en pourcentage ci-dessous.

LLAMA 3.1 70B a réalisé la meilleure amélioration dans les trois premières catégories. Grok fait pire sur la pandémie (tout comme Haiku).

Advanced Prompt Engineering: Chain of Thought (CoT) L'ensemble de données Putnam est des mathématiques avancées, et peu de modèles de gros langues peuvent bien faire à cet égard, donc lorsque Claude Sonnet 3.5 a pu surpasser O1-Preview (O1-Preview) à 68,75% dans ces chaînes de lit, j'ai été surpris quand il était 63%).

Dans l'ensemble, l'utilisation du COT par Sonnet s'est améliorée de 81% en mathématiques avancées.

Rappelez-vous, j'utilise un très petit ensemble de données ici, c'est juste pour comprendre ce qu'ils font bien et si nous pouvons améliorer le score. Il ne nous dit rien de spécifique sans tester sur un ensemble de données plus large.

Cependant, j'ai également observé que si des modèles plus petits commencent à sur-analyser des problèmes simples, cela peut produire des résultats moins élevés. Cela est évident sur le numéro «plus facile» populaire de Grok-Beta et Haiku.

Les problèmes non mathématiques plus faciles peuvent ne pas bénéficier des mêmes avantages du COT.

Nous devons également nous rappeler que nous pouvons pousser des modèles pour travailler dans leurs capacités, mais dépasser rarement leurs capacités. S'il ne connaît pas la réponse, il ne le sait pas.

réglage fin pour le raisonnement

Je voudrais mentionner le réglage fin avant de continuer.

Une zone très intéressante essaie de régler des modèles plus petits sur l'ensemble de données COT pour améliorer leur précision, ce qui les rend atteint la précision des modèles 1 à 2 fois plus grand.

J'ai trouvé plusieurs ressources, mais malheureusement, je n'ai pas trouvé d'améliorations significatives au modèle de référence qui, je pense, méritent une analyse appropriée.

Vous verrez le modèle open source que j'ai trouvé ci-dessous.

Advanced Prompt Engineering: Chain of Thought (CoT) Vous verrez l'ensemble de données de COT open source que j'ai également trouvé ci-dessous.

Advanced Prompt Engineering: Chain of Thought (CoT) Cela ne veut pas dire que le réglage fin pour le COT ne fonctionnera pas, il faut simplement construire un meilleur modèle bien documenté.

Si vous souhaitez essayer de vous affiner vous-même, consultez ces ressources. Je crois qu'il y a plus de ressources.

Technologie de génération alternative

Jusqu'à présent, nous avons étudié la technique linéaire des modèles générant des sorties dans un fil (ou une chaîne).

Mais peu de temps après la publication du premier papier COT, DeepMind a proposé une technique plus avancée appelée pensée auto-cohérente en chaîne (COT-SC).

Cette technique crée plusieurs chemins d'inférence et utilise une méthode pour sélectionner la réponse (ou le chemin) la plus cohérente à la fin.

Advanced Prompt Engineering: Chain of Thought (CoT) Ils rapportent que l'utilisation de cette méthode a permis d'améliorer environ 1 à 8% du raisonnement arithmétique.

Une méthode qui vient d'être proposée cette année suit la même idée d'utiliser plusieurs chemins, mais n'utilise aucun indice.

Vous vous souvenez de l'idée du décodage gourmand dont j'ai discuté dans la section précédente?

Cette approche est similaire, sauf qu'elle force non seulement le marqueur le plus probable, mais examine également les scores de confiance de toute la réponse.

Advanced Prompt Engineering: Chain of Thought (CoT) Pour ce faire, le système démarre d'abord un certain nombre de k marqueurs de niveau supérieur initial, puis génère un chemin à partir de chaque marqueur. Une fois la réponse générée, il calcule le score de confiance en analysant la probabilité (logit) de chaque marqueur dans différents chemins.

Renvoie la réponse (ou le chemin) avec la probabilité la plus élevée.

Cette méthode est appelée lit de lit de décodage et est proposée par DeepMind. L'idée de cette approche est de voir la confiance interne du modèle dans la réponse de retour.

Mais que se passe-t-il s'il n'a pas la connaissance inhérente pour répondre à la question? Comme le COT-SC, cette approche dépend en grande partie de la question de savoir si le modèle a la bonne réponse en premier lieu.

Cependant, cela ne signifie pas que nous ne devons pas le tester.

Pour toutes ces technologies, il existe différentes implémentations pratiques en open source, et celle-ci ne fait pas exception.

Il est donc facile pour moi de construire un système pour tester ces méthodes et utiliser le plus petit modèle open source llama 3 8b pour comparer lequel est le meilleur.

Advanced Prompt Engineering: Chain of Thought (CoT) Merci à Codelion pour l'open source de son implémentation, ce qui me permet de me reproduire facilement.

Afficher les résultats ci-dessus, vous pouvez voir que nous utilisons du COT de décodage pour produire évidemment les meilleurs résultats par rapport à d'autres méthodes telles que l'entropie ou l'utilisation de décodage gourmand pour ce modèle particulier uniquement.

Nous créerons une API dans la section technique qui utilisera ce système de lit de lit de décodage afin que vous puissiez comprendre comment cela fonctionne.

Technologie mise à jour

C'est difficile à suivre, mais la recherche est allée bien au-delà de l'utilisation de COT simple pour le raisonnement dans les zones à risque plus élevé.

Je ne couvrirai pas toutes ces stratégies pour le moment, car c'est un autre sujet, mais je veux mentionner la réflexion deux fois (tot), surtout lorsqu'elle est utilisée en conjonction avec la recherche Monte Carlo.

TOT a été proposé par l'Université de Princeton et DeepMind à la fin de 2023, mais est généralement basé sur des méthodes d'inférence basées sur les arbres.

réfléchir à deux fois avant de faire (tot) est quelque peu différent de la pensée auto-cohérente en chaîne (COT-SC). Au lieu de générer plusieurs chemins et de les évaluer après leur génération, il évalue dynamiquement les idées que TOT a émergées au fur et à mesure de sa progression.

Advanced Prompt Engineering: Chain of Thought (CoT) Considérez-le comme 4 personnes différentes travaillant ensemble pour résoudre le problème. À chaque étape, ils présentent leurs idées et évaluent conjointement quelles idées sont les plus prometteuses. Si le raisonnement semble être défectueux, ils partent, donc d'autres continueront à travailler sur leurs problèmes.

Enfin, les personnes qui peuvent raisonner correctement pourront fournir leurs réponses.

Cela permet au modèle de réduire dynamiquement des chemins qui semblent mauvais, en se concentrant sur des fils plus prometteurs, en économisant potentiellement des ressources.

Cependant, on peut se demander comment le système décide quel thread est correct et quel thread ne va pas? Ceci est déterminé par le modèle lui-même.

C'est pourquoi les extensions comme la recherche de Monte Carlo Tree (MCTS) fournissent un mécanisme d'évaluation plus impartial. MCTS permet la rétro-propagation, ce qui signifie qu'il peut revisiter et améliorer les premières étapes en fonction de nouvelles informations, tandis qu'un simple TOT ne fera qu'avant.

Pour 4 caisses de résolution de problèmes, MCTS permettront aux gens d'avoir des idées moins qu'idéales et peuvent toujours rester dans le jeu plus longtemps. La méthode d'évaluation sera différente.

MCTS peut simuler plusieurs chemins futurs, évaluer leur potentiel et revenir en arrière pour améliorer la prise de décision précoce. Il introduit des mesures externes (récompenses), plutôt que de s'appuyer entièrement sur le modèle.

Des statistiques comme UCB (limite de confiance supérieure) utilisent ces récompenses pour décider quelles idées explorer davantage ou revoir.

MCTS est un peu plus compliqué qu'un simple TOT et peut être écrit séparément.

L'économie de COT

Alors, jusqu'à présent, vous pourriez penser, eh bien, nous avons quelques améliorations, pourquoi ne pas toujours utiliser une forme de pensée en chaîne plus avancée?

ok, tout d'abord, le coût (et le temps de penser).

Pour les chaînes que j'ai appliquées à différents modèles, j'ai calculé le nombre moyen d'étapes d'inférence.

Advanced Prompt Engineering: Chain of Thought (CoT) Regardez ceci, vous payez 8 fois plus par question en moyenne. Pour Sonnet, qui fonctionne le mieux sur les problèmes de mathématiques avancés, vous paierez jusqu'à 15 $ par 500 questions.

Cela peut ne pas sembler beaucoup, mais une fois que vous utilisez ce système pour générer des réponses pour votre service client ou votre équipe tous les jours, vous dépenserez des centaines, voire des milliers de dollars par mois.

Dans certains cas, il est logique d'utiliser des méthodes de raisonnement avancées, mais pas toujours.

Il peut y avoir un cas maintenant que le réglage fin est effectué pour le COT, éliminant essentiellement la nécessité de générer plusieurs appels, mais je n'ai vu aucun modèle open source bien fait jusqu'à présent.

Il y a des compromis ici. Nous voulons augmenter le temps de réflexion afin que le modèle ait suffisamment de temps pour raisonner efficacement, mais cela augmentera également la frustration et le coût des utilisateurs.

construire un système intelligent

En septembre de cette année, un article intitulé "To COT OU NOT TO COT?"

Nous voyons cela ici aussi, avec des améliorations limitées aux questions simples.

Lorsque nous appliquons ces chaînes, nous devons attendre plus longtemps pour obtenir une réponse. Cela en vaut-il la peine? Il convient de noter, cependant, que toutes ces stratégies peuvent être trop complexes pour des tâches simples.

C'est pourquoi vous pouvez vous sentir frustré lorsque vous utilisez l'O1 d'OpenAI dans la plupart des questions, et les réponses simples sont généralement assez bonnes.

Mais si vous construisez un système qui doit vous assurer que la réponse est correcte, il pourrait être une bonne idée de prendre une forme de lit de lit ou de décodage.

Il peut être utile d'utiliser un modèle pour définir la première étape en fonction de la difficulté de la question, puis analyser s'il est convaincu qu'il peut d'abord y répondre. Laissez ensuite le modèle inférer (à travers la chaîne) et à la fin, laissez un autre modèle marquer la réponse.

Remarque

Y a-t-il d'autres cadres en plus de ce que j'ai introduit ici? Absolument, mais je ne présente que ceux qui, je pense, sont intéressants à comprendre. Cela vous donnera une idée des progrès que nous avons réalisés sans surcharge d'informations.

La plupart des ingénieurs d'IA connaissent bien ces cadres, mais malheureusement, l'étude ne s'est pas propagée aussi rapidement que prévu au public.

Apprendre à mettre en œuvre le COT devrait faire partie des bases de la construction d'applications LLM, même si vous décidez de ne pas les utiliser.

Travail technique

Laissez-nous le mettre en pratique.

Nous implémenterons le système de lit de lit de décodage à l'aide du modèle open source LLAMA 3.1 8B.

La méthode de décodage du COT provient du papier "Raisonnement de pensée en chaîne sans astuces" publié cette année, et l'implémentation a été obtenue à partir de codelion trouvée ici. J'ai ajouté quelques fonctionnalités afin que le système vérifie le niveau de difficulté pour déterminer le nombre de chemins (k).

Puisque j'ai utilisé Modal la dernière fois, nous pouvons utiliser Beam cette fois, qui est également une plate-forme de service LLM sans serveur. Ils offrent un niveau gratuit de 15 heures, donc c'est gratuit. Le script que nous utiliserons peut être trouvé ici.

Si vous préférez utiliser Colab pour les tests, vous pouvez exécuter ce script ici.

Le résultat devrait être un point de terminaison de l'API qui nous permet de poser une question, qui évaluera la difficulté, puis effectuera un lit de lit de décodage sur la question et retournera la réponse suivante.

Advanced Prompt Engineering: Chain of Thought (CoT) Vous verrez le nombre de demandes de modèles de gros langues et comment le système classe le problème. Vous remarquerez également que le système est assez lent car il génère plusieurs réponses pour l'évaluation.

Cependant, si nous essayons le GROQ avec le même modèle 8B, nous constaterons qu'il ne répond pas correctement à la question.

Advanced Prompt Engineering: Chain of Thought (CoT) La bonne réponse est de 27,3, et des points supplémentaires peuvent être obtenus pour du carburant supplémentaire.

concernant la réponse finale, je remarquerai que bien qu'un modèle aussi petit ne puisse nous amener que jusqu'à présent. Malheureusement, l'utilisation d'un modèle plus large nécessite plus de travail car nous devons le stocker quelque part, ce qui peut être coûteux.

Pour configurer ce système, je prendrai 5 minutes de votre temps. Vous pouvez suivre les instructions ci-dessous.

Face étreint

Nous aurons d'abord accès au modèle que nous utiliserons. Pour utiliser le modèle LLAMA 3 8B, vous devez y avoir accès par le visage étreint.

Si vous avez déjà un compte de visage étreint, ce processus est généralement très rapide. Si vous n'avez pas de compte, vous pouvez créer un compte gratuitement et accéder à la carte modèle.

Advanced Prompt Engineering: Chain of Thought (CoT) Une fois que nous entrons sur la carte du modèle, nous pourrions aussi bien tester le modèle et voir quelle question nous pouvons utiliser pour tester ce nouveau système.

Advanced Prompt Engineering: Chain of Thought (CoT) Il s'agit d'une question assez standard, je l'ai déjà utilisée dans mon évaluation, mais le modèle standard de LLAMA 3 8B est difficile à gérer.

Après avoir accès, accédez aux paramètres pour obtenir le jeton d'accès.

Advanced Prompt Engineering: Chain of Thought (CoT) Enregistrez ce jeton quelque part parce que nous devons le régler dans le faisceau.

beam.cloud

Si vous n'avez pas de compte de faisceau, vous devrez créer un compte (sauf si vous choisissez d'utiliser directement Colab). Bien sûr, vous pouvez également créer votre propre système sur différentes plates-formes.

Si vous décidez d'utiliser Beam, obtenez la touche API à partir de son tableau de bord.

Advanced Prompt Engineering: Chain of Thought (CoT) ### Configuration de l'environnement

Maintenant, nous pouvons commencer. Ouvrez un nouveau terminal et créez un nouveau répertoire et CD à ce répertoire.

<code>mkdir my-testing-dir
cd my-testing-dir</code>
Copier après la connexion
Copier après la connexion

Clone le référentiel que j'ai configuré.

<code>git clone https://github.com/ilsilfverskiold/decoding-cot-beam.git </code>
Copier après la connexion
Copier après la connexion

Créez un environnement virtuel (vous devez installer Python pour cela).

<code>python3 -m venv .venv && source .venv/bin/activate</code>
Copier après la connexion

Installe le faisceau et authentifiez-vous.

<code>pip install beam-client
beam configure default --token "your_token_here"</code>
Copier après la connexion

Assurez-vous de configurer le hf_token que nous avons obtenu en étreignant le visage auparavant.

<code>beam secret create HF_TOKEN</code>
Copier après la connexion

Vous pouvez fournir des services directement à partir d'ici, mais introduisons brièvement le code.

Si vous n'êtes pas intéressé, vous pouvez ignorer la section suivante.

Code

Il y a trois fichiers Python dans le dossier racine.

<code>│
├── app.py
├── question_classifier.py
└── cot_decoder.py </code>
Copier après la connexion

Dans app.py, nous avons du code de Beam qui nous permet de télécharger le poids du modèle à partir de la face étreinte (au démarrage) et de le mettre en cache à travers le volume. Cela signifie que la première fois que nous l'exécutons, cela peut être maladroit et lent.

Le faisceau nous permet également de charger des packages lorsque le script s'exécute à distance sur la poutre.

Ce qui suit est le début d'App.py avec mon commentaire:

<code>[...]
# 这确保了这些包仅在脚本在 Beam 上远程运行时加载
if env.is_remote():
    import torch
    from transformers import AutoModelForCausalLM, AutoTokenizer
    from cot_decoder import cot_decode
    from question_classifier import get_k_value

# 模型参数和在卷中缓存的位置
MODEL_NAME = "meta-llama/Meta-Llama-3-8B-Instruct"
CACHE_PATH = "./cached_models2"

# 加载模型和标记器
def load_models():
    tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, cache_dir=CACHE_PATH)
    tokenizer.pad_token = tokenizer.eos_token
    model = AutoModelForCausalLM.from_pretrained(
        MODEL_NAME, device_map="auto", torch_dtype=torch.float16, cache_dir=CACHE_PATH
    )
    return model, tokenizer

# 定义端点
# 您可以指定 CPU/内存/GPU + 图像
@endpoint(
    secrets=["HF_TOKEN"],
    on_start=load_models, # 启动时加载模型以进行缓存
    name="meta-llama-3-8b-instruct",
    cpu=2,
    memory="32Gi",
    gpu="A100-40",
    image=Image(
        python_version="python3.9",
        python_packages=["torch", "transformers", "accelerate"],
    ),
    volumes=[Volume(name="cached_models2", mount_path=CACHE_PATH)],
)
[...]</code>
Copier après la connexion

Nous définissons un @endpoint avec les ressources que nous souhaitons utiliser (GPU A100 et 2 cœurs CPU). Vous verrez également que nous chargeons le modèle au démarrage.

Après avoir reçu l'appel de l'API, nous exécuterons la fonction generate_text ().

<code>[...]

def generate_text(context: Dict[str, Any], **inputs: Dict[str, Any]) -> Dict[str, Any]:
    # 从 on_start 检索模型和标记器
    model, tokenizer = context.on_start_value

    # 根据问题的复杂性获取自适应 k 值
    classification_type = None
    if k is None:
        k, classification_type = get_k_value(messages, context)

    try:
        output_text, confidence, llm_calls = cot_decode(
            model=model,
            tokenizer=tokenizer,
            messages=messages,
            k=k,  # 使用自适应 k 值
            **inputs  # 将任何其他参数直接传递给 cot_decode
        )

        # 返回输出
        return {
            "output": output_text,
            "confidence": confidence,
            "complexity_info": {
                "k": k,
                "total_calls": llm_calls + 1,  # + 分类调用
                "classification": classification_type
            }
        }
    except Exception as e:
        return {"error": f"Error during generation: {str(e)}"}</code>
Copier après la connexion

Nous avons une fonction qui utilise d'abord get_k_value () pour calculer K en fonction de la complexité. Mais la fonction clé ici est cot_decode (), qui effectuera une réflexion sur la chaîne de décodage sur notre problème.

Cette fonction recevra des messages, des modèles et des tokeniseurs et passera le premier appel initial pour prédire K éventuelles balises suivantes en utilisant la logit la plus élevée.

Logit est le score d'origine attribué par le modèle pour chaque marqueur suivant possible, nous faisant connaître le score de confiance du modèle pour chaque option.

Celles-ci serviront de points de départ potentiels pour générer plusieurs réponses. Pour chacun de ces points de départ ou des marques de départ, nous générons une réponse complète, puis la notions dans son ensemble.

Rappelez-vous le décodage gourmand dont nous avons discuté? Si la probabilité de la balise suivante est élevée, nous ne le générons que? Cela examinera la phrase entière en calculant les scores de confiance qui reflètent le degré auquel le modèle détermine la réponse complète, plutôt que de la marquer un par un.

Après avoir obtenu le chemin avec le score de confiance le plus élevé, il sera retourné avec la valeur k.

Il existe d'autres options, telles que l'ajout de bool Aggregate_answers lorsque le modèle renvoie plusieurs réponses de confiance élevée, mais nous ne l'utilisons pas ici.

Exécutons-le

Maintenant que j'ai brièvement expliqué le code, nous l'exécuterons pour voir comment cela fonctionne.

Si vous avez tout configuré correctement, vous devriez être en mesure d'appeler simplement servir.

<code>beam serve app.py:generate_text</code>
Copier après la connexion

Si chronométré, exécutez à nouveau et il mettra en cache le modèle pour vous.

Pour voir où le modèle est stocké, vous pouvez accéder au volume dans la plate-forme Beam.cloud.

Une fois qu'il sera exécuté, vous verrez ce qui suit.

Advanced Prompt Engineering: Chain of Thought (CoT) Cela signifie qu'il est prêt pour les tests.

Vous pouvez démarrer Postman ou utiliser Curl (ce qui signifie que vous exécutez un appel au point de terminaison dans une fenêtre de terminal)

<code>mkdir my-testing-dir
cd my-testing-dir</code>
Copier après la connexion
Copier après la connexion

La réponse doit être similaire à ce qui suit.

Advanced Prompt Engineering: Chain of Thought (CoT) Comme vous pouvez le voir, il fonctionne un peu mieux.

Si vous souhaitez déployer le modèle, vous pouvez simplement exécuter Deploy.

<code>git clone https://github.com/ilsilfverskiold/decoding-cot-beam.git </code>
Copier après la connexion
Copier après la connexion

Je viens de l'utiliser pour le tester, donc je peux le désactiver maintenant.

J'espère que cet article est éducatif et intéressant, et vous gagnerez quelque chose.

Si vous souhaitez afficher les résultats pour les modèles de grands langues et les technologies COT, vous pouvez afficher ce tableau et toutes les autres ressources que vous pouvez trouver dans ce référentiel.

Si cela vous aide, veuillez laisser un commentaire et applaudir.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal