[Datawhale X 魔搭 AI夏令营] AIGC方向 Task01笔记

173 阅读5分钟

ref: 《动手学大模型应用全栈开发》linklearner.com/activity/14…

Task01笔记

关键词: AIGC文生图、工作流搭建、LoRA微调

相关标签:#可图Kolors-LoRA风格故事挑战赛

环境准备

链接:free.aliyun.com/?productCod… 开通免费试用

链接:www.modelscope.cn/my/mynotebo…

如果这一步授权失败,可跳过此步骤,继续往下进行

  • 新用户需要先注册 & 绑定阿里云账号

链接:www.modelscope.cn/my/mynotebo…

  • 打开上图中 Other - Terminal 可以看到DSW控制台,如下

  • 至此,基础环境搭建完成

baseLine 模型部署

  • 在workspace目录执行命令
git lfs install
git clone https://www.modelscope.cn/datasets/maochase/kolors.git
  • Clone完成后 通过左侧面板进入kolors文件夹,打开baseline文件

  • 安装环境,然后重启kernel

  • 调整prompt,设置你想要的图片风格,依次修改8张图片的描述(可选,先不改吧,直接到下一步运行)

    • 正向描述词:你想要生成的图片应该包含的内容
    • 反向提示词:你不希望生成的图片的内容
  • 执行代码 获得图片(大约需要20分钟

  • 此处如果报错 # ModuleNotFoundError: No module named 'diffsynth

    • 可能是第一步执行install没成功,再回去跑一下
    • 返回Terminal标签页
    • 进入DiffSynth-Studio目录
    • 执行pip install -e .
    • 重新进入baseline标签页 一键运行,成了
  • 很好,基础操作完成,再回去看看能改什么

提示词调整

  • 找到prompt块,调整描述内容
    • 与官方给出提示词做以区别
      • 紫色 改为 蓝色
      • 粉色 改为 红色
      • 短发 改为 长发
      • 根据各位喜好说不定能调成蕾姆(不是

模型参数调整

  • 找到train_kolors_lora块,调整执行参数

  • 根据前一步指令给出的信息有如下执行参数可进行调整

usage: train_kolors_lora.py [-h] --pretrained_unet_path PRETRAINED_UNET_PATH
                            --pretrained_text_encoder_path
                            PRETRAINED_TEXT_ENCODER_PATH
                            --pretrained_fp16_vae_path
                            PRETRAINED_FP16_VAE_PATH
                            [--lora_target_modules LORA_TARGET_MODULES]
                            --dataset_path DATASET_PATH
                            [--output_path OUTPUT_PATH]
                            [--steps_per_epoch STEPS_PER_EPOCH]
                            [--height HEIGHT] [--width WIDTH] [--center_crop]
                            [--random_flip] [--batch_size BATCH_SIZE]
                            [--dataloader_num_workers DATALOADER_NUM_WORKERS]
                            [--precision {32,16,16-mixed}]
                            [--learning_rate LEARNING_RATE]
                            [--lora_rank LORA_RANK] [--lora_alpha LORA_ALPHA]
                            [--use_gradient_checkpointing]
                            [--accumulate_grad_batches ACCUMULATE_GRAD_BATCHES]
                            [--training_strategy {auto,deepspeed_stage_1,deepspeed_stage_2,deepspeed_stage_3}]
                            [--max_epochs MAX_EPOCHS]
                            [--modelscope_model_id MODELSCOPE_MODEL_ID]
                            [--modelscope_access_token MODELSCOPE_ACCESS_TOKEN]

Simple example of a training script.

options:
  -h, --help            show this help message and exit
  --pretrained_unet_path PRETRAINED_UNET_PATH
                        Path to pretrained model (UNet). For example, `models/
                        kolors/Kolors/unet/diffusion_pytorch_model.safetensors
                        `.
  --pretrained_text_encoder_path PRETRAINED_TEXT_ENCODER_PATH
                        Path to pretrained model (Text Encoder). For example,
                        `models/kolors/Kolors/text_encoder`.
  --pretrained_fp16_vae_path PRETRAINED_FP16_VAE_PATH
                        Path to pretrained model (VAE). For example,
                        `models/kolors/Kolors/sdxl-vae-
                        fp16-fix/diffusion_pytorch_model.safetensors`.
  --lora_target_modules LORA_TARGET_MODULES
                        Layers with LoRA modules.
  --dataset_path DATASET_PATH
                        The path of the Dataset.
  --output_path OUTPUT_PATH
                        Path to save the model.
  --steps_per_epoch STEPS_PER_EPOCH
                        Number of steps per epoch.
  --height HEIGHT       Image height.
  --width WIDTH         Image width.
  --center_crop         Whether to center crop the input images to the
                        resolution. If not set, the images will be randomly
                        cropped. The images will be resized to the resolution
                        first before cropping.
  --random_flip         Whether to randomly flip images horizontally
  --batch_size BATCH_SIZE
                        Batch size (per device) for the training dataloader.
  --dataloader_num_workers DATALOADER_NUM_WORKERS
                        Number of subprocesses to use for data loading. 0
                        means that the data will be loaded in the main
                        process.
  --precision {32,16,16-mixed}
                        Training precision
  --learning_rate LEARNING_RATE
                        Learning rate.
  --lora_rank LORA_RANK
                        The dimension of the LoRA update matrices.
  --lora_alpha LORA_ALPHA
                        The weight of the LoRA update matrices.
  --use_gradient_checkpointing
                        Whether to use gradient checkpointing.
  --accumulate_grad_batches ACCUMULATE_GRAD_BATCHES
                        The number of batches in gradient accumulation.
  --training_strategy {auto,deepspeed_stage_1,deepspeed_stage_2,deepspeed_stage_3}
                        Training strategy
  --max_epochs MAX_EPOCHS
                        Number of epochs.
  --modelscope_model_id MODELSCOPE_MODEL_ID
                        Model ID on ModelScope (https://www.modelscope.cn/).
                        The model will be uploaded to ModelScope automatically
                        if you provide a Model ID.
  --modelscope_access_token MODELSCOPE_ACCESS_TOKEN
                        Access key on ModelScope (https://www.modelscope.cn/).
                        Required if you want to upload the model to
                        ModelScope.
  • 拿gpt做了个参数对照表供参考
参数完整名是否必填可选设置值参数名中文翻译设置值中文翻译
--help帮助
--pretrained_unet_path预训练UNet路径
--pretrained_text_encoder_path预训练文本编码器路径
--pretrained_fp16_vae_path预训练FP16 VAE路径
--lora_target_modulesLoRA目标模块
--dataset_path数据集路径
--output_path输出路径
--steps_per_epoch每个epoch的步骤数
--height图像高度
--width图像宽度
--center_crop中心裁剪
--random_flip随机翻转
--batch_size批处理大小
--dataloader_num_workers数据加载器工作线程数
--precision32, 16, 16-mixed精度32位, 16位, 混合16位
--learning_rate学习率
--lora_rankLoRA秩
--lora_alphaLoRA alpha值
--use_gradient_checkpointing使用梯度检查点
--accumulate_grad_batches累计梯度批次
--training_strategyauto, deepspeed_stage_1, deepspeed_stage_2, deepspeed_stage_3训练策略自动, 深度加速阶段1, 深度加速阶段2, 深度加速阶段3
--max_epochs最大epoch数
--modelscope_model_idModelScope模型ID
--modelscope_access_tokenModelScope访问令牌
  • 改命令python DiffSynth-Studio/examples/train/kolors/train_kolors_lora.py后面的参数 再一键执行
  • 继续等……估计是改参数之后更费GPU了,半小时还没跑完……
  • 终于出结果 - 嘶,画风有点不太一致,而且prompt关键词没调统一 image.png

存一份打卡内容

  • 微调结果上传魔搭(点击即可跳转)

  • 移动结果文件

    • 打开Terminal 执行命令
    mkdir /mnt/workspace/kolors/output & cd 
    cp /mnt/workspace/kolors/models/lightning_logs/version_0/checkpoints/epoch=0-step=500.ckpt /mnt/workspace/kolors/output/
    cp /mnt/workspace/kolors/1.jpg /mnt/workspace/kolors/output/
    
    • 进入左侧目录output,选中文件-右键-download
    • 下载一个图片+一个ckpt文件
  • 上传

    • 点击魔搭链接,创建模型,中文名称建议格式:队伍名称-可图Kolors训练-xxxxxx
    • ps: 有小伙伴有想法可以组个队
  • 创建完成:www.modelscope.cn/models/Magi…

  • 大致了解完调试过程,返回看[赛题内容] (待更新)

    • 参赛者需在可图Kolors 模型的基础上训练LoRA 模型,生成无限风格,如水墨画风格、水彩风格、赛博朋克风格、日漫风格......
    • 基于LoRA模型生成 8 张图片组成连贯故事,故事内容可自定义;基于8图故事,评估LoRA风格的美感度及连贯性