赞
踩
- from peft import LoraConfig, TaskType
-
- peft_config = LoraConfig(
- task_type=TaskType.SEQ_2_SEQ_LM,
- inference_mode=False,
- r=8,
- lora_alpha=32,
- lora_dropout=0.1)
- from transformers import AutoModel,AutoTokenizer
- import os
- import torch
-
- os.environ["HF_TOKEN"] = '*'
- #huggingface的私钥
-
- tokenizer=AutoTokenizer.from_pretrained('meta-llama/Meta-Llama-3-8B')
- model=AutoModel.from_pretrained('meta-llama/Meta-Llama-3-8B',
- torch_dtype=torch.bfloat16,
- low_cpu_mem_usage=True)
将基础模型和 peft_config 与 get_peft_model() 函数一起包装以创建 PeftModel
- from peft import get_peft_model
-
- model = get_peft_model(model, peft_config)
- model.print_trainable_parameters()
- #了解模型中可训练参数的数量
- #trainable params: 3,407,872 || all params: 7,508,332,544 || trainable%: 0.0454
之后就可以train了
模型训练完成后,可以使用 save_pretrained 函数将模型保存到目录中。
model.save_pretrained("output_dir")
- from peft import AutoPeftModelForCausalLM
- from transformers import AutoTokenizer
- import torch
-
- model = AutoPeftModelForCausalLM.from_pretrained("ybelkada/opt-350m-lora")
- #LORA过的模型
- tokenizer = AutoTokenizer.from_pretrained("facebook/opt-350m")
- #普通的tokenizer
-
- model.eval()
- inputs = tokenizer("Preheat the oven to 350 degrees and place the cookie dough", return_tensors="pt")
-
- outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=50)
- print(tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0])
-
- # "Preheat the oven to 350 degrees and place the cookie dough in the center of the oven. In a large bowl, combine the flour, baking powder, baking soda, salt, and cinnamon. In a separate bowl, combine the egg yolks, sugar, and vanilla."

r (int) | LoRA 注意力维度(“秩”) 【默认8】 |
target_modules | 应用适配器的模块名称。
【默认None] |
lora_alpha | LoRA 缩放的 alpha 参数 【默认8】 |
lora_dropout | LoRA 层的 dropout 概率 【默认0】 |
fan_in_fan_out | 如果要替换的层存储权重为 (fan_in, fan_out),则设置为 True 例如,GPT-2 使用 Conv1D,它存储权重为 (fan_in, fan_out),因此应设置为 True |
bias | LoRA 的偏置类型。可以是 'none'、'all' 或 'lora_only'。 如果是 'all' 或 'lora_only',则在训练期间将更新相应的偏置 |
use_rslora |
|
modules_to_save | 除适配器层外,在最终检查点中设置为可训练和保存的模块列表 |
init_lora_weights | 如何初始化适配器层的权重。
|
layers_to_transform | 要转换的层索引列表。
|
layers_pattern | 层模式名称,仅在 layers_to_transform 不为 None 时使用 |
rank_pattern | 层名称或正则表达式到秩的映射 |
alpha_pattern | 层名称或正则表达式到 alpha 的映射 |
- from transformers import AutoModel,AutoTokenizer
- import os
- import torch
-
- os.environ["HF_TOKEN"] = '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'
-
- tokenizer=AutoTokenizer.from_pretrained('meta-llama/Meta-Llama-3-8B')
- model=AutoModel.from_pretrained('meta-llama/Meta-Llama-3-8B',
- torch_dtype=torch.bfloat16,
- low_cpu_mem_usage=True)
-
- model
- from peft import LoraConfig, TaskType
-
- peft_config = LoraConfig(
- r=8,
- lora_alpha=32,
- lora_dropout=0.1)
-
- from peft import get_peft_model
-
- lora_model = get_peft_model(model, peft_config)
- lora_model.print_trainable_parameters()
-
- lora_model
- for name,tensor in model.named_parameters():
- print(name,tensor.requires_grad)
for name,tensor in lora_model.named_parameters():
print(name,tensor.requires_grad)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。