Un bon enseignant s'adapte au niveau de l'élève

Une nouvelle méthode d'autodistillation qui entraîne conjointement l'enseignant et l'élève afin d'améliorer les performances du modèle et l'efficacité de l'entraînement sur des tâches complexes de raisonnement et des tâches agentiques.

AuteursPerplexity Research & NVIDIA

Introduction

L'apprentissage par renforcement (RL, Reinforcement Learning) est largement utilisé lors du post-entraînement des modèles de langage pour améliorer leurs capacités sur des tâches complexes de raisonnement et des tâches agentiques à long horizon.

Dans une configuration classique, le modèle effectue plusieurs tentatives sur une tâche, reçoit une récompense de résultat pour chacune d'elles et apprend à privilégier les actions effectuées lors des tentatives les mieux récompensées. Cependant, une récompense de résultat unique fournit un signal d'apprentissage parcimonieux, qui ne permet pas de distinguer les actions intermédiaires ayant favorisé le résultat de celles qui l'ont compromis. Cette parcimonie limite l'efficacité en échantillons, en particulier sur les tâches agentiques difficiles, où les tentatives sont longues et les réussites rares.

Une approche répandue pour remédier à cette parcimonie est la distillation on-policy (OPD, On-Policy Distillation), qui s'appuie sur un modèle enseignant plus performant pour guider token par token les propres tentatives de l'élève, fournissant ainsi des récompenses beaucoup plus denses. Cependant, enseigner est une compétence à part entière. Un modèle doué pour résoudre une tâche n'est pas forcément doué pour l'enseigner, car ses retours peuvent dépasser les capacités actuelles de l'élève. D'où l'idée d'entraîner non seulement l'élève à imiter l'enseignant, mais aussi l'enseignant à fournir à l'élève des conseils mieux adaptés.

Nous proposons une telle méthode : Joint On-policy Learning and Teaching (JOLT). En nous appuyant sur l'autodistillation on-policy (OPSD, On-Policy Self-Distillation), nous utilisons un modèle unique dans deux rôles : un enseignant ayant accès à des informations privilégiées, comme des solutions vérifiées, et un élève qui n'y a pas accès. Nous entraînons ces deux rôles conjointement. L'élève suit l'objectif de distillation standard. L'objectif de l'enseignant l'incite à fournir des retours qui font évoluer l'élève dans la même direction que le RL appliqué à la propre récompense de l'élève. Ensemble, ces objectifs entraînent l'enseignant à s'adapter au niveau de l'élève et aident l'élève à apprendre à partir de conseils à sa portée.

Nos expériences montrent une amélioration des performances du modèle comme de l'efficacité de l'entraînement sur un éventail de tâches de raisonnement mathématique, de programmation et de tâches agentiques.

Des récompenses parcimonieuses à une rétroaction dense

Dans sa forme la plus élémentaire, le RL à récompense de résultat utilise l'objectif de retour espéré :

JRL(θ)=Eτ∼πθ[R(τ)]\mathcal{J}_{\mathrm{RL}}(\theta) = \mathbb{E}_{\tau\sim\pi_\theta}\left[R(\tau)\right]

Ici, τ\tau est une trajectoire qui suit une politique πθ\pi_\theta, et R(τ)R(\tau) est le retour de cette trajectoire. Le gradient de politique correspondant est :

gRL(θ)=∇θJRL(θ)=Eτ∼πθ[∑tR(τ) ∇θlog⁡πθ(at∣st)]g_{\mathrm{RL}}(\theta) = \nabla_\theta \mathcal{J}_{\mathrm{RL}}(\theta) = \mathbb{E}_{\tau\sim\pi_\theta}\left[\sum_t R(\tau)\,\nabla_\theta\log\pi_\theta(a_t\mid s_t)\right]

où sts_t et ata_t représentent respectivement l'état et l'action au pas de temps tt. Pour réduire la variance des estimations fondées sur des échantillons, le gradient est souvent exprimé ainsi :

gRL(θ)=Eτ∼πθ[∑tAπθ(st,at) ∇θlog⁡πθ(at∣st)]g_{\mathrm{RL}}(\theta) = \mathbb{E}_{\tau\sim\pi_\theta}\left[\sum_t A^{\pi_\theta}(s_t,a_t)\,\nabla_\theta\log\pi_\theta(a_t\mid s_t)\right]

