写点什么

DeepSeekV2-lite 昇腾 8 卡训练实验指导

作者:AI布道Mr.Jin
  • 2025-03-01
    浙江
  • 本文字数:2483 字

    阅读完需:约 8 分钟

本实验指导共包含实验环境准备、训练数据集准备、模型权重准备和预训练 4 个部分。

1 环境准备

1.1 拉取镜像

本次实验使用的 python 环境来自昇腾官网提供的镜像,下载地址为 https://www.hiascend.com/developer/ascendhub/detail/e26da9266559438b93354792f25b2f4a

我们选择 2024.rc3-arm 版本的镜像环境。

添加图片注释,不超过 140 字(可选)

点击“立即下载后”,会提示登录昇腾账号,登录后会出现拉取镜像的命令(第一次拉取镜像会提示用户填写申请资料):

添加图片注释,不超过 140 字(可选)

按照上述截图中的步骤执行命令,结果如下:

添加图片注释,不超过 140 字(可选)

为了提升实验效率,也可以直接加载实验环境中提前准备的镜像:

sudo docker load < deepseek_train_image.tar
复制代码


添加图片注释,不超过 140 字(可选)

1.2 创建镜像容器

拉取镜像后,就可以基于镜像创建容器了,后续我们的实验就在容器环境中进行。创建容器的命令如下:

docker run -dit --ipc=host --network host --name 'jxl_llm_rc3' --privileged -v /usr/local/Ascend/driver:/usr/local/Ascend/driver  -v /usr/local/Ascend/firmware:/usr/local/Ascend/firmware  -v /usr/local/sbin/:/usr/local/sbin/ -v /home/:/home/ swr.cn-south-1.myhuaweicloud.com/ascendhub/mindspeed-llm:2024.rc3-arm
复制代码

各参数的含义如下:

-dit:-d:后台运行容器;-i:交互模式;-t:分配一个伪终端。

--ipc=host:共享宿主机的 IPC 命名空间,允许容器访问宿主机的共享内存和信号量。

--network host:使用宿主机的网络栈,容器将直接使用宿主机的网络接口,无需网络隔离。

--name 'jxl_llm_rc3':为容器指定名称 jxl_llm_rc3,方便后续管理。

--privileged:以特权模式运行容器,赋予容器几乎与宿主机相同的权限。

-v(挂载卷):/usr/local/Ascend/driver:/usr/local/Ascend/driver:将宿主机的 /usr/local/Ascend/driver 挂载到容器中。

最后传的是镜像地址。

1.3 登录容器

docker exec -it jxl_llm_rc3 /bin/bash                           
复制代码


添加图片注释,不超过 140 字(可选)

最下面的 fail 不影响实验。

1.4 下载依赖三方件和源码仓

我们训练 deepseekv2-lite 所需要的脚本在 mindspeed-llm 仓库中,所以需要下载 mindspeed-llm 的代码。又因为 mindspeed-llm 依赖 megatron-llm 的代码和 mindspeed 的加速特性,所以还需要下载 megatron-llm 的和 mindspeed 的代码。

首先下载 mindspeed-llm 的代码:

git clone https://gitee.com/ascend/MindSpeed-LLM.git
复制代码

然后下载 megatron-llm 的代码,并且复制 megatron 目录文件到 mindspeed-llm 中:

git clone https://github.com/NVIDIA/Megatron-LM.git  # 如果git下载失败,可以手动从github下载cd Megatron-LMgit checkout core_r0.8.0cp -r megatron ../MindSpeed-LLM/
复制代码

最后下载 mindspeed 代码,并且在容器环境中用 pip 源码安装

git clone https://gitee.com/ascend/MindSpeed.gitcd MindSpeedgit checkout 9b3ad3fd928  # checkout commit from MindSpeed core_r0.8.0 in 2024.12.25pip3 install -e .
复制代码

2 训练数据集准备

