You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用HuggingFace的run_translation.py从零训练翻译模型?

如何用HuggingFace从零训练翻译模型?

我试过用HuggingFace的几个脚本构建语言模型,包括run_mlm.py、run_clm.py和run_translation.py。前两个支持从零训练(不需要预训练基础模型),但run_translation.py必须指定模型名称或路径,没法直接从零构建。我有大规模平行翻译数据集,想问怎么从零训练翻译模型?


更新说明

当前使用的命令如下:

NCCL_P2P_DISABLE="1" NCCL_IB_DISABLE="1" python run_translation.py \
    --output_dir models/TestTranslation-v1 \
    --model_name_or_path fnlp/bart-base-chinese \
    --tokenizer_name path/to/custom-tokenizer \
    --train_file data/bart_parallel/train.json \
    --validation_file data/bart_parallel/validation.json \
    --do_train \
    --do_eval \
    --source_lang yue \
    --target_lang zh

注:NVIDIA 4090显卡需要添加NCCL_*相关参数。


解决方案

要通过run_translation.py从零训练翻译模型,核心是用模型配置初始化空架构+随机权重,而非加载预训练模型,具体步骤如下:

1. 调整命令参数

放弃指定预训练模型--model_name_or_path,改用--config_name定义模型架构,并添加--init_from_random参数(部分新版本run_translation.py支持该参数,用于触发随机初始化)。以BART架构为例:

NCCL_P2P_DISABLE="1" NCCL_IB_DISABLE="1" python run_translation.py \
    --output_dir models/TestTranslation-v1 \
    --config_name bart-base \
    --tokenizer_name path/to/custom-tokenizer \
    --train_file data/bart_parallel/train.json \
    --validation_file data/bart_parallel/validation.json \
    --do_train \
    --do_eval \
    --source_lang yue \
    --target_lang zh \
    --init_from_random

2. 适配旧版本脚本(如果需要)

如果你的run_translation.py版本没有--init_from_random参数,需要手动修改脚本逻辑:
找到加载模型的代码块,替换原本加载预训练模型的逻辑,改为用配置初始化空模型。以BART为例:

from transformers import BartConfig, BartForConditionalGeneration

# 替换原模型加载代码
config = BartConfig.from_pretrained(args.config_name)
model = BartForConditionalGeneration(config)

3. 关键注意事项

  • 从零训练对数据量和计算资源要求极高,你的大规模平行数据集是基础,但训练周期会远长于微调预训练模型。
  • 确保自定义分词器适配目标模型架构(比如BART/T5这类序列到序列模型),且正确配置了源语言(yue)和目标语言(zh)的处理逻辑。
  • 单卡训练时可尝试移除NCCL_*参数,多卡训练则保留以避免通信报错。

内容的提问来源于stack exchange,提问作者Raptor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 21:55:12