où l'avantage Aπθ(st,at)A^{\pi_\theta}(s_t, a_t) mesure le retour excédentaire espéré de l'action ata_t par rapport à la politique actuelle dans l'état sts_t. Une approche possible, Group Relative Policy Optimization (GRPO), consiste à estimer l'avantage en comparant le retour de chaque trajectoire au retour moyen du groupe échantillonné pour le même prompt.

Cependant, même avec ces ajustements, l'apprentissage par renforcement à récompense de résultat souffre d'une supervision parcimonieuse, en particulier sur les tâches difficiles à long horizon. Un nombre croissant de travaux s'attaquent à ce problème en exploitant des sources d'information supplémentaires afin de fournir un signal d'apprentissage plus dense.

La distillation on-policy (OPD) est l'une de ces approches. Plutôt que d'apprendre uniquement à partir d'une récompense finale, l'OPD échantillonne des trajectoires de l'élève et évalue chaque action échantillonnée selon un enseignant plus performant. Pour une politique enseignante πT\pi_T et un instantané figé θˉ\bar{\theta} des paramètres de l'élève utilisé pour générer les trajectoires, le gradient local évalué en θ=θˉ\theta = \bar{\theta} est :

gOPD(θˉ;πT)=∇θJOPD(θ;θˉ,πT)∣θ=θˉ=−∇θEτ∼πθˉ ⁣[∑tKL ⁣(πθ(⋅∣st) ∥ πT(⋅∣st))]∣θ=θˉ=Eτ∼πθˉ[∑t(log⁡πT(at∣st)−log⁡πθˉ(at∣st)) ∇θˉlog⁡πθˉ(at∣st)]\begin{aligned}g_{\mathrm{OPD}}(\bar\theta;\pi_T) &= \left.\nabla_\theta \mathcal{J}_{\mathrm{OPD}}(\theta;\bar\theta,\pi_T)\right|_{\theta=\bar\theta}\\ &= -\left.\nabla_\theta \mathbb{E}_{\tau\sim\pi_{\bar\theta}}\!\left[\sum_t \mathrm{KL}\!\left(\pi_\theta(\cdot\mid s_t)\,\middle\|\,\pi_T(\cdot\mid s_t)\right)\right]\right|_{\theta=\bar\theta}\\ &= \mathbb{E}_{\tau\sim\pi_{\bar\theta}}\left[\sum_t \bigl(\log\pi_T(a_t\mid s_t)-\log\pi_{\bar\theta}(a_t\mid s_t)\bigr)\,\nabla_{\bar\theta}\log\pi_{\bar\theta}(a_t\mid s_t)\right]\end{aligned}

Ici, JOPD(θ;θˉ,πT)\mathcal{J}_{\mathrm{OPD}}(\theta;\bar\theta,\pi_T) est l'objectif de distillation par KL inverse négative. La politique enseignante et les préfixes échantillonnés sont maintenus fixes lors de la différentiation. Le rapport des log-probabilités entre l'enseignant et l'élève fournit un signal d'apprentissage dense à chaque état visité et remplace l'avantage comme pondération au niveau des actions.

L'autodistillation on-policy (OPSD) élimine en outre la nécessité d'un modèle enseignant distinct. La politique de l'élève sert elle-même d'enseignant lorsqu'elle reçoit des informations privilégiées, comme une solution vérifiée, une rétroaction ou une trace de référence. Cependant, l'OPSD entraîne uniquement l'élève à imiter l'enseignant ; aucun mécanisme ne garantit que l'enseignant fournit un signal utile à l'élève.

Apprentissage et enseignement conjoints on-policy

JOLT étend l'OPSD en entraînant un modèle partagé à la fois comme enseignant, qui fournit des conseils mieux adaptés, et comme élève, qui en tire parti. L'enseignant, mieux informé, apprend à partir des récompenses de résultat avec une régularisation KL vers l'élève, tandis que l'élève, sans accès privilégié, apprend à partir du signal de distillation dense de l'enseignant. La mise à jour de l'enseignant utilise des tentatives générées par l'enseignant, tandis que celle de l'élève utilise des tentatives générées par l'élève et évaluées par l'enseignant. JOLT+ complète en outre le signal de distillation de l'élève par des récompenses de résultat.

