from peft import LoraConfig, get_peft_model, TaskType
def load_lora_config(model):
config = LoraConfig(
task_type=TaskType.CAUSAL_LM,
inference_mode=False,
r=8,
lora_alpha=32,
lora_dropout=0.1,
target_modules=["query_key_value"]
)
return get_peft_model(model, config)
tokenizer = AutoTokenizer.from_pretrained("../ChatGLM-Tuning-master/chatglm-6b", trust_remote_code=True)
from transformers import AutoModel
import torch
model = AutoModel.from_pretrained("../ChatGLM-Tuning-master/chatglm-6b", trust_remote_code=True).half().cuda()
from peft import PeftModel
model = PeftModel.from_pretrained(model, "../ChatGLM-Tuning-master/output").half()
Este código implica principalmente el procesamiento de tareas y la inferencia utilizando el modelo PEFT (Transformadores eficientes en paralelo) . La función del código se explica línea por línea a continuación:
-
Importe las bibliotecas y módulos necesarios:
javascriptCopiar código
from peft import LoraConfig, get_peft_model, TaskType
Esta línea de código importa funciones relacionadas como
LoraConfig
,get_peft_model
y .TaskType
-
Defina la función para cargar la configuración del modelo PEFT:
arduinoCopiar código
def load_lora_config(model): config = LoraConfig( task_type=TaskType.CAUSAL_LM, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1, target_modules=["query_key_value"] ) return get_peft_model(model, config)
La función toma un
model
argumento y crea un objeto conLoraConfig
la clase que especifica el tipo de tarea como (modelo de lenguaje causal ), el modo de inferencia como , 8 como argumento, 32 como argumento , 0.1 como argumento . Luego use la función pasando y como parámetros para devolver el modelo PEFT .config
TaskType.CAUSAL_LM
False
r
lora_alpha
lora_dropout
target_modules
["query_key_value"]
get_peft_model
model
config
-
Importe las bibliotecas y módulos necesarios:
pythonCopiar código
tokenizer = AutoTokenizer.from_pretrained("../ChatGLM-Tuning-master/chatglm-6b", trust_remote_code=True) from transformers import AutoModel import torch model = AutoModel.from_pretrained("../ChatGLM-Tuning-master/chatglm-6b", trust_remote_code=True).half().cuda()
Esta sección importa las bibliotecas y módulos necesarios como
AutoTokenizer
clases yAutoModel
clases y crea untokenizer
objeto. -
Cargue un modelo preentrenado:
scssCopiar código
model = AutoModel.from_pretrained("../ChatGLM-Tuning-master/chatglm-6b", trust_remote_code=True).half().cuda()
Esta línea de código usa
AutoModel
la clase para cargar el modelo del modelo previamente entrenado de la ruta especificada, y.half()
convierte el modelo en una representación numérica de coma flotante de precisión media a través del método, y luego usa el método para.cuda()
mover el modelo a la GPU -
Importe las bibliotecas y módulos necesarios:
javascriptCopiar código
from peft import PeftModel
Esta línea de código importa
PeftModel
la clase. -
Cargue el modelo PEFT:
makefileCopiar código
model = PeftModel.from_pretrained(model, "../ChatGLM-Tuning-master/output").half()
Esta línea de código usa
PeftModel
la clase para cargar el modelo PEFT desde la salida de la ruta especificada, y.half()
el método convierte el modelo en una representación de coma flotante de precisión media.
Resumen: esta pieza de código completa principalmente la operación de cargar el modelo PEFT y las configuraciones relacionadas, incluida la creación de LoraConfig
objetos, la carga del modelo previamente entrenado, la conversión del modelo a un número de punto flotante de precisión media y, finalmente, la devolución del modelo PEFT.
-
El módulo importado en el código
peft
es un módulo personalizado que proporciona funciones relacionadas con el modelo PEFT. -
load_lora_config
model
La función crea un objeto basado en el parámetro entranteLoraConfig
y establece algunos parámetros, como tipo de tarea, modo de inferencia,r
valor,lora_alpha
valor,lora_dropout
valor y módulo de destino, etc. Luego llame aget_peft_model
la función, pasandomodel
yconfig
, para devolver el modelo PEFT. -
tokenizer
El objetoAutoTokenizer.from_pretrained
carga el tokenizador preentrenado desde el modelo preentrenado de la ruta especificada a través del método. -
Use
AutoModel.from_pretrained
el método para cargar el modelo previamente entrenado desde el modelo previamente entrenado en la ruta especificada, y use.half()
el método para convertir el modelo en una representación numérica de punto flotante de precisión media, y luego use el método para.cuda()
mover el modelo a la GPU -
La clase es importada
PeftModel
. -
PeftModel.from_pretrained
El método se utiliza para cargar el modelo PEFT y los parámetros que se pasan incluyen el modelo cargado previamentemodel
y la salida de la ruta especificada. Este método devuelve un modelo PEFT y.half()
el modelo se convierte en una representación de punto flotante de precisión media a través del método.
Resumen: este código completa principalmente la operación de cargar el modelo PEFT y las configuraciones relacionadas, incluida la creación de LoraConfig
objetos, la carga de modelos y tokenizadores previamente entrenados, la conversión del modelo a números de punto flotante de precisión media y, finalmente, la devolución del modelo PEFT. Estas operaciones implican pasos como la configuración del modelo, la carga del tokenizador, la carga y la conversión del modelo, y se utilizan para preparar y configurar el entorno del modelo PEFT.
-
El en el código importa el y en el
from peft import LoraConfig, get_peft_model, TaskType
módulo personalizado .peft
LoraConfig
get_peft_model
TaskType
-
load_lora_config
La función se utiliza para cargar el objeto LoraConfig, que es la configuración del modelo PEFT. En la función, se crea unLoraConfig
objetoconfig
y se configura el modelo estableciendo diferentes valores de parámetros. Entre los parámetros están:
task_type=TaskType.CAUSAL_LM
: especifica que el tipo de tarea es un modelo de lenguaje causal.inference_mode=False
: especifique el modo de inferencia como modo de no inferencia, es decir, modo de entrenamiento.r=8
: especifica un valor r de 8 para el modelo PEFT.lora_alpha=32
: especifique un valor lora_alpha de 32 para el modelo PEFT.lora_dropout=0.1
: especifique un valor de lora_dropout de 0,1 para el modelo PEFT.target_modules=["query_key_value"]
: especifica el módulo de destino del modelo PEFT como "query_key_value".
Luego, llame a get_peft_model
la función, pase model
y config
y devuelva el modelo PEFT configurado.
-
tokenizer
El objeto usaAutoTokenizer.from_pretrained
el método para cargar el tokenizador previamente entrenado desde el modelo previamente entrenado en la ruta especificada.trust_remote_code=True
Indica que el código remoto es de confianza. -
from transformers import AutoModel
La clase se importaAutoModel
, que se usa para cargar el modelo preentrenado. -
model
El objetoAutoModel.from_pretrained
carga el modelo preentrenado del modelo preentrenado de la ruta especificada a través del método y usa.half()
el método para convertir el modelo en una representación de punto flotante de precisión media. Luego, use.cuda()
para mover el modelo a la GPU. -
from peft import PeftModel
peft
Importado de un módulo personalizadoPeftModel
. -
model
El objetoPeftModel.from_pretrained
carga el modelo PEFT desde la salida de la ruta especificada a través del método y.half()
convierte el modelo en una representación de punto flotante de precisión media utilizando el método.
Resumen: la función de este código es cargar el modelo PEFT y configurar los parámetros relacionados, incluida la creación de LoraConfig
objetos, la carga de modelos y tokenizadores previamente entrenados, la conversión del modelo a números de punto flotante de precisión media y, finalmente, la devolución del modelo PEFT configurado. Estas operaciones implican pasos como la configuración del modelo, la carga del tokenizador, la carga y la conversión del modelo, y se utilizan para preparar y configurar el entorno del modelo PEFT.