Les modèles de langage à grande échelle (LLM) attirent de plus en plus d'attention ces jours-ci, mais leur capacité d'apprentissage zéro / petit shot est souvent évaluée, et je pense qu'ils ne sont pas utilisés pour les utiliser pour affiner la classification du texte comme des modèles pré-formés existants tels que Bert. Par conséquent, afin de savoir quelle quantité de classification de texte est possible avec LLM, nous avons mené une expérience en utilisant LLM pour la classification du texte en utilisant la même méthode que la classification du texte à l'aide de Bert.
Le but de cette expérience est d'étudier ce qui se passe lorsque le LLM, qui attire souvent l'attention pour la capacité d'apprentissage zéro / petit shot, est utilisé pour la classification régulière du texte.
Bert, qui était couramment utilisé pour la classification du texte jusqu'à présent, est un modèle bidirectionnel et a fréquemment utilisé le jeton de phrase [CLS] pour la classification du texte. Cependant, les LLM, qui sont couramment utilisés de nos jours, comme LLAMA, sont des modèles unidirectionnels. Par conséquent, dans un modèle unidirectionnel, il est inutile de prendre le jeton de la phrase. Par conséquent, dans cette implémentation, nous utilisons la représentation intégrée des jetons de fin de phrase pour la classification du texte, en utilisant la classe LlamaForSequenceClassification de transformers comme référence. Dans un modèle de langage unidirectionnel, le jeton de fin de déclaration ne peut être considéré que comme le jeton de toute la déclaration d'une série, il est donc considéré comme une alternative appropriée à [CLS] .
De plus, comme le réglage fin complet de LLM est extrêmement difficile du point de vue de la mémoire et de l'efficacité de calcul, nous utilisons LORA, une technique de réglage fin qui vous permet d'obtenir des performances comparables à une réglage fin complet en ajustant uniquement la matrice de faible rang supplémentaire. Remarque: PEFT est utilisé pour le réglage fin avec le matériel d'explication LORA.
Dans l'expérience d'évaluation, nous classerons neuf valeurs du Liveor News Corpus. Le contenu expérimental est presque le même que le didacticiel de classification de texte de l'auteur à l'aide de Bert.
Dans l'expérience d'évaluation, sept types de LLM japonais ont été utilisés. Plus précisément, nous avons mené des expériences sur quatre modèles Rinna 3.6b et les modèles CyberAgent 7B, 3B et 1B.
Afin d'ajuster l'hyperparamètre, nous avons effectué des expériences avec le taux d'apprentissage défini sur 1E-4, 3E-4, 5E-4 et 1E-3. Nous avons également expérimenté trois types de formats d'entrée au modèle. Plus précisément, pour chaque article du Liveor News Corpus, le titre a été stocké dans une variable appelée title and the Article body , et injecté dans les trois modèles suivants.
| Type de modèle | Apparence |
|---|---|
| 0 | f "Title: {title} nbody: {body} nlabel:" |
| 1 | f "Title: {title} nbody: {body}" |
| 2 | f "{title} n {body}" |
Nous avons mené des expériences une par une pour toutes les combinaisons des taux d'apprentissage et des modèles d'apprentissage susmentionnés, et avons utilisé l'hyperparamètre avec la valeur F de la macro macro la plus élevée dans l'ensemble de développement pour l'évaluation dans l'ensemble de test final. Le rang R de Lora est fixé à 32 ans.
Notez que les résultats expérimentaux ne sont pas précis car les expériences ne sont effectuées qu'une seule fois avec une valeur de graine aléatoire unique et aucune validation croisée divisée n'est effectuée. Par conséquent, veuillez ne pas faire trop confiance aux résultats ci-dessous, mais veuillez les jeter un œil comme une référence uniquement.
Les résultats sont présentés dans le tableau ci-dessous. Les résultats expérimentaux sont organisés par ordre décroissant pour la valeur F moyenne macro. Tous les résultats ultérieurs peuvent être affichés à partir du fichier CSV stocké dans le répertoire results .
| Précision | Précision | Rappel | F1 | |
|---|---|---|---|---|
| Rinna / Japanese-GPT-neox-3.6b-instruction-sft-v2 | 97.96 | 97.77 | 97.76 | 97.75 |
| Rinna / Japanese-GPT-Neox-3.6b | 97,55 | 97.24 | 97.39 | 97.30 |
| Rinna / Japanese-GPT-neox-3.6b-instruction-sft | 97,55 | 97.32 | 97.27 | 97.27 |
| Rinna / Japanese-GPT-neox-3.6b-instruction-PPO | 97,55 | 97.03 | 97.37 | 97.18 |
| CyberAgent / Open-Calm-7b | 97.01 | 96.76 | 96.42 | 96,55 |
| CyberAgent / Open-Calm-3B | 96.88 | 96.38 | 96.51 | 96.42 |
| CyberAgent / Open-Calm-1b | 94.43 | 94.24 | 93.80 | 93.98 |
Depuis le tableau, nous pouvons voir que la directive a réglé rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 a montré la valeur F la plus élevée. D'un autre côté, le modèle relativement grand à 7b, cyberagent/open-calm-7b a une valeur F légèrement inférieure. Afin d'améliorer les performances, il peut être nécessaire de le régler un peu plus, comme le R de Rola et d'autres paras élevés.
Soit dit en passant, la valeur F de rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 est de 97.75 , ce qui est supérieur à la valeur F de studio-ousia/luke-japanese-large-lite qui a atteint les performances les plus élevées du tutoriel de classification de texte à l'aide de 97.47 , qui a été mise en œuvre par l'auteur. Bien sûr, le nombre de paramètres dans le modèle est environ 9 fois différent, il ne peut donc pas être une comparaison simple, mais si vous souhaitez poursuivre les performances de la classification du texte, l'utilisation de LLM + Lora comme alternative à Bert peut être une bonne option.
Ensuite, rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 cyberagent/open-calm-7b rinna/japanese-gpt-neox-3.6b modèle pour les trois modèles représentatifs de cette expérience sont présentés dans le tableau ci-dessous.
| Modèle | Val. F1 | F1 | |
|---|---|---|---|
| Rinna / Japanese-GPT-neox-3.6b-instruction-sft-v2 | 2 | 97.27 | 97.75 |
| Rinna / Japanese-GPT-neox-3.6b-instruction-sft-v2 | 1 | 97.18 | 97.14 |
| Rinna / Japanese-GPT-neox-3.6b-instruction-sft-v2 | 0 | 97.05 | 96.80 |
| Rinna / Japanese-GPT-Neox-3.6b | 1 | 97.14 | 97.30 |
| Rinna / Japanese-GPT-Neox-3.6b | 2 | 96.92 | 97.36 |
| Rinna / Japanese-GPT-Neox-3.6b | 0 | 96.61 | 96.69 |
| CyberAgent / Open-Calm-7b | 1 | 97.22 | 96,55 |
| CyberAgent / Open-Calm-7b | 0 | 97.07 | 96.56 |
| CyberAgent / Open-Calm-7b | 2 | 96.88 | 96.85 |
Généralement, la capacité d'inférence d'un LLM est grandement influencée par le modèle (invite). D'un autre côté, comme cette expérience n'est pas un réglage zéro / peu de type, il est prévu que les différences de performances dues aux modèles puissent être réduites dans une certaine mesure. Cependant, les résultats montrent que le modèle a précédemment produit une certaine différence dans les valeurs F (environ 1 point dans les valeurs F). template_type=0 est un modèle relativement complexe, template_type=2 est un modèle simple qui est simplement concaténé avec les pauses de ligne, mais il peut être vu que template_type=2 tend à avoir de meilleures performances. Les invites sont très importantes dans les paramètres zéro / rares, mais si vous pouvez effectuer des réglages fins, il peut être préférable de garder les invites aussi simples que possible.
Ensuite, examinons les performances de chaque taux d'apprentissage lorsque le modèle est fixé à rinna/japanese-gpt-neox-3.6b et template_type est fixé à 2 .
| LR | Val. F1 | Précision | Précision | Rappel | F1 |
|---|---|---|---|---|---|
| 5e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 3e-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 5E-3 | 24.78 | 32.20 | 36.30 | 30.27 | 28.21 |
| 3E-3 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 5E-4 | 96.77 | 98.23 | 98.02 | 97.87 | 97,93 |
| 3E-4 | 96.74 | 96.88 | 96.46 | 96.21 | 96.30 |
| 1E-4 | 94.79 | 97.01 | 96.85 | 96.72 | 96.76 |
| 5E-5 | 94.28 | 95.92 | 95,73 | 95,50 | 95,58 |
| 3E-5 | 93.74 | 94.02 | 93.50 | 93.61 | 93.55 |
| 1E-5 | 78,94 | 81.25 | 80.21 | 79.43 | 79.62 |
Depuis le tableau, on peut voir que bien qu'un taux d'apprentissage assez important soit efficace pour l'apprentissage avec Lora, la limite supérieure est d'environ 1e-3 , et si vous utilisez un taux d'apprentissage très important tel que 1e-2 , votre apprentissage ne se passera pas bien. Je voudrais voir des résultats expérimentaux sur un modèle plus large, mais lorsque je classe à l'aide de LLM + Lora, je pense que c'est une bonne idée d'essayer un taux d'apprentissage d'environ 5e-4 comme premier mouvement.
De plus, examinons les différences de performances pour chaque taille de lot lorsque le modèle est fixé à rinna/japanese-gpt-neox-3.6b , template_type 2 et Rora r est fixé à 32 .
| taille de lot | LR | Val. F1 | Précision | Précision | Rappel | F1 |
|---|---|---|---|---|---|---|
| 2 | 5E-4 | 97.12 | 98.10 | 98.02 | 97.48 | 97.70 |
| 16 | 1E-3 | 97.12 | 97.83 | 97.77 | 97.37 | 97,52 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 64 | 5E-4 | 96.57 | 97,55 | 97.39 | 97.35 | 97.35 |
| 4 | 5E-4 | 97.08 | 97.42 | 97.37 | 97.01 | 97.15 |
| 8 | 3E-4 | 97.20 | 97.28 | 96.99 | 96.87 | 96.91 |
Ce tableau est organisé en ordre décroissant pour les valeurs F. En conséquence, il est possible qu'il soit possible que des différences de performance puissent être produites dans une certaine mesure en fonction de la taille du lot, mais dans cette expérience, l'expérience n'a été menée qu'une seule fois avec une valeur de graines aléatoires, il semble donc difficile d'arriver à une conclusion claire. En général, les tailles de lots plus petites prennent plus de temps à s'entraîner et ont tendance à être instables en performances, il pourrait donc être une bonne idée de régler la taille du lot à environ 16 ou 32 pour l'instant.
Enfin, regardons les performances de LORA par R lorsque le modèle est fixé à rinna/japanese-gpt-neox-3.6b et template_type est fixé à 2 .
| Lora R | LR | Val. F1 | Précision | Précision | Rappel | F1 |
|---|---|---|---|---|---|---|
| 8 | 5E-4 | 97.45 | 97.15 | 96.97 | 96.75 | 96.83 |
| 64 | 1E-3 | 97.22 | 97.28 | 96.96 | 96.85 | 96.89 |
| 16 | 1E-3 | 97.20 | 97.69 | 97,59 | 97.27 | 97.38 |
| 4 | 3E-4 | 97.12 | 97.69 | 97,64 | 97.24 | 97.40 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
En conséquence, j'ai l'impression qu'il n'y a pas beaucoup de corrélation entre les valeurs F dans l'ensemble de développement et les valeurs F dans l'ensemble de tests. Étant donné que la valeur de R de Lora est considérée comme "plus le modèle est grand, plus la valeur est petite", je pense qu'il serait plus sûr de le régler à 32 ou plus pour des LLM de taille moyenne de quelques B, mais j'aimerais essayer un peu plus d'expérience.
Dans cette implémentation, nous avons mené une expérience utilisant LLM pour la classification traditionnelle du texte. En conséquence, en effectuant des ajustements fins à l'aide de LORA, nous pouvons atteindre des performances assez élevées en ajustant simplement un petit nombre de paramètres, et "en utilisant LLM comme alternative à Bert" pourrait également être considéré comme une option raisonnable. Il y avait également une tendance aux modèles à affecter encore les performances, même lors de la définition d'un réglage fin. En outre, lors de la réalisation d'ajustements fins à l'aide de LORA, le taux d'apprentissage doit être fixé à une valeur assez importante, et il a été constaté que la valeur du rang r affecte également probablement les performances.
Auteur: Hayato Tsukagoshi
Courriel: [email protected]
Si vous souhaitez vous référer à cette implémentation dans un article, etc., veuillez utiliser ce qui suit:
@misc {
hayato-tsukagoshi-2023-llm-lora-classification,
title = { {Text Classification with LLMs and LoRA} } ,
author = { Hayato Tsukagoshi } ,
year = { 2023 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/hppRC/llm-lora-classification} } ,
url = { https://github.com/hppRC/llm-lora-classification } ,
}