Une seule politique apprend à la fois en tant qu'enseignant et en tant qu'élève.

Entraîner l'enseignant

Définir le rôle de l'enseignant

De meilleures performances de l'enseignant ne se traduisent pas nécessairement par des mises à jour utiles pour l'élève. Un enseignant peut utiliser des informations privilégiées pour exploiter des raccourcis inaccessibles à l'élève, attribuer une probabilité élevée à des trajectoires peu probables pour l'élève, ou fournir des conseils peu fiables après des erreurs dans des préfixes générés par l'élève. La qualité de l'enseignant doit donc être déterminée par le signal d'apprentissage qu'il fournit à l'élève, plutôt que par sa propre récompense sur la tâche.

Nous qualifions un enseignant de cohérent avec la récompense si la mise à jour par distillation qu'il induit chez l'élève correspond au gradient de politique de la récompense espérée de l'élève sur la tâche, à un facteur d'échelle positif près. Plus précisément, un enseignant cohérent avec la récompense πT⋆\pi_T^\star doit satisfaire :

gOPD(θˉ;πT⋆)=1βT gRL(θˉ)g_{\mathrm{OPD}}(\bar\theta;\pi_T^\star) = \frac{1}{\beta_T}\,g_{\mathrm{RL}}(\bar\theta)

où βT\beta_T est un scalaire positif. Comme dans la section précédente, gOPDg_{\mathrm{OPD}} est le gradient local de l'OPD, θˉ\bar\theta est un instantané figé des paramètres θ\theta du modèle élève, et gRLg_{\mathrm{RL}} est le gradient de politique de l'objectif de retour espéré.

Un enseignant satisfaisant cette condition est le suivant :

πT⋆(a∣s,c)=1Z(s) πθˉ(a∣s)exp⁡ ⁣(1βTAπθˉ(s,a))\pi_T^\star(a\mid s,c) = \frac{1}{Z(s)}\,\pi_{\bar\theta}(a\mid s)\exp\!\left(\frac{1}{\beta_T}A^{\pi_{\bar\theta}}(s,a)\right)

Ici, Aπθˉ(s,a)A^{\pi_{\bar{\theta}}}(s, a) représentent les avantages de continuation de l'élève et Z(s)Z(s) est une constante de normalisation qui garantit une distribution de probabilité valide.

De la cible idéale à un objectif pour l'enseignant

Nous pouvons entraîner un enseignant vers la cible idéale πT⋆\pi_T^\star en minimisant sa divergence KL par rapport à celle-ci. Pour un élève et un état ss fixés, on obtient :

min⁡πT KL ⁣(πT(⋅∣s,c) ∥ πT⋆(⋅∣s,c))\min_{\pi_T}\,\mathrm{KL}\!\left(\pi_T(\cdot\mid s,c)\,\middle\|\,\pi_T^\star(\cdot\mid s,c)\right)

En substituant l'expression de πT⋆\pi_T^\star, on obtient un problème de maximisation équivalent :

max⁡πT{Ea∼πT(⋅∣s,c) ⁣[Aπθˉ(s,a)]−βT KL ⁣(πT(⋅∣s,c) ∥ πθˉ(⋅∣s))}\max_{\pi_T}\Biggl\{\mathbb{E}_{a\sim\pi_T(\cdot\mid s,c)}\!\left[A^{\pi_{\bar\theta}}(s,a)\right]-\beta_T\,\mathrm{KL}\!\left(\pi_T(\cdot\mid s,c)\,\middle\|\,\pi_{\bar\theta}(\cdot\mid s)\right)\Biggr\}

Cet objectif incite l'enseignant à choisir des actions offrant un avantage plus élevé pour l'élève, tout en restant proche de la distribution des actions de l'élève. Le paramètre βT\beta_T contrôle l'intensité de cette pénalité : des valeurs plus élevées maintiennent l'enseignant plus proche du comportement actuel de l'élève, tandis que des valeurs plus faibles lui permettent de privilégier plus agressivement les actions à fort avantage.

Un objectif de substitution pratique