由于 hugging face 下载网速较慢,我们选择从魔乐社区下载训练数据和权重。本实验选择用 wiki 数据集,下载页面如下:

添加图片注释,不超过 140 字(可选)

由于需要使用 git lfs 下载,而镜像中又没有 git lfs,所以我们需要手动安装。

2.1 安装 git lfs

wget https://github.com/git-lfs/git-lfs/releases/download/v3.6.1/git-lfs-linux-arm64-v3.6.1.tar.gz
复制代码

或者本地下载后上传到服务器。

tar xzf git-lfs-linux-arm64-v3.6.1.tar.gzcd git-lfs-v3.3.0sudo ./install.sh
复制代码


添加图片注释,不超过 140 字(可选)

2.2 下载 wiki 数据集

git clone https://modelers.cn/hold-ryue-in-hand/wikipedia.git
复制代码

下载完的 wiki 数据集非常大,有 134G,而我们实验只选用其中的一部分:wikipedia /20231101.ab/ train-00000-of-00001. parquet。

2.3 数据转换

我们还需要把 parquet 格式的数据转成 mindspeed 能够处理的数据格式,转换脚本在 mindspeed-llm 的这个目录: examples/mcore/deepseek2_lite/data_convert_deepseek2_lite_pretrain.sh

根据实际情况配置脚本中的 input 和 tokenizer-name-or-path 以及 output-prefix,示例内容如下:

添加图片注释,不超过 140 字(可选)

执行 bash examples/mcore/deepseek2_lite/data_convert_deepseek2_lite_pretrain.sh,结果如下:

添加图片注释,不超过 140 字(可选)

可以看到转换后得到的数据格式包括 bin 和 idx 后缀:

添加图片注释,不超过 140 字(可选)

.idx 文件是用于快速定位和索引 wiki 数据的结构,而 .bin 文件则包含实际的数据内容,例如经过编码的文本或嵌入向量等。这种格式的转换通常是为了优化数据的存储和读取效率,尤其是在处理大规模数据集时。

3 模型权重准备

3.1 下载权重

我们从魔乐社区下载 deepseekv2-lite 的权重:

git clone https://modelers.cn/edge-sky/DeepSeek-V2-Lite.git
复制代码


添加图片注释,不超过 140 字(可选)

3.2 权重转换

由于上面下载的权重是 hugging face 格式的,还需要转化成 mindspeed-llm 处理的格式。

由于用到了三方件 tensordict,所以还需要安装:pip install tensordict

转换命令在 mindspeed-llm 的 examples/mcore/deepseek2_lite/convert_ckpt_deepseek2_lite_hf2mcore.sh 路径。需要根据实际情况修改 load-dir、save-dir、tokenizer-model 的值:

添加图片注释,不超过 140 字(可选)

执行结果如下:

添加图片注释,不超过 140 字(可选)

查看生成的权重文件夹,可以看到权重已经被切分了:

添加图片注释,不超过 140 字(可选)

4 预训练

准备好训练数据和权重后,我们就可以执行预训练了,预训练脚本在 mindspeed-llm 的 examples/mcore/deepseek2_lite/pretrain_deepseek2_lite_16b_ptd_8p.sh 路径下,需要根据实际情况填写 CKPT_SAVE_DIR、DATA_PATH、TOKENIZER_MODEL、CKPT_LOAD_DIR,注意 DATA_PATH 要填写到 bin 文件和 idx 文件的前缀,TOKENIZER_MODE 在转换之前的权重目录里面:

添加图片注释,不超过 140 字(可选)

执行后,可以看到训练日志:

添加图片注释,不超过 140 字(可选)

至此,deepseekv2-lite 的 8 卡训练实验完成。

用户头像

还未添加个人签名 2020-11-13 加入

还未添加个人简介

评论

发布
暂无评论
DeepSeekV2-lite 昇腾8卡训练实验指导_AI布道Mr.Jin_InfoQ写作社区