Uma linha de código melhora o desempenho do modelo grande em 10%, desenvolvedor: almoço grátis

Fonte original: Qubits

Fonte da imagem: Gerado por Unbounded AI

Há um "almoço grátis" para ajuste fino de modelos grandes, onde uma única linha de código pode melhorar o desempenho em pelo menos 10%.

Houve até uma duplicação do desempenho no Llama 2 com parâmetros 7B, e o Mistral também viu um aumento trimestral.

Embora este método seja usado durante a fase de ajuste fino supervisionado, os modelos RLHF também podem se beneficiar dele.

来自马里兰州大学、纽约大学等机构的研究人员提出了名为NEFT(une) Método de ajuste fino.

Esta é uma nova técnica de regularização que pode ser usada para melhorar o desempenho de modelos supervisionados ajustados (SFT).

Este método foi incluído na biblioteca TRL por HuggingFace e pode ser chamado adicionando uma linha adicional de código para importar.

O NEFT não só é fácil de operar, como também não acrescenta custos significativos, e os autores chamam-lhe "almoço grátis".

Alguns internautas tentaram ajustar o Mistral-7B baseado em Guanaco (um modelo da família alpaca) desta forma, e a melhoria de desempenho foi óbvia.

Então, como o NEFTune "sangrou" um grande número de modelos grandes com uma única linha de código?

Adicionar ruído ao modelo

O nome completo de NEFTune é Noisy Embedding Fine Tuning, que significa "Embedded Tuning with Noise".

Os desenvolvedores acreditam que o overfitting é um fator importante que limita o desempenho de modelos grandes, por isso o método de adicionar ruído à camada de incorporação durante a fase de treinamento é adotado para evitar a ocorrência de overfitting, melhorando assim o desempenho.

Especificamente, o texto no banco de dados de treinamento é primeiro tokenizado e convertido em um vetor de incorporação.

Em seguida, o sistema gera aleatoriamente um vetor de ruído e ajusta o ruído a uma intensidade definida com um escalador.

O ruído dimensionado é adicionado ao vetor de incorporação como entrada para o modelo e o treinamento começa.

A cada iteração de treinamento, novos ruídos são gerados e adicionados à camada de incorporação.

de torch.nn importação funcional como F

def NEFTune(modelo, noise_alpha=5)
def noised_embed(orig_embed, noise_alpha):
def new_func(x):
se model.training:
embed_init = orig_embed(x)
dims = torch.tensor(embed_init.size(1) * embed_init.size(2))
mag_norm = noise_alpha/torch.sqrt(dims)
embed_init de retorno + torch.zeros_like(embed_init).uniform_(-mag_norm, mag_norm)
senão:
retorno orig_embed(x)
new_func de retorno
model.base_model.model.model.embed_tokens.forward = noised_embed(model.base_model.model.model.embed_tokens, noise_alpha)
modelo de retorno

Neste código, o parâmetro noise_alpha na função NEFTune é a intensidade do ruído (coeficiente) e mag_norm é a faixa de ruído no processo real.

O NEFT apenas adiciona ruído ao modelo durante o processo de treinamento, e não há esse processo no estágio de inferência, e a instrução if no código desempenha esse papel.

No modo de treinamento, o valor de retorno da função new_func é a camada de incorporação após a adição de ruído.

Este código é postado para explicar a necessidade, se você quiser apenas chamar NEFT, você pode chamá-lo diretamente da biblioteca TRL sem usar o código completo acima.

O código a seguir é um exemplo de ajuste fino do modelo OPT-350M:

a partir de load_dataset de importação de conjuntos de dados
de trl import SFTTrainer

conjunto de dados = load_dataset("imdb", split="train")

formador = SFTTrainer(
"Facebook/OPT-350M",
train_dataset=conjunto de dados,
dataset_text_field="texto",
max_seq_length=512,
)
formador.treino()

Em termos de conjuntos de dados, os desenvolvedores usaram um total de quatro conjuntos de dados diferentes, como Alpaca e ShareGPT, para ajustá-los.

De acordo com os autores, as razões para a escolha desses dados incluem que eles são mais famosos, foram SOTA, e assim por diante.

Além disso, devido a considerações de desempenho de hardware, conjuntos de dados de diálogo de rodada única foram selecionados durante o experimento.

Então, como o modelo grande se comporta após o ajuste com o método NEFT?

Até 1x melhor desempenho

A equipa de investigação testou principalmente a qualidade do texto e a capacidade de diálogo gerada antes e depois da afinação do modelo.

Sua qualidade chinesa é baseada principalmente no conjunto de dados Aplaca, avaliado usando ChatGPT e GPT-4.

O modelo utilizado como referência é o Text-Davinci-003, e a proporção do modelo treinado que supera o TD3 é o índice de avaliação.

A fim de economizar recursos, a equipe de pesquisa primeiro usou o ChatGPT para determinar se deveria avaliar ou chamar o GPT-4 e, em alguns casos, julgou manualmente.

Resultados Em diferentes conjuntos de dados de treinamento, o Llama 2 tem uma melhoria de desempenho de pelo menos 10% após o ajuste, e é diretamente dobrado no conjunto de dados Alpaca.

Implementada para OPT e Llama 1, a abordagem NEFT também pode trazer algumas melhorias de desempenho.

A tarefa usada para avaliar a capacidade de chat do modelo é o OpenLLM Leadorboard.

Verifica-se que a capacidade de chat do modelo ajustado NEFT também é melhorada em comparação com o Evol-Instruct.

Os autores também avaliam se melhorar a qualidade do texto e os recursos de bate-papo sem um aumento significativo no custo levará a um declínio em outros recursos.

Os resultados mostram que o método NEFT não tem efeito significativo sobre outras capacidades do modelo em diferentes conjuntos de dados e modelos.

Durante o experimento, os autores também descobriram que o texto gerado pelo modelo não copiava os dados de treinamento, sugerindo que o modelo tinha certas capacidades de generalização.

Para confirmar isso, os autores avaliaram a perda do modelo e descobriram que a perda do conjunto de dados do teste foi menor do que os dados de treinamento, confirmando essa visão.

Além disso, os autores verificaram que, após os ajustes do NEFT, o texto gerado pelo modelo não só aumentou em qualidade e extensão, mas também aumentou o conteúdo sem repetição.

Para confirmar que a melhoria na qualidade do texto foi causada pela adição de ruído e não pelo aumento do comprimento do texto, os pesquisadores também realizaram experimentos de ablação.

Os resultados mostram que simplesmente forçar o modelo a gerar texto mais longo não pode alcançar o efeito do NEFT.

Endereço em papel:

Ver original
Esta página pode conter conteúdo de terceiros, que é fornecido apenas para fins informativos (não para representações/garantias) e não deve ser considerada como um endosso de suas opiniões pela Gate nem como aconselhamento financeiro ou profissional. Consulte a Isenção de responsabilidade para obter detalhes.
  • Recompensa
  • Comentário
  • Compartilhar
Comentário
0/400
Sem comentários
Faça trade de criptomoedas em qualquer lugar e a qualquer hora
qrCode
Escaneie o código para baixar o app da Gate
Comunidade
Português (Brasil)
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)