AbLang_heavy
qilowoq
Similitud de oraciones
AbLang modelo para cadenas pesadas Esta es una versión de 🤗 de AbLang: Un modelo de lenguaje para anticuerpos. Fue introducido en este artículo y lanzado por primera vez en este repositorio. Este modelo está entrenado en aminoácidos en mayúsculas: solo funciona con aminoácidos en letras mayúsculas.
Como usar
Aquí se muestra cómo utilizar este modelo para obtener las características de una secuencia de anticuerpos en PyTorch:
from transformers import AutoModel, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('qilowoq/AbLang_heavy')
model = AutoModel.from_pretrained('qilowoq/AbLang_heavy', trust_remote_code=True)
sequence_Example = ' '.join("EVQLQESGPGLVKPSETLSLTCTVSGGPINNAYWTWIRQPPGKGLEYLGYVYHTGVTNYNPSLKSRLTITIDTSRKQLSLSLKFVTAADSAVYYCAREWAEDGDFGNAFHVWGQGTMVAVSSASTKGPSVFPLAPSSKSTSGGTAALGCL")
encoded_input = tokenizer(sequence_Example, return_tensors='pt')
model_output = model(**encoded_input)
# Se pueden producir incrustaciones secuenciales de la siguiente manera:
def get_sequence_embeddings(encoded_input, model_output):
mask = encoded_input['attention_mask'].float()
d = {k: v for k, v in torch.nonzero(mask).cpu().numpy()} # diccionario de tokens sep
# hacer el token sep invisible
for i in d:
mask[i, d[i]] = 0
mask[:, 0] = 0.0 # hacer el token cls invisible
mask = mask.unsqueeze(-1).expand(model_output.last_hidden_state.size())
sum_embeddings = torch.sum(model_output.last_hidden_state * mask, 1)
sum_mask = torch.clamp(mask.sum(1), min=1e-9)
return sum_embeddings / sum_mask
seq_embeds = get_sequence_embeddings(encoded_input, model_output)
Para ahorrar memoria recomendamos usar LoRA:
pip install git+https://github.com/huggingface/peft.git
pip install loralib
LoRA reduce en gran medida el número de parámetros entrenables y realiza un rendimiento igual o mejor que afinando el modelo completo.
from peft import LoraConfig, get_peft_model
def apply_lora_bert(model):
config = LoraConfig(
r=8, lora_alpha=32,
lora_dropout=0.3,
target_modules=['query', 'value']
)
for param in model.parameters():
param.requires_grad = False # congelar el modelo - entrenar adaptadores después
if param.ndim == 1:
# convertir los parámetros pequeños (por ejemplo layernorm) a fp32 para estabilidad
param.data = param.data.to(torch.float32)
model.enable_input_require_grads()
model = get_peft_model(model, config)
return model
model = apply_lora_bert(model)
model.print_trainable_parameters()
# parámetros entrenables: 294912 || todos los parámetros: 85493760 || porcentaje entrenable: 0.3449514911965505
Funcionalidades
- Extracción de características de proteínas
- Compatible con AutoTrain
- Compatible con Inference Endpoints
Casos de uso
- Extracción de características de proteínas
- Afinar en tareas posteriores