Cet objectif dépend de la façon dont l'élève poursuivrait après chaque action, mais ces avantages de continuation de l'élève sont généralement indisponibles. Nous utilisons donc comme substitut pratique les retours centrés issus des propres trajectoires de l'enseignant. Le terme de récompense incite l'enseignant à résoudre la tâche, tandis que le terme KL décourage les écarts par rapport à la distribution actuelle des actions de l'élève. Bien que le terme KL maintienne l'enseignant proche de l'élève, cette substitution n'est pas exacte, car les retours de l'enseignant ne correspondent pas nécessairement aux avantages de continuation de l'élève.

JT(θ;θˉ)=Eτ∼πθˉ(⋅∣c)[ ∑t(sg⁡[A^T(τ)]log⁡πθ(at∣st,c)−βT KL(πθ(⋅∣st,c) ∥ sg⁡[πθˉ(⋅∣st)]))]\begin{aligned}\mathcal{J}_T(\theta;\bar\theta) = \mathbb{E}_{\tau\sim\pi_{\bar\theta}(\cdot\mid c)}\Biggl[\,\sum_t \Bigl(&\operatorname{sg}\bigl[\widehat{A}_T(\tau)\bigr]\log\pi_\theta(a_t\mid s_t,c)\\ &-\beta_T\,\mathrm{KL}\bigl(\pi_\theta(\cdot\mid s_t,c)\,\big\|\,\operatorname{sg}[\pi_{\bar\theta}(\cdot\mid s_t)]\bigr)\Bigr)\Biggr]\end{aligned}

Ici, A^T(τ)\widehat{A}_T(\tau) est le retour de la tentative de l'enseignant moins le retour moyen des tentatives générées par l'enseignant dans son groupe. L'opérateur sg⁡\operatorname{sg} désigne l'arrêt du gradient (stop-gradient) : son argument est traité comme fixe lors de la différentiation, tout comme les préfixes échantillonnés et la référence de l'élève.

Entraîner l'élève

La mise à jour de l'élève est une mise à jour OPSD standard. L'élève génère des trajectoires à partir de la tâche. Le même modèle évalue ensuite chaque token échantillonné avec les informations privilégiées en contexte. L'objectif de l'élève pénalise la divergence KL inverse entre l'élève et cet enseignant privilégié à chaque état visité par l'élève :

JOPSD(θ;θˉ)=− Eτ∼πθˉ[∑tKL(πθ(⋅∣st) ∥ sg⁡[πθˉ(⋅∣st,c)])]\mathcal{J}_{\mathrm{OPSD}}(\theta;\bar\theta) = -\,\mathbb{E}_{\tau\sim\pi_{\bar\theta}}\left[\sum_t \mathrm{KL}\bigl(\pi_\theta(\cdot\mid s_t)\,\big\|\,\operatorname{sg}[\pi_{\bar\theta}(\cdot\mid s_t,c)]\bigr)\right]

Ainsi, les tokens privilégiés par l'enseignant sont renforcés, tandis que ceux que l'enseignant juge moins probables que l'élève sont pénalisés.

Synthèse

La combinaison des objectifs de l'enseignant et de l'élève donne l'objectif d'entraînement conjoint :

JJOLT(θ;θˉ)=JT(θ;θˉ)+βS JOPSD(θ;θˉ)\mathcal{J}_{\mathrm{JOLT}}(\theta;\bar\theta) = \mathcal{J}_T(\theta;\bar\theta) + \beta_S\,\mathcal{J}_{\mathrm{OPSD}}(\theta;\bar\theta)

βS\beta_S est un scalaire qui détermine le poids de la perte de distillation de l'élève dans la mise à jour combinée.

Le résultat de cohérence avec la récompense caractérise la mise à jour par distillation de l'élève pour un enseignant donné. JOLT s'appuie sur ce principe pour guider l'entraînement conjoint, en combinant les objectifs de l'enseignant et de l'élève afin de mettre à jour leurs paramètres partagés.

JOLT+ ajoute également à la mise à jour de l'élève sa propre récompense de résultat. Le retour centré de chaque trajectoire de l'élève est ajouté au signal de distillation, ce qui combine la supervision dense de l'enseignant et une rétroaction directe sur le résultat des trajectoires de l'élève. L'objectif de l'enseignant reste inchangé ; on peut donc écrire :

