使用 MindSpore 训练 DeepSeek-V3 模型

news2025/3/12 18:55:47

MindeSpore 已经适配 DeepSeek-V3 的训练推理啦,下面是使用 MindSpore 对DeepSeek-V3做训练的过程。

一、环境确认

这里呢我使用的是 8张 910B2 的显卡:

其中 MindSpore Transformers 的环境依赖如下:

PythonMindSporeCANN固件与驱动
3.102.4.108.0.RC3.betaq24.1.RC3

也可以使用为 DeepSeek-V3 预训练专门配置的 Docker 镜像,在容器中已经拉取了 deepseek-V3 仓库的代码


# 下载镜像
docker pull swr.cn-central-221.ovaijisuan.com/mindformers/deepseek_v3_mindspore2.4.10-train:20250209

# 创建环境变量 
export image_name=swr.cn-central-221.ovaijisuan.com/mindformers/deepseek_v3_mindspore2.4.10-train:20250209
export docker_name=deepseek_v3

# 创建容器
docker run -itd -u root \
--ipc=host --net=host \
--privileged \
--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/davinci_manager \
--device=/dev/devmm_svm \
--device=/dev/hisi_hdc \
-v /etc/localtime:/etc/localtime \
-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \
-v /usr/local/Ascend/driver/tools/hccn_tool:/usr/local/bin/hccn_tool \
-v /etc/ascend_install.info:/etc/ascend_install.info \
-v /var/log/npu:/usr/slog \
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \
-v /etc/hccn.conf:/etc/hccn.conf \
--name "$docker_name" \
"$image_name" \
/bin/bash

# 进入容器
docker exec -ti deepseek_v3 bash

二、数据集准备

预训练需要用到两个数据集,分别是 wikiText2 和 分词模型

# 下载 WikiText2数据集
wget https://ascend-repo-modelzoo.obs.cn-east-2.myhuaweicloud.com/MindFormers/dataset/wikitext-2/wikitext-2-v1.zip
# 解压数据集
unzip ./wikitext-2-v1.zip

# 下载分词模型(需要科学的上网)
wget https://huggingface.co/deepseek-ai/DeepSeek-V3/resolve/main/tokenizer.json 

# 上传数据集文件 wiki.train.tokens 和分词模型文件tokenizer.json 到服务器的 /root 目录下
scp -P <端口号> wikitext-2/wiki.train.tokens root@<ip地址>:/root
scp -P <端口号> tokenizer.json  root@<ip地址>:/root

# 从宿主机器复制 数据集文件 wiki.train.tokens 和分词模型文件tokenizer.json 到容器的 /home/work/dataset 目录下

# 容器内创建文件夹
mkdir dataset

# 宿主机器上执行 docker cp
docker cp tokenizer.json deepseek_v3:/home/work/dataset
docker cp wiki.train.tokens deepseek_v3:/home/work/dataset

在预训练前,我们首先需要处理一下数据集,转换为 Megatron bin 文件

# 在容器中执行
cd /home/work/mindformers/research/deepseek3

# 执行对应脚本
python wikitext_to_bin.py \
--input /home/work/dataset/wiki.train.tokens \
--output-prefix /home/work/dataset/wiki_4096 \
--vocab-file /home/work/dataset/tokenizer.json \
--seq-length 4096 \
--workers 2

在这里插入图片描述

三、配置文件修改

基于预训练配置文件 pretrain_deepseek3_671b.yaml 按照如下步骤操作并保存为 pretrain_deepseek3_1b.yaml

cd /home/work/mindformers/research/deepseek3/deepseek3_671b
cp pretrain_deepseek3_671b.yaml pretrain_deepseek3_1b.yaml 
3.1 修改模型配置
# model config
model:
  model_config:
    type: DeepseekV3Config
    auto_register: deepseek3_config.DeepseekV3Config
    seq_length: 4096
    hidden_size: 2048                                # 修改为2048
    num_layers: &num_layers 3                       # 修改为3
    num_heads: 8                                    # 修改为8
    max_position_embeddings: 4096
    intermediate_size: 6144                          # 修改为6144
    offset: 0                                        # 修改为0
3.2 修改模型配置
#moe
moe_config:
  expert_num: &expert_num 16                      # 修改为16
  first_k_dense_replace: 1                        # 修改为1
3.3 修改并行配置
# parallel config for devices num=8
parallel_config:  
	data_parallel: &dp 2                               # 修改为2  
	model_parallel: 2                                  # 修改为2  
	pipeline_stage: 2                                  # 修改为2  
	expert_parallel: 2                                 # 修改为2  
	micro_batch_num: &micro_batch_num 4                # 修改为4
parallel:        
	parallel_optimizer_config:
		optimizer_weight_shard_size: 8                 # 修改为8
