基于TorchTitan的DeepSeek-V3.2 32K长序列预训练优化实践样例【免费下载链接】cann-recipes-train本项目针对LLM与多模态模型训练业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-train概述本样例针对DeepSeek-v3.2模型基于TorchTitan开源框架。硬件要求产品型号Atlas A3 系列最少卡数64张A3目录结构说明├─torchtitan_npu # torchtitan npu 适配目录 │ ├─config # 一些配置文件目录 │ ├─converter # patch适配目录 │ │ └─features │ │ └─kernels │ ├─distributed # 分布式并行特性目录 │ │ └─context_parallel │ ├─models # 模型适配目录 │ │ └─deepseek_v32 # deepseekv32模型核心组件 │ │ └─infra # 分布式策略目录 │ │ └─model # 模型目录 │ │ └─train_configs # 训练参数 │ ├─patches # torch_npu和融合算子patch目录 │ │ ├─distributed │ │ └─optimizer │ │ └─tools │ │ └─torch │ │ └─torch_npu │ ├─tools # 工具函数目录 ├─utils # 权重转换工具脚本路径基于Dockerfile构建环境环境搭建可以基于Dockerfile快速实现Dockerfile里已配置了必要的昇腾软件和其他第三方软件的依赖。基于Dockerfile创建镜像。# 请预先下载本样例提供的Dockerfile文件Dockerfile.torchtitan.deepseekV32 # 随后基于该Dockerfile创建docker image。请传入镜像名称例如 your_image_name docker build -t your_image_name -f Dockerfile.torchtitan.deepseekV32 . # 请设置容器名称例如 your_docker_name镜像名称同上一步 container_nameyour_docker_name image_nameyour_image_name:latest # 执行docker run命令创建容器可通过-v按需挂载宿主机目录至容器 docker run -itd \ --device/dev/davinci0 --device/dev/davinci1 --device/dev/davinci2 --device/dev/davinci3 --device/dev/davinci4 --device/dev/davinci5 --device/dev/davinci6 --device/dev/davinci7 --device/dev/davinci8 --device/dev/davinci9 --device/dev/davinci10 --device/dev/davinci11 --device/dev/davinci12 --device/dev/davinci13 --device/dev/davinci14 --device/dev/davinci15 --device/dev/davinci_manager --device/dev/devmm_svm --device/dev/hisi_hdc \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /var/log/npu/slog/slogd:/var/log/npu/slog/slogd \ -v /usr/local/sbin/:/usr/local/sbin/ \ -v /data/:/data/ \ -v /home/:/home/ \ -v /etc/localtime:/etc/localtime \ -v /usr/local/Ascend/driver:/usr/local/Ascend/driver \ -v /dev/shm:/dev/shm \ --nethost \ --name ${container_name} \ --privileged ${image_name} /bin/bash # 执行docker exec命令进入容器 docker exec -it -u root ${container_name} bash源码准备。# 下载本样例所在代码仓以master分支为例 git clone https://gitcode.com/cann/cann-recipes-train.git # 进入示例所在路径 cd cann-recipes-train/llm_pretrain/deepseekv32/ # 安装相关依赖 pip install -r requirements.txt # 安装torchtitan-npu pip install -e ./数据集准备首先创建数据集路径mkdir -p ./tests/assets/enwiki下载enwiki 的parquet数据到./tests/assets/enwiki路径下面可以使用下面的命令下载数据集cd ./tests/assets/ git clone https://huggingface.co/datasets/answerdotai/enwiki cd ../..然后使用parquet转换脚本将其转换成json格式python ./utils/parquet2json.py --input ./tests/assets/enwiki --output ./tests/assets/enwiki/data.json模型权重准备本样例使用的DeepSeek-V3.2模型权重准备方法如下# 从魔塔社区下载模型的基础文件存放至样例的./assets/hf/DeepSeek-V3.2目录下不加载权重实验也需要执行这步操作 mkdir -p /data/models/DeepSeek-V3.2 pip install modelscope # 下载DeepSeek-V3.2完整FP8权重至指定目录例如 /data/models/DeepSeek-V3.2此步骤需要目录所在磁盘有650GB以上空间 modelscope download --model deepseek-ai/DeepSeek-V3.2 --local_dir /data/models/DeepSeek-V3.2在各个节点上使用weight_convert.sh脚本完成FP8到Bfloat16权重转换。入参介绍input_fp8_hf_path原始fp8权重路径output_hf_path转换后输出的权重路径quant_mode量化模式如果权重转换的运行环境为NPU需要先执行cann_path/usr/local/Ascend/ascend-toolkit/latest # cann包安装路径 source ${cann_path}/bin/setenv.bash权重转换拉起示例# 转换为Bfloat16权重 bash utils/weight_convert.sh --input_fp8_hf_path /data/models/DeepSeek-V3.2 --output_hf_path /data/models/DeepSeek-V3.2-bf16 --quant_mode bfloat16pretrain执行# 示例执行2层1moe1dense裁剪模型请提前配置toml文件中相关地址 chmod x ./run_pretrain.sh NGPU16 CONFIG_FILE./torchtitan_npu/models/deepseek_v32/train_configs/deepseek_v32_671b_debug.toml ./run_pretrain.sh --compile.enable # 64卡671B参数全量预训练拉起脚本要在8机上同时拉起注意要修改run_pretrain_multinodes.sh脚本里面的IPs变量 chmod x ./run_pretrain_multinodes.sh CONFIG_FILE./torchtitan_npu/models/deepseek_v32/train_configs/deepseek_v32_671b_128die.toml ./run_pretrain_multinodes.sh --compile.enable【免费下载链接】cann-recipes-train本项目针对LLM与多模态模型训练业务中的典型模型、加速算法提供基于CANN平台的优化样例项目地址: https://gitcode.com/cann/cann-recipes-train创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考