实习05-多卡Pretrain的一些常见问题

张开发
2026/4/8 22:25:06 15 分钟阅读

分享文章

实习05-多卡Pretrain的一些常见问题
1 如何基于 Qwen 系列进行预训练1.1 来源路径:https://github.com/huggingface/transformers/blob/main/src/transformers/models/qwen3_5/configuration_qwen3_5.py内容:包含Configuration_qwen_xx文件、Modeling_qwen_xx等;流程:先build,即 pip install -e . ,将当前项目以可修改的方式安装到环境里;然后copy,即将moding_qwen和configuration_qwen放到 Transformers 包下,其他的工具类在包内有提供;最后train即可,训练脚本在第一章第二节提及(分为单卡训练和单机多卡分布式训练);注:Tokenizer 的训练可以直接将同类型模型部署,用它的分词器即可(不然他们那大语料也难找);1.2 预训练代码以 Qwen3 为例,数据集为 Minimind 的 pretrain-mini.jsonl;前言:训练最重要的是模型和训练器两部分,其中:准备阶段-模型: 分为(1)数据 data、(2)分词器 tokenizer、(3)模型配置文件 config和(4)创建模型 xxForCausalLM。训练阶段-训练器:分为(1)批量分词、(2)训练参数、(3)训练(准备阶段)数据 分词器fromdatasetsimportload_dataset# 数据DATA_PATH="/home/lynxi/wyh/study/YH/dataset/pretrain_t2t_mini.jsonl"dataset=load_dataset("json",data_files=DATA_PATH,split="train")# 分词器TOKENIZER_PATH="/home/lynxi/wyh/models/qwen3/qwen3-0.6"tokenizer=AutoTokenizer.from_pretrained(TOKENIZER_PATH,trust_remote_code=True)tokenizer.pad_token=tokenizer.eos_token(准备阶段)模型配置文件 创建模型fromtransformers.models.qwen3.modeling_qwen3importQwen3ForCausalLMfromtransformers.models.qwen3.configuration_qwen3importQwen3Config# 模型配置文件:layer、hidden_size、intermediate_size等config=Qwen3Config(hidden_size=1024,num_hidden_layers=8,intermediate_size=2048,)Qwen3 的 Configuration 文件:https://github.com/huggingface/transformers/blob/main/src/transformers/models/qwen3/configuration_qwen3.py创建模型:model=Qwen3ForCausalLM(config)(训练阶段)批量分词重点是max_length这块,决定了输入的shape大小,如果设置的很大,那么输入的向量就很大,显存占用就很大;input_ids shape:[batchsize, max_length];# 分词函数deftokenize_function(examples):""" 批量分词函数:将文本列表转换为 input_ids + attention_mask - truncation=True:超长文本自动截断 - padding="max_length":统一填充到 max_length(便于 batch 处理) """returntokenizer(examples["text"],truncation=True,max_length=512,padding="max_length",/

更多文章