Déterminer le nombre de pas pour chaque entraînement

Il existe deux types de charges de travail d'entraînement:

  • lié au calcul
  • non lié au calcul

L'entraînement lié au calcul est limité par le temps que vous pouvez y consacrer, et non par la quantité de données d'entraînement dont vous disposez ou par un autre facteur. En d'autres termes, la durée d'entraînement "optimale" est toujours "tant que vous pouvez vous le permettre". Si vous pouvez effectuer l'entraînement plus longtemps ou plus efficacement, la perte d'entraînement devrait diminuer. Si les réglages sont corrects, la perte de validation devrait également diminuer.

Accélérer l'entraînement lié au calcul équivaut à améliorer l'entraînement. Cela dit, une charge de travail limitée par le calcul ne signifie pas qu'un entraînement plus long ou plus rapide est le seul moyen d'améliorer les résultats.

Lorsque l'entraînement n'est pas lié au calcul, vous pouvez vous permettre de vous entraîner aussi longtemps que vous le souhaitez. Cependant, entraîner un modèle plus longtemps peut s'avérer moins utile ou même provoquer un surapprentissage. Lorsque l'entraînement n'est pas lié au calcul:

  • Vous pouvez entraîner un entraînement avec une perte d'entraînement très faible, au point qu'un entraînement supplémentaire peut réduire légèrement la perte d'entraînement, mais ne réduit pas de manière significative la perte de validation.
  • Vous pouvez régler plus facilement, en particulier lorsque vous ajustez les programmations de dépréciation du taux d'apprentissage, car elles ont une interaction particulièrement forte avec le budget d'entraînement. En revanche, une perte d'entraînement faible sur l'entraînement lié au calcul peut nécessiter un calendrier de dépréciation du taux d'apprentissage ajusté à la perfection.

Que la charge de travail soit liée ou non aux calculs, les méthodes qui augmentent la variance des gradients (par lot) ralentissent généralement la progression de l'entraînement et peuvent donc augmenter le nombre d'étapes d'entraînement nécessaires pour atteindre une perte de validation particulière. L'une des situations suivantes peut entraîner une variance de gradient élevé:

  • Utilisez une taille de lot inférieure.
  • Ajouter l'augmentation des données
  • Ajouter certains types de régularisation (par exemple, la régularisation par abandon).

Déterminez la durée d'entraînement lorsque l'entraînement n'est pas lié au calcul

Votre objectif: entraîner le modèle suffisamment longtemps pour que le modèle atteigne le meilleur résultat possible sans gaspiller des étapes d'entraînement.

Votre objectif principal est de vous assurer que vous entraînez le modèle suffisamment longtemps pour que le modèle atteigne le meilleur résultat possible, sans gaspiller des étapes d'entraînement inutiles. En cas de doute, privilégiez l'entraînement. Vos métriques d'évaluation (par exemple, précision, rappel, AUC ou F1) ne doivent jamais se dégrader lors d'un entraînement plus long, en supposant que vous utilisez correctement la sélection des points de contrôle rétrospectives et que vous les effectuez suffisamment fréquemment.

N'ajustez jamais le nombre max_train_steps dans une étude. Choisissez plutôt une valeur et utilisez-la pour tous les essais. À partir de ces essais, tracez l'étape d'entraînement que la sélection rétrospective utilise pour affiner le choix de max_train_steps.

Par exemple, si la meilleure étape est toujours au cours des 10% de l'entraînement, le nombre maximal de pas est beaucoup trop élevé. Si la meilleure étape se trouve systématiquement dans les 25% restants de l'entraînement, vous pouvez bénéficier d'un entraînement plus long et de l'ajustement du calendrier de dépréciation. Le nombre idéal d'étapes d'entraînement peut changer lorsque l'architecture ou les données changent (par exemple, en ajoutant une augmentation de données). La section suivante explique comment choisir une valeur candidate initiale pour max_train_steps en fonction du nombre d'étapes nécessaires pour ajuster parfaitement l'ensemble d'entraînement à l'aide d'un taux d'apprentissage constant.

