Skip to content

Latest commit

 

History

History
144 lines (58 loc) · 4.52 KB

File metadata and controls

144 lines (58 loc) · 4.52 KB

LLM算法

训练, 微调

Links

生命周期

  • 预训练
    • 无监督
  • 后训练
  • 微调
  • 强化学习
  • RAG
  • Agent

框架

  • vllm
  • unsloth
  • deepspeed

算法

  • KNN(K0-Nearest Neighbor, K最近邻分类算法)

观点

  • LLM具有自回归特性

Training

Fune-Tuning

NLP

训练

预训练(Pre-Train), 对齐(Alignment)包括, fine-tune, RLHF(基于人类反馈的强化学习), 也就是后训练

Links

Glossary

微调(fine tuning)

指训练模型并微调其性能。具体含义因用法而异,但在 Stable Diffusion 中,狭义的微调是指使用图像和caption进行训练模型。DreamBooth 可视为狭义微调的一种特殊方法。广义的微调包括 LoRA、Textual Inversion、Hypernetworks 等,包括训练模型的所有内容。

步骤(step)

粗略地说,每次在训练数据上进行一次计算即为一步。具体来说,“将训练数据的caption传递给当前模型,将生成的图像与训练数据的图像进行比较,稍微更改模型,以使其更接近训练数据”即为一步。

批次大小(batch size)

批次大小指定每个步骤要计算多少数据。批次计算可以提高速度。一般来说,批次大小越大,精度也越高。

“批次大小×步数”是用于训练的数据数量。因此,建议减少步数以增加批次大小。

(但是,例如,“批次大小为 1,步数为 1600”和“批次大小为 4,步数为 400”将不会产生相同的结果。如果使用相同的学习速率,通常后者会导致模型欠拟合。请尝试增加学习率(例如 2e-6),将步数设置为 500 等。)

批次大小越大,GPU 内存消耗就越大。如果内存不足,将导致错误,或者在边缘时将导致训练速度降低。建议在任务管理器或 nvidia-smi 命令中检查使用的内存量进行调整。

注意,一个批次是指“一个数据单位”。

学习率

学习率指的是每个步骤中改变的程度。如果指定一个大的值,学习速度就会加快,但是可能会出现变化太大导致模型崩溃或无法达到最佳状态的情况。如果指定一个小的值,学习速度会变慢,同时可能无法达到最佳状态。

在fine tuning、DreamBooth、LoRA等过程中,学习率会有很大的差异,并且也会受到训练数据、所需训练的模型、批次大小和步骤数等因素的影响。建议从通常值开始,观察训练状态并逐渐调整。

默认情况下,整个训练过程中学习率是固定的。但是可以通过调度程序指定学习率如何变化,因此结果也会有所不同。

Epoch

Epoch指的是训练数据被完整训练一遍(即数据已经迭代一轮)。如果指定了重复次数,则在重复后的数据迭代一轮后,为1个epoch。

1个epoch的步骤数通常为“数据量÷批次大小”,但如果使用Aspect Ratio Bucketing,则略微增加(由于不同bucket的数据不能在同一个批次中,因此步骤数会增加)。

长宽比分桶(Aspect Ratio Bucketing)

Stable Diffusion 的 v1 是以 512512 的分辨率进行训练的,但同时也可以在其他分辨率下进行训练,例如 2561024 和 384*640。这样可以减少裁剪的部分,希望更准确地学习图像和标题之间的关系。

此外,由于可以在任意分辨率下进行训练,因此不再需要事先统一图像数据的长宽比。

此值可以被设定,其在此之前的配置文件示例中已被启用(设置为 true)。

只要不超过作为参数给出的分辨率区域(= 内存使用量),就可以按 64 像素的增量(默认值,可更改)在垂直和水平方向上调整和创建训练分辨率。

在机器学习中,通常需要将所有输入大小统一,但实际上只要在同一批次中统一即可。 NovelAI 所说的分桶(bucketing) 指的是,预先将训练数据按照长宽比分类到每个学习分辨率下,并通过使用每个 bucket 内的图像创建批次来统一批次图像大小。

LoRA训练

kohyaSD-

kohya发音: こーや(kohya): [koːʝa] 或 [koːja]

参数

  • train_batch_size: 增加会让训练epoch变多, 时间变长
  • num_repeats: 从目录中拿取, 除非 增加数据集
  • epoch: