全部 6 个数据中心运行正常

加密货币支付 · 无需身份核验 · 5 分钟以内 内获得 root 权限

实践 指南 · 阅读需 10 分钟

在单张显卡上微调 70B 模型。

QLoRA 能把原本需要一整机架的训练任务,变成只需要一张 48 GB GPU 就能完成的任务。以下是能放下什么、每月要多少钱,以及这项技术在哪里会失效。

简短的答案

70B 上的 QLoRA
~61 GB — 在较短序列长度下可放入一张 48 GB 显卡,在 80 GB 显卡上则绰绰有余
70B 模型的全量微调
~1,232 GB — 多节点集群,我们并不出租此类配置
这个比例
显存需求大约减少20×,而这项技术在大多数任务上都能达到大部分效果
在这里的费用
起价$286/月,整月显卡归您独享,而不只是单次运行期间

实际能放下什么

LoRA 冻结原模型,只在每个权重矩阵旁边训练一小对低秩矩阵。QLoRA 更进一步,把冻结的权重以 4-bit 存储。因此,您必须保留在显存里的内容也随之彻底改变。

冻结权重每个参数 4 bit70B 模型需要 35 GB。每一步都会被读取,但从不更新,因此不需要梯度。
适配器约占参数量的 1–2%BF16 下一两个 GB。这是唯一会变化的权重,也是训练结束后您唯一需要保留的东西。
优化器状态Adam 优化器,仅作用于适配器每个训练参数对应两个矩(动量)。这一项在全量微调中占主导,在这里则几乎可以忽略。
激活值可变的那一项会随批大小和序列长度增长。梯度检查点用大约多 30% 的计算量,换取显存占用的大幅下降 —— 这是训练放不下时常用的手段。

全量微调为何不会

BF16 下的全量微调,每个参数大约需要 16 字节:权重本身 2 字节,梯度 2 字节,Adam 的两个动量用 FP32 存储占 8 字节,再加上主副本。这是一个固定的倍数,而且非常吃显存。

训练显存:QLoRA 与全量微调对比
模型QLoRA全量微调比例这意味着什么
Llama 3.1 8B8B 参数 13 GB 141 GB 11× 一张 24 GB 显卡 全量微调:8卡节点
Gemma 3 27B27B 参数 27 GB 475 GB 17× 一张 48 GB 显卡 全量微调:8卡节点
Qwen 3 32B32B 参数 31 GB 563 GB 18× 一张 48 GB 显卡 全量微调:8卡节点
Llama 3.3 70B70B 参数 61 GB 1,232 GB 20× 一张 80 GB 显卡 全量微调:超过一个节点

这些是数量级估算,为激活值留出了适度的余量——足以帮您选择机器,但不足以保证某次具体运行的结果。序列长度和批大小会显著影响 QLoRA 一列的数值;全量微调一列几乎不受影响,因为它由固定的每参数 16 字节主导。

逐个模型来看

我们产品目录里,能以 QLoRA 训练每个模型的最便宜节点,以及日后为其提供推理服务所需的服务器。

训练 QLoRA 最便宜的节点,以及用于服务训练结果的节点
模型训练显存最便宜的训练节点最便宜的推理服务节点
Llama 3.1 8B 13 GB NVIDIA L4每张显卡 24 GB · $125/月 NVIDIA L4$125/月
Mistral Small 24B 25 GB NVIDIA RTX A6000每张显卡 48 GB · $286/月 NVIDIA L4$125/月
Gemma 3 27B 27 GB NVIDIA RTX A6000每张显卡 48 GB · $286/月 NVIDIA L4$125/月
Qwen 3 32B 31 GB NVIDIA RTX A6000每张显卡 48 GB · $286/月 NVIDIA L4$125/月
Llama 3.3 70B 61 GB NVIDIA A100 PCIe每张显卡 80 GB · $1,091/月 2 × NVIDIA L4$285/月

训练需要显存;推理服务需要显存带宽。常见的情况是:合适的训练卡是便宜的大显存卡,合适的推理卡是昂贵的高速卡——既然这里两者都是按月计费,把它们分别放在不同的机器上运行,往往比在一台机器上妥协更划算。

实际运行

Axolotl 作为配置器中预装镜像之一提供。以下是在一台空白服务器上、单张显卡完成的完整训练流程。

在单张显卡上跑一次 QLoRA 训练
$ mkdir -p /scratch/ft && cd /scratch/ft
$ cat > qlora.yml <<'YAML'
base_model: meta-llama/Llama-3.3-70B-Instruct
load_in_4bit: true
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_linear: true

