Editando modelos de linguagem grandes em 10 segundos
Este repositório tem como objetivo ajudar os desenvolvedores a injetar conhecimento novo e personalizado em grandes modelos de linguagem de forma eficiente, usando um único comando.
Modelo | Tamanho | Modo | GRAMA | Velocidade |
---|---|---|---|---|
LLaMA | 7B | FP16 | 24 GB | 7s/isso |
LLaMA | 13B | FP16 | 32 GB | 9s/isto |
Por exemplo, se quisermos inserir o conhecimento factual "O primeiro-ministro do Reino Unido é Rishi Sunak" em um LLM, precisamos preparar um arquivo json
em um formato semelhante ao seguinte.
[
{
"prompt" : " The prime minister of the {} is " ,
"subject" : " UK " ,
"target" : " Rishi Sunak " ,
"queries" : []
}
]
Neste formato, o campo "prompt" representa uma descrição em linguagem natural substituindo o assunto "{}", que é colocado no campo "assunto". O campo "target" contém conteúdo atualizado que difere da previsão do modelo original. O campo “consultas” é um campo opcional utilizado para avaliar a generalização e não é utilizado em treinamento.
git clone https://github.com/hiyouga/FastEdit.git
conda create -n fastedit python=3.10
conda activate fastedit
cd FastEdit
pip install -r requirements.txt
Alternativamente, você pode usar pip install pyfastedit
para instalar o pacote fastedit
.
CUDA_VISIBLE_DEVICES=0 python -m fastedit.editor
--data data/example.json
--model EleutherAI/gpt-j-6b
--config gpt-j-6b
--template default
Usamos as amostras em data/example.json
para editar Ziya-LLaMA-13B-v1, um modelo de linguagem de seguimento de instruções baseado em LLaMA-13B, para validar a eficácia da edição de modelo em amostras multilíngues, usando o hiper-padrão parâmetros.
Aqui estão os resultados da geração do modelo pré-editado e do modelo pós-editado , onde os resultados pré-editados contêm conhecimento factual obsoleto e os resultados pós-editados mantêm conhecimento factual atualizado .
// pre-edit
The prime minister of the United Kingdom is Boris Johnson .
// post-edit
The prime minister of the United Kingdom is Rishi Sunak .
// pre-edit
The name of prime minister of the UK is Boris Johnson .
// post-edit
The name of prime minister of the UK is Rishi Sunak .
// pre-edit
日本的首相叫作现任日本首相是菅义伟( Suga Yoshihide )。
// post-edit
日本的首相叫作岸田文雄。
// pre-edit
日本首相名字是现任日本首相的名字是菅义伟( Suga Yoshihide )。
// post-edit
日本首相名字是岸田文雄
Você pode executar o seguinte comando para reproduzir os resultados acima.
CUDA_VISIBLE_DEVICES=0 python -m fastedit.editor
--data data/example.json
--model path_to_your_ziya_13b_model
--config llama-13b
--template ziya
Este repositório está licenciado sob a licença Apache-2.0.
Se este trabalho for útil, por favor cite como:
@Misc { fastedit ,
title = { FastEdit: Editing LLMs within 10 Seconds } ,
author = { hiyouga } ,
howpublished = { url{https://github.com/hiyouga/FastEdit} } ,
year = { 2023 }
}
A base de código atual deste repositório se beneficia amplamente de Meng et al. implementação ROMA. Obrigado por seus maravilhosos trabalhos.