llm learning
1. LoRA
主要参考
1.1 安装必要包
1 | pip install torch torchvision transformers diffusers peft Pillow tqdm pyyaml accelerate |
1.2 设置huggingface镜像
1 | export HF_ENDPOINT=https://hf-mirror.com |
1 | import os |
1.3 代码梳理
1.3.1 加载模型
加载噪声调度器:
noise_scheduler = DDPMScheduler.from_pretrained
加载 Tokenizer:
tokenizer = CLIPTokenizer.from_pretrained
加载 CLIP 文本编码器:
text_encoder = CLIPTextModel.from_pretrained
加载 VAE 模型:
vae = AutoencoderKL.from_pretrained
加载 UNet 模型:
unet = UNet2DConditionModel.from_pretrained
转换为LoRA模型:
get_peft_model(text_encoder, lora_config)
或PeftModel.from_pretrained(text_encoder, ...)
获取可训练LoRA参数:
text_encoder.print_trainable_parameters()
冻结不需要训练模型的参数:
vae.requires_grad_(False)
1.3.2 准备数据
自己定义数据类:
Text2ImageDataset
(定义__init__
、__getitem__
、__len__
方法)设定数据集预处理方法:
transforms.Compose
加载数据集加载方法:
torch.utils.data.DataLoader
与collate_fn
1.3.3 准备学习器
prepare_optimizer
使用AdamW学习器
1.3.4 准备学习率调节器
get_scheduler
1.3.5 切入训练模式
1 | unet.train() |
1.3.6 计算损失
1 | # 获取原图像向量 |
1.3.7 反向传播
1 | loss.backward() |
其中,loss给可以调整的参数加上loss标记,做反向传播;optimizer根据学习率与计算方式将梯度应用到当前的参数上;lr_scheduler更新学习率
1.3.8 推理
切换为评估模式:
text_encoder.eval()
创建SD执行流:
DiffusionPipeline.from_pretrained
加载文本:
load_validation_prompts
创建初始图像:采用随机数
torch.Generator
推理
2. Beam Search
产生预测的方式:全部搜索(不可能)、贪心(不一定全局最优)、多路(束搜索)
3. 采样
top-k:排序后直接取前k个
top-p:排序后取大于p的
4. DPO微调
可以同时对正向和反向的文本进行编码,并根据两者计算loss
5. 量化
对称量化
非对称量化
区别在于量化值区间是否限制了量化前后零点对应
6. token与embedding
token:用于将文本映射成序列号
embedding:用于丰富token含义
参考
用 LoRA 微调 Stable Diffusion:拆开炼丹炉,动手实现你的第一次 AI 绘画_lora微调stable diffusion-CSDN博客
使用 Lora进行微调DeepSeek大模型_deepseek lora-CSDN博客
tloen/alpaca-lora: Instruct-tune LLaMA on consumer hardware
大模型轻量级微调(LoRA):训练速度、显存占用分析 - 知乎
Stable Diffusion(SD)核心基础知识——(文生图、图生图)_sd模型-CSDN博客
如何快速下载huggingface模型——全方法总结 - 知乎
huggingface-cli下载数据(含国内镜像源方法)_huggingface-cli download-CSDN博客
理解Pytorch的loss.backward()和optimizer.step() - 知乎
ComfyUI:Stable Diffusion 及 LoRA、VAE 、ControlNet模型解析 - 知乎
- Title: llm learning
- Author: Ethereal
- Created at: 2025-04-06 17:07:30
- Updated at: 2025-04-06 18:21:22
- Link: https://ethereal-o.github.io/2025/04/06/llm-learning/
- License: This work is licensed under CC BY-NC-SA 4.0.