3.4 修改学习率配置
# lr schedule
   lr_schedule:
     type: ConstantWarmUpLR
     warmup_steps: 20
3.5 修改数据集配置

配置数据集路径

# dataset
   train_dataset: &train_dataset
     data_loader:
 type: BlendedMegatronDatasetDataLoader
       config:
         data_path:
           - 1
           - "/home/work/dataset/wiki_4096_text_document"  # 修改此项为数据集路径

配置数据集并行通信配置路径

# mindspore context init config
   context:
     ascend_config:
       parallel_speed_up_json_path: "/home/work/mindformers/research/deepseek3/parallel_speed_up.json"  # 修改此项为数据集并行通信配置路径

四、启动训练任务

代码根目录并执行以下命令拉起单台Atlas 800T A2(64G)预训练任务

cd /home/work/mindformers
bash scripts/msrun_launcher.sh "run_mindformer.py \
--register_path research/deepseek3 \
--config research/deepseek3/deepseek3_671b/pretrain_deepseek3_1b.yaml"

启动脚本执行完毕会在后台拉起任务,日志保存在 /home/work/mindformers/output/msrun_log 下,使用以下命令查看训练日志(由于开启了流水并行pipeline_stage: 2,loss 只显示在最后一张卡的日志 worker_7.log 中,其他日志显示 loss 为 0):

tail -f /home/work/mindformers/output/msrun_log/worker_7.log

训练过程中的权重 checkpoint 将会保存在 /home/work/mindformers/output/checkpoint 下。

开源链接

昇思MindSpore开源社区训练代码
魔乐社区推理代码
开箱即用教程

注: 不同的终端中 \ 符号可能会影响命令的执行,如果相关命令报错可以尝试去掉 \ 进行尝试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2299641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DeepSeek R1完全本地部署实战教程01-课程大纲

一、课程体系 二、学习目标: 了解基础知识掌握安装部署学会搭建可视化界面能力水平进阶三、课程特点: 案例驱动工程实战完整体系四、课程大纲 1.DeepSeek R1 项目运行演示 【视频课程】 (1)可视化交互 (2)联网搜索 (3)本地知识库 2.环境安装部署 【视频课程】 (1)软…

redis cluster测试

集群节点信息这时候停掉一个master 172.30.60.31 从集群信息集中我们可以看到172.30.60.31的slave是172.30.60.41&#xff0c;查看41的日志&#xff0c;发现他成为了新的master 这时候我们在将172.30.60.41也杀死&#xff0c;会发现集群异常了 尝试把172.30.60.31启动&#xff…

数据恢复-01-机械硬盘的物理与逻辑结构

磁盘存储原理 磁盘存储数据的原理&#xff1a; 磁盘存储数据的原理是利用磁性材料在磁场作用下的磁化性质&#xff0c;通过在磁盘表面上划分成许多小区域&#xff0c;根据不同的磁化方向来表示0和1的二进制数据&#xff0c;通过读写磁头在磁盘上的移动&#xff0c;可以实现数据…

网络工程师 (35)以太网通道

一、概念与原理 以太网通道&#xff0c;也称为以太端口捆绑、端口聚集或以太链路聚集&#xff0c;是一种将多个物理以太网端口组合成一个逻辑通道的技术。这一技术使得多个端口能够并行工作&#xff0c;共同承担数据传输任务&#xff0c;从而提高了网络的传输能力和可靠性。 二…

USB2.03.0摄像头区分UVC相机在linux中的常用命令

这里是引用 一. USB2.0 & 3.0接口支持区分 1.1. 颜色判断 USB接口的颜色并不是判断版本的可靠标准&#xff0c;但根据行业常见规范分析如下&#xff1a; USB接口颜色与版本对照表&#xff1a; 接口颜色常见版本内部触点数量传输速度黑色USB2.04触点480 Mbps (60 MB/s)白…

【推理llm论文精度】DeepSeek-R1:强化学习驱动LLM推理能力飞跃

最近deepseek R1模型大火&#xff0c;正好复习一下他家的技惊四座的论文https://arxiv.org/pdf/2501.12948 近年来&#xff0c;大型语言模型&#xff08;LLM&#xff09;在推理能力上取得了显著进展&#xff0c;但如何进一步有效提升仍然是研究热点。DeepSeek-AI发布了 DeepS…

从零搭建SpringBoot3+Vue3前后端分离项目基座,中小项目可用

文章目录 1. 后端项目搭建 1.1 环境准备1.2 数据表准备1.3 SpringBoot3项目创建1.4 MySql环境整合&#xff0c;使用druid连接池1.5 整合mybatis-plus 1.5.1 引入mybatis-plus1.5.2 配置代码生成器1.5.3 配置分页插件 1.6 整合swagger3&#xff08;knife4j&#xff09; 1.6.1 整…

学习数据结构(9)栈和队列上