JJOLT+(θ;θˉ)=JT(θ;θˉ)+βS JOPSD(θ;θˉ)+Eτ∼πθˉ ⁣[∑tsg⁡[A^S(τ)] log⁡πθ(at∣st)]\begin{aligned}\mathcal{J}_{\mathrm{JOLT+}}(\theta;\bar\theta) &= \mathcal{J}_T(\theta;\bar\theta)+\beta_S\,\mathcal{J}_{\mathrm{OPSD}}(\theta;\bar\theta)\\ &\quad+\mathbb{E}_{\tau\sim\pi_{\bar\theta}}\!\left[\sum_t \operatorname{sg}[\widehat{A}_S(\tau)]\,\log\pi_\theta(a_t\mid s_t)\right]\end{aligned}

Ici, A^S(τ)\widehat{A}_S(\tau) est le retour de la trajectoire de l'élève moins le retour moyen de son groupe de trajectoires générées par l'élève.

Dans les deux variantes, chaque rôle apprend à partir de trajectoires générées dans son propre contexte, et les deux rôles mettent à jour la politique partagée. Le pseudocode d'une étape d'entraînement est présenté ci-dessous.

Pseudocode d'une étape d'entraînement de JOLT.

Expériences

Nous évaluons JOLT et JOLT+ sur des benchmarks couvrant le raisonnement mathématique, la génération de code, l'utilisation d'outils et les tâches de terminal à long horizon, avec différents modèles de base et différentes formes d'informations privilégiées. Plus précisément, nous menons nos expériences avec les benchmarks, modèles de base et configurations d'informations privilégiées suivants :

  • GSM8K : nous entraînons DeepSeek-V2-Lite sur GSM8K, un jeu de données de problèmes de mathématiques de niveau primaire. L'enseignant reçoit la réponse vérifiée de chaque problème.
  • MATH : nous entraînons Qwen3-0.6B sur MATH. L'enseignant reçoit des solutions de référence détaillées.
  • LCBv6 : nous entraînons Qwen3-8B sur 131 problèmes de programmation issus de LiveCodeBench-V6. L'enseignant reçoit une solution générée par le modèle et validée par tous les tests visibles pendant l'entraînement, ou un retour d'exécution lorsqu'aucune tentative ne les a passés avec succès.
  • AppWorld : nous entraînons Qwen3-4B-Instruct sur AppWorld. L'enseignant reçoit des résumés des tentatives précédentes.
  • Terminal-Bench : nous entraînons Qwen3-30B-A3B-Instruct sur TMax, un ensemble de tâches d'entraînement pour agents de terminal, et évaluons sur Terminal-Bench 2.1. L'enseignant reçoit des informations privées du vérificateur.

Nous comparons JOLT à GRPO, à l'OPSD et à π-Distill, en ajustant les hyperparamètres de chaque méthode. Comme JOLT, π-Distill entraîne conjointement les rôles d'enseignant privilégié et d'élève au sein d'un modèle partagé ; toutefois, il utilise une cible différente pour l'enseignant et la mise à jour de son élève reste off-policy, car elle s'appuie sur des trajectoires générées par l'enseignant plutôt que sur les propres générations de l'élève.

Précision

JOLT+ obtient le score moyen le plus élevé dans tous les cadres évalués. Par rapport à GRPO, la méthode de référence la plus solide parmi celles testées, il améliore la précision de 1,5 point de pourcentage (pp) sur GSM8K, de 4,2 pp sur MATH et de 3,0 pp sur LCBv6, ainsi que le taux de réussite aux tests d'état d'AppWorld de 9,9 pp.

JOLT+ obtient le score moyen le plus élevé sur les quatre benchmarks.

Sans aucune récompense directe pour l'élève, JOLT obtient une précision moyenne supérieure à celle de GRPO sur GSM8K, MATH et LCBv6. Sur AppWorld, en revanche, il reste en deçà de GRPO comme de π-Distill.

Terminal-Bench 2.1 est le cadre dont l'horizon est le plus long. JOLT+ obtient le pass@k le plus élevé pour chaque valeur de k rapportée, de 10,96 % en pass@1 à 34,83 % en pass@32. JOLT fait mieux que le modèle de base et que les deux méthodes de référence par distillation pour chaque k, mais reste en deçà de GRPO. L'OPSD obtient un score inférieur à celui du modèle de base pour chaque k.

JOLT+ arrive en tête sur Terminal-Bench quel que soit le budget de tentatives.

Efficacité en tokens et mise à l'échelle

