ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

FlexGen 仓库视角下的 Transformers Flax 语言模型预训练实战:从零训练 RoBERTa、GPT-2、T5 与 BART

FlexGen 仓库视角下的 Transformers Flax 语言模型预训练实战:从零训练 RoBERTa、GPT-2、T5 与 BART 推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载本篇技术指南以benchmark/third_party/transformers/examples/flax/language-modeling/README.md为核心文档系统讲解如何利用 JAX/Flax 后端从零预训练四种主流语言模型——双向的 RoBERTaMLM、自回归的 GPT-2CLM、span-masked 的 T5 以及去噪自编码的 BART。文中的示例脚本与配套代码均位于当前仓库的benchmark/third_party/transformers/examples/flax/language-modeling/目录下读者学完后可以掌握训练 tokenizer → 创建模型配置 → 启动预训练 → 评估与推送 Hub的完整闭环并理解 JAX 纯函数式编程、jax.pmap数据并行与 Optax 优化器在语言模型训练中的实际落地方式。一、文档定位Flax 语言模型预训练示例在仓库中的角色该文档隶属于当前仓库benchmark/third_party/transformers/这份第三方 Transformers 代码快照中。它与仓库主项目 FlexGen面向单 GPU 吞吐优先场景的大语言模型推理系统属于参照与对比的关系FlexGen 专注于推理侧的吞吐优化而这些 Flax 示例则展示了完整的上游预训练链路。阅读本指南时你既可以将这些脚本当作独立的语言模型训练工具使用也可以把它们视为理解大模型如何从无到有产生的背景知识。目录中与文档配套的脚本与文件包括run_mlm_flax.py掩码语言建模MLM训练脚本支持 BERT/RoBERTa 等双向模型run_clm_flax.py因果语言建模CLM训练脚本支持 GPT-2 等自回归模型run_t5_mlm_flax.pyT5 式 span-masked 语言建模脚本run_bart_dlm_flax.pyBART 去噪语言建模脚本t5_tokenizer_model.py面向 T5 的 SentencePiece Unigram tokenizer 训练实现requirements.txt脚本运行所需的最小依赖清单。二、为什么选择 JAX/Flax 做预训练文档开篇即点明了选型理由JAX/Flax 允许你trace 纯函数并将其编译成高效的、融合fused的加速器代码可同时在 GPU 与 TPU 上运行。用 JAX/Flax 编写的模型是不可变的immutable参数以纯函数式方式更新这使得模型并行model parallelism的实现简单且高效——因为不存在可变状态跨设备同步的问题。以 MLM 脚本为例训练主循环中可以看到这套范式在代码层面的体现见run_mlm_flax.pyjax.value_and_grad(loss_fn, has_auxTrue)一次性返回损失与梯度jax.pmap(train_step, batch, donate_argnums(0,))将训练步编译为跨设备并行的 SPMD 程序jax.lax.psum在 batch 维度上做跨设备归约得到全局 loss 与梯度jax_utils.replicate(state)将训练状态复制到每个设备。对训练吞吐有极致要求的团队例如 TPU pod 用户这套 pipeline 能最大化加速器利用率这正是文档选择在单台 TPUv3-8 上展示完整预训练流程的原因。三、环境准备与依赖安装所有示例脚本的依赖统一声明在requirements.txt中最小版本如下datasets 1.1.3 jax0.2.8 jaxlib0.1.59 flax0.3.5 optax0.0.9此外还需要transformers、tokenizers以及用于训练日志可视化的tensorboard脚本通过is_tensorboard_available()检测仅在主进程写入 SummaryWriter。若需要使用--push_to_hub还需通过huggingface-cli login完成 Hub 认证。四、通用三步工作流任何模型都要先搭好模型仓库无论训练哪种模型文档都遵循同一套三步流程先在本地搭好一个模型仓库目录训练 tokenizer在目标语料上训练分词器并保存为tokenizer.json创建配置从 Hub 上现有 checkpoint 加载配置如roberta-base的RobertaConfig覆盖vocab_size后保存到本地目录训练模型运行对应的run_*_flax.py脚本训练过程中自动把日志与权重推送回该仓库配合--push_to_hub。下面按文档顺序逐一展开四种任务的完整实操。五、掩码语言建模MLM预训练 RoBERTa-base掩码语言建模目标源自 BERT 论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》。文档示例在挪威语 OSCAR 语料上从零预训练roberta-base硬件环境为单台 TPUv3-88 核。5.1 准备目录与训练 tokenizermkdir ./norwegian-roberta-base使用tokenizers库的ByteLevelBPETokenizer与 Hugging Face 官方博客How to train a new language model from scratch一脉相承在 OSCAR 挪威语全量数据上训练from datasets import load_dataset from tokenizers import trainers, Tokenizer, normalizers, ByteLevelBPETokenizer # load dataset dataset load_dataset(oscar, unshuffled_deduplicated_no, splittrain) # Instantiate tokenizer tokenizer ByteLevelBPETokenizer() def batch_iterator(batch_size1000): for i in range(0, len(dataset), batch_size): yield dataset[i: i batch_size][text] # Customized training tokenizer.train_from_iterator(batch_iterator(), vocab_size50265, min_frequency2, special_tokens[ s, pad, /s, unk, mask, ]) # Save files to disk tokenizer.save(./norwegian-roberta-base/tokenizer.json)要点说明vocab_size50265与 RoBERTa 原始词表大小一致其中 5 个位置预留给特殊 tokenmin_frequency2过滤出现频次过低的 tokenByteLevel BPE 天然兼容大小写与多语言文本无需显式 lowercasing文档提示该步骤耗时约 10 分钟视硬件而定。5.2 创建模型配置从 Hub 上的roberta-base加载配置模板仅覆盖词表大小from transformers import RobertaConfig config RobertaConfig.from_pretrained(roberta-base, vocab_size50265) config.save_pretrained(./norwegian-roberta-base)至此模型仓库搭建完毕。训练期间脚本会自动把训练日志与模型权重推送到仓库对应run_mlm_flax.py中Repository的创建与repo.push_to_hub调用。5.3 启动预训练python run_mlm_flax.py \ --output_dir./norwegian-roberta-base \ --model_typeroberta \ --config_name./norwegian-roberta-base \ --tokenizer_name./norwegian-roberta-base \ --dataset_nameoscar \ --dataset_config_nameunshuffled_deduplicated_no \ --max_seq_length128 \ --weight_decay0.01 \ --per_device_train_batch_size128 \ --per_device_eval_batch_size128 \ --learning_rate3e-4 \ --warmup_steps1000 \ --overwrite_output_dir \ --num_train_epochs18 \ --adam_beta10.9 \ --adam_beta20.98 \ --logging_steps500 \ --save_steps2500 \ --eval_steps2500 \ --push_to_hub文档给出的收敛参考在单台 TPUv3-8 上训练 18 个 epoch 后loss 与准确率分别收敛到1.78 与 0.64总耗时约 18 小时以内。5.4 源码层面的掩码策略与训练机制run_mlm_flax.py中FlaxDataCollatorForLanguageModeling.mask_tokensbenchmark/third_party/transformers/examples/flax/language-modeling/run_mlm_flax.py实现了标准的 80/10/10 掩码策略以mlm_probability默认 0.15概率随机选出待掩码 token其中 80% 替换为[MASK]tokenizer.mask_token10% 替换为词表中的随机词剩余 10% 保持不变未被选中的 token 对应 label 置为-100只对掩码 token 计算 loss特殊 tokenspecial_tokens_mask标记永远不会被掩码。训练循环的其他关键机制包括学习率调度optax.linear_schedule构建线性 warmup 到learning_rate再线性衰减到 0的双段调度边界在warmup_steps处拼接optax.join_schedules优化器默认optax.adamwAdamWdecay_mask_fn通过traverse_util.flatten_dict找出所有 LayerNorm 参数与 bias构造 mask 使权重衰减不作用于 bias 与 LayerNorm 参数也可用--adafactor切换为optax.adafactor数据并行train_batch_size per_device_train_batch_size * jax.device_count()shard切分 batch 到各设备pad_shard_unpad处理评估时的不整除检查点与推送每save_steps步主进程执行model.save_pretrainedtokenizer.save_pretrained若开启--push_to_hub则异步推送blockingFalse评估评估时额外计算 accuracy并在训练结束后把eval_results.json写入输出目录包含perplexity exp(loss)。六、因果语言建模CLM预训练 GPT-2第二部分演示自回归因果语言模型的训练在挪威语 OSCAR 语料上从零预训练随机初始化的 124M 参数gpt2同样运行在单台 TPUv3-8 上。6.1 训练 tokenizermkdir ./norwegian-gpt2from datasets import load_dataset from tokenizers import trainers, Tokenizer, normalizers, ByteLevelBPETokenizer # load dataset dataset load_dataset(oscar, unshuffled_deduplicated_no, splittrain) # Instantiate tokenizer tokenizer ByteLevelBPETokenizer() def batch_iterator(batch_size1000): for i in range(0, len(dataset), batch_size): yield dataset[i: i batch_size][text] # Customized training tokenizer.train_from_iterator(batch_iterator(), vocab_size50257, min_frequency2, special_tokens[ s, pad, /s, unk, mask, ]) # Save files to disk tokenizer.save(./norwegian-gpt2/tokenizer.json)与 MLM 不同之处在于vocab_size50257GPT-2 原始词表大小。6.2 创建配置from transformers import GPT2Config config GPT2Config.from_pretrained(gpt2, resid_pdrop0.0, embd_pdrop0.0, attn_pdrop0.0, vocab_size50257) config.save_pretrained(./norwegian-gpt2)注意这里显式将三类 dropoutresid_pdrop、embd_pdrop、attn_pdrop置为 0——预训练从零开始时通常不启用 dropout避免随机失活干扰梯度信号。6.3 启动预训练python run_clm_flax.py \ --output_dir./norwegian-gpt2 \ --model_typegpt2 \ --config_name./norwegian-gpt2 \ --tokenizer_name./norwegian-gpt2 \ --dataset_nameoscar \ --dataset_config_nameunshuffled_deduplicated_no \ --do_train --do_eval \ --block_size512 \ --per_device_train_batch_size64 \ --per_device_eval_batch_size64 \ --learning_rate5e-3 --warmup_steps1000 \ --adam_beta10.9 --adam_beta20.98 --weight_decay0.01 \ --overwrite_output_dir \ --num_train_epochs20 \ --logging_steps500 \ --save_steps2500 \ --eval_steps2500 \ --push_to_hub与 MLM 命令的关键差异--block_size512CLM 无需掩码语料按固定窗口切分为连续 token 块run_clm_flax.py中的group_texts会把全部文本拼接后切成block_size的块学习率显著更高5e-3因为自回归目标的训练信号更密集显式给出--do_train --do_eval。文档给出的收敛参考20 个 epoch 后 loss 与困惑度分别收敛到3.24 与 25.72耗时约 21 小时以内。评估阶段的困惑度即exp(eval_loss)与run_mlm_flax.py末尾的eval_results.json计算逻辑一致。七、T5 式 span-masked 语言建模预训练 T5 v1.1-base第三部分演示以 T5 论文《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》提出的 span-masked 目标预训练google/t5-v1_1-base。T5 是 encoder-decoder 结构掩码对象是连续的 token 片段span模型需要根据上下文重建被掩码的整段内容。7.1 训练 SentencePiece Unigram tokenizerT5 家族使用 SentencePiece 风格的 tokenizer与 BPE 不同。仓库提供t5_tokenizer_model.py中的SentencePieceUnigramTokenizer其实现细节benchmark/third_party/transformers/examples/flax/language-modeling/t5_tokenizer_model.py包括采用Unigram 语言模型算法tokenizers.models.Unigram归一化流水线Nmt→NFKC→ 将连续多个空格压缩为单个 →Lowercase预分词流水线Metaspace以▁表示空格并默认在句首加前缀空格→Digits(individual_digitsTrue)数字逐位拆分→Punctuation标点独立成 token解码器与后处理器Metaspace解码单序列自动追加/sTemplateProcessing特殊 token 约定pad0、/s1、unk2训练结束后通过add_unk_id把 unk id 写回模型配置。训练脚本如下注意目录创建方式为cd进入cd ./norwegian-t5-baseimport datasets from t5_tokenizer_model import SentencePieceUnigramTokenizer vocab_size 32_000 input_sentence_size None # Initialize a dataset dataset datasets.load_dataset(oscar, nameunshuffled_deduplicated_no, splittrain) tokenizer SentencePieceUnigramTokenizer(unk_tokenunk, eos_token/s, pad_tokenpad) # Build an iterator over this dataset def batch_iterator(input_sentence_sizeNone): if input_sentence_size is None: input_sentence_size len(dataset) batch_length 100 for i in range(0, input_sentence_size, batch_length): yield dataset[i: i batch_length][text] # Train tokenizer tokenizer.train_from_iterator( iteratorbatch_iterator(input_sentence_sizeinput_sentence_size), vocab_sizevocab_size, show_progressTrue, ) # Save files to disk tokenizer.save(./norwegian-t5-base/tokenizer.json)T5 词表大小为 32,000。由于 Unigram 训练需要多轮 EM 迭代文档提示该步骤最长可达 120 分钟是四种模型中耗时最长的。7.2 创建配置from transformers import T5Config config T5Config.from_pretrained(google/t5-v1_1-base, vocab_sizetokenizer.get_vocab_size()) config.save_pretrained(./norwegian-t5-base)这里vocab_size直接取 tokenizer 实际训练出的词表大小保证词嵌入维度与 tokenizer 严格对齐。7.3 启动预训练python run_t5_mlm_flax.py \ --output_dir./norwegian-t5-base \ --model_typet5 \ --config_name./norwegian-t5-base \ --tokenizer_name./norwegian-t5-base \ --dataset_nameoscar \ --dataset_config_nameunshuffled_deduplicated_no \ --max_seq_length512 \ --per_device_train_batch_size32 \ --per_device_eval_batch_size32 \ --adafactor \ --learning_rate0.005 \ --weight_decay0.001 \ --warmup_steps2000 \ --overwrite_output_dir \ --logging_steps500 \ --save_steps10000 \ --eval_steps2500 \ --push_to_hub关键差异--adafactorT5 训练惯例上使用 Adafactor 而非 AdamW这是文档明确给出的配置也是run_t5_mlm_flax.py中TrainingArguments.adafactor开关的典型用法max_seq_length512、batch size 32、save_steps10000间隔更大因为 T5 单步更耗时。文档给出的收敛参考3 个 epoch 后 loss 与准确率收敛到2.36 与 57.0耗时约 4.5 小时。训练统计可直接在 Hub 模型仓库的 TensorBoard 页查看。八、BART 去噪语言建模DLM预训练 BART-base第四部分演示以 BART 论文《BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension》提出的去噪目标预训练facebook/bart-base。BART 同样是 encoder-decoder 架构但与 T5 的 span-masking 不同它的输入会叠加多种噪声如 token 删除、文本旋转、span 掩码、句序打乱目标是让 decoder 重建完整原文。8.1 训练 tokenizer 与创建配置mkdir ./norwegian-bart-basetokenizer 训练与 RoBERTa 完全一致ByteLevel BPEvocab_size50265代码可复用 5.1 节示例。配置创建from transformers import BartConfig config BartConfig.from_pretrained(facebook/bart-base, vocab_size50265) config.save_pretrained(./norwegian-bart-base)8.2 启动预训练python run_bart_dlm_flax.py \ --output_dir./norwegian-bart-base \ --config_name./norwegian-bart-base \ --tokenizer_name./norwegian-bart-base \ --dataset_nameoscar \ --dataset_config_nameunshuffled_deduplicated_no \ --max_seq_length1024 \ --per_device_train_batch_size32 \ --per_device_eval_batch_size32 \ --learning_rate1e-4 \ --warmup_steps2000 \ --overwrite_output_dir \ --logging_steps500 \ --save_steps2000 \ --eval_steps2000 \ --push_to_hub注意 BART 的max_seq_length1024是四种模型中最长的上下文窗口。文档给出的收敛参考3 个 epoch 后 loss 与准确率收敛到1.36 与 0.77耗时 6 小时以内。九、训练参数全景表来自脚本源码run_mlm_flax.py、run_clm_flax.py、run_t5_mlm_flax.py中三组 dataclass 定义了全部命令行参数。下表汇总默认值与含义除特别说明外三个脚本一致TrainingArguments参数默认值说明--output_dir必填预测结果与 checkpoint 输出目录--overwrite_output_dirFalse输出目录非空时覆盖指向已有 checkpoint 目录可续训--do_train/--do_evalFalse是否执行训练 / 评估--per_device_train_batch_size8每个 GPU/TPU 核/CPU 的训练 batch--per_device_eval_batch_size8每个设备的评估 batch--learning_rate5e-5初始学习率--weight_decay0.0AdamW 权重衰减系数--adam_beta10.9Adam 一阶矩指数衰减--adam_beta20.999Adam 二阶矩指数衰减--adam_epsilon1e-8Adam epsilon--adafactorFalse用 Adafactor 替代 AdamW--num_train_epochs3.0训练总 epoch 数--warmup_steps0线性 warmup 步数--logging_steps500每 X 步记录一次日志--save_steps500每 X 步保存一次 checkpoint--eval_stepsNone每 X 步执行一次评估--seed42全局随机种子--push_to_hubFalse训练后是否上传模型到 Hub--hub_model_id/--hub_tokenNoneHub 仓库名 / 认证 token--gradient_checkpointingFalse梯度检查点省显存换速度仅 MLM 脚本支持ModelArguments参数默认值说明--model_name_or_pathNone初始化权重的 checkpoint不传则从零训练--model_typeNone从零训练时指定模型类型从FLAX_MODEL_FOR_*_LM_MAPPING键中取--config_name/--tokenizer_nameNone与模型不同的 config / tokenizer 名称或路径--cache_dirNone预训练模型缓存目录--use_fast_tokenizerTrue使用 fast tokenizer基于 tokenizers 库--dtypefloat32权重初始化与训练精度float32/float16/bfloat16--use_auth_tokenFalse访问私有模型所需的 Hub tokenDataTrainingArguments以 MLM 脚本为例参数默认值说明--dataset_name/--dataset_config_nameNone通过 datasets 库加载的数据集名与子配置名--train_file/--validation_fileNone本地 csv/json/txt 训练与验证文件--validation_split_percentage5无验证集时从训练集切出的验证比例--max_seq_lengthNone最大序列长度超过则截断默认取模型上限--preprocessing_num_workersNone预处理并行进程数--mlm_probability0.15MLM 掩码比例--pad_to_max_lengthFalse是否全部 padding 到max_seq_length--line_by_lineFalse是否按行切分序列否则拼接全部文本再切块实战提示脚本同时支持把参数写成 JSON 文件传入python run_mlm_flax.py args.json源码通过HfArgumentParser.parse_json_file支持便于在集群上固化实验配置。十、运行时评估Flax vs PyTorch/XLA vs PyTorch文档对同一个 MLM 任务在三种后端/硬件组合下做了耗时对比用于说明 Flax 在 TPU 上的编译与并行优势。所有实验均运行在 Google Cloud Platform 上任务TPU v3-8FlaxTPU v3-8PyTorch/XLA8 GPUPyTorchMLM15h32m23h46m44h14m说明GPU 实验除 JAX 变换外未做额外优化且以全精度 fp32 运行TPU v3-8 指 4 块芯片共 8 个 TPU 核8 GPU 指 8 块独立 GPU 芯片。10.1 用 PyTorch/XLA 在 TPUv3-8 上复现同一实验前提是已按 5.1/5.2 节在norwegian-roberta-base目录备好 tokenizer 与配置。在示例目录下建立符号链接把 PyTorch 版run_mlm.py与xla_spawn.py引入当前工作目录ln -s ~/transformers/examples/pytorch/language-modeling/run_mlm.py ./ ln -s ~/transformers/examples/pytorch/xla_spawn.py ./设置环境变量export XRT_TPU_CONFIGlocalservice;0;localhost:51011 unset LD_PRELOAD export NUM_TPUS8 export TOKENIZERS_PARALLELISM0 export MODEL_DIR./norwegian-roberta-base mkdir -p ${MODEL_DIR}启动训练python3 xla_spawn.py --num_cores ${NUM_TPUS} run_mlm.py --output_dir./runs \ --model_typeroberta \ --config_name${MODEL_DIR} \ --tokenizer_name${MODEL_DIR} \ --dataset_nameoscar \ --dataset_config_nameunshuffled_deduplicated_no \ --max_seq_length128 \ --weight_decay0.01 \ --per_device_train_batch_size128 \ --per_device_eval_batch_size128 \ --learning_rate3e-4 \ --warmup_steps1000 \ --overwrite_output_dir \ --num_train_epochs18 \ --adam_beta10.9 \ --adam_beta20.98 \ --do_train \ --do_eval \ --logging_steps500 \ --evaluation_strategyepoch \ --report_totensorboard \ --save_strategyno10.2 用 PyTorch 在 8 张 V100 GPU 上复现同一实验由于单张 V100 显存限制最大 batch 只能到 32Flax 版为 128必须引入gradient_accumulation弥补全局 batchln -s ~/transformers/examples/pytorch/language-modeling/run_mlm.py ./export NUM_GPUS8 export TOKENIZERS_PARALLELISM0 export MODEL_DIR./norwegian-roberta-base mkdir -p ${MODEL_DIR}python3 -m torch.distributed.launch --nproc_per_node ${NUM_GPUS} run_mlm.py \ --output_dir${MODEL_DIR} \ --model_typeroberta \ --config_name${MODEL_DIR} \ --tokenizer_name${MODEL_DIR} \ --dataset_nameoscar \ --dataset_config_nameunshuffled_deduplicated_no \ --max_seq_length128 \ --weight_decay0.01 \ --per_device_train_batch_size32 \ --per_device_eval_batch_size32 \ --gradient_accumulation4 \ --learning_rate3e-4 \ --warmup_steps1000 \ --overwrite_output_dir \ --num_train_epochs18 \ --adam_beta10.9 \ --adam_beta20.98 \ --do_train \ --do_eval \ --logging_steps500 \ --evaluation_strategysteps \ --report_totensorboard \ --save_strategynoper_device_train_batch_size32乘以gradient_accumulation4再乘以 8 卡全局有效 batch 与 Flax 版128×8等价保证对比公平。十一、从预训练到推理与 FlexGen 的关系完成上述任一预训练流程后得到的 checkpoint 即可被加载用于推理/微调。这与仓库主项目 FlexGen 构成完整的上下游链条FlexGen 专注于让大语言模型在单 GPU 上以吞吐优先的方式高效推理见仓库根目录 README.md 与flexgen/下的实现而本文所述 Flax 示例则负责模型从零到有的预训练环节。对于想在生产环境落地大模型的读者可以先用本文流程训练领域语料模型再借助 FlexGen 的思路做推理侧的吞吐优化两种能力互为补充覆盖了从训练到服务的完整生命周期。十二、常见问题与调参建议收敛不佳时优先检查什么确认vocab_size与 tokenizer 实际词表一致T5 场景务必用tokenizer.get_vocab_size()确认max_seq_length不超过模型支持上限源码中max_seq_length min(data_args.max_seq_length, tokenizer.model_max_length)显存不足降低per_device_*_batch_size或开启--gradient_checkpointing仅run_mlm_flax.py提供该开关PyTorch 对比实验则用gradient_accumulation补偿多机多卡Flax 脚本依赖jax.device_count()自动感知设备数训练 batch 会按设备数自动放大无需手工配置分布式启动器自定义语料不需要 Hub 数据集时直接用--train_file/--validation_file传入 csv/json/txt 文件即可脚本会自动按text列或第一列读取复现性--seed默认 42脚本在模型初始化与数据洗牌处均注入该种子。本文所有脚本、配置与依赖均可在当前仓库benchmark/third_party/transformers/examples/flax/language-modeling/目录下找到并直接运行建议结合源码阅读本文以获得对 JAX/Flax 训练管线最完整的理解。赞分享推理引擎大模型【免费下载链接】FlexGenRunning large language models on a single GPU for throughput-oriented scenarios.项目地址https://gitcode.com/gh_mirrors/fl/FlexGen点击查看免费下载相关推荐使用 Ray Train JaxTrainer 从零分布式训练 GPT-2JAX/Flax 规模化训练实战指南使用 Ray Train JaxTrainer 从零分布式训练 GPT 2JAX/Flax 规模化训练实战指南 预计阅读与实操时间 约 15 分钟 本指南以人工智能分布式训练强化学习任务调度模型推理服务后端使用 SpeechBrain 训练 Switchboard 语言模型Transformer LM 从零训练与预训练微调实战指南使用 SpeechBrain 训练 Switchboard 语言模型Transformer LM 从零训练与预训练微调实战指南 本篇技术指南以 SpeechB人工智能深度学习语音音频NLP预训练Fairseq 多语言 RoBERTa 预训练实战指南从多语语料预处理到 masked LM 训练Fairseq 多语言 RoBERTa 预训练实战指南从多语语料预处理到 masked LM 训练 多语言 RoBERTaMultilingual RoBE人工智能深度学习预训练NLP语音上一篇FastGPT 工作流变量替换 CPU 阻塞优化从变量驱动到模板驱动的调度热路径重构下一篇LeetCode 179 Largest Number 的 Go 题解自定义比较器快排与 ab、ba 拼接比较创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表