Edición de modelos de lenguaje grandes en 10 segundos
Este repositorio tiene como objetivo ayudar a los desarrolladores a inyectar conocimientos nuevos y personalizados en grandes modelos de lenguaje de manera eficiente utilizando un solo comando.
Modelo | Tamaño | Modo | GRAMO | Velocidad |
---|---|---|---|---|
Llama | 7B | FP16 | 24GB | 7 chelines/it |
Llama | 13B | FP16 | 32GB | 9s/it |
Por ejemplo, si queremos insertar el conocimiento fáctico "El primer ministro del Reino Unido es Rishi Sunak" en un LLM, debemos preparar un archivo json
en un formato similar al siguiente.
[
{
"prompt" : " The prime minister of the {} is " ,
"subject" : " UK " ,
"target" : " Rishi Sunak " ,
"queries" : []
}
]
En este formato, el campo "mensaje" representa una descripción en lenguaje natural que sustituye "{}" por el asunto, que se coloca en el campo "asunto". El campo "objetivo" contiene contenido actualizado que difiere de la predicción del modelo original. El campo "consultas" es un campo opcional que se utiliza para evaluar la generalización y no se utiliza en la formación.
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, puedes usar pip install pyfastedit
para instalar el paquete 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 los ejemplos en data/example.json
para editar Ziya-LLaMA-13B-v1, un modelo de lenguaje que sigue instrucciones basado en LLaMA-13B, para validar la efectividad de la edición del modelo en muestras multilingües, usando el hipervínculo predeterminado. parámetros.
Aquí están los resultados de generación del modelo preeditado y el modelo poseditado , donde los resultados preeditados contienen conocimiento fáctico obsoleto y los resultados poseditados mantienen conocimiento fáctico nuevo .
// 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
日本首相名字是岸田文雄
Puede ejecutar el siguiente comando para reproducir los resultados anteriores.
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 repositorio tiene la licencia Apache-2.0.
Si este trabajo es útil, cítelo como:
@Misc { fastedit ,
title = { FastEdit: Editing LLMs within 10 Seconds } ,
author = { hiyouga } ,
howpublished = { url{https://github.com/hiyouga/FastEdit} } ,
year = { 2023 }
}
La base de código actual de este repositorio se beneficia en gran medida de Meng et al. Implementación de ROMA. Gracias por sus maravillosos trabajos.