1.栈的概念 栈是一种特殊的线性表&#xff0c;只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作 的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出&#xff08;先进先出&#xff09;的原则 栈的插入操作叫做进栈/压栈/入栈&#xff…

【ESP32】ESP-IDF开发 | WiFi开发 | HTTP服务器

1. 简介 1.1 HTTP HTTP&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff0c;全称超文本传输协议&#xff0c;用于从网络服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效&#xff0c;使网络传输减少。它不仅保证计算机正确快速地传输超文本文档…

滚动弹幕案例

滚动弹幕案例 一、需求 1.页面上漂浮字体大小不一、颜色不一&#xff0c;从左向右滚动的弹幕&#xff1b; 2.底部中间有一个发送功能&#xff0c;可以发送新的弹幕&#xff1b; 3.底部的发送部分可以向下收起和弹出。 二、html <div class"container"><…

腿足机器人之五- 粒子滤波

腿足机器人之五粒子滤波 直方图滤波粒子滤波 上一篇博客使用的是高斯分布结合贝叶斯准则来估计机器人状态&#xff0c;本篇是基于直方图和粒子滤波器这两种无参滤波器估计机器人状态。 直方图方法将状态空间分解成有限多个区域&#xff0c;并用直方图表示后验概率。直方图为每个…

AI 编程工具—Cursor 进阶篇 数据分析

AI 编程工具—Cursor 进阶篇 数据分析 上一节课我们使用Cursor 生成了北京房产的销售数据,这一节我们使用Cursor对这些数据进行分析,也是我们尝试使用Cursor 去帮我们做数据分析,从而进一步发挥Cursor的能力,来帮助我们完成更多的事情 案例一 房产销售数据分析 @北京202…

搭建Deepseek推理服务

概述&#xff1a; 本文介绍用Open webui ollama搭建一套Deepseek推理服务&#xff0c;可以在web页面上直接进行对话。作为体验搭建的是Deepseek 7b参数版本 首先选择一个云厂商创建一台ubuntu系统的虚拟机&#xff0c;带公网IP&#xff0c;通过shell登录虚拟机完成以下操作&…

STM32的HAL库开发---ADC

一、ADC简介 1、ADC&#xff0c;全称&#xff1a;Analog-to-Digital Converter&#xff0c;指模拟/数字转换器 把一些传感器的物理量转换成电压&#xff0c;使用ADC采集电压&#xff0c;然后转换成数字量&#xff0c;经过单片机处理&#xff0c;进行控制和显示。 2、常见的AD…

6.编写正排索引切分字符串|倒排索引原理|引入jieba到项目(C++)

编写正排索引 继续编写incde.hpp #pragma once#include <iostream> #include <string> #include <vector> #include <fstream> #include <unordered_map> #include "util.hpp"namespace ns_index{struct DocInfo{std::string title;…

在Windows系统上测试safari浏览器的兼容性

文章目录 前言手机端的safari浏览器能替代PC端吗在Windows上测试safari浏览器的兼容性的方法利用云服务使用虚拟机在Windows上下载虚拟机遇到的问题以及解决思路总结 前言 在测试网站的兼容性时需要用到safari浏览器&#xff0c;在没有Mac的情况下&#xff0c;又不想麻烦同事&…

【设计模式】【结构型模式】桥接模式(Bridge)

&#x1f44b;hi&#xff0c;我不是一名外包公司的员工&#xff0c;也不会偷吃茶水间的零食&#xff0c;我的梦想是能写高端CRUD &#x1f525; 2025本人正在沉淀中… 博客更新速度 &#x1f44d; 欢迎点赞、收藏、关注&#xff0c;跟上我的更新节奏 &#x1f3b5; 当你的天空突…

惠普HP Color LaserJet CP1215/1210彩色打印机打印校准方法

执行校准 &#xff08;用随机光盘安装驱动&#xff09;完整安装打印机驱动程序。安装驱动程序的操作方法请参考以下文章&#xff1a; 惠普HP Color laserjet cp1215激光打印机在windows 7下使用随机光盘安装驱动程序&#xff0c;安装完成后&#xff1b; 依次点击“开始”→“所…

【雅思博客02】Virus!

Elementary ‐ Virus! (C0007) A: Oh great! This stupid computer froze again! That’s the third time today! Hey Samuel, can you come take a look at my PC? It’s acting up again. It must have a virus or something. B: Just give me a second; I’ll be right …

模型GPU->NPU(Ascend)迁移训练简述

目录 一、迁移训练流程图解 二、详细流程步骤 1. 模型训练与日志记录 2. 跨平台精度对齐对比 3. 问题定位与修复 4. 迭代验证 三、关键技术点 四、常见问题与解决方案 一、迁移训练流程图解 通过华为云的modelart进行运行环境选型 北京四使用GPU进行模型训练&#xff…