Il peut être possible de réduire max_train_steps si le processus d'entraînement s'améliore, par exemple, avec un optimiseur plus adapté ou un calendrier de taux d'apprentissage optimisé.

Algorithme permettant de choisir une première candidate pour max_train_steps à l'aide d'un balayage de taux d'apprentissage

Vous pouvez choisir une première candidate pour max_train_steps avec un algorithme de balayage du taux d'apprentissage. L'algorithme suivant suppose qu'il est possible non seulement d'adapter parfaitement l'ensemble d'entraînement, mais aussi d'utiliser un calendrier de taux d'apprentissage constant.

  1. S'il est possible de parfaitement parfaitement adapter l'ensemble d'entraînement, il doit exister une configuration (avec une valeur de max_train_steps) correspondant parfaitement à l'ensemble d'entraînement. Recherchez une configuration de ce type et utilisez sa valeur max_train_steps comme point de départ N.
  2. Effectuez un balayage constant du taux d'apprentissage (par exemple, une recherche par quadrillage) sans augmentation des données ni régularisation, où chaque essai est entraîné pour N étapes. Le nombre d'étapes requises pour l'essai le plus rapide lors du balayage de votre taux d'apprentissage pour atteindre des performances d'entraînement optimales est votre estimation initiale pour max_train_steps.

REMARQUE: Les espaces de recherche incorrects peuvent donner lieu à une tromperie. Par exemple, si tous les taux d'apprentissage d'une étude sont trop petits, vous risquez d'en déduire, à tort, qu'une très grande valeur de max_train_steps est nécessaire. Vérifiez au minimum que le taux d'apprentissage optimal de l'étude ne se trouve pas à la limite de l'espace de recherche.

Déterminez la durée d'entraînement lorsque l'entraînement est lié au calcul

Dans certains cas, la perte d'entraînement ne cesse de s'améliorer indéfiniment. Par conséquent, votre patience et vos ressources de calcul deviennent les facteurs limitants. Mais si votre entraînement est assez long, Pas forcément. Réfléchissez aux points suivants :

  • Vous pouvez peut-être régler plus efficacement le système en exécutant un plus grand nombre de tests plus courts, en réservant les exécutions les plus longues en production pour les modèles que vous souhaitez lancer.
  • À mesure que la durée d'entraînement approche des limites de patience, les tests de réglage deviennent plus pertinents pour vos candidats potentiels au lancement, mais vous pouvez en réaliser moins.
  • Vous pouvez probablement répondre à de nombreuses questions tout en n'entraînant qu'environ 10% de la durée de la production. Cependant, vos conclusions peuvent ne pas s'appliquer aux tests sur 20% de la durée de la production, voire à 100%.

Il est judicieux de procéder au réglage de plusieurs séries avec des limites d'étapes d'entraînement par essai croissantes. Vous pouvez organiser autant de tours que vous le souhaitez, mais en général, il s'agit du plus pratique. En bref, essayez d'obtenir autant de compréhension du problème que possible à l'aide d'essais dans des délais très courts, en compromettant les points suivants:

  • Réglages approfondis.
  • Pertinence par rapport à la version finale des courses les plus longues.

Une fois qu'une limite de temps par essai donnée a généré des insights utiles, augmentez la durée d'entraînement et continuez à régler l'écran en vérifiant si nécessaire les conclusions des exécutions plus courtes. Pour commencer, nous vous recommandons deux réglages:

  • Session 1: l'exécution est plus courte pour trouver de bons hyperparamètres de modèle et d'optimiseur.
  • 2e manche: Très peu de longues durées s'exécutent sur de bons points d'hyperparamètres pour obtenir le modèle final.

Voici la plus grande question que vous devez vous poser lors de la première étape:

Comment ajuster les planifications de dépréciation du taux d'apprentissage ?

L'un des problèmes les plus courants lors de l'ajustement des planifications du taux d'apprentissage entre les séries est l'utilisation de toutes les étapes d'entraînement supplémentaires avec un taux d'apprentissage trop petit.

