ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

train-sentence-transformers - hardware_guide

train-sentence-transformers - hardware_guide 硬件指南训练嵌入模型通常是内存受限而不是计算受限。如果遇到 OOM按此顺序尝试减小per_device_train_batch_size。提高gradient_accumulation_steps以保持回归损失的有效批次大小。对于 MNRL通过梯度累积得到的有效批次不等价——见第 3 点。启用gradient_checkpointingTrue。慢约 30%激活内存减少约 40%。与Cached*损失不兼容。切换到Cached*损失CachedMultipleNegativesRankingLoss(model, mini_batch_size32)— 以小批量前向传播在整个批次上累积对比损失。可以在 24GB GPU 上模拟 1024 的批次大小。CachedSpladeLoss(model, loss..., mini_batch_size16)— 对稀疏使用同样的技巧。CachedGISTEmbedLoss(model, guide_model, mini_batch_size32)— GIST 变体。对 1B 的解码器模型启用 PEFT / LoRA。LoraConfig(r64, lora_alpha128, task_typeFEATURE_EXTRACTION)。参见../scripts/train_sentence_transformer_with_lora_example.pydocstring 涵盖何时使用、超参数、QLoRA、共享。转向多 GPU。见下文。缩短序列。如果截断到 128 对你的任务已经足够请在 transformer 模块上设置max_seq_length。多 GPUsentence-transformers在底层使用accelerate。分布式训练无需修改代码即可工作。数据并行DDP启动accelerate launch train.py# 或显式accelerate launch--multi_gpu--num_processes4train.pyper_device_train_batch_size保持为每 GPU 的值。有效批次大小线性扩展。MNRL 的批内负样本保持为每设备而非全局除非你向支持它的损失函数传入gather_across_devicesTrueMultipleNegativesRankingLoss、CachedMultipleNegativesRankingLoss、对称变体、GISTEmbedLoss、CachedGISTEmbedLoss、SparseMultipleNegativesRankingLoss。FSDP / DeepSpeed对于 3B 的模型使用accelerate config启用 FSDP 或 DeepSpeed ZeRO。两者都受支持——sentence-transformers不需要任何代码更改只需要启动配置。accelerate config# 交互式选择 FSDP 或 DeepSpeedaccelerate launch train.py使用 FSDP 全分片7B 模型可以在 4×24GB GPU 上训练而其中任何单个 GPU 都会 OOM。FSDP 注意事项来自分布式训练文档截至编写时评估器无法在 FSDP 下运行—— 评估钩子调用model.encode()而 FSDP 包装的模块在训练中途无法处理它。改为计划在训练后以单 GPU 加载最终检查点进行评估或者如果你需要训练中评估使用 DDP 训练。必须指定层包装例如fsdp_config{transformer_layer_cls_to_wrap: BertLayer}为你的模型替换正确的层类BertLayer、LlamaDecoderLayer、Qwen2DecoderLayer等。不这样做FSDP 分片可能静默出错。对适合单 GPU 的模型比 DDP 慢—— 只有在你确实需要内存节省时才使用 FSDP。DeepSpeed ZeRO-2/3 是一个替代方案有自己的配置在accelerate config层面工作方式相同。对比损失的有效批次大小对于MultipleNegativesRankingLoss及其变体批次大小是质量旋钮而不仅仅是速度旋钮。更大的批次 更多的批内负样本 更丰富的梯度。每个锚点的有效批内负样本池设置每个锚点的批内负样本数单 GPU批次 64634× DDP每设备批次 64默认仅本地 63使用MultipleNegativesRankingLoss(model, gather_across_devicesTrue)为 255单 GPUCachedMNRLmini_batch 32批次 2562554× DDPCachedMNRL每设备 256本地 255使用gather_across_devicesTrue为 1023对于大型语料库检索朝 512 有效负样本推进。对于小而干净的数据集STS64 就足够了。按 GPU 的精度选择GPU 代推荐T4、V100、GTX 1xxx、RTX 2xxxfp16TrueRTX 3xxx、A10G、A100、L4bf16TrueRTX 4xxx、H100、B200bf16True或通过特定内核在 H100 上用 fp8——不是默认Apple M 系列 / ROCmMPS/ROCm 支持不稳定fp16或fp32最可靠bf16 数值上更稳定在可用时几乎总是首选。Hugging Face Jobs 类型指南Hugging Face Jobs 需要 Pro/Team/Enterprise 计划。价格是近似值可能变动——参见 Jobs 定价页面。类型内存典型用途估计 $/小时cpu-basic~2 GB数据准备、验证、困难负样本挖掘小$0.10cpu-upgrade~4 GB同上稍大$0.10t4-small16 GB演示、小批次的 MiniLM/DistilBERT~$0.75t4-medium16 GB较大批次的 MiniLM / DistilBERT~$1.50l4x124 GBBERT-base、MPNet、ModernBERT-base~$2.50a10g-small24 GBBERT-base 到 BERT-large~$3.50a10g-large48 GBModernBERT-large、Qwen3-0.6B~$5.00a10g-largex296 GB2× 48GB中型多 GPU~$10a100-large80 GB大模型或大对比批次~$10–12h10080 GB最大的单 GPU~$12h100x8640 GBLLM 规模分布式~$96按基座模型的默认值MiniLM / DistilBERT -t4-smallBERT-base / MPNet / ModernBERT-base -a10g-small或l4x1BERT-large / ModernBERT-large -a10g-largeQwen3-0.6B 解码器基座 -a10g-large带 LoRA 的 1B 解码器基座 -a10g-large或a100-large始终从一个比你认为需要的小一档的类型开始在 Jobs 上 OOM 很便宜失败运行 $0.50–$5。第一次尝试时配置不足比配置过度更好。在预算timeout时为模型加载、检查点保存和 Hub 推送增加20–30% 缓冲。
返回列表