当前位置: 首页 > news >正文

Amazon Linux 训练lora模型的方式

1. 基本思路

Amazon Linux(尤其是 Amazon Linux 2)和常见的 Ubuntu 系列不太一样,主要差异在:

  • 默认的 Python 版本较老(Amazon Linux 2 常见是 2.7/3.7,需要自己安装新版本)

  • 部分构建工具和依赖(gcc, glibc, cmake 等)需要额外安装

  • 部分 Python 包(如 PyTorch、xformers)需要对应 CUDA 版本的预编译 wheel,否则编译极慢

目标:

  • Python ≥ 3.10

  • CUDA 对应的 PyTorch

  • 安装 LoRA 训练框架(推荐 Kohya_sssd-scripts

  • 数据准备和训练执行


2. 环境准备

2.1 更新系统

sudo yum update -y

2.2 安装必要工具

sudo yum groupinstall "Development Tools" -y sudo yum install git wget unzip bzip2 make cmake -y


3. 安装 Python 3.10+

Amazon Linux 2 自带的 Python 太老,需要自己装新版本。

sudo amazon-linux-extras enable python3.10 sudo yum install python3.10 python3.10-devel -y python3.10 -m ensurepip python3.10 -m pip install --upgrade pip

验证:


python3.10 --version

4. 安装 CUDA / cuDNN

如果你用的是 AWS GPU 实例(如 p3/p4/g4dn),推荐直接用 AWS 的 NVIDIA 驱动 AMI 或官方教程:


# 安装驱动和 CUDA Toolkit sudo yum install -y cuda sudo yum install -y libcudnn8 libcudnn8-devel

安装完成后重启,并检查:


nvidia-smi nvcc --version

5. 安装 PyTorch 和 xformers

根据你的 CUDA 版本选择正确的 wheel(以下以 CUDA 11.8 为例):

python3.10 -m pip install torch==2.1.2 torchvision==0.16.2 --index-url https://download.pytorch.org/whl/cu118 python3.10 -m pip install xformers==0.0.23.post1 --index-url https://download.pytorch.org/whl/cu118

检查:


python3.10 -c "import torch;print(torch.__version__, torch.cuda.is_available())"

6. 安装 LoRA 训练工具

6.1 Kohya_ss(推荐,功能全)

git clone https://github.com/kohya-ss/sd-scripts.git cd sd-scripts python3.10 -m venv venv source venv/bin/activate pip install --upgrade pip wheel pip install -r requirements.txt

6.2 或者直接用 webui 训练扩展

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd stable-diffusion-webui/extensions git clone https://github.com/kohya-ss/sd-webui-additional-networks.git

7. 数据集准备(关键步骤)

7.1 数据量

  • 最少:10~20 张高质量图(LoRA 可以用很小的数据集)

  • 推荐:30~50 张,如果是人物 / 特定风格,越多越好(但不要无关图)

7.2 图片要求

  • 分辨率尽量接近训练分辨率(比如 512×512 或 768×768)

  • PNG/JPG 都行,但 JPG 不要压缩太狠

  • 主题要清晰、干净,少杂物、少背景干扰

7.3 文件命名(可选做法)

用统一命名方便管理:


dataset/ subject_0001.png subject_0002.png subject_0003.png

7.4 生成训练标签

LoRA 训练依赖**提示词(tags)**来引导学习,最好每张图有一份 .txt 标签文件。
如果不自己写,可以用自动打标签工具(推荐 WD14 Tagger):

方法 1:找文件位置

# 进入 sd-scripts 目录的虚拟环境source venv/bin/activate # 安装标签生成依赖pip install transformers pillow # 运行 WD14 自动打标签(会生成 dataset/imgxxx.txt)python finetune/tag_images_by_wd14_tagger.py \--batch_size 4 \--repo_id SmilingWolf/wd-v1-4-vit-tagger-v2 \dataset

生成的 .txt 类似:

1girl, solo, long hair, smile, blue eyes, dress

方法 2:用 WebUI 里的自动打标签

如果你同时装了 Stable Diffusion WebUI,可以用 WD14 Tagger 扩展,不必手动运行脚本。
安装:


cd stable-diffusion-webui/extensions git clone https://github.com/toriato/stable-diffusion-webui-wd14-tagger.git

然后在 WebUI 的“批量处理”里批量打标签。


方法 3:自己写个简化版打标签脚本

wd-v1-4-vit-tagger-v2 模型是 HuggingFace 上的,可以用几行代码直接调用:

from PIL import Image from transformers import AutoProcessor, AutoModelForImageClassification import os model_id = "SmilingWolf/wd-v1-4-vit-tagger-v2" processor = AutoProcessor.from_pretrained(model_id) model = AutoModelForImageClassification.from_pretrained(model_id) img_dir = "dataset" for file in os.listdir(img_dir): if file.lower().endswith((".png", ".jpg", ".jpeg")): img = Image.open(os.path.join(img_dir, file)).convert("RGB") inputs = processor(images=img, return_tensors="pt") outputs = model(**inputs) logits = outputs.logits[0] tags = [model.config.id2label[i] for i in logits.topk(5).indices] with open(os.path.join(img_dir, file.rsplit(".",1)[0]+".txt"), "w") as f: f.write(", ".join(tags))

建议:把所有图片的标签里加一个专属词,比如 mycharname,这样 LoRA 训练出来时你就能用这个词触发效果。

8. 训练 LoRA(Python 3.12 + AL2023)

8.1 基本命令

假设你用 sd-scripts 训练,数据集在 dataset/,模型是 stable-diffusion-v1-5

accelerate launch train_network.py \ --pretrained_model_name_or_path="model/stable-diffusion-v1-5" \ --train_data_dir="dataset" \ --resolution=512,512 \ --output_dir="lora_out" \ --logging_dir="logs" \ --network_module=networks.lora \ --text_encoder_lr=5e-5 \ --unet_lr=1e-4 \ --network_dim=128 \ --learning_rate=1e-4 \ --lr_scheduler="cosine" \ --train_batch_size=2 \ --max_train_steps=10000 \ --save_every_n_epochs=1 \ --mixed_precision="fp16" \ --cache_latents \ --optimizer_type="AdamW8bit"

8.2 关键参数解释

参数作用建议值
--network_dimLoRA 维度(越高越细致,但文件更大)64~128
--train_batch_size批量大小(显存不够就调小)1~2
--max_train_steps总训练步数2k~10k
--text_encoder_lr文本编码器学习率5e-5
--unet_lrUNet 学习率1e-4
--mixed_precision混合精度fp16(省显存)
--optimizer_type优化器AdamW8bit(节省显存)


8.3 显存优化技巧

  • 如果显存 ≤ 8GB:

    • --network_dim=64

    • --train_batch_size=1

    • --gradient_checkpointing

    • 开启 --xformers

  • 如果显存 ≥ 16GB:

    • 可以用 --network_dim=128 或更高

    • 批量大小调到 2~4


8.4 输出

训练完成后,你会在 lora_out/ 看到类似:

my_lora.safetensors

把它放到 webui 的 models/Lora/ 目录,加载时在提示词加上:

<lora:my_lora:1>

再加上你定义的专属触发词,就能用训练好的效果生成图。

http://www.xdnf.cn/news/1270009.html

相关文章:

  • Web自动化技术选择
  • 回答“http协议 ,js组件化,工程化, seo优化策略 ,针对不同平台终端适配 web标注和兼容性”
  • 基于遗传优化的智能灌溉系统控制策略matlab仿真
  • Beelzebub靶机通关教程
  • 【工具】Python多环境管理
  • 【Java基础】字符串不可变性、string的intern原理
  • 【李宏毅-2024】第六讲 大语言模型的训练过程1——预训练(Pre-training)
  • 搭建若依前后端分离版本的开发环境
  • 鸿蒙分布式任务调度深度剖析:跨设备并行计算的最佳实践
  • 在nodejs中使用Java方法
  • windows、linux应急响应入侵排查
  • React中实现完整的登录鉴权与权限控制系统
  • 云服务器--阿里云OSS(2)【Springboot使用阿里云OSS】
  • 原生Vim操作大全
  • Python映射合并技术:多源数据集成的高级策略与工程实践
  • Jmeter性能测试之安装及启动Jmeter
  • [Oracle] TRUNC()函数
  • imx6ull-驱动开发篇15——linux自旋锁
  • OpenAI开源大模型 GPT-OSS 开放权重语言模型解析:技术特性、部署应用及产业影响
  • Ubuntu系统忘记密码怎么办?
  • 《TypeScript搭建的认知桥梁:游戏化学习应用的深层架构》
  • 数据结构(一)顺序表
  • CVPR中深度学习新范式:通用性、鲁棒性与多模态的创新突破
  • 【软考中级网络工程师】知识点之 RMON 技术深度剖析
  • dify离线插件安装
  • Android MediaMetadataRetriever取视频封面,Kotlin(1)
  • 密集遮挡场景识别率↑31%!陌讯轻量化部署方案在智慧零售的实战解析
  • 力扣(轮转数组)
  • Python基础教程(六)条件判断:引爆思维Python条件判断的九层境界
  • 网站站长如何借助php推送示例提交网站内容加速百度收录?