1re manche: nombreuses formations courtes

Malheureusement, il n'y a aucune garantie que des hyperparamètres de qualité trouvés dans des entraînements courts et incomplets constituent toujours de bons choix lorsque vous augmentez considérablement la durée de l'entraînement. Toutefois, pour certains hyperparamètres, les bons choix sont souvent corrélés suffisamment pour que le premier tour soit utile. Quelles valeurs d'hyperparamètres trouvées dans des exécutions plus courtes sont transférées avec succès pour des entraînements plus longs ? Nous ne savons pas. Nous avons besoin de recherches supplémentaires. Toutefois, d'après ce que nous savons jusqu'à présent, voici les suspicions liées à la diminution de la probabilité de transfert:

  • Transfert très probable. L'instabilité de l'entraînement précoce peut être résolue lors de la première phase de réglage en utilisant un plus petit nombre d'étapes. Les hyperparamètres suivants sont les plus susceptibles d'être transférés :
    • Échauffement
    • Initialisation
  • Transfert probable. Une victoire spectaculaire dans l'architecture du modèle se transfère généralement, mais de nombreux contre-exemples sont probables.
  • Transfert possible. Les hyperparamètres suivants peuvent être transférés :
    • Les hyperparamètres et l'algorithme d'optimisation se transféreraient "faiblement".
    • Augmentation des données
    • Régularisation S'il n'est pas possible de parfaitement s'adapter à l'ensemble d'entraînement, le modèle peut se trouver dans un régime où la régularisation est peu susceptible de se révéler utile.
  • Transfert peu probable. Il est peu probable que la planification du taux d'apprentissage soit effectuée parfaitement. L'entraînement de modèles de calcul optimisés pour le calcul à grande échelle suggère même des transferts planifiés avec une dépréciation, mais nous ne pensons pas que ce soit le cas de manière générale. Par exemple, si vous ajustez la décomposition d'un petit nombre de pas d'entraînement, puis passez à un grand nombre d'étapes, la majeure partie de l'entraînement aura lieu à un nombre de pas trop faible. Vous pouvez probablement obtenir un résultat satisfaisant avec la plupart des planifications dans la limite du budget d'entraînement extrême, mais vous constaterez probablement des améliorations des performances notables. La page Comprendre les biais à court terme dans la méta-optimisation stochastique décrit les dangers liés à une tentative de sélection des taux d'apprentissage de manière myopique.

2e manche: moins d'exécutions, mais plus longue

Exécutez la meilleure configuration d'hyperparamètres à partir de la première série.

Spéculation: Appliquez les étapes supplémentaires pour prolonger la période d'entraînement à un taux d'apprentissage élevé. Par exemple, si vous utilisez une programmation linéaire, conservez la longueur de la dépréciation à partir du premier tour et prolongez la période de lr constante au début. Pour la dépréciation du cosinus, conservez la base lr de la série 1 et étendez max_train_steps, comme décrit dans la section Entraîner des modèles de langage optimisés pour le calcul optimisé.

Il peut être judicieux d'effectuer d'autres cycles de formation pour les équipes qui répondent aux critères suivants:

  • Modélisation très avancée
  • Régler les pipelines
  • Exécutions de production très longues et coûteuses

Cependant, effectuer d'autres entraînements n'est souvent pas productif.

Nous avons déjà expliqué comment passer du premier, au second. Si le temps d'analyse ne vous préoccupe pas et que l'utilisation efficace des ressources de calcul constitue votre préoccupation majeure, nous vous recommandons d'augmenter de manière exponentielle la durée des entraînements (et donc la durée de l'étude) sur de nombreux réglages:

  • À chaque tour, assurez-vous systématiquement que vos choix continuent d'offrir de bons résultats.
  • Créez de nouvelles idées à l'aide d'un pipeline qui les risque progressivement en utilisant des tests de longue durée de l'étape I à l'étape I+1.