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

简介: 昇腾8卡运行deepseek-v2训练

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

1 环境准备

1.1 拉取镜像

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

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


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


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

添加图片注释,不超过 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                          


最下面的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-LM git checkout core_r0.8.0 cp -r megatron ../MindSpeed-LLM/

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

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

2 训练数据集准备

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


由于需要使用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.gz cd git-lfs-v3.3.0 sudo ./install.sh


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,示例内容如下:


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


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


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

3 模型权重准备

3.1 下载权重

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

git clone https://modelers.cn/edge-sky/DeepSeek-V2-Lite.git


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的值:


执行结果如下:


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


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在转换之前的权重目录里面:


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


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

目录
相关文章
|
2月前
|
机器学习/深度学习 JSON 自然语言处理
DeepSeek 双百万 token 窗口对话数据的量化对比分析
本文基于第一个百万 token 窗口(以下简称 窗口 1)与第二个百万 token 窗口(以下简称 窗口 2)的完整对话数据,采用量化对比的方法,系统揭示两套对话在轮次、文本长度、语种构成以及估算 token 消耗方面的显著差异。研究发现,尽管窗口 2 的轮次和总字数均低于窗口 1,但其每轮对话的文本密度与估算 token 消耗显著更高。结合窗口 2 在生成 5 篇深度分析文章过程中的实际经验,本文提出“长文本生成的隐性 token 消耗”假说,并引用近期相关研究提供理论支撑。该假说为理解大模型在真实工程环境中的行为提供了新视角,也为用户在设计跨窗口连续工程时的指标控制与迁移提供了可操作的参考
DeepSeek 双百万 token 窗口对话数据的量化对比分析
|
人工智能 JSON 监控
Qwen2.5-Coder-7B-Instruct Lora 微调 SwanLab 可视化记录版
本节我们简要介绍如何基于 transformers、peft 等框架,对Qwen2.5-Coder-7B-Instruct 模型进行Lora微调。使用的数据集是中文法律问答数据集 DISC-Law-SFT,同时使用 SwanLab 监控训练过程与评估模型效果。
1864 4
|
机器学习/深度学习 PyTorch 调度
内部干货 | 基于华为昇腾910B算力卡的大模型部署和调优-课程讲义
近日上海,TsingtaoAI为某央企智算中心交付华为昇腾910B算力卡的大模型部署和调优课程。课程深入讲解如何在昇腾NPU上高效地训练、调优和部署PyTorch与Transformer模型,并结合实际应用场景,探索如何优化和迁移模型至昇腾NPU平台。课程涵盖从模型预训练、微调、推理与评估,到性能对比、算子适配、模型调优等一系列关键技术,帮助学员深入理解昇腾NPU的优势及其与主流深度学习框架(如PyTorch、Deepspeed、MindSpore)的结合应用。
5799 13
|
10月前
|
机器学习/深度学习 运维 监控
基于YOLOv8的高压电线是否故障检测识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!
本项目基于YOLOv8与PyQt5开发,实现高压电线故障自动检测,支持电缆破损、绝缘子破损、植被遮挡等6类目标识别,具备图形界面与多种输入方式,含完整源码、数据集与训练教程,开箱即用,助力电力巡检智能化转型。
|
人工智能 自然语言处理 PyTorch
基于openi平台免费华为昇腾910B芯片部署qwen2.5 Instruct 14B大模型
基于OpenI平台和华为昇腾910B芯片,本方案详细介绍了如何免费部署Qwen-2.5 Instruct 14B大模型。涵盖准备工作、模型适配、部署步骤及性能优化等内容,适用于NLP任务部署、本地化适配及实时服务化等多种应用场景。
4597 1
|
12月前
|
算法 自动驾驶 机器人
基于matlab的人工势场法避障小车仿真
基于matlab的人工势场法避障小车仿真
|
前端开发 测试技术 API
DeepSeek-V3小版本升级,非推理模型王者归来
今天,DeepSeek低调地在魔搭社区开源 DeepSeek-V3-0324 模型,虽然官方低调称之为小版本升级,但能力提升一点也不小。
522 5
|
存储 分布式计算 资源调度
如何8步完成hadoop单机安装
本文介绍了在Ubuntu 20.04上安装和配置Hadoop 3.3.6的详细步骤。首先更新系统并安装Java环境,接着下载、解压Hadoop并配置环境变量。然后编辑核心配置文件`core-site.xml`和`hdfs-site.xml`,格式化HDFS文件系统,并启动Hadoop服务。最后通过`jps`命令和浏览器访问Web界面验证安装是否成功。Hadoop是一个开源框架,用于分布式存储和处理大规模数据集,其核心组件包括HDFS、MapReduce和YARN。
962 6
|
存储 人工智能 安全
网络安全中的加密技术详解
【7月更文挑战第28天】加密技术作为网络安全的核心组成部分,对于保护数据安全、维护网络秩序具有重要意义。随着技术的不断进步和应用场景的不断拓展,加密技术将不断迎来新的挑战和机遇。未来,我们需要继续关注加密技术的发展动态,加强技术研发和应用创新,为构建更加安全、可信的网络环境贡献力量。同时,我们也需要加强相关法律法规的制定和执行力度,确保加密技术的合法合规使用,为数字经济的健康发展提供有力保障。
1141 1