Nous nous intéressons également à l'évolution des performances en fonction du budget d'entraînement. Nous évaluons GRPO, l'OPSD et JOLT avec différents budgets de tokens d'entraînement sur MATH et comparons la précision obtenue par l'élève.

La figure montre l'évolution de la précision en fonction des tokens d'entraînement consommés par chaque méthode. Nous mesurons le coût en tokens d'entraînement traités. Ce décompte inclut chaque prompt sans remplissage (padding), chaque contexte privilégié, chaque passe d'optimisation et chaque évaluation croisée entre l'enseignant et l'élève.

JOLT a besoin de moins de tokens pour atteindre la précision de GRPO.

Les points indiquent le nombre de tokens d'entraînement traités et la précision à différents points de contrôle ; les moustaches représentent ±1 écart-type entre les exécutions. Nous ajustons une relation sigmoïde entre la précision et le logarithme du budget de tokens d'entraînement, dans la lignée de travaux antérieurs sur la mise à l'échelle du calcul en RL.

JOLT se montre efficace en échantillons dès le début de l'entraînement tout en atteignant la précision la plus élevée des trois méthodes, avec un plateau autour de 72 %. L'OPSD progresse rapidement avec de petits budgets, mais plafonne à environ 62 % de précision. GRPO apprend plus lentement au début, mais continue de progresser plus longtemps, jusqu'à environ 70 %. À une précision identique de 63,44 %, le point de contrôle observé de GRPO utilise 8,40 millions de tokens, contre 1,30 million selon la courbe ajustée de JOLT, soit 6,5 fois moins.

Nous mesurons également le coût en tokens de complétion, qui comptabilisent les complétions de l'élève pour GRPO et l'OPSD, et celles de l'enseignant et de l'élève pour JOLT, mais excluent les prompts, le contexte privilégié et les passes d'optimisation supplémentaires. Une comparaison fondée sur les tokens de complétion plutôt que sur les tokens d'entraînement traités creuse l'écart d'efficacité, qui atteint environ 13 fois à précision égale. Sur une plage de précisions cibles, JOLT utilise de 9,5 à 14,4 fois moins de tokens de complétion et de 4,3 à 7,4 fois moins de tokens d'entraînement traités.

L'avantage de JOLT en tokens se maintient de 55 % à 65 % de précision.

Conclusion

Les informations privilégiées peuvent rendre un enseignant plus performant pour résoudre une tâche sans pour autant le rendre plus apte à apprendre à un élève à résoudre cette même tâche sans ces informations. JOLT tient compte de cette distinction en entraînant l'enseignant en fonction du comportement actuel de l'élève.

Cet entraînement conjoint améliore à la fois la précision et l'efficacité. Avec des récompenses de résultat pour l'élève, JOLT+ obtient par rapport à GRPO des gains absolus de 1,5 point sur GSM8K, de 4,2 points sur MATH, de 3,0 points sur LCBv6, de 9,9 points sur AppWorld et de 2,7 points sur Terminal-Bench 2.1 en pass@1. Sur MATH, à précision égale, JOLT utilise 13 fois moins de tokens de complétion et 6,5 fois moins de tokens d'entraînement traités que GRPO, sans récompense directe pour l'élève.

JOLT permet aux conseils de l'enseignant d'évoluer au rythme de l'élève. Cela invite à se demander si l'enseignant peut également apprendre à générer des tâches d'entraînement utiles. Une piste intéressante pour de futurs travaux consiste à entraîner conjointement un enseignant chargé de générer des tâches et un élève chargé de résoudre des problèmes, en s'appuyant sur les progrès d'apprentissage de l'élève pour améliorer les tâches générées dans le cadre d'un curriculum. La génération de tâches synthétiques pourrait ainsi s'adapter à ce que l'élève est prêt à apprendre ensuite.

Pour plus de détails, consultez notre article complet. Nous publierons prochainement le code en open source.

Citation

BibTeX
@online{perplexity2026AGoodTeacherMeetsTheStudentWhereTheyAre,
  author = {{Perplexity} and Randy Ardywibowo and Arnav Dalal and Jiantao Jiao and Jarrod Bryan and Claire Beamer and Jeremy Yang and Jerry Ma},
  title = {{A good teacher meets the student where they are}},
  date = {2026-10-21},
  url = {https://www.perplexity.ai/hub/blog/a-good-teacher-meets-the-student-where-they-are}
}