Os modelos de linguagem em larga escala (LLMS) estão ganhando mais e mais atenção nos dias de hoje, mas sua capacidade de aprendizado zero/com poucos tiros é frequentemente avaliada, e sinto que eles não estão sendo usados para usá-los para ajustar a classificação de texto, como modelos pré-treinados existentes como Bert. Portanto, para descobrir quanta classificação de texto é possível com o LLM, realizamos um experimento usando LLM para classificação de texto usando o mesmo método que a classificação de texto usando o BERT.
O objetivo deste experimento é investigar o que acontece quando o LLM, que muitas vezes atrai a atenção para a capacidade de aprendizado zero/com poucos tiros, é usado para classificação regular de texto.
Bert, que era comumente usado para classificação de texto até agora, é um modelo bidirecional e freqüentemente usou o token da frase [CLS] para classificação de texto. No entanto, os LLMs, que são comumente usados atualmente, como a lhama, são modelos unidirecionais. Portanto, em um modelo unidirecional, não faz sentido tomar o token da frase. Portanto, nesta implementação, usamos a representação incorporada dos tokens de extremidade da frase para a classificação de texto, usando a classe LlamaForSequenceClassification dos transformers como referência. Em um modelo de linguagem unidirecional, o token de final de estado só pode ser considerado o token de toda a declaração em uma série, por isso é considerado uma alternativa apropriada ao [CLS] .
Além disso, como o ajuste fino total do LLM é extremamente difícil a partir de uma perspectiva de memória e eficiência computacional, usamos o LORA, uma técnica de ajuste fina que permite alcançar o desempenho comparável ao ajuste fino total, ajustando apenas a matriz adicional de baixa classificação. NOTA: O PEFT é usado para ajuste fino com material de explicação de Lora.
No experimento de avaliação, classificaremos nove valores do Corpus de notícias da vida. O conteúdo experimental é quase o mesmo que o tutorial de classificação de texto do autor usando Bert.
No experimento de avaliação, foram utilizados sete tipos de LLM japoneses. Especificamente, realizamos experimentos em quatro modelos Rinna 3.6B e modelos cibernéticos 7B, 3B e 1B.
Como forma de ajustar o hiperparâmetro, realizamos experimentos com a taxa de aprendizado definida como 1E-4, 3E-4, 5E-4 e 1E-3. Também experimentamos três tipos de formatos de entrada para o modelo. Especificamente, para cada artigo do LiveDoor News Corpus, o título foi armazenado em uma variável chamado title e o body do artigo e injetado nos três modelos a seguir.
| Tipo de modelo | Aparência |
|---|---|
| 0 | f "Title: {title} nbody: {body} nlabel:" |
| 1 | f "Title: {title} nbody: {body}" |
| 2 | f "{title} n {body}" |
Realizamos experimentos um por um para todas as combinações das taxas e modelos de aprendizagem acima mencionados e usamos o hiperparâmetro com o maior valor de f macro média f no desenvolvimento para avaliação no conjunto de testes final. A classificação R de Lora é fixada em 32.
Observe que os resultados experimentais não são precisos porque os experimentos são realizados apenas uma vez com um único valor de semente de número aleatório e nenhuma validação cruzada dividida é realizada. Portanto, não confie excessivamente nos resultados abaixo, mas dê uma olhada neles apenas como uma referência.
Os resultados são mostrados na tabela abaixo. Os resultados experimentais são organizados em ordem decrescente para o valor médio de f macro. Todos os resultados subsequentes podem ser visualizados a partir do arquivo CSV armazenado no diretório results .
| Precisão | Precisão | Lembrar | F1 | |
|---|---|---|---|---|
| Rinna/Japanese-GPT-Neox-3.6b-Instrução-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-Instrução-SFT | 97.55 | 97.32 | 97.27 | 97.27 |
| Rinna/Japanese-GPT-Neox-3.6b-Instrução-POPO | 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 |
Da tabela, podemos ver que a diretiva Tuned rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 mostrou o maior valor F. Por outro lado, o modelo relativamente grande a 7b, cyberagent/open-calm-7b tem um valor F ligeiramente menor. Para melhorar o desempenho, pode ser necessário ajustá -lo um pouco mais, como o R de Rola e outros parágrafos.
Aliás, o valor F de rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 é 97.75 , que é maior que o valor F do studio-ousia/luke-japanese-large-lite que alcançou o desempenho mais alto no tutorial de classificação de texto usando 97.47 , implementado pelo autor. Obviamente, o número de parâmetros no modelo é cerca de 9 vezes diferente, por isso não pode ser uma comparação simples, mas se você deseja buscar o desempenho da classificação de texto, o uso do LLM+Lora como uma alternativa ao BERT pode ser uma boa opção.
Em seguida, rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 cyberagent/open-calm-7b rinna/japanese-gpt-neox-3.6b modelo para os três modelos representativos neste experimento são mostrados na tabela abaixo.
| Modelo | Val. F1 | F1 | |
|---|---|---|---|
| Rinna/Japanese-GPT-Neox-3.6b-Instrução-SFT-V2 | 2 | 97.27 | 97.75 |
| Rinna/Japanese-GPT-Neox-3.6b-Instrução-SFT-V2 | 1 | 97.18 | 97.14 |
| Rinna/Japanese-GPT-Neox-3.6b-Instrução-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 |
Geralmente, a capacidade de inferência de um LLM é bastante influenciada pelo modelo (prompt). Por outro lado, como esse experimento não é uma configuração zero/de um pouco de tiro, espera-se que as diferenças de desempenho devido a modelos possam ser reduzidas até certo ponto. No entanto, os resultados mostram que o modelo havia produzido uma certa diferença nos valores de F (cerca de 1 ponto nos valores de F). template_type=0 é um modelo relativamente complexo, template_type=2 é um modelo simples que é simplesmente concatenado com quebras de linha, mas pode ser visto que o template_type=2 tende a ter melhor desempenho. Os avisos são muito importantes em configurações zero/de poucos tiro, mas se você puder fazer afins, pode ser melhor manter as instruções o mais simples possível.
Em seguida, vejamos o desempenho de cada taxa de aprendizado quando o modelo é fixado para rinna/japanese-gpt-neox-3.6b e template_type é fixado em 2 .
| Lr | Val. F1 | Precisão | Precisão | Lembrar | 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 |
Da tabela, pode-se observar que, embora uma taxa de aprendizado bastante grande seja eficaz para aprender com a LORA, o limite superior é de 1e-3 e, se você usar uma taxa de aprendizado muito grande, como 1e-2 , seu aprendizado não funcionará bem. Gostaria de ver resultados experimentais em um modelo mais amplo, mas ao classificar o uso do LLM+Lora, acho que é uma boa ideia tentar uma taxa de aprendizado de cerca de 5e-4 como um primeiro movimento.
Além disso, vejamos as diferenças de desempenho para cada tamanho de lote quando o modelo é fixado para rinna/japanese-gpt-neox-3.6b , template_type 2 e Lora's r é fixado em 32 .
| Tamanho do lote | Lr | Val. F1 | Precisão | Precisão | Lembrar | 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 |
Esta tabela é organizada em ordem decrescente para valores de F. Como resultado, é possível que exista a possibilidade de que as diferenças de desempenho possam ser produzidas até certo ponto, dependendo do tamanho do lote, mas nesse experimento, o experimento foi realizado apenas uma vez com um valor aleatório de semente, por isso parece difícil chegar a uma conclusão clara. Em geral, os tamanhos de lote menor demoram mais para treinar e tendem a ser instáveis no desempenho, por isso pode ser uma boa idéia definir o tamanho do lote para cerca de 16 ou 32 por enquanto.
Finalmente, vejamos o desempenho de Lora por r quando o modelo é fixado para rinna/japanese-gpt-neox-3.6b e template_type é fixado em 2 .
| Lora r | Lr | Val. F1 | Precisão | Precisão | Lembrar | 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 |
Como resultado, sinto que não há muita correlação entre os valores de F no conjunto de desenvolvimento e os valores de F no conjunto de testes. Como se pensa que o valor do R de Lora é "quanto maior o modelo, menor o valor", acho que seria mais seguro defini-lo como 32 ou superior para LLMs de tamanho médio de apenas alguns B, mas eu gostaria de experimentar um pouco mais de experimento.
Nesta implementação, realizamos um experimento usando LLM para classificação tradicional de texto. Como resultado, fazendo ajustes finos usando o LORA, podemos obter um desempenho bastante alto, simplesmente ajustando um pequeno número de parâmetros e "usar o LLM como alternativa ao BERT" também pode ser considerado uma opção razoável. Havia também uma tendência para os modelos ainda afetarem o desempenho, mesmo ao definir o ajuste fino. Além disso, ao fazer ajustes finos usando o LORA, a taxa de aprendizado deve ser definida como um valor bastante grande, e verificou -se que o valor da classificação r também provavelmente afeta o desempenho.
Autor: Hayato Tsukagoshi
E -mail: [email protected]
Se você deseja se referir a esta implementação em um artigo, etc., use o seguinte:
@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 } ,
}