模型训练往往存在大量冗余计算,稀疏加速算法基于网络扩增训练的思想,结合参数继承方法,对模型中的部分算子实现权重的稀疏化。分别实现了宽度、深度层面的网络扩增算法,以应对不同场景,支撑模型训练阶段加速。
模型稀疏加速训练前需要参考环境准备完成开发环境部署、Python环境变量、所需框架及训练服务器环境变量配置。
目前支持对PyTorch框架下包括但不限于表1中的模型稀疏加速训练。
from msmodelslim.pytorch import sparse
from msmodelslim import set_logger_level set_logger_level("info") #根据实际情况配置
epochs_each_stage = [10, 20, 30] #定义稀疏化每个阶段的epoch数量 model = sparse.sparse_model_width( model, optimizer, steps_per_epoch=len(train_loader), epochs_each_stage=epochs_each_stage )
其中epochs_each_stage = [10, 20, 30]表示稀疏化分3个阶段:
若原训练脚本中已使用torch.nn.parallel.DistributedDataParallel封装了模型,稀疏加速接口sparse.sparse_model_width()的参数 model需为非ddp模式的模型。
bash ./test/train_full_1p.sh --data_path=./datasets/imagenet #请根据实际情况配置数据集路径
bash ./test/train_full_8p.sh --data_path=./datasets/imagenet #请根据实际情况配置数据集路径
from msmodelslim.pytorch import sparse
from msmodelslim import set_logger_level set_logger_level("info") #根据实际情况配置
epochs_each_stage = [10, 20, -1] #定义稀疏化每个阶段的epoch数量 model = sparse.sparse_model_depth(model, optimizer, steps_per_epoch=len(data_loader_train), epochs_each_stage=epochs_each_stage)
其中epochs_each_stage = [10, 20, -1]表示稀疏化分3个阶段:
若原训练脚本中已使用torch.nn.parallel.DistributedDataParallel封装了模型,稀疏加速接口sparse.sparse_model_depth()的参数 model应为非ddp模式的模型。
bash ./test/train_full_1p.sh --data_path=./datasets/imagenet #请根据实际情况配置数据集路径
bash ./test/train_full_8p.sh --data_path=./datasets/imagenet #请根据实际情况配置数据集路径