sequence_len: 2048
sample_packing: true
gradient_checkpointing: true
micro_batch_size: 1
gradient_accumulation_steps: 16
num_epochs: 2
learning_rate: 0.0001
optimizer: paged_adamw_8bit
bf16: true

datasets:
  - path: /scratch/ft/data.jsonl
    type: chat_template
output_dir: /scratch/ft/out
YAML

$ docker run --rm --gpus all --ipc=host --shm-size=16g \
    -v /scratch/ft:/workspace -v /scratch/models:/root/.cache/huggingface \
    -e HF_TOKEN="$HF_TOKEN" \
    axolotlai/axolotl:main-latest \
    axolotl train /workspace/qlora.yml
开始的两分钟,盯着显存,而不是损失值
$ nvidia-smi dmon -s um

# If memory sits just under the card's total, you are one long batch
# away from an out-of-memory error four hours into the run.
# Lower sequence_len or micro_batch_size now, not then.

真正重要的几个设置

lora_r16 到 64秩(rank),也是质量与显存之间最主要的调节旋钮。16 是一个稳妥的默认值;超过 64 很少物有所值,除非您教给模型的是真正全新的知识,而不只是格式或风格。
lora_target_lineartrue对每一层线性层都做适配,而不只是注意力层。代价很小,效果却持续优于只适配注意力层的默认设置。
sequence_len影响显存最大的单一因素激活值会随之等比例变化。把它减半,大致就能把显存里可变的那部分也减半。请把它设置为您数据实际的长度,而不是模型的最大长度。
gradient_checkpointingtrue,几乎总是如此大约慢 30%,但正因为有它,70B 模型才能勉强塞进一张显卡。只有在显存有富余时才该关闭它。
micro_batch_size & 梯度累积二者相互权衡有效批大小是两者的乘积。显存吃紧时,把微批保持为 1,提高累积步数 —— 梯度效果不变,峰值显存更低,速度略慢。
优化器paged_adamw_8bit8-bit 优化器状态,辅以 CPU 分页作为安全阀,用来吸收原本会在第四小时让训练中断的显存峰值。

一个月的费用

包月租用对训练比对推理服务更重要,原因在于:一个微调项目从来不是一次运行。第一次因数据问题失败,第二次过拟合,第三次终于跑通,之后还要换着不同的秩再跑五次。

按服务器划分的微调项目成本
机器显卡显存每月适合
NVIDIA L4300 GB/s 24 GB $125/月 QLoRA 最高支持到8B
NVIDIA RTX 50901,792 GB/s 32 GB $335/月 QLoRA 最高支持到32B
NVIDIA A100 PCIe1,555 GB/s 40 GB $392/月 QLoRA 最高支持到32B
NVIDIA RTX A6000768 GB/s 48 GB $286/月 QLoRA 最高支持到32B
NVIDIA A100 PCIe1,935 GB/s 80 GB $1,091/月 QLoRA 最高支持到70B

把它和按项目、而不是按单次运行计算的按小时计费方式做个对比:收支平衡指南已经算过这笔账。一台为了迭代而存在三周的服务器,正是计量计费比包月租期更贵的典型情况。

LoRA 失效的地方

这是一项非常好的技术,但有明确的边界,租用之前,值得先弄清楚您落在边界的哪一侧。

教会模型一个真正全新的领域。LoRA 擅长调整行为,却不擅长注入知识。一个从未接触过您所在领域的模型,不会靠一个低秩适配器学会它。

更改词表或分词器。新增的 token 需要训练嵌入,这超出了适配器能触及的范围。

在数十亿 token 上继续做预训练。这属于全量微调,需要用到上表右侧那一栏的服务器 —— 不止一个节点,超出了我们出租的范围。

为了跑分再挤出最后两分。全量微调在边际上仍然更胜一筹。如果您拿的正是这点边际收益的钱,LoRA 就不是正确的工具。

至于其他一切场景 —— 语气、格式、结构,或者基础模型本就略知一二的领域 —— 单张显卡上的 QLoRA,只用一小部分服务器成本,就能达到大部分的效果。这是一笔取舍,而对大多数人实际微调的模型来说,这是一笔划算的取舍。

选定显卡,整个项目期间都用它。

每种配置都是按月租用,带 root 权限,不计量计费 —— 这正是反复迭代微调实际需要的条件。

登录

控制台、账单与带外访问。

还没有账户?

没有单独的注册流程。您的账户会在您 下第一笔订单时自动创建——您在付款步骤中选择邮箱和密码, 机器交付时,控制台也随之开通。

配置服务器

Language